From 3d60604bdf2201672cbf45e6c6888f26d16ad8c4 Mon Sep 17 00:00:00 2001 From: "Chrome Release Bot (LUCI)" Date: Thu, 21 Mar 2024 17:19:53 +0000 Subject: [PATCH] Publish DEPS for 114.0.5735.358 git-subtree-dir: tools/metrics git-subtree-split: 1759c6ae9316996b9f150c0ce9d0ca78a3d15c02 --- BUILD.gn | 151 + DIR_METADATA | 11 + OWNERS | 7 + PRESUBMIT.py | 51 + actions/OWNERS | 9 + actions/PRESUBMIT.py | 39 + actions/README.md | 214 + actions/action_utils.py | 239 + actions/actions.xml | 37980 +++++ actions/actions_model.py | 108 + actions/actions_model_test.py | 309 + actions/extract_actions.py | 766 + actions/extract_actions.sh | 13 + actions/extract_actions_test.py | 658 + actions/pretty_print.py | 20 + common/diff_util.py | 54 + common/etree_util.py | 102 + common/models.py | 507 + common/path_util.py | 14 + common/presubmit_util.py | 112 + common/pretty_print_xml.py | 328 + histograms/OWNERS | 9 + histograms/PRESUBMIT.py | 118 + histograms/README.md | 958 + histograms/enums.xml | 113577 +++++++++++++++ histograms/expand_owners.py | 409 + histograms/expand_owners_unittest.py | 619 + histograms/extract_histograms.py | 1097 + histograms/extract_histograms_test.py | 1012 + histograms/find_unmapped_histograms.py | 448 + .../generate_expired_histograms_array.py | 313 + ...erate_expired_histograms_array_unittest.py | 207 + histograms/generate_flag_enums.py | 119 + histograms/generate_flag_enums_test.py | 74 + histograms/histogram_configuration_model.py | 301 + ...istogram_configuration_model_test_enums.py | 309 + ...ram_configuration_model_test_histograms.py | 673 + histograms/histogram_ownership.py | 88 + histograms/histogram_paths.py | 82 + histograms/histograms.xml | 18 + histograms/histograms_index.txt | 154 + histograms/merge_xml.py | 271 + histograms/merge_xml_test.py | 267 + histograms/metadata/METRIC_REVIEWER_OWNERS | 423 + histograms/metadata/OWNERS | 15 + histograms/metadata/accessibility/OWNERS | 5 + .../metadata/accessibility/histograms.xml | 2392 + histograms/metadata/account_manager/OWNERS | 5 + .../metadata/account_manager/histograms.xml | 198 + histograms/metadata/android/OWNERS | 11 + histograms/metadata/android/histograms.xml | 5107 + histograms/metadata/apps/OWNERS | 8 + histograms/metadata/apps/histograms.xml | 2973 + histograms/metadata/arc/OWNERS | 6 + histograms/metadata/arc/histograms.xml | 2788 + histograms/metadata/ash/OWNERS | 8 + histograms/metadata/ash/histograms.xml | 6682 + histograms/metadata/ash_clipboard/OWNERS | 6 + .../metadata/ash_clipboard/histograms.xml | 345 + histograms/metadata/assistant/OWNERS | 5 + histograms/metadata/assistant/histograms.xml | 299 + histograms/metadata/auth/histograms.xml | 316 + histograms/metadata/auto/OWNERS | 5 + histograms/metadata/auto/histograms.xml | 500 + histograms/metadata/autofill/OWNERS | 7 + histograms/metadata/autofill/histograms.xml | 5521 + histograms/metadata/background/OWNERS | 5 + histograms/metadata/background/histograms.xml | 388 + histograms/metadata/blink/OWNERS | 10 + histograms/metadata/blink/histograms.xml | 3849 + histograms/metadata/bluetooth/OWNERS | 11 + histograms/metadata/bluetooth/histograms.xml | 2011 + histograms/metadata/bookmarks/OWNERS | 4 + histograms/metadata/bookmarks/histograms.xml | 773 + histograms/metadata/borealis/OWNERS | 2 + histograms/metadata/borealis/histograms.xml | 242 + histograms/metadata/browser/OWNERS | 9 + histograms/metadata/browser/histograms.xml | 1107 + histograms/metadata/browsing_topics/OWNERS | 4 + .../metadata/browsing_topics/histograms.xml | 174 + histograms/metadata/bruschetta/OWNERS | 2 + histograms/metadata/bruschetta/histograms.xml | 41 + histograms/metadata/chrome/OWNERS | 5 + histograms/metadata/chrome/histograms.xml | 407 + histograms/metadata/chromeos/OWNERS | 14 + histograms/metadata/chromeos/histograms.xml | 3262 + histograms/metadata/chromeos_hps/OWNERS | 12 + .../metadata/chromeos_hps/histograms.xml | 136 + histograms/metadata/chromeos_settings/OWNERS | 5 + .../metadata/chromeos_settings/histograms.xml | 548 + histograms/metadata/commerce/DIR_METADATA | 11 + histograms/metadata/commerce/OWNERS | 5 + histograms/metadata/commerce/histograms.xml | 782 + histograms/metadata/companion/OWNERS | 7 + histograms/metadata/companion/histograms.xml | 62 + histograms/metadata/compositing/OWNERS | 5 + .../metadata/compositing/histograms.xml | 1419 + histograms/metadata/content/OWNERS | 7 + histograms/metadata/content/histograms.xml | 2327 + histograms/metadata/content_creation/OWNERS | 5 + .../metadata/content_creation/histograms.xml | 628 + histograms/metadata/cookie/OWNERS | 6 + histograms/metadata/cookie/histograms.xml | 885 + histograms/metadata/cras/OWNERS | 5 + histograms/metadata/cras/histograms.xml | 831 + histograms/metadata/cros/OWNERS | 5 + histograms/metadata/cros/histograms.xml | 255 + histograms/metadata/cros_audio/OWNERS | 5 + histograms/metadata/cros_audio/histograms.xml | 114 + histograms/metadata/cros_ml/OWNERS | 5 + histograms/metadata/cros_ml/histograms.xml | 594 + histograms/metadata/cross_device/OWNERS | 7 + .../metadata/cross_device/histograms.xml | 2419 + histograms/metadata/crostini/OWNERS | 7 + histograms/metadata/crostini/histograms.xml | 659 + histograms/metadata/cryptohome/OWNERS | 6 + histograms/metadata/cryptohome/histograms.xml | 1197 + histograms/metadata/custom_tabs/OWNERS | 8 + .../metadata/custom_tabs/histograms.xml | 869 + histograms/metadata/data/DIR_METADATA | 11 + histograms/metadata/data/OWNERS | 5 + histograms/metadata/data/histograms.xml | 281 + histograms/metadata/dev/OWNERS | 7 + histograms/metadata/dev/histograms.xml | 506 + histograms/metadata/diagnostics/OWNERS | 9 + .../metadata/diagnostics/histograms.xml | 430 + histograms/metadata/direct/OWNERS | 4 + histograms/metadata/direct/histograms.xml | 300 + histograms/metadata/disk/histograms.xml | 1731 + histograms/metadata/download/OWNERS | 6 + histograms/metadata/download/histograms.xml | 1471 + histograms/metadata/enterprise/OWNERS | 8 + histograms/metadata/enterprise/histograms.xml | 2977 + histograms/metadata/event/OWNERS | 6 + histograms/metadata/event/histograms.xml | 1239 + histograms/metadata/extensions/OWNERS | 5 + histograms/metadata/extensions/histograms.xml | 4699 + histograms/metadata/families/DIR_METADATA | 2 + histograms/metadata/families/OWNERS | 5 + histograms/metadata/families/histograms.xml | 849 + histograms/metadata/fastpair/OWNERS | 7 + histograms/metadata/fastpair/histograms.xml | 311 + histograms/metadata/feature_engagement/OWNERS | 9 + .../feature_engagement/histograms.xml | 613 + histograms/metadata/file/DIR_METADATA | 1 + histograms/metadata/file/OWNERS | 5 + histograms/metadata/file/histograms.xml | 1138 + .../metadata/fingerprint/histograms.xml | 426 + histograms/metadata/game_mode/histograms.xml | 57 + histograms/metadata/gcm/OWNERS | 5 + histograms/metadata/gcm/histograms.xml | 235 + histograms/metadata/geolocation/OWNERS | 5 + .../metadata/geolocation/histograms.xml | 170 + histograms/metadata/google/histograms.xml | 98 + histograms/metadata/gpu/OWNERS | 5 + histograms/metadata/gpu/histograms.xml | 1908 + histograms/metadata/hang_watcher/OWNERS | 5 + .../metadata/hang_watcher/histograms.xml | 90 + histograms/metadata/help_app/OWNERS | 5 + histograms/metadata/help_app/histograms.xml | 93 + .../metadata/histogram_suffixes_list.xml | 6061 + histograms/metadata/history/OWNERS | 15 + histograms/metadata/history/histograms.xml | 2696 + histograms/metadata/holding_space/OWNERS | 6 + .../metadata/holding_space/histograms.xml | 278 + histograms/metadata/image/OWNERS | 5 + histograms/metadata/image/histograms.xml | 486 + histograms/metadata/input/OWNERS | 5 + histograms/metadata/input/histograms.xml | 1761 + histograms/metadata/installer/histograms.xml | 223 + histograms/metadata/interstitial/OWNERS | 5 + .../metadata/interstitial/histograms.xml | 258 + .../metadata/invalidation/histograms.xml | 118 + histograms/metadata/ios/OWNERS | 7 + histograms/metadata/ios/histograms.xml | 2790 + histograms/metadata/kerberos/histograms.xml | 210 + histograms/metadata/kiosk/OWNERS | 5 + histograms/metadata/kiosk/histograms.xml | 406 + histograms/metadata/language/DIR_METADATA | 11 + histograms/metadata/language/OWNERS | 9 + histograms/metadata/language/histograms.xml | 503 + histograms/metadata/leveldb_proto/OWNERS | 5 + .../metadata/leveldb_proto/histograms.xml | 223 + histograms/metadata/local/OWNERS | 5 + histograms/metadata/local/histograms.xml | 299 + histograms/metadata/login/OWNERS | 8 + histograms/metadata/login/histograms.xml | 466 + histograms/metadata/media/OWNERS | 7 + histograms/metadata/media/histograms.xml | 6840 + histograms/metadata/memory/OWNERS | 8 + histograms/metadata/memory/histograms.xml | 2918 + histograms/metadata/mobile/OWNERS | 7 + histograms/metadata/mobile/histograms.xml | 1324 + histograms/metadata/na_cl/OWNERS | 6 + histograms/metadata/na_cl/histograms.xml | 461 + histograms/metadata/navigation/OWNERS | 9 + histograms/metadata/navigation/histograms.xml | 1998 + histograms/metadata/nearby/OWNERS | 7 + histograms/metadata/nearby/histograms.xml | 1241 + histograms/metadata/net/OWNERS | 8 + histograms/metadata/net/histograms.xml | 5638 + histograms/metadata/network/OWNERS | 7 + histograms/metadata/network/histograms.xml | 4073 + histograms/metadata/new_tab_page/OWNERS | 6 + .../metadata/new_tab_page/histograms.xml | 2023 + histograms/metadata/notifications/OWNERS | 6 + .../metadata/notifications/histograms.xml | 1186 + histograms/metadata/offline/OWNERS | 6 + histograms/metadata/offline/histograms.xml | 313 + histograms/metadata/omnibox/OWNERS | 7 + histograms/metadata/omnibox/histograms.xml | 2815 + histograms/metadata/oobe/OWNERS | 7 + histograms/metadata/oobe/histograms.xml | 849 + histograms/metadata/optimization/DIR_METADATA | 11 + histograms/metadata/optimization/OWNERS | 7 + .../metadata/optimization/histograms.xml | 1484 + histograms/metadata/others/OWNERS | 23 + histograms/metadata/others/histograms.xml | 14762 ++ histograms/metadata/page/OWNERS | 8 + histograms/metadata/page/histograms.xml | 3103 + histograms/metadata/password/OWNERS | 13 + histograms/metadata/password/histograms.xml | 4443 + histograms/metadata/payment/OWNERS | 6 + histograms/metadata/payment/histograms.xml | 291 + histograms/metadata/pcscan/OWNERS | 5 + histograms/metadata/pcscan/histograms.xml | 74 + histograms/metadata/pdf/OWNERS | 5 + histograms/metadata/pdf/histograms.xml | 125 + .../performance_controls/histograms.xml | 117 + .../metadata/performance_manager/OWNERS | 5 + .../performance_manager/histograms.xml | 79 + histograms/metadata/permissions/OWNERS | 6 + .../metadata/permissions/histograms.xml | 1688 + histograms/metadata/phonehub/OWNERS | 7 + histograms/metadata/phonehub/histograms.xml | 655 + histograms/metadata/platform/OWNERS | 7 + histograms/metadata/platform/histograms.xml | 2420 + histograms/metadata/plugin/histograms.xml | 40 + histograms/metadata/plugin_vm/OWNERS | 2 + histograms/metadata/plugin_vm/histograms.xml | 110 + histograms/metadata/power/OWNERS | 6 + histograms/metadata/power/histograms.xml | 2573 + histograms/metadata/prefetch/DIR_METADATA | 11 + histograms/metadata/prefetch/OWNERS | 8 + histograms/metadata/prefetch/histograms.xml | 584 + histograms/metadata/preloading/DIR_METADATA | 11 + histograms/metadata/preloading/OWNERS | 6 + histograms/metadata/preloading/histograms.xml | 184 + histograms/metadata/print/OWNERS | 7 + histograms/metadata/print/histograms.xml | 272 + histograms/metadata/printing/OWNERS | 7 + histograms/metadata/printing/histograms.xml | 448 + histograms/metadata/privacy/OWNERS | 16 + histograms/metadata/privacy/histograms.xml | 771 + histograms/metadata/privacy_budget/OWNERS | 6 + .../metadata/privacy_budget/histograms.xml | 112 + histograms/metadata/profile/OWNERS | 5 + histograms/metadata/profile/histograms.xml | 980 + histograms/metadata/quick_answers/OWNERS | 5 + .../metadata/quick_answers/histograms.xml | 341 + .../metadata/quickoffice/histograms.xml | 234 + histograms/metadata/quota/OWNERS | 10 + histograms/metadata/quota/histograms.xml | 339 + histograms/metadata/renderer/OWNERS | 7 + histograms/metadata/renderer/histograms.xml | 646 + histograms/metadata/renderer4/OWNERS | 5 + histograms/metadata/renderer4/histograms.xml | 351 + histograms/metadata/safe_browsing/OWNERS | 7 + .../metadata/safe_browsing/histograms.xml | 2910 + histograms/metadata/sb_client/OWNERS | 7 + histograms/metadata/sb_client/histograms.xml | 900 + histograms/metadata/scanning/OWNERS | 9 + histograms/metadata/scanning/histograms.xml | 246 + histograms/metadata/scheduler/OWNERS | 5 + histograms/metadata/scheduler/histograms.xml | 195 + histograms/metadata/search/OWNERS | 5 + histograms/metadata/search/histograms.xml | 1819 + histograms/metadata/security/OWNERS | 8 + histograms/metadata/security/histograms.xml | 1113 + .../metadata/segmentation_platform/OWNERS | 6 + .../segmentation_platform/histograms.xml | 788 + histograms/metadata/service/OWNERS | 16 + histograms/metadata/service/histograms.xml | 1708 + histograms/metadata/session/OWNERS | 7 + histograms/metadata/session/histograms.xml | 1139 + histograms/metadata/settings/OWNERS | 6 + histograms/metadata/settings/histograms.xml | 955 + histograms/metadata/sharing/OWNERS | 6 + histograms/metadata/sharing/histograms.xml | 665 + .../metadata/side_search/histograms.xml | 200 + histograms/metadata/signin/OWNERS | 5 + histograms/metadata/signin/histograms.xml | 1615 + histograms/metadata/simple/OWNERS | 7 + histograms/metadata/simple/histograms.xml | 422 + histograms/metadata/software/OWNERS | 7 + histograms/metadata/software/histograms.xml | 361 + histograms/metadata/stability/histograms.xml | 596 + histograms/metadata/start_surface/OWNERS | 1 + .../metadata/start_surface/histograms.xml | 96 + histograms/metadata/startup/OWNERS | 1 + histograms/metadata/startup/histograms.xml | 898 + histograms/metadata/storage/OWNERS | 10 + histograms/metadata/storage/histograms.xml | 1249 + histograms/metadata/subresource/OWNERS | 7 + .../metadata/subresource/histograms.xml | 659 + histograms/metadata/sync/DIR_METADATA | 11 + histograms/metadata/sync/OWNERS | 5 + histograms/metadata/sync/histograms.xml | 1866 + histograms/metadata/system/OWNERS | 8 + histograms/metadata/system/histograms.xml | 43 + histograms/metadata/tab/OWNERS | 8 + histograms/metadata/tab/histograms.xml | 2368 + histograms/metadata/translate/DIR_METADATA | 11 + histograms/metadata/translate/OWNERS | 8 + histograms/metadata/translate/histograms.xml | 1075 + histograms/metadata/ukm/histograms.xml | 394 + histograms/metadata/uma/histograms.xml | 1050 + histograms/metadata/update_engine/OWNERS | 6 + .../metadata/update_engine/histograms.xml | 802 + histograms/metadata/v8/OWNERS | 5 + histograms/metadata/v8/histograms.xml | 2285 + histograms/metadata/variations/histograms.xml | 749 + histograms/metadata/video_tutorials/OWNERS | 6 + .../metadata/video_tutorials/histograms.xml | 92 + histograms/metadata/views/histograms.xml | 93 + histograms/metadata/web_apk/OWNERS | 7 + histograms/metadata/web_apk/histograms.xml | 367 + histograms/metadata/web_audio/OWNERS | 6 + histograms/metadata/web_audio/histograms.xml | 314 + histograms/metadata/web_core/OWNERS | 5 + histograms/metadata/web_core/histograms.xml | 820 + histograms/metadata/web_rtc/OWNERS | 8 + histograms/metadata/web_rtc/histograms.xml | 3946 + histograms/metadata/webapps/OWNERS | 9 + histograms/metadata/webapps/histograms.xml | 1564 + histograms/metadata/webauthn/OWNERS | 5 + histograms/metadata/webauthn/histograms.xml | 292 + histograms/metadata/weblayer/OWNERS | 5 + histograms/metadata/weblayer/histograms.xml | 42 + histograms/metadata/windows/histograms.xml | 305 + histograms/metadata/xr/DIR_METADATA | 11 + histograms/metadata/xr/OWNERS | 5 + histograms/metadata/xr/histograms.xml | 70 + histograms/populate_enums.py | 86 + histograms/presubmit_bad_message_reasons.py | 43 + histograms/pretty_print.py | 213 + histograms/pretty_print_test.py | 116 + histograms/print_expanded_histograms.py | 81 + histograms/print_histogram_names.py | 116 + histograms/review_guidelines.md | 144 + histograms/split_xml.py | 301 + histograms/split_xml_unittest.py | 37 + histograms/suffixes_to_variants.py | 352 + histograms/test_data/components/DIR_METADATA | 11 + .../test_data/components/histograms.xml | 21 + histograms/test_data/enums.xml | 27 + .../test_data/histogram_suffixes_list.xml | 13 + histograms/test_data/histograms.xml | 62 + histograms/test_data/ukm.xml | 66 + histograms/update_bad_message_reasons.py | 58 + histograms/update_debug_scenarios.py | 27 + histograms/update_document_policy_enum.py | 32 + histograms/update_editor_commands.py | 145 + histograms/update_extension_histograms.py | 37 + histograms/update_extension_permission.py | 29 + ...pdate_gpu_driver_bug_workaround_entries.py | 57 + histograms/update_histogram_enum.py | 378 + histograms/update_net_error_codes.py | 73 + histograms/update_net_trust_anchors.py | 44 + histograms/update_permissions_policy_enum.py | 31 + histograms/update_policies.py | 150 + histograms/update_protocol_commands_enum.py | 149 + histograms/update_scheduler_enums.py | 32 + histograms/update_use_counter_css.py | 79 + histograms/update_use_counter_feature_enum.py | 55 + histograms/validate_format.py | 59 + histograms/validate_histograms_index.py | 34 + histograms/validate_prefix.py | 75 + md2xml.py | 196 + metrics_python_tests.py | 53 + structured/OWNERS | 2 + structured/PRESUBMIT.py | 50 + structured/codegen.py | 344 + structured/codegen_unittest.py | 50 + structured/events.xml | 3 + structured/gen_events.py | 49 + structured/gen_validator.py | 37 + structured/model.py | 278 + structured/model_unittest.py | 324 + structured/model_util.py | 143 + structured/pretty_print.py | 23 + structured/structured.xml | 869 + structured/templates_events.py | 103 + structured/templates_validator.py | 174 + ukm/.gitignore | 1 + ukm/OWNERS | 3 + ukm/PRESUBMIT.py | 52 + ukm/PRIVACY_OWNERS | 10 + ukm/builders_template.py | 94 + ukm/codegen.py | 90 + ukm/codegen_test.py | 20 + ukm/decode_template.py | 79 + ukm/gen_builders.py | 59 + ukm/gen_builders_test.py | 125 + ukm/pretty_print.py | 21 + ukm/ukm.xml | 26165 ++++ ukm/ukm_model.py | 149 + ukm/ukm_model_test.py | 172 + ukm/validate_format.py | 47 + ukm/xml_validations.py | 171 + ukm/xml_validations_test.py | 180 + 411 files changed, 393097 insertions(+) create mode 100644 BUILD.gn create mode 100644 DIR_METADATA create mode 100644 OWNERS create mode 100644 PRESUBMIT.py create mode 100644 actions/OWNERS create mode 100644 actions/PRESUBMIT.py create mode 100644 actions/README.md create mode 100644 actions/action_utils.py create mode 100644 actions/actions.xml create mode 100644 actions/actions_model.py create mode 100644 actions/actions_model_test.py create mode 100755 actions/extract_actions.py create mode 100755 actions/extract_actions.sh create mode 100755 actions/extract_actions_test.py create mode 100755 actions/pretty_print.py create mode 100644 common/diff_util.py create mode 100644 common/etree_util.py create mode 100644 common/models.py create mode 100644 common/path_util.py create mode 100644 common/presubmit_util.py create mode 100644 common/pretty_print_xml.py create mode 100644 histograms/OWNERS create mode 100644 histograms/PRESUBMIT.py create mode 100644 histograms/README.md create mode 100644 histograms/enums.xml create mode 100644 histograms/expand_owners.py create mode 100644 histograms/expand_owners_unittest.py create mode 100644 histograms/extract_histograms.py create mode 100644 histograms/extract_histograms_test.py create mode 100755 histograms/find_unmapped_histograms.py create mode 100755 histograms/generate_expired_histograms_array.py create mode 100755 histograms/generate_expired_histograms_array_unittest.py create mode 100755 histograms/generate_flag_enums.py create mode 100755 histograms/generate_flag_enums_test.py create mode 100644 histograms/histogram_configuration_model.py create mode 100644 histograms/histogram_configuration_model_test_enums.py create mode 100644 histograms/histogram_configuration_model_test_histograms.py create mode 100755 histograms/histogram_ownership.py create mode 100755 histograms/histogram_paths.py create mode 100644 histograms/histograms.xml create mode 100644 histograms/histograms_index.txt create mode 100755 histograms/merge_xml.py create mode 100644 histograms/merge_xml_test.py create mode 100644 histograms/metadata/METRIC_REVIEWER_OWNERS create mode 100644 histograms/metadata/OWNERS create mode 100644 histograms/metadata/accessibility/OWNERS create mode 100644 histograms/metadata/accessibility/histograms.xml create mode 100644 histograms/metadata/account_manager/OWNERS create mode 100644 histograms/metadata/account_manager/histograms.xml create mode 100644 histograms/metadata/android/OWNERS create mode 100644 histograms/metadata/android/histograms.xml create mode 100644 histograms/metadata/apps/OWNERS create mode 100644 histograms/metadata/apps/histograms.xml create mode 100644 histograms/metadata/arc/OWNERS create mode 100644 histograms/metadata/arc/histograms.xml create mode 100644 histograms/metadata/ash/OWNERS create mode 100644 histograms/metadata/ash/histograms.xml create mode 100644 histograms/metadata/ash_clipboard/OWNERS create mode 100644 histograms/metadata/ash_clipboard/histograms.xml create mode 100644 histograms/metadata/assistant/OWNERS create mode 100644 histograms/metadata/assistant/histograms.xml create mode 100644 histograms/metadata/auth/histograms.xml create mode 100644 histograms/metadata/auto/OWNERS create mode 100644 histograms/metadata/auto/histograms.xml create mode 100644 histograms/metadata/autofill/OWNERS create mode 100644 histograms/metadata/autofill/histograms.xml create mode 100644 histograms/metadata/background/OWNERS create mode 100644 histograms/metadata/background/histograms.xml create mode 100644 histograms/metadata/blink/OWNERS create mode 100644 histograms/metadata/blink/histograms.xml create mode 100644 histograms/metadata/bluetooth/OWNERS create mode 100644 histograms/metadata/bluetooth/histograms.xml create mode 100644 histograms/metadata/bookmarks/OWNERS create mode 100644 histograms/metadata/bookmarks/histograms.xml create mode 100644 histograms/metadata/borealis/OWNERS create mode 100644 histograms/metadata/borealis/histograms.xml create mode 100644 histograms/metadata/browser/OWNERS create mode 100644 histograms/metadata/browser/histograms.xml create mode 100644 histograms/metadata/browsing_topics/OWNERS create mode 100644 histograms/metadata/browsing_topics/histograms.xml create mode 100644 histograms/metadata/bruschetta/OWNERS create mode 100644 histograms/metadata/bruschetta/histograms.xml create mode 100644 histograms/metadata/chrome/OWNERS create mode 100644 histograms/metadata/chrome/histograms.xml create mode 100644 histograms/metadata/chromeos/OWNERS create mode 100644 histograms/metadata/chromeos/histograms.xml create mode 100644 histograms/metadata/chromeos_hps/OWNERS create mode 100644 histograms/metadata/chromeos_hps/histograms.xml create mode 100644 histograms/metadata/chromeos_settings/OWNERS create mode 100644 histograms/metadata/chromeos_settings/histograms.xml create mode 100644 histograms/metadata/commerce/DIR_METADATA create mode 100644 histograms/metadata/commerce/OWNERS create mode 100644 histograms/metadata/commerce/histograms.xml create mode 100644 histograms/metadata/companion/OWNERS create mode 100644 histograms/metadata/companion/histograms.xml create mode 100644 histograms/metadata/compositing/OWNERS create mode 100644 histograms/metadata/compositing/histograms.xml create mode 100644 histograms/metadata/content/OWNERS create mode 100644 histograms/metadata/content/histograms.xml create mode 100644 histograms/metadata/content_creation/OWNERS create mode 100644 histograms/metadata/content_creation/histograms.xml create mode 100644 histograms/metadata/cookie/OWNERS create mode 100644 histograms/metadata/cookie/histograms.xml create mode 100644 histograms/metadata/cras/OWNERS create mode 100644 histograms/metadata/cras/histograms.xml create mode 100644 histograms/metadata/cros/OWNERS create mode 100644 histograms/metadata/cros/histograms.xml create mode 100644 histograms/metadata/cros_audio/OWNERS create mode 100644 histograms/metadata/cros_audio/histograms.xml create mode 100644 histograms/metadata/cros_ml/OWNERS create mode 100644 histograms/metadata/cros_ml/histograms.xml create mode 100644 histograms/metadata/cross_device/OWNERS create mode 100644 histograms/metadata/cross_device/histograms.xml create mode 100644 histograms/metadata/crostini/OWNERS create mode 100644 histograms/metadata/crostini/histograms.xml create mode 100644 histograms/metadata/cryptohome/OWNERS create mode 100644 histograms/metadata/cryptohome/histograms.xml create mode 100644 histograms/metadata/custom_tabs/OWNERS create mode 100644 histograms/metadata/custom_tabs/histograms.xml create mode 100644 histograms/metadata/data/DIR_METADATA create mode 100644 histograms/metadata/data/OWNERS create mode 100644 histograms/metadata/data/histograms.xml create mode 100644 histograms/metadata/dev/OWNERS create mode 100644 histograms/metadata/dev/histograms.xml create mode 100644 histograms/metadata/diagnostics/OWNERS create mode 100644 histograms/metadata/diagnostics/histograms.xml create mode 100644 histograms/metadata/direct/OWNERS create mode 100644 histograms/metadata/direct/histograms.xml create mode 100644 histograms/metadata/disk/histograms.xml create mode 100644 histograms/metadata/download/OWNERS create mode 100644 histograms/metadata/download/histograms.xml create mode 100644 histograms/metadata/enterprise/OWNERS create mode 100644 histograms/metadata/enterprise/histograms.xml create mode 100644 histograms/metadata/event/OWNERS create mode 100644 histograms/metadata/event/histograms.xml create mode 100644 histograms/metadata/extensions/OWNERS create mode 100644 histograms/metadata/extensions/histograms.xml create mode 100644 histograms/metadata/families/DIR_METADATA create mode 100644 histograms/metadata/families/OWNERS create mode 100644 histograms/metadata/families/histograms.xml create mode 100644 histograms/metadata/fastpair/OWNERS create mode 100644 histograms/metadata/fastpair/histograms.xml create mode 100644 histograms/metadata/feature_engagement/OWNERS create mode 100644 histograms/metadata/feature_engagement/histograms.xml create mode 100644 histograms/metadata/file/DIR_METADATA create mode 100644 histograms/metadata/file/OWNERS create mode 100644 histograms/metadata/file/histograms.xml create mode 100644 histograms/metadata/fingerprint/histograms.xml create mode 100644 histograms/metadata/game_mode/histograms.xml create mode 100644 histograms/metadata/gcm/OWNERS create mode 100644 histograms/metadata/gcm/histograms.xml create mode 100644 histograms/metadata/geolocation/OWNERS create mode 100644 histograms/metadata/geolocation/histograms.xml create mode 100644 histograms/metadata/google/histograms.xml create mode 100644 histograms/metadata/gpu/OWNERS create mode 100644 histograms/metadata/gpu/histograms.xml create mode 100644 histograms/metadata/hang_watcher/OWNERS create mode 100644 histograms/metadata/hang_watcher/histograms.xml create mode 100644 histograms/metadata/help_app/OWNERS create mode 100644 histograms/metadata/help_app/histograms.xml create mode 100644 histograms/metadata/histogram_suffixes_list.xml create mode 100644 histograms/metadata/history/OWNERS create mode 100644 histograms/metadata/history/histograms.xml create mode 100644 histograms/metadata/holding_space/OWNERS create mode 100644 histograms/metadata/holding_space/histograms.xml create mode 100644 histograms/metadata/image/OWNERS create mode 100644 histograms/metadata/image/histograms.xml create mode 100644 histograms/metadata/input/OWNERS create mode 100644 histograms/metadata/input/histograms.xml create mode 100644 histograms/metadata/installer/histograms.xml create mode 100644 histograms/metadata/interstitial/OWNERS create mode 100644 histograms/metadata/interstitial/histograms.xml create mode 100644 histograms/metadata/invalidation/histograms.xml create mode 100644 histograms/metadata/ios/OWNERS create mode 100644 histograms/metadata/ios/histograms.xml create mode 100644 histograms/metadata/kerberos/histograms.xml create mode 100644 histograms/metadata/kiosk/OWNERS create mode 100644 histograms/metadata/kiosk/histograms.xml create mode 100644 histograms/metadata/language/DIR_METADATA create mode 100644 histograms/metadata/language/OWNERS create mode 100644 histograms/metadata/language/histograms.xml create mode 100644 histograms/metadata/leveldb_proto/OWNERS create mode 100644 histograms/metadata/leveldb_proto/histograms.xml create mode 100644 histograms/metadata/local/OWNERS create mode 100644 histograms/metadata/local/histograms.xml create mode 100644 histograms/metadata/login/OWNERS create mode 100644 histograms/metadata/login/histograms.xml create mode 100644 histograms/metadata/media/OWNERS create mode 100644 histograms/metadata/media/histograms.xml create mode 100644 histograms/metadata/memory/OWNERS create mode 100644 histograms/metadata/memory/histograms.xml create mode 100644 histograms/metadata/mobile/OWNERS create mode 100644 histograms/metadata/mobile/histograms.xml create mode 100644 histograms/metadata/na_cl/OWNERS create mode 100644 histograms/metadata/na_cl/histograms.xml create mode 100644 histograms/metadata/navigation/OWNERS create mode 100644 histograms/metadata/navigation/histograms.xml create mode 100644 histograms/metadata/nearby/OWNERS create mode 100644 histograms/metadata/nearby/histograms.xml create mode 100644 histograms/metadata/net/OWNERS create mode 100644 histograms/metadata/net/histograms.xml create mode 100644 histograms/metadata/network/OWNERS create mode 100644 histograms/metadata/network/histograms.xml create mode 100644 histograms/metadata/new_tab_page/OWNERS create mode 100644 histograms/metadata/new_tab_page/histograms.xml create mode 100644 histograms/metadata/notifications/OWNERS create mode 100644 histograms/metadata/notifications/histograms.xml create mode 100644 histograms/metadata/offline/OWNERS create mode 100644 histograms/metadata/offline/histograms.xml create mode 100644 histograms/metadata/omnibox/OWNERS create mode 100644 histograms/metadata/omnibox/histograms.xml create mode 100644 histograms/metadata/oobe/OWNERS create mode 100644 histograms/metadata/oobe/histograms.xml create mode 100644 histograms/metadata/optimization/DIR_METADATA create mode 100644 histograms/metadata/optimization/OWNERS create mode 100644 histograms/metadata/optimization/histograms.xml create mode 100644 histograms/metadata/others/OWNERS create mode 100644 histograms/metadata/others/histograms.xml create mode 100644 histograms/metadata/page/OWNERS create mode 100644 histograms/metadata/page/histograms.xml create mode 100644 histograms/metadata/password/OWNERS create mode 100644 histograms/metadata/password/histograms.xml create mode 100644 histograms/metadata/payment/OWNERS create mode 100644 histograms/metadata/payment/histograms.xml create mode 100644 histograms/metadata/pcscan/OWNERS create mode 100644 histograms/metadata/pcscan/histograms.xml create mode 100644 histograms/metadata/pdf/OWNERS create mode 100644 histograms/metadata/pdf/histograms.xml create mode 100644 histograms/metadata/performance_controls/histograms.xml create mode 100644 histograms/metadata/performance_manager/OWNERS create mode 100644 histograms/metadata/performance_manager/histograms.xml create mode 100644 histograms/metadata/permissions/OWNERS create mode 100644 histograms/metadata/permissions/histograms.xml create mode 100644 histograms/metadata/phonehub/OWNERS create mode 100644 histograms/metadata/phonehub/histograms.xml create mode 100644 histograms/metadata/platform/OWNERS create mode 100644 histograms/metadata/platform/histograms.xml create mode 100644 histograms/metadata/plugin/histograms.xml create mode 100644 histograms/metadata/plugin_vm/OWNERS create mode 100644 histograms/metadata/plugin_vm/histograms.xml create mode 100644 histograms/metadata/power/OWNERS create mode 100644 histograms/metadata/power/histograms.xml create mode 100644 histograms/metadata/prefetch/DIR_METADATA create mode 100644 histograms/metadata/prefetch/OWNERS create mode 100644 histograms/metadata/prefetch/histograms.xml create mode 100644 histograms/metadata/preloading/DIR_METADATA create mode 100644 histograms/metadata/preloading/OWNERS create mode 100644 histograms/metadata/preloading/histograms.xml create mode 100644 histograms/metadata/print/OWNERS create mode 100644 histograms/metadata/print/histograms.xml create mode 100644 histograms/metadata/printing/OWNERS create mode 100644 histograms/metadata/printing/histograms.xml create mode 100644 histograms/metadata/privacy/OWNERS create mode 100644 histograms/metadata/privacy/histograms.xml create mode 100644 histograms/metadata/privacy_budget/OWNERS create mode 100644 histograms/metadata/privacy_budget/histograms.xml create mode 100644 histograms/metadata/profile/OWNERS create mode 100644 histograms/metadata/profile/histograms.xml create mode 100644 histograms/metadata/quick_answers/OWNERS create mode 100644 histograms/metadata/quick_answers/histograms.xml create mode 100644 histograms/metadata/quickoffice/histograms.xml create mode 100644 histograms/metadata/quota/OWNERS create mode 100644 histograms/metadata/quota/histograms.xml create mode 100644 histograms/metadata/renderer/OWNERS create mode 100644 histograms/metadata/renderer/histograms.xml create mode 100644 histograms/metadata/renderer4/OWNERS create mode 100644 histograms/metadata/renderer4/histograms.xml create mode 100644 histograms/metadata/safe_browsing/OWNERS create mode 100644 histograms/metadata/safe_browsing/histograms.xml create mode 100644 histograms/metadata/sb_client/OWNERS create mode 100644 histograms/metadata/sb_client/histograms.xml create mode 100644 histograms/metadata/scanning/OWNERS create mode 100644 histograms/metadata/scanning/histograms.xml create mode 100644 histograms/metadata/scheduler/OWNERS create mode 100644 histograms/metadata/scheduler/histograms.xml create mode 100644 histograms/metadata/search/OWNERS create mode 100644 histograms/metadata/search/histograms.xml create mode 100644 histograms/metadata/security/OWNERS create mode 100644 histograms/metadata/security/histograms.xml create mode 100644 histograms/metadata/segmentation_platform/OWNERS create mode 100644 histograms/metadata/segmentation_platform/histograms.xml create mode 100644 histograms/metadata/service/OWNERS create mode 100644 histograms/metadata/service/histograms.xml create mode 100644 histograms/metadata/session/OWNERS create mode 100644 histograms/metadata/session/histograms.xml create mode 100644 histograms/metadata/settings/OWNERS create mode 100644 histograms/metadata/settings/histograms.xml create mode 100644 histograms/metadata/sharing/OWNERS create mode 100644 histograms/metadata/sharing/histograms.xml create mode 100644 histograms/metadata/side_search/histograms.xml create mode 100644 histograms/metadata/signin/OWNERS create mode 100644 histograms/metadata/signin/histograms.xml create mode 100644 histograms/metadata/simple/OWNERS create mode 100644 histograms/metadata/simple/histograms.xml create mode 100644 histograms/metadata/software/OWNERS create mode 100644 histograms/metadata/software/histograms.xml create mode 100644 histograms/metadata/stability/histograms.xml create mode 100644 histograms/metadata/start_surface/OWNERS create mode 100644 histograms/metadata/start_surface/histograms.xml create mode 100644 histograms/metadata/startup/OWNERS create mode 100644 histograms/metadata/startup/histograms.xml create mode 100644 histograms/metadata/storage/OWNERS create mode 100644 histograms/metadata/storage/histograms.xml create mode 100644 histograms/metadata/subresource/OWNERS create mode 100644 histograms/metadata/subresource/histograms.xml create mode 100644 histograms/metadata/sync/DIR_METADATA create mode 100644 histograms/metadata/sync/OWNERS create mode 100644 histograms/metadata/sync/histograms.xml create mode 100644 histograms/metadata/system/OWNERS create mode 100644 histograms/metadata/system/histograms.xml create mode 100644 histograms/metadata/tab/OWNERS create mode 100644 histograms/metadata/tab/histograms.xml create mode 100644 histograms/metadata/translate/DIR_METADATA create mode 100644 histograms/metadata/translate/OWNERS create mode 100644 histograms/metadata/translate/histograms.xml create mode 100644 histograms/metadata/ukm/histograms.xml create mode 100644 histograms/metadata/uma/histograms.xml create mode 100644 histograms/metadata/update_engine/OWNERS create mode 100644 histograms/metadata/update_engine/histograms.xml create mode 100644 histograms/metadata/v8/OWNERS create mode 100644 histograms/metadata/v8/histograms.xml create mode 100644 histograms/metadata/variations/histograms.xml create mode 100644 histograms/metadata/video_tutorials/OWNERS create mode 100644 histograms/metadata/video_tutorials/histograms.xml create mode 100644 histograms/metadata/views/histograms.xml create mode 100644 histograms/metadata/web_apk/OWNERS create mode 100644 histograms/metadata/web_apk/histograms.xml create mode 100644 histograms/metadata/web_audio/OWNERS create mode 100644 histograms/metadata/web_audio/histograms.xml create mode 100644 histograms/metadata/web_core/OWNERS create mode 100644 histograms/metadata/web_core/histograms.xml create mode 100644 histograms/metadata/web_rtc/OWNERS create mode 100644 histograms/metadata/web_rtc/histograms.xml create mode 100644 histograms/metadata/webapps/OWNERS create mode 100644 histograms/metadata/webapps/histograms.xml create mode 100644 histograms/metadata/webauthn/OWNERS create mode 100644 histograms/metadata/webauthn/histograms.xml create mode 100644 histograms/metadata/weblayer/OWNERS create mode 100644 histograms/metadata/weblayer/histograms.xml create mode 100644 histograms/metadata/windows/histograms.xml create mode 100644 histograms/metadata/xr/DIR_METADATA create mode 100644 histograms/metadata/xr/OWNERS create mode 100644 histograms/metadata/xr/histograms.xml create mode 100644 histograms/populate_enums.py create mode 100644 histograms/presubmit_bad_message_reasons.py create mode 100755 histograms/pretty_print.py create mode 100755 histograms/pretty_print_test.py create mode 100755 histograms/print_expanded_histograms.py create mode 100755 histograms/print_histogram_names.py create mode 100644 histograms/review_guidelines.md create mode 100644 histograms/split_xml.py create mode 100644 histograms/split_xml_unittest.py create mode 100644 histograms/suffixes_to_variants.py create mode 100644 histograms/test_data/components/DIR_METADATA create mode 100644 histograms/test_data/components/histograms.xml create mode 100644 histograms/test_data/enums.xml create mode 100644 histograms/test_data/histogram_suffixes_list.xml create mode 100644 histograms/test_data/histograms.xml create mode 100644 histograms/test_data/ukm.xml create mode 100644 histograms/update_bad_message_reasons.py create mode 100644 histograms/update_debug_scenarios.py create mode 100755 histograms/update_document_policy_enum.py create mode 100644 histograms/update_editor_commands.py create mode 100755 histograms/update_extension_histograms.py create mode 100644 histograms/update_extension_permission.py create mode 100755 histograms/update_gpu_driver_bug_workaround_entries.py create mode 100644 histograms/update_histogram_enum.py create mode 100755 histograms/update_net_error_codes.py create mode 100755 histograms/update_net_trust_anchors.py create mode 100755 histograms/update_permissions_policy_enum.py create mode 100644 histograms/update_policies.py create mode 100755 histograms/update_protocol_commands_enum.py create mode 100755 histograms/update_scheduler_enums.py create mode 100755 histograms/update_use_counter_css.py create mode 100755 histograms/update_use_counter_feature_enum.py create mode 100755 histograms/validate_format.py create mode 100755 histograms/validate_histograms_index.py create mode 100755 histograms/validate_prefix.py create mode 100755 md2xml.py create mode 100755 metrics_python_tests.py create mode 100644 structured/OWNERS create mode 100644 structured/PRESUBMIT.py create mode 100644 structured/codegen.py create mode 100755 structured/codegen_unittest.py create mode 100644 structured/events.xml create mode 100755 structured/gen_events.py create mode 100755 structured/gen_validator.py create mode 100644 structured/model.py create mode 100755 structured/model_unittest.py create mode 100644 structured/model_util.py create mode 100755 structured/pretty_print.py create mode 100644 structured/structured.xml create mode 100644 structured/templates_events.py create mode 100644 structured/templates_validator.py create mode 100644 ukm/.gitignore create mode 100644 ukm/OWNERS create mode 100644 ukm/PRESUBMIT.py create mode 100644 ukm/PRIVACY_OWNERS create mode 100644 ukm/builders_template.py create mode 100644 ukm/codegen.py create mode 100755 ukm/codegen_test.py create mode 100644 ukm/decode_template.py create mode 100755 ukm/gen_builders.py create mode 100755 ukm/gen_builders_test.py create mode 100755 ukm/pretty_print.py create mode 100644 ukm/ukm.xml create mode 100644 ukm/ukm_model.py create mode 100755 ukm/ukm_model_test.py create mode 100755 ukm/validate_format.py create mode 100644 ukm/xml_validations.py create mode 100644 ukm/xml_validations_test.py diff --git a/BUILD.gn b/BUILD.gn new file mode 100644 index 000000000000..d2f02095d2f1 --- /dev/null +++ b/BUILD.gn @@ -0,0 +1,151 @@ +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +action("histograms_xml") { + script = "histograms/merge_xml.py" + output = "$root_out_dir/histograms.xml" + outputs = [ output ] + args = [ + "--output", + rebase_path(output, root_build_dir), + ] +} + +copy("actions_xml") { + sources = [ "actions/actions.xml" ] + outputs = [ "$root_out_dir/actions.xml" ] +} + +copy("ukm_xml") { + sources = [ "ukm/ukm.xml" ] + outputs = [ "$root_out_dir/ukm.xml" ] +} + +group("metrics_metadata") { + deps = [ + ":actions_xml", + ":histograms_xml", + ":ukm_xml", + ] +} + +# This group defines the isolate files needed to run metrics_python_tests.py on +# on bots. This also tells the build system when the tests should be re-run - +# when one of the dependent files changes. +# +# When adding new entries to this test suite, you can test things locally with +# isolation using the following command: +# +# tools/mb/mb.py run out/gn metrics_python_tests -- \ +# --isolated-script-test-output=/tmp/output.json +# +group("metrics_python_tests") { + data = [ + # The run_isolated_script_test.py script and its dependencies. + "//testing/scripts/run_isolated_script_test.py", + "//testing/scripts/common.py", + "//third_party/catapult/third_party/typ/", + + # Scripts we depend on. Their unit tests are also included. + "//tools/json_comment_eater/json_comment_eater.py", + "//tools/json_comment_eater/json_comment_eater_test.py", + "//tools/json_comment_eater/everything.json", + "//tools/json_comment_eater/everything_expected.json", + "//tools/json_to_struct/element_generator.py", + "//tools/json_to_struct/element_generator_test.py", + "//tools/json_to_struct/json_to_struct.py", + "//tools/json_to_struct/struct_generator.py", + "//tools/json_to_struct/struct_generator_test.py", + + # The metrics_python_tests.py runner and its dependencies. + "//tools/metrics/metrics_python_tests.py", + + "//tools/metrics/actions/action_utils.py", + "//tools/metrics/actions/actions_model.py", + "//tools/metrics/actions/actions_model_test.py", + "//tools/metrics/actions/extract_actions.py", + "//tools/metrics/actions/extract_actions_test.py", + + "//tools/metrics/common/diff_util.py", + "//tools/metrics/common/models.py", + "//tools/metrics/common/path_util.py", + "//tools/metrics/common/presubmit_util.py", + "//tools/metrics/common/pretty_print_xml.py", + "//tools/metrics/common/etree_util.py", + + "//tools/metrics/histograms/test_data/enums.xml", + "//tools/metrics/histograms/test_data/histograms.xml", + "//tools/metrics/histograms/test_data/ukm.xml", + "//tools/metrics/histograms/enums.xml", + "//tools/metrics/histograms/expand_owners.py", + "//tools/metrics/histograms/expand_owners_unittest.py", + "//tools/metrics/histograms/extract_histograms.py", + "//tools/metrics/histograms/extract_histograms_test.py", + "//tools/metrics/histograms/generate_expired_histograms_array.py", + "//tools/metrics/histograms/generate_expired_histograms_array_unittest.py", + "//tools/metrics/histograms/generate_flag_enums.py", + "//tools/metrics/histograms/generate_flag_enums_test.py", + "//tools/metrics/histograms/histogram_ownership.py", + "//tools/metrics/histograms/histograms.xml", + "//tools/metrics/histograms/histogram_configuration_model.py", + "//tools/metrics/histograms/histogram_configuration_model_test_enums.py", + "//tools/metrics/histograms/histogram_configuration_model_test_histograms.py", + "//tools/metrics/histograms/histogram_paths.py", + "//tools/metrics/histograms/merge_xml.py", + "//tools/metrics/histograms/merge_xml_test.py", + "//tools/metrics/histograms/populate_enums.py", + "//tools/metrics/histograms/pretty_print.py", + "//tools/metrics/histograms/pretty_print_test.py", + + "//tools/metrics/structured/codegen_unittest.py", + "//tools/metrics/structured/model_unittest.py", + + "//tools/metrics/ukm/ukm.xml", + "//tools/metrics/ukm/codegen.py", + "//tools/metrics/ukm/codegen_test.py", + "//tools/metrics/ukm/builders_template.py", + "//tools/metrics/ukm/decode_template.py", + "//tools/metrics/ukm/gen_builders.py", + "//tools/metrics/ukm/gen_builders_test.py", + "//tools/metrics/ukm/ukm_model.py", + "//tools/metrics/ukm/ukm_model_test.py", + "//tools/metrics/ukm/xml_validations.py", + "//tools/metrics/ukm/xml_validations_test.py", + + "//tools/python/google/path_utils.py", + + "//tools/variations/fieldtrial_to_struct_unittest.py", + "//tools/variations/fieldtrial_to_struct.py", + "//tools/variations/fieldtrial_util_unittest.py", + "//tools/variations/fieldtrial_util.py", + "//tools/variations/split_variations_cmd_unittest.py", + "//tools/variations/split_variations_cmd.py", + "//tools/variations/unittest_data/expected_output.cc", + "//tools/variations/unittest_data/expected_output.h", + "//tools/variations/unittest_data/test_config.json", + "//tools/variations/unittest_data/variations_cmd.txt", + "//components/variations/field_trial_config/field_trial_testing_config_schema.json", + "//components/variations/service/generate_ui_string_overrider.py", + "//components/variations/service/generate_ui_string_overrider_unittest.py", + ] + + # Add platform-specific dependencies for dirmd. + if (is_win) { + data += [ + "//third_party/depot_tools/dirmd.bat", + "//third_party/depot_tools/.cipd_bin/dirmd.exe", + "//third_party/depot_tools/cipd_bin_setup.bat", + "//third_party/depot_tools/cipd_manifest.txt", + ] + } else { + data += [ + "//third_party/depot_tools/dirmd", + "//third_party/depot_tools/.cipd_bin/dirmd", + "//third_party/depot_tools/cipd_bin_setup.sh", + "//third_party/depot_tools/cipd_manifest.txt", + ] + } + + data_deps = [ "//testing:test_scripts_shared" ] +} diff --git a/DIR_METADATA b/DIR_METADATA new file mode 100644 index 000000000000..1867dd61ee86 --- /dev/null +++ b/DIR_METADATA @@ -0,0 +1,11 @@ +# Metadata information for this directory. +# +# For more information on DIR_METADATA files, see: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md +# +# For the schema of this file, see Metadata message: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto + +monorail { + component: "Internals>Metrics" +} \ No newline at end of file diff --git a/OWNERS b/OWNERS new file mode 100644 index 000000000000..1751f19ccf10 --- /dev/null +++ b/OWNERS @@ -0,0 +1,7 @@ +# Note: Please send CLs to chromium-metrics-reviews@google.com rather than to +# specific individuals. These CLs will be automatically reassigned to a reviewer +# within about 5 minutes. This approach helps our team to load-balance incoming +# reviews. Googlers can read more about this at go/gwsq-gerrit. +chromium-metrics-reviews@google.com + +file://base/metrics/OWNERS #{LAST_RESORT_SUGGESTION} diff --git a/PRESUBMIT.py b/PRESUBMIT.py new file mode 100644 index 000000000000..f499189daf3c --- /dev/null +++ b/PRESUBMIT.py @@ -0,0 +1,51 @@ +# Copyright 2022 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Presubmit script for ukm/ukm.xml on changes made to histograms/enums.xml + +See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts +for more details on the presubmit API built into gcl. +""" + +USE_PYTHON3 = True + +UKM_XML = 'ukm.xml' +ENUMS_XML = 'enums.xml' + + +def CheckChange(input_api, output_api): + """Checks that ukm/ukm.xml is validated on changes to histograms/enums.xml""" + for f in input_api.AffectedTextFiles(): + p = f.AbsoluteLocalPath() + # Early return if the ukm file is changed, then the presubmit script in the + # ukm directory would run and report the errors. + if (UKM_XML in p): + return [] + for f in input_api.AffectedTextFiles(): + p = f.AbsoluteLocalPath() + filepath = input_api.os_path.relpath(p, input_api.PresubmitLocalPath()) + if (ENUMS_XML in filepath): + cwd = input_api.os_path.dirname(input_api.PresubmitLocalPath()) + + exit_code = input_api.subprocess.call([ + input_api.python3_executable, 'metrics/ukm/validate_format.py', + '--presubmit' + ], + cwd=cwd) + if exit_code != 0: + return [ + output_api.PresubmitError( + '%s does not pass format validation; run ' + '%s/ukm/validate_format.py and fix the reported error(s) or ' + 'warning(s).' % (UKM_XML, input_api.PresubmitLocalPath())), + ] + + return [] + + +def CheckChangeOnUpload(input_api, output_api): + return CheckChange(input_api, output_api) + + +def CheckChangeOnCommit(input_api, output_api): + return CheckChange(input_api, output_api) diff --git a/actions/OWNERS b/actions/OWNERS new file mode 100644 index 000000000000..ad72062319b0 --- /dev/null +++ b/actions/OWNERS @@ -0,0 +1,9 @@ +# When sending a CL with metrics for review, if a member of +# METRIC_REVIEWER_OWNERS is a good choice of reviewer, please send the CL to +# them. Otherwise, send the CL to chromium-metrics-reviews@google.com. Googlers +# can read more about chromium-metrics-reviews@google.com at go/gwsq-gerrit. +per-file actions.xml=file://base/metrics/OWNERS +per-file actions.xml=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Metrics changes should always be reviewed by owners. +per-file actions.xml=set noparent diff --git a/actions/PRESUBMIT.py b/actions/PRESUBMIT.py new file mode 100644 index 000000000000..656566ea1eab --- /dev/null +++ b/actions/PRESUBMIT.py @@ -0,0 +1,39 @@ +# Copyright 2014 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Presubmit script for actions.xml. + +See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts +for more details on the presubmit API built into depot_tools. +""" + +USE_PYTHON3 = True + + +def CheckChange(input_api, output_api): + """Checks that actions.xml is up to date and pretty-printed.""" + for f in input_api.AffectedTextFiles(): + p = f.AbsoluteLocalPath() + if (input_api.basename(p) == 'actions.xml' + and input_api.os_path.dirname(p) == input_api.PresubmitLocalPath()): + cwd = input_api.os_path.dirname(p) + exit_code = input_api.subprocess.call( + [input_api.python3_executable, 'extract_actions.py', '--presubmit'], + cwd=cwd) + if exit_code != 0: + return [ + output_api.PresubmitError( + 'tools/metrics/actions/actions.xml is not up to date or is not ' + 'formatted correctly; run tools/metrics/actions/' + 'extract_actions.py to fix') + ] + return [] + + +def CheckChangeOnUpload(input_api, output_api): + return CheckChange(input_api, output_api) + + +def CheckChangeOnCommit(input_api, output_api): + return CheckChange(input_api, output_api) diff --git a/actions/README.md b/actions/README.md new file mode 100644 index 000000000000..9e535c236b42 --- /dev/null +++ b/actions/README.md @@ -0,0 +1,214 @@ +# User Action Guidelines + +[TOC] + +This document covers the best practices on using user actions in code and +documenting them for the dashboard. User actions come with only a name and +a timestamp. They are best used when you care about a sequence—which actions +happen in what order. If you don't care about the order, you should be using +[histograms](https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md) +(likely [enumerated histograms](https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md#Enum-Histograms)). + +Often, you want both user actions and histogram logging in your code. They +enable different analyses. They're complementary. + +## Coding (emitting to user actions) + +Generally you should call `base::RecordAction()`, which is defined in +[user_metrics.h](https://cs.chromium.org/chromium/src/base/metrics/user_metrics.h). + + +### Emit at a high level, not deep in the implementation + +Prefer to emit at the highest level reasonable, closest to the code that handles +the UI interaction. Emitting deep in implementation code can cause problems +because that code may get reused (and thus called more times in more places) or +may get called fewer times (due to caching for example). In cases like this, +the logged user action would no longer correspond to a meaningful action +performed by the user. + +### Don't use the same string in multiple places + +Generally a logged user action should correspond to a single event. Thus, the +logging should probably only appear in a single place in the code. If the same +user action needs to be logged in multiple places, consider whether you should +be using different user action names for these separate call paths. + +In rare cases, the same user action can be recorded in multiple places as long +as only one of the places can be reached. This may be necessary if the user +action is logged in platform-specific code or if one implementation is being +replaced with another. When recording an action in multiple places, use a +compile-time constant of appropriate scope that can be referenced everywhere. +Using inline strings in multiple places can lead to errors if you ever need to +revise the name and you update one location but forget another. + +### Efficiency + +Due to the practices about when and how often to emit a user action, actions +should not be emitted often enough to cause efficiency issues. (If actions are +emitted often enough to cause a problem, they're not being emitted at +appropriate times. See advice below.) + +## Emitting strategies + +### Emit once per action + +A user action should be tied to a single event, such as a user doing something +or a user seeing something new. Each meaningful unit should cause one emit. +For example, showing the history page is a meaningful unit; querying the +history database—which might need to be queried multiple times to fill +the page—is probably not a meaningful unit for most use cases. + +### Try to avoid redundant emits + +A meaningful user action should usually cause only one emit. This advice is +mainly because user action sequences are easier to analyze without redudancy. + +For example, if the browser already has a "Back" user action, avoid adding a +"BackViaKeyboardShortcut" user action—it's mostly redundant—unless it's +necessary because you care about how the different types of Back button work in +sequences of user actions. If you don't care about how BackViaKeyboardShortcut +works in a sequence and only want to count them or determine the breakdown of +keyboard-shortcut backs versus all backs, use a histogram. + +### Do not emit excessively + +Again, choose an appropriately-sized meaningful unit. For example, emit +"DragScrolled" for a whole scroll action. Don't emit this action every time the +user pauses scrolling if the user remains in the process of scrolling (mouse +button still down). However, if you need to understand the sequence of partial +scrolls, emitting this for each scroll pause is acceptable. + +As another example, you may want to emit "FocusOmnibox" (upon focus), +"OmniboxEditInProgress" (upon first keystroke), and "OmniboxUse" (upon going +somewhere) but skip "OmniboxKeystroke". That's probably more detailed than +you need. + +### Emitting impressions is okay + +It's okay to emit user actions such as "ShowTranslateInfobar" or +"DisplayedImageLinkContextMenu". Remember to mark them as +[not_user_triggered](#not-user-triggered) and please try to make sure they're +not excessive. For example, don't emit "ShowedSecureIconNextToOmnibox" because +that's likely to appear on most pages. That said, if you need +ShowedSecureIconNextToOmnibox logged in order to analyze a sequence of user +actions that include it, go ahead. + +## Testing + +Test your user actions using `chrome://user-actions`. Make sure they're being +emitted when you expect and not emitted otherwise. + +If this is a general UI surface, please try to check every platform. In +particular, check Windows (Views-based platforms), Mac (non-Views), Android +phone (yet other UI wrapper code), Android tablet (often triggers look-alike but +different menus), and iOS (yet more different UI wrapper code). + +Also, check that your new user action is not mostly redundant in light of +existing user actions (see [advice above](#Try-to-avoid-redundant-emits)) and +not emitted excessively (see [advice above](#Do-not-emit-excessively)). + +In addition to testing interactively, unit tests can check the number of times a +user action was emitted. See [user_action_tester.h](https://cs.chromium.org/chromium/src/base/test/metrics/user_action_tester.h) +for details. + +See also `chrome://metrics-internals` ([docs](https://chromium.googlesource.com/chromium/src/+/master/components/metrics/debug/README.md)) +for more thorough manual testing if needed. + +## Interpreting the resulting data + +The top of [go/uma-guide](http://go/uma-guide) has good advice on how to go +about analyzing and interpreting the results of UMA data uploaded by users. If +you're reading this page, you've probably just finished adding a user action to +the Chromium source code and you're waiting for users to update their version of +Chrome to a version that includes your code. In this case, the best advice is +to remind you that users who update frequently or quickly are biased. Best take +the initial statistics with a grain of salt; they're probably *mostly* right but +not entirely so. + +## Revising user actions + +When changing the semantics of a user action (when it's emitted), make it into +a new user action with a new name. Otherwise the dashboard will mix two +different interpretations of the data and make no sense. + +## Documenting user actions + +Document user actions in [actions.xml](./actions.xml). There is also a +[Google-internal version of the file](http://go/chrome-user-actions-internal) +for user actions that exist in Google-internal codebases. Confidential actions +are added only to Chrome code, not Chromium code. + +### Add user actions and documentation in the same changelist + +If possible, please add the actions.xml description in the same changelist in +which you add the user-action-emitting code. This has several benefits. One, +it sometimes happens that the actions.xml reviewer has questions or concerns +about the user action description that reveal problems with interpretation of +the data and call for a different recording strategy. Two, it allows the user +action reviewer to easily review the emission code to see if it comports with +these best practices, and to look for other errors. + +### Understandable to everyone + +User action descriptions should be understandable to someone not familiar with +your feature. Please add a sentence or two of background if necessary. + +It's a good practice to note caveats associated with your user actions in this +section, such as which platforms are supported (if the set of supported +platforms is surprising, such as a desktop feature that happens to not be logged +on Mac). + +### State when it is emitted + +User action descriptions should clearly state when the action is emitted. + +### Owners + +Each user action needs owners, who are the current expert on the metric. Owners +are responsible for answering questions about the metric, handling any +maintenance tasks, and deprecating the metric if it has outlived its usefulness. +If you are using a metric heavily and understand it intimately, feel free to add +yourself as an owner. @chromium.org email addresses are preferred. + +The primary owner must be an individual, who is ultimately responsible for the +metric. It's a best practice to list multiple owners, which makes it less likely +that maintenance tasks will slip through the cracks. This is important because +the metrics team may file bugs related to user actions, and such bugs need to be +triaged by someone familiar with the metric. If an appropriate mailing list or +team email is available, it's a good idea to list it as a secondary owner. + +### Set `not_user_triggered="true"` when appropriate {#not-user-triggered} + +actions.xml allows you to annotate an action as `not_user_triggered="true"`. +Use it when appropriate. For example, showing a notification is not user +triggered. However, please remember: Before adding something marked as +`not_user_triggered="true"`, consider whether you need to analyze sequences of +actions. If not, please use a histogram to count these events instead. + +## Cleaning up user action entries + +Do not delete actions from actions.xml. Instead, mark unused user actions as +obsolete, annotating them with the associated date or milestone in the obsolete +tag entry. + +If the user action is being replaced by a new version: + +* Note in the `` message the name of the replacement action. + +* Make sure the descriptions of the original and replacement user actions + are different. It's never appropriate for them to be identical. Either + the old description was wrong, and it should be revised to explain what + it actually measured, or the old user action was measuring something not + as useful as the replacement, in which case the new user action is + measuring something different and needs to have a new description. + +A changelist that marks a user action as obsolete should be reviewed by all +current owners. + +Deleting user action entries would be bad if someone accidentally reused your +old user action name. If this happened, new data would be corrupted by whatever +old data was still coming in. It's also useful to keep obsolete user action +descriptions in actions.xml. That way, someone searching for a user action to +answer a particular question can learn if there was a user action at some point +that did so—even if it isn't active now. diff --git a/actions/action_utils.py b/actions/action_utils.py new file mode 100644 index 000000000000..a092da5ee371 --- /dev/null +++ b/actions/action_utils.py @@ -0,0 +1,239 @@ +# Copyright 2015 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""A utility module for parsing and applying action suffixes in actions.xml. + +Note: There is a copy of this file used internally by the UMA processing +infrastructure. Any changes to this file should also be done (manually) to the +internal copy. Please contact tools/metrics/OWNERS for more details. +""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + + +class Error(Exception): + pass + + +class UndefinedActionItemError(Error): + pass + + +class InvalidOrderingAttributeError(Error): + pass + + +class SuffixNameEmptyError(Error): + pass + + +class InvalidAffecteddActionNameError(Error): + pass + + +class Action(object): + """Represents Chrome user action. + + Attributes: + name: name of the action. + description: description of the action. + owners: list of action owners + not_user_triggered: if action is not user triggered + obsolete: explanation on why user action is not being used anymore + from_suffix: If True, this action was computed via a suffix. + """ + + def __init__(self, + name, + description, + owners, + not_user_triggered=False, + obsolete=None, + from_suffix=False): + self.name = name + self.description = description + self.owners = owners + self.not_user_triggered = not_user_triggered + self.obsolete = obsolete + self.from_suffix = from_suffix + + +class Suffix(object): + """Action suffix in actions.xml. + + Attributes: + name: name of the suffix. + description: description of the suffix. + separator: the separator between affected action name and suffix name. + ordering: 'suffix' or 'prefix'. if set to prefix, suffix name will be + inserted after the first dot separator of affected action name. + """ + + def __init__(self, name, description, separator, ordering): + if not name: + raise SuffixNameEmptyError('Suffix name cannot be empty.') + + if ordering != 'suffix' and ordering != 'prefix': + raise InvalidOrderingAttributeError("Ordering has to be either 'prefix' " + "or 'suffix'.") + + self.name = name + self.description = description + self.separator = separator + self.ordering = ordering + + def __repr__(self): + return '<%s, %s, %s, %s>' % (self.name, self.description, self.separator, + self.ordering) + + +def CreateActionsFromSuffixes(actions_dict, action_suffix_nodes): + """Creates new actions from suffixes and adds them to actions_dict. + + Args: + actions_dict: dict of existing action name to Action object. + action_suffix_nodes: a list of action-suffix nodes + + Returns: + A dictionary of action name to list of Suffix objects for that action. + + Raises: + UndefinedActionItemError: if an affected action name can't be found + """ + action_to_suffixes_dict = _CreateActionToSuffixesDict(action_suffix_nodes) + + # Some actions in action_to_suffixes_dict keys may yet to be created. + # Therefore, while new actions can be created and added to the existing + # actions keep calling _CreateActionsFromSuffixes. + while _CreateActionsFromSuffixes(actions_dict, action_to_suffixes_dict): + pass + + # If action_to_suffixes_dict is not empty by the end, we have missing actions. + if action_to_suffixes_dict: + raise UndefinedActionItemError('Following actions are missing: %s.' % + (list(action_to_suffixes_dict.keys()))) + + +def _CreateActionToSuffixesDict(action_suffix_nodes): + """Creates a dict of action name to list of Suffix objects for that action. + + Args: + action_suffix_nodes: a list of action-suffix nodes + + Returns: + A dictionary of action name to list of Suffix objects for that action. + """ + action_to_suffixes_dict = {} + for action_suffix_node in action_suffix_nodes: + separator = _GetAttribute(action_suffix_node, 'separator', '_') + ordering = _GetAttribute(action_suffix_node, 'ordering', 'suffix') + suffixes = [Suffix(suffix_node.getAttribute('name'), + suffix_node.getAttribute('label'), + separator, ordering) for suffix_node in + action_suffix_node.getElementsByTagName('suffix')] + + action_nodes = action_suffix_node.getElementsByTagName('affected-action') + for action_node in action_nodes: + action_name = action_node.getAttribute('name') + # If has child nodes, only those suffixes + # should be used with that action. filter the list of suffix names if so. + action_suffix_names = [suffix_node.getAttribute('name') for suffix_node in + action_node.getElementsByTagName('with-suffix')] + if action_suffix_names: + action_suffixes = [suffix for suffix in suffixes if suffix.name in + action_suffix_names] + else: + action_suffixes = list(suffixes) + + if action_name in action_to_suffixes_dict: + action_to_suffixes_dict[action_name] += action_suffixes + else: + action_to_suffixes_dict[action_name] = action_suffixes + + return action_to_suffixes_dict + + +def _GetAttribute(node, attribute_name, default_value): + """Returns the attribute's value or default_value if attribute doesn't exist. + + Args: + node: an XML dom element. + attribute_name: name of the attribute. + default_value: default value to return if attribute doesn't exist. + + Returns: + The value of the attribute or default_value if attribute doesn't exist. + """ + if node.hasAttribute(attribute_name): + return node.getAttribute(attribute_name) + else: + return default_value + + +def _CreateActionsFromSuffixes(actions_dict, action_to_suffixes_dict): + """Creates new actions with action-suffix pairs and adds them to actions_dict. + + For every key (action name) in action_to_suffixes_dict, This function looks + to see whether it exists in actions_dict. If so it combines the Action object + from actions_dict with all the Suffix objects from action_to_suffixes_dict to + create new Action objects. New Action objects are added to actions_dict and + the action name is removed from action_to_suffixes_dict. + + Args: + actions_dict: dict of existing action name to Action object. + action_to_suffixes_dict: dict of action name to list of Suffix objects it + will combine with. + + Returns: + True if any new action was added, False otherwise. + """ + expanded_actions = set() + for action_name, suffixes in action_to_suffixes_dict.items(): + if action_name in actions_dict: + existing_action = actions_dict[action_name] + for suffix in suffixes: + _CreateActionFromSuffix(actions_dict, existing_action, suffix) + + expanded_actions.add(action_name) + + for action_name in expanded_actions: + del action_to_suffixes_dict[action_name] + + return bool(expanded_actions) + + +def _CreateActionFromSuffix(actions_dict, action, suffix): + """Creates a new action with action and suffix and adds it to actions_dict. + + Args: + actions_dict: dict of existing action name to Action object. + action: an Action object to combine with suffix. + suffix: a suffix object to combine with action. + + Returns: + None. + + Raises: + InvalidAffecteddActionNameError: if the action name does not contain a dot + """ + if suffix.ordering == 'suffix': + new_action_name = action.name + suffix.separator + suffix.name + else: + (before, dot, after) = action.name.partition('.') + if not after: + raise InvalidAffecteddActionNameError( + "Action name '%s' must contain a '.'." % action.name) + new_action_name = before + dot + suffix.name + suffix.separator + after + + new_action_description = action.description + ' ' + suffix.description + + actions_dict[new_action_name] = Action( + new_action_name, + new_action_description, + list(action.owners), + action.not_user_triggered, + action.obsolete, + from_suffix=True) \ No newline at end of file diff --git a/actions/actions.xml b/actions/actions.xml new file mode 100644 index 000000000000..e99edc7b7e5b --- /dev/null +++ b/actions/actions.xml @@ -0,0 +1,37980 @@ + + + + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated since the conflicts page is changing. TODO(pmonette): Update this + to refer to the action for the new conflicts page. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + bengr@chromium.org + megjablon@chromium.org + + User enabled flag that Forces Data Saver Lo-Fi mode to be always enabled via + chrome://flags. The action is emitted once per startup when the flag is + active. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + bengr@chromium.org + megjablon@chromium.org + + User enabled flag that Forces Data Saver Lo-Fi mode to be enabled only on + cellular connection via chrome://flags. The action is emitted once per + startup when the flag is active. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + bengr@chromium.org + megjablon@chromium.org + + User enabled flag that Forces Data Saver Lo-Fi mode to be disabled via + chrome://flags. The action is emitted once per startup when the flag is + active. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + bengr@chromium.org + megjablon@chromium.org + + User enabled flag that Forces Data Saver Lo-Fi mode to be enabled only on + slow connections via chrome://flags. The action is emitted once per startup + when the flag is active. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This flag no longer exists. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This flag no longer exists. + skobes@chromium.org + + User flag to disable smooth scroll animations on wheel and keyboard input. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + dtapuska@chromium.org + + User enabled the PassiveDocumentEventListeners via chrome://flags. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + rbyers@chromium.org + + User flag to enable web APIs marked as status=experimental + RuntimeEnabledFeatures. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + skau@chromium.org + + Records if native cups printing is enabled in chrome://flags + + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + nzolghadr@chromium.org + + User enabled the "PointerEvent" blink feature via chrome://flags. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + jyasskin@chromium.org + ortuno@chromium.org + scheib@chromium.org + User enabled Web Bluetooth via chrome://flags. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + quiche@chromium.org + + User enabled WiFi credential sync via chrome://flags. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + palmer@chromium.org + felt@chromium.org + + This flag lets users opt into or out of marking HTTP as Dubious or as + Non-Secure. The action is emitted once per startup when the flag is active. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + grunell@chromium.org + olka@chromium.org + + User enabled flag to control new audio rendering mixing strategy. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + dtapuska@chromium.org + + User enabled the PassiveEventListenersDueToFling via chrome://flags. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + dtapuska@chromium.org + + User enabled flag to adjust the default value of 'passive' field in + AddEventListenerOptions dictionary when a javascript event handler is added. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + skobes@chromium.org + + User flag to disable smooth scroll animations on wheel and keyboard input. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of Launch.FlagsAtStartup histogram. + tbuckley@chromium.org + + User enabled flag that sets Chrome's style to be non-material design. The + action is emitted once per startup when the flag is active. + + + + + Deprecated in favor of Launch.FlagsAtStartup histogram. + tbuckley@chromium.org + + User enabled flag that sets Chrome's style to be material design. The action + is emitted once per startup when the flag is active. + + + + + Deprecated in favor of Launch.FlagsAtStartup histogram. + tbuckley@chromium.org + + User enabled flag that sets Chrome's style to be hybrid material design. The + action is emitted once per startup when the flag is active. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + yhanada@chromium.org + arc-framework@google.com + + Record how often accelerator to increase density is used in ARC++. + + + + + yhanada@chromium.org + arc-framework@google.com + + Record how often accelerator to decrease density is used in ARC++. + + + + + yhanada@chromium.org + arc-framework@google.com + + Record how often accelerator to increase density is used in ARC++. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + benbecker@chromium.org + andp@chromium.org + nupurjain@chromium.org + + Starting a same app window selection cycle by pressing alt-backtick. Only + counts the initial alt-backtick, not each step in the cycle. + + + + + afakhry@chromium.org + + User activates the virtual desk positioned to the left of the currently + active one by pressing a keyboard shortcut. + + + + + afakhry@chromium.org + + User activates the virtual desk positioned to the right of the currently + active one by pressing a keyboard shortcut. + + + + + afakhry@chromium.org + + User moves the currently active window (or the currently selected item in + overview mode) to an existing virtual desk to the left of the currently + active one by pressing a keyboard shortcut. + + + + + afakhry@chromium.org + + User moves the currently active window (or the currently selected item in + overview mode) to an existing virtual desk to the right of the currently + active one by pressing a keyboard shortcut. + + + + + afakhry@chromium.org + + User creates a new virtual desk by pressing a keyboard shortcut. + + + + + afakhry@chromium.org + + User removes an existing virtual desk by pressing a keyboard shortcut. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 09/2014 in issue 248353 and replaced by Accel_Focus_Shelf. + + kuscher@chromium.org + Keyboard accelerator to focus the app shelf. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + omrilio@chromium.org + + Keyboard accelerator to focus picture in picture window. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + kuscher@chromium.org + Keyboard accelerator to focus the app shelf. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + rtinkoff@google.com + cros-peripherals@google.com + User pressed the keyboard backlight toggle key. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Unused as of 08/2017 + jamescook@chromium.org + Please enter the description of this user action. + + + + michaelfsun@google.com + chromeos-bt-platform-sw-core@google.com + User pressed the fast forward media control button. + + + + warx@chromium.org + User pressed the next track media control button. + + + + michaelfsun@google.com + chromeos-bt-platform-sw-core@google.com + User pressed the pause media control button. + + + + michaelfsun@google.com + chromeos-bt-platform-sw-core@google.com + User pressed the play media control button. + + + + warx@chromium.org + User pressed the play/pause media control button. + + + + warx@chromium.org + + User pressed the previous track media control button. + + + + + michaelfsun@google.com + chromeos-bt-platform-sw-core@google.com + User pressed the rewind media control button. + + + + michaelfsun@google.com + chromeos-bt-platform-sw-core@google.com + User pressed the stop media control button. + + + + rtinkoff@google.com + User pressed the microphone mute toggle key. + + + + minch@chromium.org + + Metric recorded when the user press back key in the keyboard to minimize the + top window at bottom page while in tablet mode. + + + + + warx@chromium.org + + User presses accelerator to move active window between displays. + + + + + + Replaced with Accel_Move_Active_Window_Between_Displays in March 2018. + + warx@chromium.org + + User presses accelerator to move active window to above display. + + + + + + Replaced with Accel_Move_Active_Window_Between_Displays in March 2018. + + warx@chromium.org + + User presses accelerator to move active window to below display. + + + + + + Replaced with Accel_Move_Active_Window_Between_Displays in March 2018. + + warx@chromium.org + + User presses accelerator to move active window to left display. + + + + + + Replaced with Accel_Move_Active_Window_Between_Displays in March 2018. + + warx@chromium.org + + User presses accelerator to move active window to right display. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + rhalavati@chromium.org + chrome-incognito@google.com + + User pressed CMD+Shift+N to open a new Incognito window. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + User added a new tab to the existing group by keyboard shortcut Ctrl-T. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + cros-peripherals@google.com + + Records when the calculator is launched from an accelerator. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + cros-peripherals@google.com + + Records how often diagnostics is launched from accelerator. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + warx@chromium.org + + User takes a screenshot by pressing power button and volume down key + simultaneously on tablet mode. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Unused as of 08/2017 + jamescook@chromium.org + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Unused as of 08/2017 + cschuet@chromium.org + User restarted the device. + + + + mpearson@chromium.org + chrisha@chromium.org + chrome-analysis-team@google.com + + Emitted when the Ash window manager hotkey handler handles the + "Ctrl-Shift-T" shortcut that causes the most recently closed tab + to be restored. Because it's related to Ash, it's ChromeOS only. This is + only emitted when the Ash hotkey handler handles the shortcut, which only + happens when a non-Chrome window is focussed on ChromeOS. (The launcher is + an example of a non-Chrome window.) If a Chrome window was focussed on + ChromeOS as the user presses the keyboard shortcut, it's handled by Chrome's + keyboard shortcut handler system. In that case, the user action RestoreTab + is emitted, not Accel_Restore_Tab. + + It's never the case that both Accel_Restore_Tab and RestoreTab are emitted + for the same keyboard shortcut press. + + Note: if the last user action was to close an entire window with multiple + tabs, this keyboard shortcut will cause the entire window to be restored, + containing multiple tabs. This user action is only emitted once however, + regardless of the number of tabs. + + This is not emitted during session restore that occurs as part of startup. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + wutao@chromium.org + + Metric recorded when the user rotates the active window using the keyboard + shortcut. This metric was created in M58. All user actions of rotating the + active window using the keyboard shortcut prior to M58, were included in + Accel_Rotate_Window. + + + + + wutao@chromium.org + + Metric recorded when the user rotates the screen using the keyboard + shortcut. This metric was created in M58. All user actions of rotating the + screen using the keyboard shortcut prior to M58, were included in + Accel_Rotate_Window. + + + + + + Deprecated 03/2017. Replaced by Accel_Rotate_Screen and + Accel_Rotate_Active_Window. + + wutao@chromium.org + + Metric recorded when the user rotates screen or active window using the + keyboard shortcut. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + calamity@chromium.org + + Logged when a user press Ctrl/Command + 1-9 to change to a tab in a browser + window. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + jopalmer@chromium.org + essential-inputs-team@google.com + + Number of times the user has opened the emoji picker using a keyboard + acccelerator. + + + + + azurewei@chromium.org + + Number of times the user has shown the status area IME menu using a keyboard + accelerator. + + + + + + Deprecated 10/2018. The keyboard overlay was removed and replaced by + keyboard shortcut viewer. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 08/2017. Replaced by Accel_Toggle_Message_Center_Bubble. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + jdufault@chromium.org + + Number of times the user opened the stylus tools using a keyboard shortcut. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + afakhry@chromium.org + + Metric recorded when the user suspends the machine using keyboard shortcut. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + warx@chromium.org + + Metric recorded when shortcut key to initiate an active window screenshot + per kuscher@'s request. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dtseng@chromium.org + + Metric recorded when the user starts or stops dictation using keyboard + shortcut. + + + + + afakhry@chromium.org + + Metric recorded when the user toggles the Chrome OS Docked Magnifier with a + keyboard shortcut. + + + + + shidi@chromium.org + afakhry@chromium.org + + Metric recorded when the user toggles the Window Floating feature with a + keyboard shortcut. + + + + + afakhry@chromium.org + + Metric recorded when the user toggles the Chrome OS Fullscreen Magnifier + with a keyboard shortcut. + + + + + dtseng@chromium.org + aleventhal@chromium.org + + Metric recorded when the user toggles Chrome OS High Contrast mode with the + keyboard accelerator. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + weidongg@chromium.org + + Metric recorded when the user toggles the message center bubble with the + keyboard accelerator. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + gildekel@chromium.org + + Metric recorded when the user toggles the privacy screen when using the + accelerator. + + + + + takise@chromium.org + + Records how often the ARC resize lock menu is launched from accelerator. + + + + + dtseng@chromium.org + aleventhal@chromium.org + Toggles Spoken Feedback (ChromeVox) + + + + Please list the metric's owners. Add more owner tags as needed. + + User invoked keyboard accelerator, such as Shift-Alt-S or Hamburger key, to + bring up or dismiss the system tray menu. + + + + + afakhry@chromium.org + + Metric recorded when the user toggles the touchpad status using the + debugging accelerator. + + + + + afakhry@chromium.org + + Metric recorded when the user toggles the touchscreen status using the + debugging accelerator. + + + + + + Deprecated 12/2017. Keyboard accelerator replaced with flag. + + jamescook@chromium.org + + Debugging accelerator used to turn off the touch hud projection feature. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + afakhry@google.com + gzadina@google.com + + Triggered when users press Alt+Shift+5. Records how often users try To open + screen capture bar using MacOS key combos. + + + + + afakhry@google.com + gzadina@google.com + + Triggered when users press Ctrl+Shift+5. Records how often users try To open + screen capture bar using MacOS key combos. + + + + + afakhry@google.com + gzadina@google.com + + Triggered when users press Launcher+Shift+5. Records how often users try To + open screen capture bar using MacOS key combos. + + + + + afakhry@google.com + gzadina@google.com + + Triggered when users press Launcher+Shift+S. Records how often users try To + open screen capture bar using Windows key combos. + + + + + afakhry@google.com + gzadina@google.com + + Triggered when users press Alt+Shift+3. Records how often users try To take + fullscreen screenshot using MacOS key combos. + + + + + afakhry@google.com + gzadina@google.com + + Triggered when users press Ctrl+Shift+3. Records how often users try To take + fullscreen screenshot using MacOS key combos. + + + + + afakhry@google.com + gzadina@google.com + + Triggered when users press Launcher+Shift+3. Records how often users try To + take fullscreen screenshot using MacOS key combos. + + + + + afakhry@google.com + gzadina@google.com + + Triggered when users press Alt+Shift+4. Records how often users try To take + partial screenshot using MacOS key combos. + + + + + afakhry@google.com + gzadina@google.com + + Triggered when users press Ctrl+Shift+4. Records how often users try To take + partial screenshot using MacOS key combos. + + + + + afakhry@google.com + gzadina@google.com + + Triggered when users press Launcher+Shift+4. Records how often users try To + take partial screenshot using MacOS key combos. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + katie@chromium.org + dtseng@chromium.org + ui/accessibility/OWNERS + A user has used autoclick to perform an action. + + + + katie@chromium.org + dtseng@chromium.org + ui/accessibility/OWNERS + + A user has changed the position at which a scroll will occur by performing a + dwell at the new scroll point. + + + + + katie@chromium.org + dtseng@chromium.org + ui/accessibility/OWNERS + + A user has closed the autoclick Scroll menu using the close button within + the menu bubble. + + + + + + Removed 3/2019. The autoclick menu is always onscreen when autoclick is + enabled. + + katie@chromium.org + dtseng@chromium.org + A user has opened the autoclick tray menu. + + + + + Removed 3/2019. There is no longer a settings button in the autoclick menu. + + katie@chromium.org + dtseng@chromium.org + + A user has used the autoclick tray menu to open Autoclick settings. + + + + + dtseng@chromium.org + emilyscharff@google.com + ui/accessibility/OWNERS + + A user pressed the caret browsing shortcut and then enabled the feature by + confirming in the dialog. + + + + + dtseng@chromium.org + emilyscharff@google.com + ui/accessibility/OWNERS + + A user pressed the caret browsing shortcut and then cancelled without + enabling caret browsing. + + + + + dtseng@chromium.org + emilyscharff@google.com + ui/accessibility/OWNERS + + A user disabled caret browsing using keyboard shortcuts. + + + + + dtseng@chromium.org + emilyscharff@google.com + ui/accessibility/OWNERS + A user disabled caret browsing using settings. + + + + dtseng@chromium.org + emilyscharff@google.com + ui/accessibility/OWNERS + + A user enabled caret browsing and checked the box to never be prompted + again. + + + + + dtseng@chromium.org + emilyscharff@google.com + ui/accessibility/OWNERS + + A user enabled caret browsing using the keyboard shortcut directly, when + they had already opted into not showing the confirmation dialog. + + + + + dtseng@chromium.org + emilyscharff@google.com + ui/accessibility/OWNERS + A user enabled caret browsing using settings. + + + + dtseng@chromium.org + emilyscharff@google.com + ui/accessibility/OWNERS + + A user pressed the caret browsing shortcut and the confirmation dialog was + shown. + + + + + dtseng@chromium.org + ui/accessibility/OWNERS + + A Chrome OS user with spoken feedback enabled has connected a bluetooth + braille display by clicking the connect button or selected one from a + select. + + + + + dtseng@chromium.org + ui/accessibility/OWNERS + + A Chrome OS user with spoken feedback enabled has executed any jump action, + like jumping to the next heading on a web page. + + + + + dtseng@chromium.org + ui/accessibility/OWNERS + + A Chrome OS user with spoken feedback enabled has executed any navigation + action, like navigating to the next object on the screen. + + + + + dtseng@chromium.org + ui/accessibility/OWNERS + + A Chrome OS user with spoken feedback enabled manually toggles ChromeVox + Next off. + + + + + dtseng@chromium.org + ui/accessibility/OWNERS + + A Chrome OS user with spoken feedback enabled manually toggles ChromeVox + Next on. + + + + + katie@chromium.org + dtseng@chromium.org + ui/accessibility/OWNERS + + A user has tapped the button to change the position of the autoclick bubble + menu. + + + + + katie@chromium.org + dtseng@chromium.org + ui/accessibility/OWNERS + + A Chrome OS user manually cancels Select To Speak while it is speaking. + + + + + katie@chromium.org + dtseng@chromium.org + ui/accessibility/OWNERS + + A Chrome OS user loads the Select To Speak settings page. + + + + + ajitnarayanan@google.com + katie@chromium.org + dtseng@chromium.org + ui/accessibility/OWNERS + A Chrome OS user manually pauses Select To Speak. + + + + ajitnarayanan@google.com + katie@chromium.org + dtseng@chromium.org + ui/accessibility/OWNERS + + A Chrome OS user manually resumes Select To Speak after pausing. + + + + + katie@chromium.org + dtseng@chromium.org + ui/accessibility/OWNERS + A Chrome OS user manually starts Select To Speak. + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to open the + action recorder submenu. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to copy the + selected text. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to cut the + selected text. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to decrement + the selected input. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to dictate into + the focused input. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to turn down + brightness. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to turn up + brightness. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to open the + display submenu. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to mirror + display. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to rotate + screen. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to zoom in. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to zoom out. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to stop + changing the text selection. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to execute the + recorded macro. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to increment + the selected input. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to begin + scanning through items on-screen. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to move the + cursor to the beginning of the text. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to move the + cursor to the end of the text. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to open the + onscreen keyboard. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to leave the + current group. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to left click + the location targetted by Point Scan. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to fastforward. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to open the + media submenu. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to mute the + device's volume. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to play or + pause media. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to rewind + media. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to turn volume + down. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to turn volume + up. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to move the + cursor backward one character of text. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to move the + cursor backward one word of text. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to start moving + the cursor. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to move the + cursor down one line of text. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to move the + cursor forward one character of text. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to move the + cursor forward one word of text. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to move the + cursor up one line of text. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to paste into + the text field. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to start point + scanning. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to right click + the location targetted by Point Scan. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to scroll the + selected view down. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to scroll the + selected view left. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to scroll the + selected view right. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to scroll the + selected view up. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to activate the + currently selected item. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to open the + Switch Access settings page. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to open the + shortcuts submenu. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to start + recording a macro. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to start + selecting text. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to stop + recording a macro. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to open + diagnostics. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to open the + system help page. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to jump to the + launcher. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to open the + system submenu. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to take a + screenshot. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to jump to the + status area. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to open task + manager. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to locks the + device. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to open the + user submenu. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to go to next + user. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to go to + previous user. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to sign out. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to bookmark a + page. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to jump to + bottom of page. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to clear + history. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to open + downloads. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to find in + page. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to open the web + submenu. + + + + + anastasi@google.com + dtseng@chromium.org + ui/accessibility/OWNERS + + Recorded when the user selects the Switch Access menu action to jump to top + of page. + + + + + aleventhal@chromium.org + dtseng@chromium.org + ui/accessibility/OWNERS + + The DoDefault action (for example, to click on a button or link) has been + called on an accessibility node using a native accessibility API. + + + + + + Removed in March 2020 because most events were being trimmed due to the cap + on the number of user actions that can be reported in a single log. + + aleventhal@chromium.org + dtseng@chromium.org + + The HitTest action has been called on an accessibility node using a native + accessibility API. + + + + + aleventhal@chromium.org + dtseng@chromium.org + ui/accessibility/OWNERS + + The ScrollToMakeVisible action has been called on an accessibility node + using a native accessibility API. + + + + + aleventhal@chromium.org + dtseng@chromium.org + ui/accessibility/OWNERS + + The SetFocus action has been called on an accessibility node using a native + accessibility API. + + + + + dtseng@chromium.org + ui/accessibility/OWNERS + + Metric recorded on Chrome OS when the user holds down two fingers on a touch + screen for more than the minimum number of seconds to trigger a countdown. + If the user continues to hold down two fingers through the countdown it will + toggle spoken feedback. If spoken feedback is toggled, the + StatusArea_SpokenFeedbackEnabled or StatusArea_SpokenFeedbackDisabled + actions will be recorded. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + tobyhuang@chromium.org + michaelpg@chromium.org + danan@chromium.org + + Emitted when the user clicks "Sign out" to complete the Add + Supervision process. + + + + + tobyhuang@chromium.org + michaelpg@chromium.org + danan@chromium.org + + Emitted when the Add Supervision dialog is closed, excluding sign out. + + + + + tobyhuang@chromium.org + michaelpg@chromium.org + danan@chromium.org + + Emitted when the user's account is successfully enrolled in supervision. + + + + + tobyhuang@chromium.org + michaelpg@chromium.org + danan@chromium.org + Emitted when the Add Supervision dialog is opened. + + + + tobyhuang@chromium.org + michaelpg@chromium.org + danan@chromium.org + + Emitted when the user signs out from within the Add Supervision dialog to + switch accounts before enrollment is completed. + + + + + miu@chromium.org + + User dragged the tab alert indicator button; perhaps meant to drag the tab. + + + + + miu@chromium.org + + User clicked the tab alert indicator button to mute the tab. + + + + + miu@chromium.org + + User clicked the tab alert indicator button to unmute the tab. + + + + + zentaro@chromium.org + jimmyxgong@chromium.org + + User pressed Alt+Backspace to produce the Delete key. + + + + + zentaro@chromium.org + jimmyxgong@chromium.org + + User pressed Alt+Ctrl+DownArrow to produce the End key. + + + + + zentaro@chromium.org + jimmyxgong@chromium.org + + User pressed Alt+Ctrl+UpArrow to produce the Home key. + + + + + zentaro@chromium.org + jimmyxgong@chromium.org + + User pressed Alt+DownArrow to produce the PageDown key. + + + + + zentaro@chromium.org + jimmyxgong@chromium.org + User pressed Alt+UpArrow to produce the PageUp key. + + + + zentaro@chromium.org + + User pressed alt click on a touchpad device to generate right click. + + + + + safarli@google.com + assistive-eng@google.com + + User clicked the button to start screen saver preview. Records the button + click event. Recorded on ChromeOS only. + + + + + shaktisahu@chromium.org + dtrainor@chromium.org + + User clicked on Add button of Add to homescreen IPH message. + + + + + shaktisahu@chromium.org + dtrainor@chromium.org + Add to homescreen IPH message UI was shown. + + + + wylieb@chromium.org + chrome-collections@google.com + + User marked an item as read in the Reading List page from the Android + bookmark page by clicking "Mark As Read" from the "more" + menu. + + + + + wylieb@chromium.org + chrome-collections@google.com + + User marked an item as unread in the Reading List page from the Android + bookmark page by clicking "Mark As Unread" from the + "more" menu. + + + + + wylieb@chromium.org + chrome-collections@google.com + + User navigated to the Reading List page from the Android bookmark page by + clicking on reading list folder. + + + + + wylieb@chromium.org + chrome-collections@google.com + + User removed an item from the Reading List page from the Android bookmarks + page by clicking "delete" from the "more" menu. + + + + + wylieb@chromium.org + chrome-collections@google.com + + User selected an item from the Reading List page from the Android bookmark + page by clicking "select" from the "more" menu. + + + + + twellington@chromium.org + clank-app-team@google.com + + User removed an item on the native Android bookmark page by clicking + "delete" from the "more" menu. + + + + + twellington@chromium.org + clank-app-team@google.com + + User selected an item on the native Android bookmark page by clicking + "select" from the "more" menu. + + + + + + Deprecated 1/2018. Replaced with the + Android.ChromeHome.Survey.InfoBarClosingState histogram. + + danielpark@chromium.org + + User clicked on the invite to take a survey in the survey infobar. + + + + + + Deprecated 1/2018. Replaced with the + Android.ChromeHome.Survey.InfoBarClosingState histogram. + + danielpark@chromium.org + + User dismissed the survey infobar by tapping on its close button. + + + + + Unused as of 7/2019 + mdjones@chromium.org + twellington@chromium.org + User closed the Chrome Home bottom sheet. + + + + Unused as of 7/2019 + mdjones@chromium.org + twellington@chromium.org + + User closed the Chrome Home bottom sheet by pressing the system back button. + + + + + Unused as of 7/2019 + mdjones@chromium.org + twellington@chromium.org + + User closed the Chrome Home bottom sheet by navigating. + + + + + + Deprecated 6/2017. There is no longer an NTP UI with a close button. + + mdjones@chromium.org + twellington@chromium.org + + User closed the Chrome Home bottom sheet using the NTP's close button. + + + + + Unused as of 7/2019 + mdjones@chromium.org + twellington@chromium.org + + User closed the Chrome Home bottom sheet using a swipe gesture. + + + + + Unused as of 7/2019 + mdjones@chromium.org + twellington@chromium.org + + User closed the Chrome Home bottom sheet tapping the scrim behind the sheet. + + + + + Unused as of 7/2019 + mdjones@chromium.org + twellington@chromium.org + + User put the Chrome Home bottom sheet in the fully-open state. + + + + + Unused as of 7/2019 + mdjones@chromium.org + twellington@chromium.org + + User put the Chrome Home bottom sheet in the half-open state. + + + + + Unused as of 7/2019 + mdjones@chromium.org + twellington@chromium.org + + User tapped the app menu item that triggers the Chrome Home in-product help + bubble. + + + + + Unused as of 7/2019 + mdjones@chromium.org + twellington@chromium.org + + A user navigation instructed the NativePageFactory to create a native page + for the NTP. This may occur if the user has NTP URLs in a tab's navigation + history. + + + + + + Deprecated 5/2017. Replaced by the versions with a suffix, which are more + descriptive. + + mdjones@chromium.org + twellington@chromium.org + User opened the Chrome Home bottom sheet. + + + + Unused as of 03/2018 + mdjones@chromium.org + twellington@chromium.org + + User opened the Chrome Home bottom sheet using the expand button. + + + + + Unused as of 03/2018 + mdjones@chromium.org + twellington@chromium.org + + User opened the Chrome Home bottom sheet by opening a new tab. + + + + + Unused as of 03/2018 + mdjones@chromium.org + twellington@chromium.org + + User opened the Chrome Home bottom sheet by focusing the omnibox. + + + + + Unused as of 03/2018 + thildebr@chromium.org + + The Chrome Home bottom sheet was automatically opened on startup after a + period of inactivity. + + + + + mdjones@chromium.org + twellington@chromium.org + + User opened the Chrome Home bottom sheet using a swipe gesture. + + + + + Unused as of 7/2019 + mdjones@chromium.org + twellington@chromium.org + + User clicked the 'Take Survey' button on the snackbar shown after they opted + out of Chrome Home. + + + + + Unused as of 03/2018 + mdjones@chromium.org + twellington@chromium.org + User showed the bookmarks bottom sheet content. + + + + Unused as of 03/2018 + mdjones@chromium.org + twellington@chromium.org + User showed the downloads bottom sheet content. + + + + Unused as of 03/2018 + mdjones@chromium.org + twellington@chromium.org + User showed the history bottom sheet content. + + + + Unused as of 03/2018 + mdjones@chromium.org + twellington@chromium.org + + User showed the incognito bottom sheet content in the "Home" tab. + + + + + Unused as of 03/2018 + mdjones@chromium.org + twellington@chromium.org + User showed the suggestions bottom sheet content. + + + + + Deprecated 4/2018. Replaced with Android.Survey.ShowSurveyInfoBar action. + + danielpark@chromium.org + The survey infobar was displayed. + + + + twellington@chromium.org + + User tapped on a phone number, address or email address, activating a + content detector and causing a content intent to be sent. + + + + + twellington@chromium.org + clank-app-team@google.com + + User changed preference to use system default, light, or dark theme. + + + + + szermatt@chromium.org + autofill_assistant@google.com + + Call to Activity.onListDirectActions made by the system on behalf of the + assist app. Available starting with Android Q. + + + + + shaktisahu@chromium.org + + Records whether accelerating message was shown on the infobar. + + + + + shaktisahu@chromium.org + chrome-analysis-team@google.com + + User tapped on the infobar link to open the downloaded file. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + shaktisahu@chromium.org + + User tapped on the infobar link to open download home. + + + + + shaktisahu@chromium.org + + The download infobar was re-attached to the new active tab due to a download + event such as a new download or download completion that happened after the + user had switched tabs. The infobar which was previously being shown on the + old tab was closed and was shown on the new active tab. + + + + + dtrainor@chromium.org + twellington@chromium.org + + A request was issued to check the file system for download items that were + externally deleted e.g. through a third-party download manager. + + + + + dtrainor@chromium.org + twellington@chromium.org + + User deleted one or more download items. This is recorded when the snackbar + allowing the user to "undo" deletion is dismissed and the + downloads are deleted. + + + + + dtrainor@chromium.org + twellington@chromium.org + + A download file on primary storage was externally deleted by other + application. e.g. through a third-party download manager. The associated + database record will be also deleted. + + + + + qinmin@chromium.org + + A download file was externally deleted by other application, e.g. through a + third-party download manager. However the associated database record will + not be immediately deleted. + + + + + shaktisahu@chromium.org + User opened a download from download home. + + + + + Deprecated October 2019. Feature dropped during implementation review. + + dtrainor@chromium.org + + User triggered a menu action on the images section header of download home. + + + + + dtrainor@chromium.org + chrome-analysis-team@google.com + + User triggered actions on an offline item in download home. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + dtrainor@chromium.org + + User triggered actions on the top level menu in download home. + + + + + dtrainor@chromium.org + twellington@chromium.org + User opened the downloads manager UI. + + + + Drawer removed during 2017 redesign. + dfalcantara@chromium.org + twellington@chromium.org + ianwen@chromium.org + + User opened the navigation drawer in Chrome's download manager. + + + + + + Deprecated in favor of Android.DownloadManager.List.View.Action. + + dtrainor@chromium.org + twellington@chromium.org + + User removed an item on the native Android download page by clicking + "delete" from the "more" menu. + + + + + + Deprecated in favor of Android.DownloadManager.Menu.Action. + + dtrainor@chromium.org + twellington@chromium.org + User initiated a search of their downloads. + + + + dtrainor@chromium.org + twellington@chromium.org + ianwen@chromium.org + + User established a long-press selection in Chrome's download manager. + + + + + + Deprecated in favor of Android.DownloadManager.Menu.Action. + + jming@chromium.org + twellington@chromium.org + + User selected the settings option in the download manager to open up the + settings page to download preferences. + + + + + dtrainor@chromium.org + twellington@chromium.org + + User chose to "undo" the deletion of one or more download items. + + + + + dimich@chromium.org + User opened NTP with enabled ExploreSites section. + + + + dimich@chromium.org + + User clicked on a site icon while on ExploreSites page. + + + + + dimich@chromium.org + + User opened ExploreSites page, typically by clicking on a NTP category icon. + + + + + dimich@chromium.org + + User scrolled the ExploreSites page. Reported once per ExploreSitesPage + instance shown. + + + + + twellington@chromium.org + + User clicked the clear browsing data button on the native Android history + page. + + + + + twellington@chromium.org + + User copied the URL for an item on the native Android history page. + + + + + twellington@chromium.org + + User scrolled to the bottom of the screen causing more items to load on the + native Android history page. + + + + + twellington@chromium.org + chrome-analysis-team@google.com + + User opened an item on the native Android history page. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + twellington@chromium.org + chrome-analysis-team@google.com + + User opened one or more selected items in new tabs on the native Android + history page. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + twellington@chromium.org + chrome-analysis-team@google.com + + User opened one or more selected items in new incognito tabs on the native + Android history page. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + twellington@chromium.org + + User removed an item on the native Android history page. + + + + + twellington@chromium.org + + User removed one or more selected items on the native Android history page. + + + + + twellington@chromium.org + + User tapped the search icon on the native Android history page. + + + + + twellington@chromium.org + + User copied the URL for an item while searching on the native Android + history page. + + + + + twellington@chromium.org + + User scrolled to the bottom of the screen causing more items to load while + searching on the native Android history page. + + + + + twellington@chromium.org + chrome-analysis-team@google.com + + User opened an item while searching on the native Android history page. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + twellington@chromium.org + chrome-analysis-team@google.com + + User opened one or more selected items in new tabs while searching on the + native Android history page. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + twellington@chromium.org + chrome-analysis-team@google.com + + User opened one or more selected items in new incognito tabs while searching + on the native Android history page. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + twellington@chromium.org + + User removed an item while searching on the native Android history page. + + + + + twellington@chromium.org + + User removed one or more selected items while searching on the native + Android history page. + + + + + twellington@chromium.org + + User established a selection while searching on the native Android history + page. + + + + + twellington@chromium.org + + User established a selection on the native Android history page. + + + + + twellington@chromium.org + User navigated to the native Android history page. + + + + twellington@chromium.org + + User tapped on the 'New Incognito Tab' launcher shortcut option. + + + + + twellington@chromium.org + + User tapped on the 'New Tab' launcher shortcut option. + + + + + peconn@chromium.org + + An external application launched a new Chrome Incognito Tab. + + + + + ssid@chromium.org + clank-app-team@google.com + + Chrome application has at least one paused and no running activites. + Recorded when the state of the application changes. + + + + + ssid@chromium.org + clank-app-team@google.com + + Chrome application has at least one activity in running state. Recorded when + the state of the application changes. + + + + + ssid@chromium.org + clank-app-team@google.com + + Chrome application has at least one activity in stopped state, and none + running or paused. Recorded when the state of the application changes. + + + + + dmurph@chromium.org + + User navigated to 'Manage Space' for Chrome from the 'Apps' category in + Android settings. + + + + + twellington@chromium.org + + Tab state was merged for Android N+ multi-instance during an application + cold start. + + + + + twellington@chromium.org + + Tab state was merged for Android N+ multi-instance while Chrome was running + (e.g. user exited multi-window mode and focused one of the Chrome + activities). + + + + + jinsukkim@chromium.org + twellington@chromium.org + + Recorded when multiple Chrome instances become visible on the screen at the + same time (e.g. two Chrome windows running side-by-side in split-screen + mode). Only applicable on Android S. For Android R and below, see + Android.MultiWindowMode.MultiInstance.Enter. + + + + + jinsukkim@chromium.org + twellington@chromium.org + + The number of visible, foreground Chrome instances got down below one, which + virtually ends the multi-instance 'session'. This can happen when one of the + visible instances or both of them in split-screen mode closed or went to the + background, or split-screen mode itself exited so that only a single + instance remains visible on screen. + + + + + + Deprecated as the data is not valid any more from M100 onward. + + jinsukkim@chromium.org + twellington@chromium.org + The activity entered Android N multi-window mode. + + + + twellington@chromium.org + + The second activity instance (ChromeTabbedActivity2) entered Android N + multi-window mode. Recorded separately from Android.MultiWindowMode.Enter to + avoid double counting when two instances are running. + + + + + jinsukkim@chromium.org + twellington@chromium.org + + The activity entered Android N multi-window mode. This is identical to + Android.MultiWindowMode.Enter, but introduced after a bug that affected the + logging was fixed. + + + + + + Deprecated as the data is not valid any more from M100 onward. + + twellington@chromium.org + The activity exited Android N multi-window mode. + + + + twellington@chromium.org + + The second activity instance (ChromeTabbedActivity2) exited Android N + multi-window mode. Recorded separately from Android.MultiWindowMode.Exit to + avoid double counting when two instances are running. + + + + + jinsukkim@chromium.org + twellington@chromium.org + + The activity exited Android N multi-window mode. This is identical to + Android.MultiWindowMode.Exit, but introduced after a bug that affected the + logging was fixed. + + + + + twellington@chromium.org + + A second activity instance (ChromeTabbedActivity2) has been created in + Android N multi-window mode. Starting with Chrome version 94, this is only + recorded on Android R. See 'Android.MultiInstance.Enter' for Android S. + + + + + mpearson@chromium.org + + A user clicked on a telephone number link in Chrome content. + + + + + + Deprecated 12/2022 as part of survey message launch cleanup. + + danielpark@chromium.org + The survey infobar was displayed. + + + + jinsukkim@chromium.org + twellington@chromium.org + + User tapped Close in the 3-dot menu from the in-app window manager to remove + a Chrome window. + + + + + jinsukkim@chromium.org + twellington@chromium.org + + User tapped the 'New window' button in Chrome's in-app window manager to + create a new Chrome window. + + + + + jinsukkim@chromium.org + twellington@chromium.org + + User taps the 3-dot menu of a Window in the in-app window manager list. + + + + + jinsukkim@chromium.org + twellington@chromium.org + + User taps on a Window from the in-app window manager list to bring the + Window to the foreground. + + + + + Unused as of 08/2017 + jamescook@chromium.org + Please enter the description of this user action. + + + + dibyapal@chromium.org + desktop-pwas-team@chromium.org + + User clicks on the menu option to create shortcuts for an app from the right + click context menu of an app from new chrome://apps page. + + + + + dibyapal@chromium.org + desktop-pwas-team@chromium.org + + User opens the custom context menu for an app from new chrome://apps page. + + + + + dibyapal@chromium.org + desktop-pwas-team@chromium.org + + User clicks on the menu option to install an app locally from the right + click context menu of an app from new chrome://apps page. + + + + + dibyapal@chromium.org + desktop-pwas-team@chromium.org + + User checks the launch at startup option from the right click context menu + of an app from new chrome://apps page. + + + + + dibyapal@chromium.org + desktop-pwas-team@chromium.org + + User unchecks the launch at startup option from the right click context menu + of an app from new chrome://apps page. + + + + + dmurph@chromium.org + desktop-pwas-team@chromium.org + + User launches a deprecated app (chrome app, built on extensions system) by + clicking on the app icon from the new chrome://apps page. This will result + in the launch being interrupted with a dialog that post-m112 will block the + actual launch of the app. After m114, the admin policy allowing the bypass + of this dialog will expire as well. If the user ends up launching the app + itself, the web app's start_url opening up in a dedicated window or in a + browser tab, depending on the user's preference. + + + + + dmurph@chromium.org + desktop-pwas-team@chromium.org + + User launches a web app by clicking on the app icon from the new + chrome://apps page. This results in the web app's start_url opening up in a + dedicated window or in a browser tab, depending on the user's preference. + + + + + dibyapal@chromium.org + desktop-pwas-team@chromium.org + + Triggered whenever an the new chrome://apps page page is initialized on + navigation. This is not recorded on OSes where the new chrome://apps page + page does not exist, like ChromeOS and Android. + + + + + dibyapal@chromium.org + desktop-pwas-team@chromium.org + + User clicks on the menu option to open app settings from the right click + context menu of an app from new chrome://apps page. + + + + + dibyapal@chromium.org + desktop-pwas-team@chromium.org + + User checks the open in window option from the right click context menu of + an app from new chrome://apps page. + + + + + dibyapal@chromium.org + desktop-pwas-team@chromium.org + + User checks the open in window option from the right click context menu of + an app from new chrome://apps page. + + + + + dibyapal@chromium.org + desktop-pwas-team@chromium.org + + User clicks on the menu option to uninstall an app from the right click + context menu of an app from new chrome://apps page. + + + + + schechter@google.com + hujasonx@google.com + + User tapped the Lens icon in the quick actions home screen widget for Chrome + for iOS. + + + + + pschaffner@chromium.org + + Force pressed on a springboard shortcut and tapped Incognito Search in + Chrome for iOS. + + + + + pschaffner@chromium.org + + Force pressed on a springboard shortcut and tapped New Search in Chrome for + iOS. + + + + + Voice search in Launcher is not supported anymore. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Voice search in Launcher is not supported anymore. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + andrewxu@chromium.org + User pressed the back button. + + + + vadimt@chromium.org + + User clicks an icon in app grid. Chrome and Files are counted. Folders, + suggested apps and search results aren't. + + + + + + Deprecated in favor of a more general AppList_OpenSearchResult event. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + jamescook@chromium.org + tbarzic@chromium.org + + User created a folder in the Chrome OS app launcher. + + + + + newcomer@chromium.org + sammiequon@chromium.org + + The current window was hidden to display the home launcher. + + + + + newcomer@chromium.org + sammiequon@chromium.org + + User tried to hide the current window to display the home launcher by + swiping up on the shelf. + + + + + jamescook@chromium.org + tbarzic@chromium.org + + User deleted a folder in the Chrome OS app launcher. + + + + + vadimt@chromium.org + CrOS Launcher entered search mode. + + + + This feature was deprecated in M104 + vadimt@chromium.org + CrOS Launcher went from full to peeking state. + + + + andrewxu@chromium.org + User pressed the launcher button in clamshell. + + + + andrewxu@chromium.org + User pressed the launcher button in tablet. + + + + newcomer@chromium.org + sammiequon@chromium.org + + The home launcher was hidden to display the most recently used window. + + + + + newcomer@chromium.org + sammiequon@chromium.org + + User tried to bring down the most recently used window by swiping down on + the home launcher. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + vadimt@chromium.org + CrOS Launcher left search mode. + + + + vadimt@chromium.org + User opens a search result in CrOS Launcher. + + + + vadimt@chromium.org + + User opens an app from the suggestions row in CrOS Launcher. + + + + + This feature was deprecated in M104 + vadimt@chromium.org + + CrOS Launcher went from peeking to full state or, in a search mode, from + half to full. + + + + + Name was bad. Renamed to AppList_OpenSearchResult. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + App list doesn't have voice search anymore. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + jennyz@chromium.org + + User starts a new search query in launcher search box. + + + + + + Deprecated in M108. App List search no longer shows tile results. + + jennyz@chromium.org + newcomer@chromium.org + + Cros Launcher shows play store apps to user in response for a user typed + query with reason time for user to see and take action. + + + + + jennyz@chromium.org + newcomer@chromium.org + + Cros Launcher shows zero state suggestions to user when user activate the + search box. + + + + + App list doesn't have voice search anymore. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + App list doesn't have voice search anymore. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + newcomer@chromium.org + + Emitted when the AppList has gained focus. The AppList gains focus every + time it is shown to the user, so this is equivalent to being emitted when + the AppList is shown to the user. This can be used in combination with + launch/activation metrics to calculate the click through rate in the + AppList. + + + + + Deprecated in M108. Launcher zero state has been removed. + jennyz@chromium.org + newcomer@chromium.org + User opens a suggested installed app in zero state. + + + + + Deprecated in favor of Apps.AppListSearchResultOpenType histogram. + + hejq@chromium.org + + Recorded when the user opens the an instant app from a Play Store app search + query. + + + + + + Deprecated in favor of Apps.AppListSearchResultOpenType histogram. + + hejq@chromium.org + + Recorded when the user opens the installing page of a Play Store app search + result. + + + + + linben@chromium.org + djacobo@chromium.org + jorgegil@google.com + + Recorded when a request to the ARC++ container to generate Smart Text + Selection actions is made. This happens both when the user opens the Context + Menu via a right-click and by selecting text via touchscreen. + + + + + Please list the metric's owners. Add more owner tags as needed. + robsc@chromium.org + napper@chromium.org + + A click on an app reinstall app candidate from Arc++. + + + + + toshikikikuchi@chromium.org + takise@chromium.org + + User pressed Phone button in compatibility mode menu to resize the ARC app + window. + + + + + toshikikikuchi@chromium.org + takise@chromium.org + + User pressed Tablet button in compatibility mode menu to resize the ARC app + window. + + + + + toshikikikuchi@chromium.org + takise@chromium.org + + User pressed Resizable button in compatibility mode menu to turn off the + resize lock for the ARC app window. + + + + + toshikikikuchi@chromium.org + takise@chromium.org + + User pressed non Resizable button in compatibility mode menu to turn on the + resize lock for the ARC app window. + + + + + ckincaid@chromium.org + multipaste@google.com + Emitted when a user copies data to their clipboard. + + + + ckincaid@chromium.org + multipaste@google.com + + Emitted when a user pastes data from their clipboard through standard + mechanisms, i.e., not using the clipboard history menu. + + + + + ckincaid@chromium.org + multipaste@google.com + + Emitted when a user pastes the first item from their clipboard history. + + + + + ckincaid@chromium.org + multipaste@google.com + + Emitted when a user pastes the second item from their clipboard history. + + + + + ckincaid@chromium.org + multipaste@google.com + + Emitted when a user pastes the third item from their clipboard history. + + + + + ckincaid@chromium.org + multipaste@google.com + + Emitted when a user pastes the fourth item from their clipboard history. + + + + + ckincaid@chromium.org + multipaste@google.com + + Emitted when a user pastes the fifth item from their clipboard history. + + + + + minch@chromium.org + tclaiborne@chromium.org + + User tried to swipe back from the left side of the window to go back in + tablet mode. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + The user accepted their selections of profile and credit card. + + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + The bottomsheet was destroyed. + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + The bottomsheet was dismissed by the user. + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + The FastCheckout bottomsheet was initialized. + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + The user tapped the back button on a detail sheet. + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + The user navigated to the addresses details sheet. + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + The user tapped the "Add new address" footer. + + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + The user tapped the settings icon on the addresses details sheet. + + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + The user navigated to the credit cards details sheet. + + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + The user tapped the "Add new credit card" footer. + + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + The user tapped the settings icon on the credit cards details sheet. + + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + The user selected a different address from the already selected one + (navigates back to home screen). + + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + The user selected a different credit card from the already selected one + (navigates back to home screen). + + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + The user selected the same address that was already selected (navigates back + to home screen). + + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + The user selected the same credit card that was already selected (navigates + back to home screen). + + + + + ginnyhuang@chromium.org + + The user has tapped on the Chrome logo inside the input accessory bar for + autofill. (iOS only) + + + + + battre@chromium.org + + This user action is logged when a user has cleared the form after having + accepted an Autofill suggestion. + + + + + siyua@chromium.org + + This user action is logged when the legal message link in the credit card + upload bubble is clicked by the user. + + + + + battre@chromium.org + + This user action is logged when the form is filled with the credit card + suggestion selected by the user. This should always happen after a + Autofill_SelectedSuggestion. + + + + + battre@chromium.org + + This user action is logged when the form is filled with the profile + suggestion selected by the user. This should always happen after a + Autofill_SelectedSuggestion. + + + + + + Deprecated 6/2016. Replaced by the versions with a suffix, which are more + descriptive. + + sebsg@chromium.org + + This user action is logged when Autofill detects a form submission. + + + + + battre@chromium.org + + This user action is logged when Autofill detects a form submission for a + form where all the fields were autofilled. + + + + + battre@chromium.org + + This user action is logged when Autofill detects a form submission for a + form where Autofill suggestions were not shown. + + + + + battre@chromium.org + + This user action is logged when Autofill detects a form submission for a + form where an Autofill suggestion was shown but no fields were filled. + + + + + battre@chromium.org + + This user action is logged when Autofill detects a form submission for a + form where some field were filled. + + + + + battre@chromium.org + + This user action is logged when Autofill detects a form submission for a + form that is not Autofillable or for a form that was filled with new + information that Autofill could not predict. + + + + + siashah@chromium.org + siyua@chromium.org + + This user action is logged when user clicks on the "See details" + link shown in the Offer Notification InfoBar on mobile. + + + + + battre@chromium.org + + This user action is logged when Autofill thinks a form is about to be + submitted. The reason behind this is that some sites do not use the + traditional submit flow and we miss some actual submissions because of that. + + + + + battre@chromium.org + + This user action is logged when a credit card form is parsed. + + + + + battre@chromium.org + + This user action is logged when a profile form is parsed. + + + + + battre@chromium.org + + This user action is logged when the user interacts with an autofillable + credit card field, either by clicking or by typing. + + + + + battre@chromium.org + + This user action is logged when the user interacts with an autofillable + profile field, either by clicking or by typing. + + + + + battre@chromium.org + + This user action is logged when a user has selected (clicked on) an Autofill + suggestion. This should always happen after + Autofill_Showed(CreditCard|Profile)Suggestion. + + + + + battre@chromium.org + + This user action is logged when the user is shown some credit card + suggestions. This should always happen after a + Autofill_PolledCreditCardSuggestion. + + + + + Deprecated 5/2018 because the feature never launched. + estark@chromium.org + + This user action is logged when the user selects a "Login not + secure" or "Payment not secure" warning item in the autofill + dropdown to show more information about the warning. + + + + + battre@chromium.org + + This user action is logged when the user is shown some profile suggestions. + This should always happen after a Autofill_PolledProfileSuggestion. + + + + + battre@chromium.org + jsaul@google.com + + Recorded when user visits chrome://settings/autofill page. + + + + + battre@chromium.org + jsaul@google.com + + Recorded when user adds card via chrome://settings/payments page. + + + + + sujiezhu@google.com + jsaul@google.com + + Recorded when user adds card with a nickname via settings page. + + + + + sujiezhu@google.com + jsaul@google.com + + Recorded when user edits card via chrome://settings/payments page. + + + + + sujiezhu@google.com + jsaul@google.com + + Recorded when user edits card with a new nickname via + chrome://settings/payments page. + + + + + battre@chromium.org + jsaul@google.com + + Recorded when user visits chrome://settings/payments page. + + + + + qihuizhao@google.com + jsaul@google.com + + Recorded when user adds IBAN via chrome://settings/payments page. + + + + + qihuizhao@google.com + jsaul@google.com + + Recorded when user adds IBAN with a nickname via chrome://settings/payments + page. + + + + + qihuizhao@google.com + jsaul@google.com + + Recorded when user deletes IBAN via chrome://settings/payments page. + + + + + qihuizhao@google.com + jsaul@google.com + + Recorded when user edits IBAN via chrome://settings/payments page. + + + + + qihuizhao@google.com + jsaul@google.com + + Recorded when user edits IBAN with a new nickname via + chrome://settings/payments page. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + gab@chromium.org + + User opened chrome://settings less than 5 days after a settings hardening + event and was automatically shown this banner. + + + + + gab@chromium.org + + User clicked the Learn More link on the AutomaticSettingsReset banner. + + + + + gab@chromium.org + User dismissed the AutomaticSettingsReset banner. + + + + gab@chromium.org + + User clicked the reset button on the AutomaticSettingsReset banner. + + + + + siyua@chromium.org + droger@chromium.org + + Recorded when the avatar toolbar button is highlighted following an autofill + event. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + olivierrobin@chromium.org + pkl@chromium.org + + An attempt to upload a crash report as a background task failed. + + + + + olivierrobin@chromium.org + pkl@chromium.org + + An attempt to upload a crash report as a background task succeeeded. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + carlosil@chromium.org + + User went back after seeing the bad clock interstitial. + + + + + carlosil@chromium.org + + Use opened date/time settings after seeing the bad clock interstitial. + + + + + carlosil@chromium.org + User saw the bad clock interstitial. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 8/2017. Replaced by the histograms + Stability.BadMessageTerminated.GuestView and + Stability.BadMessageTerminated.Extensions. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 3/2015. Replaced by the histogram + Stability.BadMessageTerminate.Extensions. + + kalman@chromium.org + fsamuel@chromium.org + + Indicates that an ExtensionOptionsGuest was terminated due to a navigation + to an origin other than the extension it is embedding. + + + + + + Deprecated 3/2015. Replaced by the histogram + Stability.BadMessageTerminate.Extensions. + + fsamuel@chromium.org + + Indicates that an ExtensionViewGuest was terminated due to a navigation to + an origin other than the extension it is embedding. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + toyoshim@chromium.org + + Indicates that an IPC message to send a SysEx MIDI message is received from + a renderer that is not permitted to send a SysEx MIDI message. + + + + + toyoshim@chromium.org + + Indicates that an IPC message to send a MIDI message against out of range + output port is received from a renderer. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 3/2015. Replaced by the histogram + Stability.BadMessageTerminate.Content. + + alexmos@chromium.org + + Indicates that a renderer process was terminated because it tried to change + iframe sandbox flags for an invalid frame. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 3/2015. Replaced by the histogram + Stability.BadMessageTerminate.Content. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 3/2015. Replaced by the histogram + Stability.BadMessageTerminate.Content. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 3/2015. Replaced by the histogram + Stability.BadMessageTerminate.Content. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 3/2015. Replaced by the histogram + Stability.BadMessageTerminate.Content. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 3/2015. Replaced by the histogram + Stability.BadMessageTerminate.Content. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 3/2015. Replaced by the histogram + Stability.BadMessageTerminate.Content. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 3/2015. Replaced by the histogram + Stability.BadMessageTerminate.Content. + + dominikg@chromium.org + tdresser@chromium.org + + Emitted when a InputHostMsg_QueueSyntheticGesture message is received while + the --enable-gpu-benchmarking flag is not present. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 3/2015. Replaced by the histogram + Stability.BadMessageTerminate.Content. + + jbauman@chromium.org + + Emitted when a renderer is terminated due to it attempting to swap a shared + memory surface in aura. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 3/2015. Replaced by the histogram + Stability.BadMessageTerminate.Content. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 3/2015. Replaced by the histogram + Stability.BadMessageTerminate.Content. + + nasko@chromium.org + + Indicates that a renderer process was terminated due to receiving a + malformed or unexpected IPC message. The process was terminated by the + WebContentsImpl class. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + psarouthakis@chromium.org + + User opened the "Advanced" tab on the Billing interstitial. + + + + + psarouthakis@chromium.org + User pressed back on a Billing interstitial. + + + + psarouthakis@chromium.org + User proceeded on a Billing interstitial. + + + + psarouthakis@chromium.org + User saw the Billing interstitial. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Replaced in 1/2018 with bad_message::RVH_WEB_UI_BINDINGS_MISMATCH. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This infobar has been removed. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This infobar has been removed. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This infobar has been removed. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This infobar has been removed. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This infobar has been removed. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This infobar has been removed. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This infobar has been removed. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This infobar has been removed. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This infobar has been removed. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This infobar has been removed. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This infobar has been removed. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + wittman@chromium.org + + User selected Bookmark All Tabs from anywhere in the UI. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + emshack@chromium.org + + The user added one or more bookmarks to the Bookmarks Bar using the context + menu. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dfried@chromium.org + chrome-analysis-team@google.com + + The user opened one or more bookmarks in the Bookmarks Bar using the context + menu. Distinguished from launching from e.g. the application menu or the + bookmark manager. This is for opening bookmarks normally (in the same + window). + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + dfried@chromium.org + chrome-analysis-team@google.com + + The user opened one or more bookmarks in the Bookmarks Bar using the context + menu. Distinguished from launching from e.g. the application menu or the + bookmark manager. This is for opening bookmarks in an incognito window. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + dfried@chromium.org + chrome-analysis-team@google.com + + The user opened one or more bookmarks in the Bookmarks Bar using the context + menu. Distinguished from launching from e.g. the application menu or the + bookmark manager. This is for opening bookmarks in a new window. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + calamity@chromium.org + + Logged when a bookmark drag ends in the bookmark bar + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Superseded by BookmarkManager_DropToList, BookmarkManager_DropToTree, + BookmarkManager_DropToListItem and BookmarkManager_DropToTreeItem. + + calamity@chromium.org + + Fired when a user drops a bookmark after a drag in the bookmark manager. + + + + + calamity@chromium.org + + Fired when a user drops a bookmark into the bookmark list between other + items in the bookmark manager. + + + + + calamity@chromium.org + + Fired when a user drops a bookmark directly onto a bookmark list item in the + bookmark manager. + + + + + calamity@chromium.org + + Fired when a user drops a bookmark into the bookmark tree between other + nodes in the bookmark manager. + + + + + calamity@chromium.org + + Fired when a user drops a bookmark directly onto a bookmark tree item in the + bookmark manager. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Superseded by BookmarkManager_StartDragFromList and + BookmarkManager_StartDragFromTree. + + calamity@chromium.org + + Fired when a user starts a drag in the bookmark manager. + + + + + calamity@chromium.org + + Fired when a user starts a drag to the tree in the bookmark manager. + + + + + calamity@chromium.org + + Fired when a user starts a drag from the tree in the bookmark manager. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + arthurmilchior@chromium.org + chromeleon@google.com + + User added the "bookmark navigator" widget, which shows a + navigable hierarchy of the user's bookmarks, to their homescreen on Android. + + + + + wylieb@chromium.org + chrome-collections@google.com + Recorded when the user adds a bookmark. + + + + emshack@chromium.org + chrome-desktop-ui-sea@google.com + + Recorded when the user adds a bookmark from the side panel. + + + + + emshack@chromium.org + chrome-desktop-ui-sea@google.com + Recorded when the user adds a bookmark folder. + + + + emshack@chromium.org + chrome-desktop-ui-sea@google.com + + Recorded when the user adds a bookmark folder from the side panel. + + + + + wylieb@chromium.org + chrome-collections@google.com + Recorded when the user opens a bookmark. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated as of 10/2015. The widget was removed from Chrome. + + aurimas@chromium.org + + User added the "bookmark shortcut" widget, which is an icon to + open a single bookmark in Chrome, to their homescreen on Android. + + + + + Deprecated in M77 with the removal of Browser Actions. + ltian@chromium.org + + A Browser Actions menu is opened in Chrome. A Browser Actions menu is a + Chrome style context menu opened by 3rd party apps. + + + + + Deprecated in M77 with the removal of Browser Actions. + ltian@chromium.org + + Users click the notification of opening tab in background. + + + + + Deprecated in M77 with the removal of Browser Actions. + ltian@chromium.org + + Browser Actions creates a notifcation of opening tab in background. + + + + + + No longer needed as the number of users affected by https://crbug.com/482176 + is now approximately zero. + + mlerman@chromium.org + + A browser opened with the System Profile. Tsk, tsk. Any non-zero amount + means something is using the system profile for a browser when it likely + shouldn't be. + + + + + wfh@chromium.org + A renderer process died abnormally. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + wfh@chromium.org + A renderer process died because it crashed. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + wfh@chromium.org + A renderer process died because it was killed. + + + + wfh@chromium.org + A renderer process failed to launch. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This permission has been moved to the chrome layer. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This permission has been moved to the chrome layer. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This permission has been moved to the chrome layer. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This permission has been moved to the chrome layer. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This permission has been moved to the chrome layer. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This permission has been moved to the chrome layer. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This permission has been moved to the chrome layer. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This permission has been moved to the chrome layer. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This permission has been moved to the chrome layer. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This permission has been moved to the chrome layer. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This permission has been moved to the chrome layer. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This permission has been moved to the chrome layer. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This permission has been moved to the chrome layer. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + peconn@chromium.org + Recorded when a user opens a TWA. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 3/2015. Replaced by the histogram + Stability.BadMessageTerminate.Content. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 12/2019. + gayane@chromium.org + Chrome Colors was applied from Colors menu. + + + + Deprecated as of 12/2019. + gayane@chromium.org + Default theme was applied from Colors menu. + + + + Deprecated as of 7/2019. + gayane@chromium.org + Applied changes where canceled from Colors menu. + + + + Deprecated as of 7/2019. + gayane@chromium.org + Applied changes where confirmed from Colors menu. + + + + Deprecated as of 7/2019. + gayane@chromium.org + Tab with open Colors menu was closed. + + + + Deprecated as of 7/2019. + gayane@chromium.org + Webstore theme uninstalled from Colors menu. + + + + tedchoc@chromium.org + + A Chrome generated CustomTabActivity (instead of a client app) was stared + for the first time. + + + + + tedchoc@chromium.org + + A Chrome generated CustomTabActivity (instead of a client app) was started + by reopening a previously created instance. This can happen if you send a + CCT to the background via the home button and reselect it from Android + Overview. + + + + + zacpartridge@chromium.org + essential-inputs-team@google.com + + Recorded when a user clicks the link to open the Auto-correction section in + Chrome OS Inputs methods setting page. This can happen when a user clicks on + the Learn More button from the Autocorrection undo window. + + + + + myy@chromium.org + essential-inputs-team@google.com + + Records when users select a specific element in the Chrome OS's Languages OS + settings page. + + + + + + Deprecated as of M88, as the languages browser settings page has been + replaced with the languages OS settings page. + + myy@chromium.org + essential-inputs-team@google.com + + Records when users select a specific element in the Chrome OS's Languages + browser settings page. + + + + + myy@chromium.org + essential-inputs-team@google.com + + Recorded when a user clicks the link to open Emoji Suggestions section in + Chrome OS Smart Inputs setting page. + + + + + myy@chromium.org + essential-inputs-team@google.com + + Recorded when a user clicks the link to open Personal Information + Suggestions section in Chrome OS Smart Inputs setting page. + + + + + khorimoto@chromium.org + tjohnsonkanu@chromium.org + chadduffin@chromium.org + cros-connectivity@google.com + + Recorded when a user clicks on the settings button in Network view within + systems tray. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dullweber@chromium.org + msramek@chromium.org + + Browsing data has been deleted from the advanced tab. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dullweber@chromium.org + msramek@chromium.org + Browsing data has been deleted from the basic tab. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 4/2019. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + Please list the metric's owners. Add more owner tags as needed. + + Content licenses for Flash were deauthorized as the user selected + "Media Licenses" when clearing browsing data and Flash was + enabled. + + + + + dullweber@chromium.org + msramek@chromium.org + Content settings have been deleted. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dmurph@chromium.org + Clear browsing data screen is shown to the user. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dullweber@chromium.org + msramek@chromium.org + Browsing data has been cleared for all time. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dullweber@chromium.org + msramek@chromium.org + + Browsing data has been cleared for the last 15 minutes. + + + + + dullweber@chromium.org + msramek@chromium.org + Browsing data has been cleared for the last day. + + + + dullweber@chromium.org + msramek@chromium.org + Browsing data has been cleared for the last hour. + + + + dullweber@chromium.org + msramek@chromium.org + Browsing data has been cleared for the last month. + + + + dullweber@chromium.org + msramek@chromium.org + Browsing data has been cleared for the last week. + + + + + LSO data relates to Flash, and Flash is no longer supported. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dullweber@chromium.org + msramek@chromium.org + + Browsing data has been cleared for older than 30 days timeperiod. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dylancutler@google.com + SameSite=None cookies were deleted. + + + + This has been renamed ClearBrowsingData_ChannelIDs. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + steimel@chromium.org + media-dev@chromium.org + Recorded when the user clears site usage data. + + + + dullweber@chromium.org + msramek@chromium.org + User switched to advanced tab. + + + + dullweber@chromium.org + msramek@chromium.org + User switched to basic tab. + + + + dullweber@chromium.org + msramek@chromium.org + + The user clicked on the "visit sync settings" link in the sync + error message in the Clear Browsing Data footer. + + + + + dullweber@chromium.org + msramek@chromium.org + + The user clicked on the "enter your passphrase" link in the error + message in the Clear Browsing Data footer, which was shown due to a missing + sync passphrase. + + + + + dullweber@chromium.org + msramek@chromium.org + + User paused sync from the Clear Browsing Data footer. + + + + + dullweber@chromium.org + msramek@chromium.org + + User started to sign in from the Clear Browsing Data footer to unpause sync. + + + + + dullweber@chromium.org + msramek@chromium.org + Time period in CBD was changed. + + + + dullweber@chromium.org + msramek@chromium.org + Time period in CBD was changed. + + + + dullweber@chromium.org + msramek@chromium.org + Time period in CBD was changed. + + + + dullweber@chromium.org + msramek@chromium.org + Time period in CBD was changed. + + + + dullweber@chromium.org + msramek@chromium.org + Time period in CBD was changed. + + + + dullweber@chromium.org + msramek@chromium.org + Time period in CBD was changed. + + + + dullweber@chromium.org + msramek@chromium.org + Time period in CBD was changed to OlderThan30Days. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + chrome-analysis-team@google.com + dfried@chromium.org + + User clicks a bookmark to open it, either in the bookmarks bar or in a + bookmarks bar folder or overflow menu. (Changed in M75 to include + non-top-level bookmarks.) + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + User closed a tab that belongs to a group. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + miu@chromium.org + + User clicked the close tab button; the audio indicator was showing. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + miu@chromium.org + + User clicked the close tab button; the audio mute toggle button was enabled. + + + + + miu@chromium.org + + User clicked the close tab button; the media indicator was not showing. + + + + + Replaced with "CloseTab_NoAlertIndicator". + miu@chromium.org + + User clicked the close tab button; the media indicator was not showing. + + + + + miu@chromium.org + + User clicked the close tab button; the recording/capture indicator was + showing. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + zhiyuancai@chromium.org + chrome-shopping@google.com + + Triggered when the user taps the close button on PriceAlertsMessageCard. + Recorded only on Android. + + + + + zhiyuancai@chromium.org + chrome-shopping@google.com + + Triggered when the user taps the action button on PriceAlertsMessageCard. + Recorded only on Android. + + + + + meiliang@chromium.org + chrome-shopping@google.com + + Records when users click the bookmark star icon and the price track view is + shown inside the bookmark bubble. + + + + + meiliang@chromium.org + chrome-shopping@google.com + + Records when users clicks the toggle button in the bookmark bubble to track + the product. + + + + + meiliang@chromium.org + chrome-shopping@google.com + + Records when users clicks the toggle button in the bookmark bubble to + untrack the product. + + + + + meiliang@chromium.org + chrome-shopping@google.com + + Records when users click the "Untrack" button to untrack the + product in the confirmation bubble. + + + + + meiliang@chromium.org + chrome-shopping@google.com + + Records when users click the price tracking icon view and shows the + confirmation bubble. + + + + + meiliang@chromium.org + chrome-shopping@google.com + + Records when users click the bookmark folder name shown in the confirmation + bubble to launch the bookmark editor. + + + + + meiliang@chromium.org + chrome-shopping@google.com + + Records when users click the "Cancel" button to dismiss the + confirmation bubble. + + + + + meiliang@chromium.org + chrome-shopping@google.com + + Records when users click the price tracking icon view and shows the first + run experience bubble. + + + + + meiliang@chromium.org + chrome-shopping@google.com + + Records when users click the "Track price" button to track the + product in the first run experience bubble. + + + + + meiliang@chromium.org + chrome-shopping@google.com + + Records when users click the price tracking icon view to track the product. + + + + + meiliang@chromium.org + chrome-shopping@google.com + + Records when users click the price tracking icon view regarless of the icon + view state. + + + + + meiliang@chromium.org + chrome-shopping@google.com + + Records when price tracking icon view shown regarless of the icon view + state. + + + + + yuezhanggg@chromium.org + chrome-shopping@google.com + + Triggered when the product item is clicked in the price tracking list in + side panel. This can be triggered by both regular click and auxclick. + + + + + yuezhanggg@chromium.org + chrome-shopping@google.com + + Triggered when users start tracking price for a product from side panel via + bell button. + + + + + yuezhanggg@chromium.org + chrome-shopping@google.com + + Triggered when users start tracking price for a product from side panel via + context menu. + + + + + yuezhanggg@chromium.org + chrome-shopping@google.com + + Triggered when the price tracking list in side panel has collapsed. + + + + + yuezhanggg@chromium.org + chrome-shopping@google.com + + Triggered when the price tracking list in side panel has expanded. + + + + + yuezhanggg@chromium.org + chrome-shopping@google.com + + Triggered when the price tracking list in side panel shows (regardless of + being expanded or collapsed). + + + + + yuezhanggg@chromium.org + chrome-shopping@google.com + + Triggered when users stop tracking price for a product from side panel via + bell button. + + + + + yuezhanggg@chromium.org + chrome-shopping@google.com + + Triggered when users stop tracking price for a product from side panel via + context menu. + + + + + zhiyuancai@chromium.org + chrome-shopping@google.com + + Triggered when the user taps the close button on PriceWelcomeMessageCard. + Recorded only on Android. + + + + + zhiyuancai@chromium.org + chrome-shopping@google.com + + Triggered when the user taps the action button on PriceWelcomeMessageCard. + Recorded only on Android. + + + + + davidjm@chromium.org + ayman@chromium.org + dtrainor@chromium.org + + Price drops are displayed on the Tab Grid Card in the Tab Grid Switcher for + commerce related websites where a decrease in price, relative to the + previously known price is identified. This metric records when the user + clicks the Tab Grid Card which contains a price drop. + + + + + davidjm@chromium.org + ayman@chromium.org + dtrainor@chromium.org + + Price drops are displayed on the Tab Grid Card in the Tab Grid Switcher for + commerce related websites where a decrease in price, relative to the + previously known price is identified. This metric records when the user + clicks the Tab Grid Card which does not contain a price drop. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 6/2018. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 6/2018. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 6/2018. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + The geolocation blocked icon is shown. + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + The content settings geolocation bubble is closed. + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user clicked 'open preferences' from the content settings geolocation + bubble . + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + The user closed the context menu for a Feed card. + + + + harringtond@chromium.org + sczs@chromium.org + feed@chromium.org + + The user closed the 'report content' option for a Feed card. + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + The user opened the context menu for a Feed card. + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + The user selected the 'download' option for a Feed card. + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + The user selected the 'hide story' option for a Feed card. + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + The user selected the 'learn more' option for a Feed card. + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + The user selected the 'Manage' option from the Feed header menu. + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + The user selected the 'manage activity' option from the Feed header menu. + + + + + edchin@google.com + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + The user selected the 'manage hidden' option from the Feed header menu. + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + The user selected the 'manage interests' option from the Feed header menu. + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + Please list the metric's owners. Add more owner tags as needed. + + The user selected the 'manage reactions' option from the Feed header menu. + + + + + sczs@chromium.org + gogerald@chromium.org + feed@chromium.org + + The user opened the native context menu for a Feed card.(iOS only) + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + The user selected the 'not interested in' option for a Feed card. + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + The user tapped on a card in the Feed. + + + + hanxi@chromium.org + clank-start@google.com + + The user tapped on a card in the Feed on the start surface. + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + The user selected the 'open in new incognito tab' option for a Feed card. + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + The user selected the 'open in new tab' option for a Feed card. + + + + + jianli@chromium.org + harringtond@chromium.org + feed@chromium.org + + The user selected the 'open in new tab in group' option for a Feed card. + + + + + adamta@google.org + sczs@chromium.org + feed@chromium.org + + The user selected the 'Add to Reading List' option for a Feed card. + + + + + harringtond@chromium.org + sczs@chromium.org + feed@chromium.org + + The user selected the 'report content' option for a Feed card. + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + The user selected the 'send feedback' option for a Feed card. + + + + + chili@chromium.org + feed@chromium.org + The user selected 'share' option for a Feed card. + + + + tinazwang@chromium.org + feed@chromium.org + + After long-pressing the feed card and seeing the preview, the user tapped on + preview. + + + + + adamta@google.org + sczs@chromium.org + feed@chromium.org + + The user rotates the device to landscape from the NTP with the feed visible. + iOS only. + + + + + adamta@google.org + sczs@chromium.org + feed@chromium.org + + The user rotates the device to portrait from the NTP with the feed visible. + iOS only. + + + + + adamta@google.org + sczs@chromium.org + feed@chromium.org + + The user has engaged with the feed or scrolled at least 1 inch into it + within a 5-minute session. + + + + + adamta@google.org + sczs@chromium.org + feed@chromium.org + + The user selected the 'Manage Activity' option in the feed header menu. + + + + + edchin@google.com + adamta@google.com + sczs@chromium.org + feed@chromium.org + + The user selected the 'Manage Following' option in the feed management + surface. + + + + + edchin@google.com + adamta@google.com + sczs@chromium.org + feed@chromium.org + + The user selected the 'Manage Hidden' option in the feed management surface. + + + + + adamta@google.org + sczs@chromium.org + feed@chromium.org + + The user selected the 'Manage Interests' option in the feed header menu. + + + + + Deprecated with refactored NTP in August 2021. + adamta@google.org + sczs@chromium.org + feed@chromium.org + + The user has scrolled down enough to trigger the infinite feed pagination. + + + + + adamta@google.com + sczs@chromium.org + feed@chromium.org + The user has selected the Discover feed in the NTP. + + + + sczs@google.com + tinazwang@chromium.org + feed@chromium.org + + The user has clicked the 'Cancel' button on the Feed sign-in promo UI. + + + + + sczs@google.com + tinazwang@chromium.org + feed@chromium.org + + The user has clicked the 'Continue' button on the Feed sign-in promo UI. + + + + + sczs@google.com + tinazwang@chromium.org + feed@chromium.org + + The user with no device-level identity triggered a sign-in only flow from + Discover feed. + + + + + sczs@google.com + tinazwang@chromium.org + feed@chromium.org + + The user with one or more device-level identities triggered a sign-in only + flow from Discover feed. + + + + + sczs@google.com + tinazwang@chromium.org + feed@chromium.org + + The user clicks the feed personalization control and triggered a sign-in + disabled message to be shown. + + + + + sczs@google.com + tinazwang@chromium.org + feed@chromium.org + + The user clicks the feed personalization control and triggered a sign-in + only flow to be shown. + + + + + sczs@google.com + tinazwang@chromium.org + feed@chromium.org + + The user clicks the feed personalization control and triggered a sign-in + half sheet to be shown. + + + + + sczs@google.com + tinazwang@chromium.org + feed@chromium.org + + The user clicks the feed sync promo and triggered a service disabled message + to be shown. + + + + + sczs@google.com + tinazwang@chromium.org + feed@chromium.org + + The user clicks the feed sync promo and triggered a sync flow to be shown. + + + + + adamta@google.com + sczs@chromium.org + feed@chromium.org + + The user has selected the Following feed in the NTP. + + + + + adamta@google.com + sczs@chromium.org + feed@chromium.org + + The user has selected to group by publisher from the feed sort menu. + + + + + adamta@google.com + sczs@chromium.org + feed@chromium.org + + The user has selected to sort by latest from the feed sort menu. + + + + + adamta@google.org + sczs@chromium.org + feed@chromium.org + + The feed will trigger a refresh, either manually by the user or because of + the cache expiring. + + + + + adamta@google.org + feed@chromium.org + sczs@chromium.org + tinazwang@chromium.org + + The user tapped Got It button on the first follow sheet. iOS only. + + + + + adamta@google.org + feed@chromium.org + sczs@chromium.org + tinazwang@chromium.org + + The user tapped Go To Feed button on the first follow sheet. iOS only. + + + + + adamta@google.org + sczs@chromium.org + tinazwang@chromium.org + + The user tapped GO TO FEED button on the follow succeed snackbar. + + + + + adamta@google.org + sczs@chromium.org + tinazwang@chromium.org + + The user tapped RETRY button on the follow failed snackbar. + + + + + adamta@google.org + sczs@chromium.org + tinazwang@chromium.org + + The user tapped RETRY button on the unfollow failed snackbar. + + + + + adamta@google.org + sczs@chromium.org + tinazwang@chromium.org + + The user tapped UNDO button on the unfollow succeed snackbar. + + + + + dgn@chromium.org + finkm@chromium.org + + The user turned off the content suggestions notifications in the settings. + + + + + dgn@chromium.org + finkm@chromium.org + + The user turned on the content suggestions notifications in the settings. + + + + + dgn@chromium.org + finkm@chromium.org + + The user turned off remote content suggestions in the settings. + + + + + Removed as of 09/2019. + dgn@chromium.org + finkm@chromium.org + + The user turned on remote content suggestions in the settings. + + + + + donnd@chromium.org + + Contextual Search closed when the user pressed the Back button. + + + + + donnd@chromium.org + + Contextual Search closed when the user scrolled the base page. + + + + + donnd@chromium.org + + Contextual Search closed when the user tapped on the base page. + + + + + donnd@chromium.org + + Contextual Search closed when the user pressed the X in the Contextual + search Bar. + + + + + donnd@chromium.org + contextual-search-eng@google.com + + Logged when the user acknowledges the In-Panel-Help that promotes a + longpress gesture to trigger an intelligent Contextual Search instead of a + tap gesture. + + + + + donnd@chromium.org + + The Contextual Search Bar peeked up from the bottom of the screen because + the user selected text using long-press. + + + + + donnd@chromium.org + + Contextual Search updated the search in the Bar in response to manual + refinement of the selection into multiple words. + + + + + donnd@chromium.org + + Contextual Search updated the search in the Bar in response to manual + refinement of the selection into a single word. + + + + + donnd@chromium.org + + Contextual Search closed when the user navigated to a search result. + + + + + donnd@chromium.org + + Contextual Search maximized when the user navigated to a search result in + the expanded panel. + + + + + donnd@chromium.org + + Contextual Search closed when the user tapped the search bar. + + + + + donnd@chromium.org + + The user did a swip or fling to expand the Contextual Search panel. + + + + + donnd@chromium.org + + The user established a new selection through a touch and hold gesture or tap + while Contextual Search was active. + + + + + donnd@chromium.org + contextual-search-eng@google.com + + The user clicked on a search result in the Search Result Page that was shown + due to a Contextual Search. + + + + + donnd@chromium.org + + The user did a long-press that would normally trigger Contextual Search but + the UX was suppressed to allow Smart Selection to handle the gesture + instead. + + + + + donnd@chromium.org + + The user did a swip or fling to close the Contextual Search panel. + + + + + donnd@chromium.org + + The user did a swip or fling to expand the Contextual Search panel. + + + + + donnd@chromium.org + + The user did a swip or fling to maximize the Contextual Search panel. + + + + + donnd@chromium.org + + The user did a swip or fling to move the Contextual Search panel to the peek + position. + + + + + donnd@chromium.org + contextual-search-eng@google.com + + The user took an action that promotes the bottom sheet from an overlay into + its own separate Tab. The bottom sheet was showing results from a Contextual + Search. + + + + + donnd@chromium.org + + Contextual Search closed when the user tapped the search bar to promote the + search into a separate tab. + + + + + donnd@chromium.org + + Contextual Search peeked at from the bottom of the screen because the user + tapped on text in the base page. + + + + + Deprecated as of 11/2017. + donnd@chromium.org + + A tap that typically would have triggered Contextual Search was suppressed + because the number of taps since last opening has exceeded the suppression + threshold. + + + + + donnd@chromium.org + + Contextual Search closed due to a user action that is relatively uncommon. + + + + + donnd@chromium.org + + The user viewed the Contextual Search bar and panel for less than one + second. + + + + + donnd@chromium.org + + The user viewed the Contextual Search bar and panel for more than ten + seconds. + + + + + donnd@chromium.org + + The user viewed the Contextual Search bar and panel for a duration between + one and three seconds. + + + + + donnd@chromium.org + + The user viewed the Contextual Search bar and panel for a duration between + three and three seconds. + + + + + This feature was deprecated in M74 + twellington@chromium.org + wylieb@chromium.org + Android: User interacts with the feature directly. + + + + This feature was deprecated in M74 + twellington@chromium.org + + Android: User used the context menu on a suggested item on the contextual + suggestions surface. + + + + + This feature was deprecated in M74 + twellington@chromium.org + + Android: Contextual suggestions are disabled by a user click on the switch + preference in contextual suggestions settings. + + + + + This feature was deprecated in M74 + twellington@chromium.org + + Android: Contextual suggestions are enabled by a user click on the switch + preference in contextual suggestions settings. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dullweber@chromium.org + huanzhong@chromium.org + + "Cookies in use" dialog was opened from the cookie controls UI. + + + + + dullweber@chromium.org + huanzhong@chromium.org + + "Site not working" button was clicked in the cookie controls UI. + + + + + dullweber@chromium.org + huanzhong@chromium.org + The cookie controls UI was opened. + + + + dullweber@chromium.org + huanzhong@chromium.org + + The user looked at the tooltip inside the cookie controls bubble. + + + + + dullweber@chromium.org + huanzhong@chromium.org + + Cookie blocking was disabled for a site through the cookie controls UI. + + + + + dullweber@chromium.org + huanzhong@chromium.org + + Cookie blocking was enabled for a site through the cookie controls UI. + + + + + dullweber@chromium.org + huanzhong@chromium.org + + Third-party cookie blocking was disabled on the incognito NTP. + + + + + dullweber@chromium.org + huanzhong@chromium.org + + Third-party cookie blocking was enabled on the incognito NTP. + + + + + alimariam@google.com + olesiamarukhno@google.com + sauski@google.com + The user opens the Cookies in use dialog. + + + + alimariam@google.com + olesiamarukhno@google.com + sauski@google.com + + The user clicks remove on an entry in the allowed tree view. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + desktop-pwas-team@google.com + + "Copy URL" option in right-click context menu on CustomTabBar. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated as of 06/2019 (replaced by InstallWebAppFromMenu and + CreateShortcut). + + alancutter@chromium.org + The sum of CreateShortcut and InstallWebAppFromMenu + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + alancutter@chromium.org + + Shortcut app creation triggered via "Menu > More Tools > Create + Shortcut..." + + + + + vasilii@chromium.org + + The user chose a credential via the account chooser. + + + + + vasilii@chromium.org + The user dismissed the account chooser. + + + + vasilii@chromium.org + + The website tried to automatically sign the user in and got a credential + back from the browser. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + skare@chromium.org + sophey@chromium.org + src/chrome/browser/share/OWNERS + + Crow entry point was shown. Note this may be noisy as it is presented + alongside other menu items. + + + + + skare@chromium.org + sophey@chromium.org + src/chrome/browser/share/OWNERS + + User launched the Crow custom tab via an entry point. + + + + + tmartino@chromium.org + + Logged when Probabilistic Cryptid Rendering successfully occurs (i.e., the + conditions are satisfied and the NTP injection is completed). + + + + + Deprecated as of 11/2015. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dfalcantara@chromium.org + + Close button of the CustomTabActivity was clicked. Starting with M84 this is + is also recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA + data. + + + + + shaktisahu@chromium.org + + The user has clicked on the back arrow while viewing downloaded media on + Android. Starting with M84 this is is also recorded for webapps/WebAPKs. + Filter the platform for just CCT/TWA data. + + + + + Deprecated as of February 2020, this feature was removed. + Please list the metric's owners. Add more owner tags as needed. + + Please enter the description of the metric. Starting with M84 this is is + also recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA + data. + + + + + tedchoc@chromium.org + + A CustomTabActivity was stared for the first time. Starting with M84 this is + is also recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA + data. + + + + + tedchoc@chromium.org + + A CustomTabActivity was started by reopening a previously created instance. + This can happen if you send a CCT to the background via the home button and + reselect it from Android Overview. Starting with M84 this is is also + recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA data. + + + + + dfalcantara@chromium.org + + User hit the 'back' button in the CustomTabActivity. Starting with M84 this + is is also recorded for webapps/WebAPKs. Filter the platform for just + CCT/TWA data. + + + + + tedchoc@chromium.org + + User tapped the URL bar in the CustomTabActivity. Starting with M84 this is + is also recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA + data. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Please enter the description of the metric. Starting with M84 this is is + also recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA + data. + + + + + shaktisahu@chromium.org + + The user has clicked on the share button while viewing downloaded media on + Android. Starting with M84 this is is also recorded for webapps/WebAPKs. + Filter the platform for just CCT/TWA data. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Please enter the description of the metric. Starting with M84 this is is + also recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA + data. + + + + + shaktisahu@chromium.org + + The user has selected Open With from the menu while viewing downloaded media + on Android. Starting with M84 this is is also recorded for webapps/WebAPKs. + Filter the platform for just CCT/TWA data. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Please enter the description of the metric. Starting with M84 this is is + also recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA + data. + + + + + yusufo@chromium.org + + User hit "open in browser" menu item. Starting with M84 this is is + also recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA + data. + + + + + ianwen@chromium.org + + User opens the same url again after closing the previous custom tab. + Starting with M84 this is is also recorded for webapps/WebAPKs. Filter the + platform for just CCT/TWA data. + + + + + Deprecated as of 10/2016, this feature was removed. + ianwen@chromium.org + User hit "read it later" menu item. + + + + ianwen@chromium.org + + A RemoteViews based bottom bar was shown. Starting with M84 this is is also + recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA data. + + + + + ianwen@chromium.org + + A RemoteViews based bottom bar was updated through service API. Starting + with M84 this is is also recorded for webapps/WebAPKs. Filter the platform + for just CCT/TWA data. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated as of 3/2015, replaced by histogram DataReductionProxy.UIAction. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated as of 3/2015, replaced by histogram DataReductionProxy.UIAction. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated as of 3/2015, replaced by histogram DataReductionProxy.UIAction. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated as of 3/2015, replaced by histogram DataReductionProxy.UIAction. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated as of 3/2015, replaced by histogram DataReductionProxy.UIAction. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + glevin@chromium.org + + Records click on prompt (notification) to install Data Saver extension. + + + + + glevin@chromium.org + + Records display of prompt (notification) to install Data Saver extension. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + pmonette@chromium.org + + The user clicked "Set as default" on the info bar. + + + + + pmonette@chromium.org + + The user clicked "Don't ask again" on the info bar. + + + + + pmonette@chromium.org + + The user dismissed the default browser info bar via the 'x'. + + + + + Renamed to DefaultBrowserInfoBar_Cancel in M52. + pmonette@chromium.org + + The user clicked "Don't ask again" on the info bar. + + + + + pmonette@chromium.org + + The hosting tab was closed before any user interaction happened with the + info bar. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + michaelpg@chromium.org + wzang@chromium.org + + Recorded when user exits Demo Mode from the logout button on the shelf. + + + + + michaelpg@chromium.org + wzang@chromium.org + + Recorded when user exits Demo Mode from the logout button in the system + tray. + + + + + lbowen@google.com + cros-demo-mode-eng@google.com + + Recorded when exiting current Attract Loop by moving cursor, clicking mouse + or pressing key. + + + + + lbowen@google.com + cros-demo-mode-eng@google.com + + Recorded when Home button is clicked in the Highlights app. + + + + + lbowen@google.com + cros-demo-mode-eng@google.com + + Recorded when buttons are clicked in the Home page of the Highlights app. + + + + + lbowen@google.com + cros-demo-mode-eng@google.com + + Recorded when pillar buttons are clicked on the nav bar of the Highlights + app. + + + + + lbowen@google.com + cros-demo-mode-eng@google.com + + Recorded when the buttons are clicked in the pillar page of the Highlights + app. + + + + + tbuckley@chromium.org + + Recorded when the user activates an existing task window by clicking or + tapping on it. Recorded on ChromeOS only. + + + + + jianli@chromium.org + feed@chromium.org + + The user followed the web feed for the website (Desktop only). + + + + + jianli@chromium.org + feed@chromium.org + + The user unfollowed the web feed for the website (Desktop only). + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user added to the reading list from the Bookmark icon entry point + (Desktop only). + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user added to the reading list from the tab context menu entry point + (Desktop only). + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user marked an item as read from the reading list (Desktop only). + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user marked an item as unread from the reading list (Desktop only). + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user opened an item from the read section of the reading list (Desktop + only). + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user opened an item from the unread section of the reading list (Desktop + only). + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user clicked the Desktop reading list button to open the reading list. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user removed an item from the reading list (Desktop only) + + + + + + Deprecated 05/2016 because desktop searches are no longer opened in the + default browser. + + fdoray@chromium.org + + Recorded when a desktop search is opened in Chrome. This is currently + Windows-specific. + + + + + + Deprecated 05/2016 because desktop searches are no longer opened in the + default browser. + + fdoray@chromium.org + + Recorded when the user clicks on the dismiss button in the infobar + explaining that a desktop search has been redirected to the default search + engine. + + + + + + Deprecated 05/2016 because desktop searches are no longer opened in the + default browser. + + fdoray@chromium.org + + Recorded when the infobar explaining that a desktop search has been + redirected to the default search engine is closed without user interaction. + + + + + + Deprecated 05/2016 because desktop searches are no longer opened in the + default browser. + + fdoray@chromium.org + + Recorded when the user clicks on the 'Manage search settings' button in the + infobar explaining that a desktop search has been redirected to the default + search engine. + + + + + + Deprecated 05/2016 because desktop searches are no longer opened in the + default browser. + + fdoray@chromium.org + + Recorded when the infobar explaining that a desktop search has been + redirected to the default search engine is shown. + + + + + shuyng@google.com + twellington@chromium.org + + User entered the SingleCategoryPreferences page for Desktop site. It is + emitted whenever this page is shown regardless how it is triggered. Android + only. + + + + + shuyng@google.com + twellington@chromium.org + + User opened the site exception edit dialog by clicking on a site in the + SingleCategoryPreferences page for Desktop site. Android only. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded as of Sep 2013. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded as of Sep 2013. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded as of Sep 2013. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded as of Sep 2013. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded as of Sep 2013. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded as of Sep 2013. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded as of Sep 2013. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded as of Sep 2013. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded as of Sep 2013. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + yangguo@chromium.org + bmeurer@chromium.org + Please enter the description of this user action. + + + + yangguo@chromium.org + bmeurer@chromium.org + Please enter the description of this user action. + + + + yangguo@chromium.org + bmeurer@chromium.org + Please enter the description of this user action. + + + + yangguo@chromium.org + bmeurer@chromium.org + Please enter the description of this user action. + + + + yangguo@chromium.org + bmeurer@chromium.org + Please enter the description of this user action. + + + + yangguo@chromium.org + bmeurer@chromium.org + Please enter the description of this user action. + + + + yangguo@chromium.org + bmeurer@chromium.org + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + callistus@google.com + showoff-eng@google.com + + User clicked on the Discover tab notification, which launches the Discover + (internally "Showoff") app. + + + + + callistus@google.com + showoff-eng@google.com + + A notification for the Discover tab in the Discover (internally + "Showoff") app was shown. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed in M51. + mariakhomenko@chromium.org + User was presented with the opt out promo. + + + + Removed in M51. + mariakhomenko@chromium.org + User opted in to document mode through settings. + + + + Removed in M51. + mariakhomenko@chromium.org + User opted out of document mode through settings. + + + + smaslo@chromium.org + yfriedman@chromium.org + User opens reader mode on a page. + + + + smaslo@chromium.org + yfriedman@chromium.org + User opens distilled page preferences. + + + + yfriedman@chromium.org + + Records clicks on the "View Original" link in the distilled page + viewer. + + + + + dtrainor@chromium.org + chrome-analysis-team@google.com + + User opened a download. This action is logged every time the + Download.OpenMethod histogram is logged. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + It was discovered in June 2022 that this was dead code. + yoshiki@chromium.org + + User pushes "Always open type" button on download notification. + + + + + derat@chromium.org + jdufault@chromium.org + tbuckley@chromium.org + + User pushes "Annotate" button on download notification. + + + + + It was discovered in June 2022 that this was dead code. + drubery@chromium.org + + User pushes "Open now" on the prompt for download deep scanning + + + + + yoshiki@chromium.org + + User pushes "Cancel" button on download notification. + + + + + yoshiki@chromium.org + + User pushes "Copy to clipboard" button on download notification. + + + + + drubery@chromium.org + + User pushes "Scan" on the prompt for download deep scanning + + + + + yoshiki@chromium.org + + User pushes "Discard" button on download notification. + + + + + yoshiki@chromium.org + + User pushes "Keep" button on download notification. + + + + + It was discovered in June 2022 that this was dead code. + yoshiki@chromium.org + + User pushes "Learn More about Interrupted" button on download + notification. + + + + + jdeblasio@chromium.org + + User pushes "Learn More" button on a mixed-content download + notication. + + + + + yoshiki@chromium.org + + User pushes "Learn More about Scanning" button on download + notification. + + + + + yoshiki@chromium.org + + User pushes "Open When Completed" button on download notification. + + + + + yoshiki@chromium.org + + User pushes "Pause" button on download notification. + + + + + yoshiki@chromium.org + + User pushes a button to open a file on download notification. This is + currently used only for GalleryAppEditPdfNotification. + + + + + yoshiki@chromium.org + + User pushes "Resume" button on download notification. + + + + + xinghuilu@chromium.org + chrome-safebrowsing-alerts@google.com + + User pushes "Review" button on download notification to trigger + the enterprise download review dialog. + + + + + yoshiki@chromium.org + + User pushes "Show in folder" button on download notification. + + + + + yoshiki@chromium.org + + User pushes a download notification, which indicates a completed download. + + + + + yoshiki@chromium.org + + User pushes a download notification, which indicates a dangerous download. + + + + + yoshiki@chromium.org + + User pushes a download notification, which indicates a download in progress. + + + + + yoshiki@chromium.org + + User pushes a download notification, which indicates a cancelled or + interrupted download. + + + + + yoshiki@chromium.org + deepak.m1@samsung.com + + User closed a download notification, which indicates a dangerous download. + + + + + chrome-analysis-team@google.com + + Records clicks on the URL of download items in chrome://downloads page. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + chrome-analysis-team@google.com + + Records open a URL of download items in chrome://downloads page from context + menu. + + As of M-76, "Save link as...", "Copy link address", and + "Copy link text" context menu actions no longer log this action + (this was accidentally the case before M-76). + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Functionality was rolled into Share on Mac. Doesn't appear to have been used + on other platforms. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + ianwen@chromium.org + + Action indicating that bookmark model failed to add a bookmark. + + + + + ianwen@chromium.org + + User clicked the Edit button on a snackbar after a bookmark was created. + + + + + ianwen@chromium.org + + User ignored the Edit button on a snackbar after a bookmark was created. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 12/2021 + donnd@chromium.org + jinsukkim@chromium.org + User navigated to a link inside the ephemeral tab. + + + + Deprecated as of 12/2021 + donnd@chromium.org + jinsukkim@chromium.org + User promoted the ephemeral tab to the full tab. + + + + riajiang@chromium.org + rjkroege@chromium.org + + Events for a target window are processed after that target window has been + deleted. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + chili@chromium.org + dewittj@chromium.org + chrome-analysis-team@google.com + + Android: user used the context menu on a suggested item in the explore sites + native page UI. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user clicked the "Learn more about site access" option in the + runtime host permissions section of an extension's context menu. This is + recorded for both keyboard and mouse activations. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user clicked the "On all sites" option in the runtime host + permissions section of an extension's context menu. This is recorded for + both keyboard and mouse activations. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user clicked the "When you click the extension" option in the + runtime host permissions section of an extension's context menu. This is + recorded for both keyboard and mouse activations. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user clicked the "On {site}" option in the runtime host + permissions section of an extension's context menu, where "{site}" + is the domain of the current page. This is recorded for both keyboard and + mouse activations. + + + + + emiliapaz@chromium.org + extensions-core@chromium.org + + The user clicked the "Permissions page" option in the runtime host + permissions section of an extension's context menu. This is recorded for + both keyboard and mouse activations. + + + + + archanasimha@chromium.org + + The user interacted with the toggle in the chrome://extensions page to + disable an extension from either the main page(card view) or detail page for + a specific extension. + + + + + archanasimha@chromium.org + + The user interacted with the toggle in the chrome://extensions page to + enable an extension from either the main page(card view) or detail page for + a specific extension. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + archanasimha@chromium.org + extensions-core@chromium.org + + Records every time the user clicks on the extensions checkup middle slot + promo link. + + + + + archanasimha@chromium.org + + User clicked the "Remove" button in the extension uninstall dialog + which leads to the removal of a default installed extension. + + + + + archanasimha@chromium.org + + User clicked the "Remove" button in the chrome://extensions page. + This triggers the uninstallation flow which prompts the user to cancel or + confirm the uninstallation. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user activated the toggle at the top of the list of hosts in the site + access section of an extension's settings page, switching it from the on + state to the off state. Note: the host list is only shown on the settings + page for extensions which request a list of specific hosts in their + permissions. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user activated the toggle at the top of the list of hosts in the site + access section of an extension's settings page, switching it from the off + state to the on state. Note: the host list is only shown on the settings + page for extensions which request a list of specific hosts in their + permissions. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user activated the learn more icon on the site access section of an + extension's settings page, for an extension which requested a list of + specific hosts in their permissions. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user activated a toggle next to a specific host entry in the list of + hosts on the site access section of an extension's settings page, switching + it from the on state to the off state. Note: the host list is only shown on + the settings page for extensions which request a list of specific hosts in + their permissions. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user activated a toggle next to a specific host entry in the list of + hosts on the site access section of an extension's settings page, switching + it from the off state to the on state. Note: the host list is only shown on + the settings page for extensions which request a list of specific hosts in + their permissions. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user activated the "Edit" option in the context menu for a + specific host entry in the site access section of an extension's settings + page. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + While having the site access on an extension's setting page set to "On + specific sites", the user activated the three dot button on a specific + host entry. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user activated the "Remove" option in the context menu for a + specific host entry in the site access section of an extension's settings + page. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user activated the link to add a new host to the list of sites an + extension is allowed to access, on an extesion's settings page. Note that + this is only visible and can only be activated when the extension is already + set to run only on a specific list of sites. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user closed the dialog for adding a specific host to the list of sites + an extension is allowed to access, on an extension's settings page. This can + be triggered either by activating the cancel button on the dialog, or by + pressing escape to dismiss it. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user activated the confirmation button on the dialog for adding or + editing a specific host in the list of sites an extension is allowed to + access, on an extension's settings page. Note that this button is only + enabled when a host pattern entered into the textbox of the dialog is valid. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user activated the learn more icon on the site access section of an + extension's settings page, for an extension which requested an + "all_urls" type permission. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user changed the site access setting for an extension to the "On + all sites" radio option on an extension's settings page. This is only + recorded when the user choses to change to this option and not if it is + automatically changed back when canceling a change to the "specific + sites" option. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user changed the site access setting for an extension to the "On + click" radio option on an extension's settings page. This is only + recorded when the user choses to change to this option and not if it is + automatically changed back when canceling a change to the "specific + sites" option. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user changed the site access setting for an extension to the "On + specific sites" radio option on an extension's settings page. Note that + on changing to this selection, a dialog pops up for entering a specfic host + pattern. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The user triggered an extension from the Extensions Menu in the toolbar. The + action may or may not run, depending on other checks. This is recorded for + both keyboard and mouse activation. + + + + + + This was never fully implemented. Metric changed name to + "ExtensionsActivatedFromRequestAccessButton" to better fit + description + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The user triggered an extension from the toolbar. The action may or may not + run, depending on other checks. This is recorded for both keyboard and mouse + activation. + + + + + rdevlin.cronin@chromium.org + emiliapaz@chromium.org + + The user triggered multiple extensions from the request access button. Their + actions may or may not run, depending on other checks. This is recorded for + both keyboard and mouse activation. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The user opened the Extensions Menu in the toolbar. This is recorded for + both keyboard and mouse activation. + + + + + tjudkins@chromium.org + extensions-core@chromium.org + + The user activated the more actions button for an extension in the + Extensions Menu. This is recorded for both keyboard and mouse activation. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The user changed the pin state for an extension by activating the pin button + in the Extensions Menu. This is recorded for both keyboard and mouse + activation. + + + + + + Deprecated 03/2023. Extensions tabbed menu view, which was under a flag that + never landed, was removed in crbug/1390958. + + emiliapaz@chromium.org + extensions-core@chromium.org + + The user selected run on all sites using the extension's site access + combobox in the Extensions Menu. This is recorded for both keyboard and + mouse activation. + + + + + + Deprecated 03/2023. Extensions tabbed menu view, which was under a flag that + never landed, was removed in crbug/1390958. + + emiliapaz@chromium.org + extensions-core@chromium.org + + The user selected run on click using the extension's site access combobox in + the Extensions Menu. This is recorded for both keyboard and mouse + activation. + + + + + + Deprecated 03/2023. Extensions tabbed menu view, which was under a flag that + never landed, was removed in crbug/1390958. + + emiliapaz@chromium.org + extensions-core@chromium.org + + The user selected run on site using the extension's site access combobox in + the Extensions Menu. This is recorded for both keyboard and mouse + activation. + + + + + archanasimha@chromium.org + + User clicked the "Cancel" button in the extension uninstall + dialog. This cancels the uninstallation of an extension. + + + + + archanasimha@chromium.org + + User clicked the "Remove" button in the chrome://extensions page + uninstall dialog which leads to the removal of an extension. + + + + + archanasimha@chromium.org + + Used checked the "Report Abuse" box and the "Remove" + button in the extension uninstall dialog which leads to the removal of an + extension and reports the extension for abuse. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + xiqiruan@chromium.org + agawronska@chromium.org + tobyhuang@chromium.org + cros-families-eng@google.com + + Emitted every time when the Chrome OS users' usage time state changes to + UsageTimeStateNotifier::UsageTimeState::ACTIVE. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This was never fully implemented. + tmartino@chromium.org + + User accepted invitation on Feedback form to download Software Removal Tool. + + + + + This was never fully implemented. + tmartino@chromium.org + + User closed Feedback form when prompted to download Software Removal Tool. + + + + + This was never fully implemented. + tmartino@chromium.org + + User declined invitation on Feedback form to download Software Removal Tool. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + User clicked the breadcrumbs in order to return to a parent directory. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + User created a new folder in the file manager app. + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + User pinned a folder to the top of the directory tree on Files app + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + User navigated to a folder pinned to the top of the directory tree on Files + app. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + User removed a folder pinned to the top of the directory tree on Files app. + + + + + yawano@google.com + src/ui/file_manager/OWNERS + + Google One offer files banner gets dismissed by the user. + + + + + yawano@google.com + src/ui/file_manager/OWNERS + + Get perk button of Google One offer files banner gets activated. + + + + + yawano@google.com + src/ui/file_manager/OWNERS + + Google One offer files banner gets shown on Files app. + + + + + Removed in M92. + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + User saved a photo over itself for the first time (i.e. edited the photo) in + the gallery app. + + + + + Removed in M92. + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + User loaded an image into an editing session in the gallery app. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + User focused the search field at the top of the file manager app. + + + + + + Removed in M90. Files.app no longer displays CWS widget dialog. + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + The embedded Chrome Web Store dialog was shown with suggested apps to open + the file in the file manager app. + + + + + Removed in M44. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed in M44. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed in M44. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + For iOS: see IOS.FindInPage.SearchStarted + + + + Please list the metric's owners. Add more owner tags as needed. + For iOS: see IOS.FindInPage.FindNext + + + + Please list the metric's owners. Add more owner tags as needed. + For iOS: see IOS.FindInPage.FindPrevious + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated 02/2017. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated 02/2017. + tommycli@chromium.org + + Count of Flash plugin instances that use JavaScript. + + + + + Deprecated 02/2017. + thestig@chromium.org + Count of Flash plugin instances. + + + + sophiewen@chromium.org + shidi@chromium.org + + Recorded when a floated window is tucked in tablet mode. + + + + + sophiewen@chromium.org + shidi@chromium.org + + Recorded when a floated window is untucked in tablet mode. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Never used. Merged with F6 or equivalent for navigation. + collinbaker@chromium.org + dfried@chromium.org + + Recorded when the user focuses a help bubble (i.e. for in-product help or a + tutorial) with a keyboard shortcut. + + + + + dtseng@chromium.org + + Places focus on non-modal UI such as info bars, bubble widgets for + accessibility. + + + + + + No longer used. Generalized/renamed to FocusInactivePopupForAccessibility. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + pbos@chromium.org + + Called when a keyboard shortcut is used to put keyboard focus directly on + browser web contents. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer tracked. + thestig@chromium.org + Count of successful frame loads to new pages. + + + + No longer tracked. + thestig@chromium.org + Count of frame loads that also load PPAPI Flash. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Feature removed March 2017. + robliao@chromium.org + skare@chromium.org + + User clicked button index 0 (0-based) of a Now Notification. + + + + + Feature removed March 2017. + robliao@chromium.org + skare@chromium.org + + User clicked button index 1 (0-based) of a Now Notification. + + + + + Feature removed March 2017. + robliao@chromium.org + skare@chromium.org + User dismissed a Now Notification. + + + + Feature removed March 2017. + robliao@chromium.org + skare@chromium.org + + A Google Now notification was popped up to the user. + + + + + Feature removed March 2017. + robliao@chromium.org + skare@chromium.org + + User clicked on the message text of a Now notification. + + + + + Feature removed March 2017. + robliao@chromium.org + skare@chromium.org + + User dismissed the Now Notifications welcome toast via the "don't show + me notifications" button. + + + + + Feature removed March 2017. + robliao@chromium.org + skare@chromium.org + + User dismissed the Now Notifications welcome toast via the ok button. + + + + + Feature removed March 2017. + robliao@chromium.org + skare@chromium.org + + User dismissed the Now Notifications welcome toast via the x. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + yusufo@chromium.org + wychen@chromium.org + + User undoes the closed tab that was closed from grid tab switcher. + + + + + + Deprecated as of 8/2019. Replaced with TabGroup.Created.DropToMerge. + + yusufo@chromium.org + wychen@chromium.org + + User drags a tab and drops it on another tab to form a new group in grid tab + switcher. + + + + + + Deprecated as of 6/2019. Replaced with + GridTabSwitcher.Drag.AddToGroupOrCreateGroup. + + yusufo@chromium.org + wychen@chromium.org + + User drags a tab and drops it on another tab to form a group in grid tab + switcher. + + + + + yusufo@chromium.org + wychen@chromium.org + + User undoes closed group that was closed from grid tab switcher. + + + + + carlosil@chromium.org + + User opened the "Advanced" tab on the UwS (harmful) interstitial. + + + + + carlosil@chromium.org + User heeded the UwS (harmful) interstitial. + + + + carlosil@chromium.org + + User proceeded through the UwS (harmful) interstitial. + + + + + carlosil@chromium.org + User saw the UwS (harmful) interstitial. + + + + + Deprecated as of 08/2019. Replaced by HappinessTrackingSurvey.BubbleUsage + histogram. + + jeffreycohen@chromium.org + User saw a Happiness Tracking Survey. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + mpearson@chromium.org + chrome-analysis-team@google.com + + On desktop, user clicked a link to a URL from history on the + chrome://history page to navigate to the URL. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + mpearson@chromium.org + chrome-analysis-team@google.com + + On desktop, user right-clicked a link to a URL from history on the + chrome://history page. This causes the context menu to be displayed. + Sometimes the user will select an "open in" action, which would + cause a navigation. Selections such as "save link as" or + "copy link address" will not cause a navigation. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + sczs@chromium.org + + Action indicating that the selected history entries were deleted from the + history list. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + mpearson@chromium.org + User pressed the Home button. + + + + xdai@chromium.org + omrilio@chromium.org + + Recorded when the user clicks on the app menu button on a hosted app. + + + + + + Deprecated as of 10/2017. Feature removed with crbug/761426. + + amistry@chromium.org + rlp@chromium.org + somast@chromium.org + User triggered the hotword by saying 'Ok Google'. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + rhalavati@chromium.org + User clicked on Exit Incognito button. + + + + rhalavati@chromium.org. + The user opened incognito menu. + + + + rhalavati@chromium.org + chrome-incognito@google.com + + An Incognito session has ended. Recorded when an Incognito profile is + destroyed. + + + + + rhalavati@chromium.org + chrome-incognito@google.com + + An Incognito session is started. Recorded when an Incognito profile is + created. + + + + + rhalavati@chromium.org + chrome-incognito@google.com + + Database tracker created a WebSQL file in Incognito mode. Recorded when a + WebSQL file is created in Incognito mode on any platform. + + + + + rhalavati@chromium.org + chrome-incognito@google.com + + Database tracker closed a WebSQL file in Incognito mode. Recorded when a + WebSQL file that was created in Incognito mode is not needed anymore and OS + can erase it. This is recorded for all platforms. + + + + + pmonette@chromium.org + + A user uninstalled one of the listed incompatible applications while the + chrome://settings/incompatibleApplications page was open. + + + + + pmonette@chromium.org + + A user clicked the "Uninstall" button for one of the listed + incompatible applications while the + chrome://settings/incompatibleApplications was open. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dtrainor@chromium.org + nyquist@chromium.org + The user dismissed the in-product help. + + + + haileywang@chromium.org + shaktisahu@chromium.org + The user tapped inside the in-product help bubble. + + + + dtrainor@chromium.org + nyquist@chromium.org + The user triggered an event in in-product help. + + + + dtrainor@chromium.org + nyquist@chromium.org + The user triggered a used event in in-product help. + + + + haileywang@chromium.org + shaktisahu@chromium.org + The user tapped outside the in-product help bubble. + + + + collinbaker@chromium.org + + The user clicked on an in-product help promo bubble. + + + + + dtrainor@chromium.org + nyquist@chromium.org + + The feature engagement tracker tried to determine whether in-product help + should be shown to the user. + + + + + dtrainor@chromium.org + nyquist@chromium.org + + A user action that could have triggered in-product help did not. + + + + + dtrainor@chromium.org + nyquist@chromium.org + A user action triggered in-product help. + + + + dtrainor@chromium.org + nyquist@chromium.org + + A user action would have triggered in-product help, but the feature was + configured for tracking only. + + + + + myy@chromium.org + essential-inputs-team@google.com + + Recorded when users type some words and an emoji is suggested. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + + IMEs have since become extensions and no longer available as predetermined + list. + + yukishiino@chromium.org + nona@chromium.org + uekawa@chromium.org + komatsu@chromium.org + + Counts the number of times the input method configuration was opened. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + alancutter@chromium.org + + PWA install triggered via "Menu > Install App name..." + + + + + Deprecated as of 2/2016 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated as of 8/2017 (and not recorded since long before that) + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2017 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + thegreenfrog@chromium.org + rohitrao@chromium.org + + The user dismissed the default browser fullscreen promo modal without any + action. iOS only. + + + + + thegreenfrog@chromium.org + rohitrao@chromium.org + + The user was shown the default browser fullscreen promo modal. iOS only. + + + + + thegreenfrog@chromium.org + rohitrao@chromium.org + + The user tapped on the more information icon on the default browser + fullscreen promo modal. iOS only. + + + + + thegreenfrog@chromium.org + rohitrao@chromium.org + + The user tapped the primary action button in the default browser fullscreen + promo modal that takes the user to the Settings app. iOS only. + + + + + thegreenfrog@chromium.org + rohitrao@chromium.org + + The user tapped the "Remind Me Later" button in the default + browser fullscreen promo modal that takes the user to the Settings app. iOS + only. + + + + + thegreenfrog@chromium.org + rohitrao@chromium.org + + The user tapped on default browser NTP promo link. iOS only. + + + + + rkgibson@google.com + djean@chromium.org + + The user accepted a non modal promo. This will either take them to the + settings instructions for default browser ot directly into settings. To + track the former watch for "Settings.DefaultBrowser" action. iOS + only. + + + + + rkgibson@google.com + djean@chromium.org + + The user triggered a non modal default promo, and it appeared. iOS only. + + + + + rkgibson@google.com + djean@chromium.org + + The user dismissed explicitly a non modal promo. iOS only. + + + + + rkgibson@google.com + djean@chromium.org + + A non modal promo timed out and was dismissed. iOS only. + + + + + rkgibson@google.com + djean@chromium.org + + The user accepted a tailored browser fullscreen promo modal, and was taken + to the Settings app. iOS only. + + + + + rkgibson@google.com + djean@chromium.org + A tailored fullscren promo appeared. iOS only. + + + + rkgibson@google.com + djean@chromium.org + + The user dismissed a tailored browser fullscreen promo modal. iOS only. + + + + + erahmaoui@google.com + djean@chromium.org + + User tapped on the copy button after long-pressing on an email address. + + + + + erahmaoui@google.com + djean@chromium.org + + User tapped on the "Create Email" button after long-pressing on an + email address. + + + + + erahmaoui@google.com + djean@chromium.org + + The number of times the email experience context menu was displayed after a + user long press on an email address. + + + + + erahmaoui@google.com + djean@chromium.org + + The number of times the user tapped on an underlined email address and + triggered the "Create mail with" view controller. + + + + + erahmaoui@google.com + djean@chromium.org + + Recorded when user taps Copy in context menu after a long press on an date. + + + + + erahmaoui@google.com + djean@chromium.org + + The number of times the user triggered the "add-to-calendar" + context after a long press on a date. + + + + + erahmaoui@google.com + djean@chromium.org + + Recorded when user taps Copy in context menu after a long press on an + address. + + + + + erahmaoui@google.com + djean@chromium.org + + The number of times the user triggered the "get-directions" + context after a long press on an address. + + + + + erahmaoui@google.com + djean@chromium.org + + The number of times the user triggered the maps context menu after a long + press on an address, this includes all the menu contexts, + "get-directions","view-location", and copy. + + + + + erahmaoui@google.com + djean@chromium.org + + The number of times the user triggered the "view-location" context + after a long press on an address. + + + + + qpubert@google.com + djean@chromium.org + + The number of times the user navigated to the next match in Find in Page on + iOS. For instance, the user pressed the Next button in the system Find panel + or Chrome Find bar, or used the associated keybinding. From M112 onwards, + this is not recorded if the total number of matches is 2 or less. + + + + + qpubert@google.com + djean@chromium.org + + The number of times the user navigated to the previous match in Find in Page + on iOS. For instance, the user pressed the Previous button in the system + Find panel or Chrome Find bar, or used the associated keybinding. From M112 + onwards, this is not recorded if the total number of matches is 2 or less. + + + + + qpubert@google.com + djean@chromium.org + + The number of times the user started a new Find in Page search on iOS. This + is recorded every time the Chrome Find bar is presented and every time the + user edits the query. This is not recorded if the Find in Page variant uses + the system Find panel (bottom of the screen, right above the keyboard) as + opposed to the Chrome Find bar (top of the screen). + + + + + gambard@chromium.org + justincohen@chromium.org + + Recorded when the user is tapping the doodle on the NTP. There is also a + histogram (NewTabPageActioniOS::doodle), but histograms are not recorded in + Breadcrumbs. iOS Breadcrumbs attaches steps the user performed in the app to + crash logs. These steps can help debug causes of crashes when the stack + doesn't provide enough information. + + + + + Renamed to IOS.OpenIn.Tapped, 08/2020 + ewannpv@chromium.org + mrefaat@chromium.org + + Recorded when the user taps on OPEN IN... button to share the page + (typically PDF). + + + + + mrefaat@chromium.org + ewannpv@chromium.org + + Recorded when the user loads a web page containing a file that can be + exported and the "Open In" toolbar is presented. + + + + + mrefaat@chromium.org + ewannpv@chromium.org + + Recorded when the user taps on OPEN IN... button to export the file. + + + + + rkgibson@google.com + gambard@chromium.org + The user zoomed in on a webpage. iOS only. + + + + rkgibson@google.com + gambard@chromium.org + The user zoomed out on a webpage. iOS only. + + + + rkgibson@google.com + gambard@chromium.org + + The user reset the zoom level on a webpage. iOS only. + + + + + ewannpv@chromium.org + gambard@chromium.org + The user toogled a media permission state. + + + + erahmaoui@google.com + djean@chromium.org + + User tapped on the Add Country Code button after long-pressing on a phone + number. + + + + + erahmaoui@google.com + djean@chromium.org + + User tapped on the add to contacts button after long-pressing on a phone + number. + + + + + erahmaoui@google.com + djean@chromium.org + + User tapped on the Call button after long-pressing on a phone number. + + + + + erahmaoui@google.com + djean@chromium.org + + User tapped on the Copy button after long-pressing on a phone number. + + + + + erahmaoui@google.com + djean@chromium.org + + The user long pressed a phone number and the phone number experience context + menu was displayed. + + + + + erahmaoui@google.com + djean@chromium.org + + User tapped on the facetime button after long-pressing on a phone number. + + + + + erahmaoui@google.com + djean@chromium.org + + User tapped on the send message button after long-pressing on a phone + number. + + + + + erahmaoui@google.com + djean@chromium.org + + The number of times the user tapped on an underlined phone number and was + prompted to make a phone call. + + + + + sczs@chromium.org + gambard@chromium.org + + Recorded when user deletes for recently viewed search engines. iOS only. + + + + + sczs@chromium.org + gambard@chromium.org + + Recorded when user enters edit mode for recently viewed search engines. iOS + only. + + + + + gogerald@chromium.org + + Recorded when hiding the shortcuts for the Start Surface. iOS only. + + + + + gogerald@chromium.org + + Recorded when opening the most recent tab after tapping on the Start Surface + return to recent tab tile. iOS only. + + + + + gogerald@chromium.org + Recorded when showing the Start Surface. iOS only. + + + + gogerald@chromium.org + + Recorded when showing the return to recent tab tile for the Start Surface. + iOS only. + + + + + gogerald@chromium.org + + Recorded when shrinking the logo for the Start Surface. iOS only. + + + + + msarda@chromium.org + jlebel@chromium.org + + Reported when Accounts Settings UI was dismissed was dismissed using swipe + down gesture. iOS only. + + + + + rohitrao@chromium.org + sczs@chromium.org + + Recorded when a user closes bookmark manager by swiping down. iOS-only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the user closes bookmark editor by swiping down. iOS-only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the user closes bookmark folder chooser by swiping down. + iOS-only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the user closes bookmark folder editor by swiping down. + iOS-only. + + + + + edchin@chromium.org + gambard@chromium.org + sczs@chromium.org + + Reported when Clear Browsing Data Settings UI was dismissed using swipe down + gesture. iOS only. + + + + + ewannpv@chromium.org + sdefresne@chromium.org + + User closed Download Manager UI by tapping x button when download was not + in-progress (either not started or failed). + + + + + ewannpv@chromium.org + sdefresne@chromium.org + + User confirmed download closure by tapping "Stop" on "Stop + Download?" dialog. + + + + + ewannpv@chromium.org + sdefresne@chromium.org + + User confirmed download replacement by tapping "OK" on "Start + New Download" dialog. + + + + + ewannpv@chromium.org + sdefresne@chromium.org + + User rejected download closure by tapping "Continue" on "Stop + Download?" dialog. + + + + + ewannpv@chromium.org + sdefresne@chromium.org + + User rejected download replacement by tapping "Cancel" on + "Start New Download?" dialog. + + + + + ewannpv@chromium.org + sdefresne@chromium.org + User tapped on Install Google Drive promo. + + + + ewannpv@chromium.org + sdefresne@chromium.org + + User tapped on Open In... button after in Download Manager after download + succeeded. + + + + + ewannpv@chromium.org + sdefresne@chromium.org + User started the download in Download Manager. + + + + ewannpv@chromium.org + sdefresne@chromium.org + + User tapped x button when download was in-progress. The Download Manager did + not close, but presented the confirmation dialog. See + IOSDownloadConfirmClose and IOSDownloadDoNotClose actions for recording use + choice. + + + + + msarda@chromium.org + jlebel@chromium.org + + Reported when Google Services Settings UI was dismissed using swipe down + gesture. iOS only. + + + + + lpromero@google.com + ajuma@chromium.org + + Reported when Handoff Settings UI was dismissed using swipe down gesture. + iOS only. + + + + + rohitrao@chromium.org + sczs@chromium.org + + Recorded when a user closes History using swipe down gesture. iOS-only. + + + + + rohitrao@chromium.org + michaeldo@chromium.org + + Recorded when the user loads the chrome://inspect page on iOS. + + + + + sczs@chromium.org + pkl@chromium.org + + Reported when Languages Settings UI was dismissed using swipe down gesture. + iOS only. + + + + + justincohen@chromium.org + rohitrao@chromium.org + User opened a URL in Chrome via Apple Shortcuts. + + + + gujen@chromium.org + rohitrao@chromium.org + + User opened a URL/a list of URLs in Chrome in Incognito mode via Apple + Shortcuts. + + + + + justincohen@chromium.org + + User opened Chrome with a `Search in Chrome` Siri Shortcut. + + + + + thegreenfrog@google.com + ajuma@google.com + + Recorded when a user has switched back to a tab whose renderer needs to be + reloaded due to a renderer crash on iOS. + + + + + thegreenfrog@chromium.org + olivierrobin@chromium.org + + User opened Chrome through a main intent, either by an icon open or an app + switch. + + + + + olivierrobin@chromium.org + + User opened Chrome through a view intent, basically anything that opens + Chrome that is not an icon tap or an app switch. + + + + + djean@chromium.org + + Reported when Passwords Settings UI was dismissed using swipe down gesture. + iOS only. + + + + + joemerramos@chromium.org + ajuma@chromium.org + + Reported when Privacy Safe Browsing Settings UI was dismissed using swipe + down gesture. iOS only. + + + + + rohitrao@chromium.org + olivierrobin@chromium.org + + Recorded when a user closes Reading List with swipe down gesture. iOS-only. + + + + + gambard@google.com + sczs@chromium.org + + Recorded when a user closes Recent Tabs using swipe down gesture. iOS-only. + + + + + joemerramos@chromium.org + ajuma@chromium.org + + Reported when Safe Browsing Enhanced Protection Settings UI was dismissed + using swipe down gesture. iOS only. + + + + + joemerramos@chromium.org + ajuma@chromium.org + + Reported when Safe Browsing Standard Protection Settings UI was dismissed + using swipe down gesture. iOS only. + + + + + edchin@chromium.org + gambard@chromium.org + sczs@chromium.org + + Reported when Settings UI was dismissed using swipe down gesture. iOS only. + + + + + msarda@chromium.org + jlebel@chromium.org + + Reported when Sync Encryption Passphrase Settings UI was dismissed using + swipe down gesture. iOS only. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + mrefaat@chromium.org + + Record when StoreKit is launched on the iOS app by ITunesLinkHandler. This + should happen when the user navigates to iTunes appstore URL. + + + + + mpearson@chromium.org + + User disabled Javascript for the site via the site settings page. + + + + + mpearson@chromium.org + + User enabled Javascript for the site via the site settings page. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + rtinkoff@chromium.org + + The user muted the mic by pressing the mic mute keyboard key. + + + + + rtinkoff@chromium.org + + The user unmuted the mic by pressing the mic mute keyboard key. + + + + + wutao@chromium.org + + Records when the user creates a new window of Keyboard Shortcut Viewer. + + + + + wutao@chromium.org + + Records when the user enters search mode in Keyboard Shortcut Viewer. + + + + + xhwang@chromium.org + Please enter the description of this user action. + + + + xhwang@chromium.org + Please enter the description of this user action. + + + + xhwang@chromium.org + Please enter the description of this user action. + + + + xhwang@chromium.org + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + jamescook@chromium.org + lacros-team@google.com + + Recorded when the user launches a new instance of the lacros-chrome binary, + for example by clicking on the Lacros shelf icon. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M-59) and obsolete input method system. + No longer emitted since https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Pertaining to old Settings UI (pre-M59). No longer emitted since + https://crrev.com/c/602884. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + tbuckley@chromium.org + + Recorded when the user activates a shelf button using the mouse. + + + + + tbuckley@chromium.org + + Recorded when the user activates a shelf button using touch. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + vadimt@chromium.org + Launcher got dismissed. + + + + tbuckley@chromium.org + + Recorded when the user launches a new task from the shelf. + + + + + tbuckley@chromium.org + + Recorded when the user minimizes an existing task by clicking an icon in the + shelf. + + + + + vadimt@chromium.org + Launcher got shown. + + + + tbuckley@chromium.org + + Recorded when the user activates an existing task from the shelf. + + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + + Close button was clicked on the Lens side panel. Also records the + LensSidePanel.Hide action. + + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + The Lens side panel went from showing to hidden. + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + + The Lens side panel clobbered the Chrome side panel (Reading + List/Bookmarks). + + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + + The user issued a Lens query while the Lens side panel was open. + + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + + The Lens side panel button to expand results to new tab was clicked. + + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + + The user clicked a result link in the Lens side panel. + + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + The Lens side panel went from hidden to showing. + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + apalanki@google.com + The side panel is hidden when lens was an entry. + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + apalanki@google.com + + The lens entry was hidden in the side panel. User navigated to a different + entry in the side panel. + + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + apalanki@google.com + The lens entry was shown in the side panel. + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + apalanki@google.com + The user issued a Lens query. + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + apalanki@google.com + The user issued a follow Lens query. + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + apalanki@google.com + The user issued a new Lens query. + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + apalanki@google.com + + Lens query was issued when the side panel is closed. So opening side panel + and focusing on lens. + + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + apalanki@google.com + + Lens query was issued when the side panel is open and lens is focused. + + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + apalanki@google.com + + Lens query was issued when the side panel is open. So focusing on the lens + entry in the side panel. + + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + apalanki@google.com + + The side panel button to expand results to new tab was clicked. + + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + apalanki@google.com + + Search engine selection changed, so removing lens entry from the side panel. + + + + + stanfield@google.com + benwgold@google.com + juanmojica@google.com + schechter@google.com + apalanki@google.com + + The user clicked a result link in the Lens entry in the side panel. + + + + + meiliang@chromium.org + sbirch@chromium.org + + Recorded any time the user opens a link which navigates into a new forground + tab. + + + + + yusufo@chromium.org + wychen@chromium.org + Users long pressed and opened in new tab. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Retail mode doesn't exist anymore. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + carlosil@chromium.org + + User opened the "Advanced" tab on the malware interstitial. + + + + + carlosil@chromium.org + User heeded the malware interstitial. + + + + carlosil@chromium.org + User proceeded through the malware interstitial. + + + + carlosil@chromium.org + User saw a malware interstitial. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + This metric hasn't triggered since M67 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Legacy supervised users are deprecated + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 04/2023. + pam@chromium.org + treib@chromium.org + Supervised user profile activated. + + + + pam@chromium.org + treib@chromium.org + Supervised user quit the browser. + + + + Deprecated as of 04/2023. + pam@chromium.org + treib@chromium.org + Supervised user switched to another profile. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 11/2020. + bauerb@chromium.org + treib@chromium.org + pam@chromium.org + + A new allowlist has been installed for a supervised user. + + + + + Deprecated as of 11/2020. + bauerb@chromium.org + treib@chromium.org + pam@chromium.org + + An allowlist has been uninstalled for a supervised user. + + + + + Deprecated as of 11/2020. + bauerb@chromium.org + treib@chromium.org + pam@chromium.org + + Recorded at startup if an unregistered allowlist has been found. This + usually means that an uninstallation did not complete. + + + + + kazinova@google.com + vasilii@chromium.org + + Recorded when the user clicked the "Manage your Google Account" + link in the settings WebUI. + + + + + hunyadym@chromium.org + The chrome://management page was viewed. + + + + djean@chromium.org + olivierrobin@chromium.org + + The user closed the Manual Fallback view by tapping the keyboard icon. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user closed the Manual Fallback Popover view. This happens when the user + taps outside the popover. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user closed the Manual Fallback view by pulling. This happens when the + user pulls enough to the right, similar to "pull to refresh". + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on "Add Payment Method..." on the Password Manual + Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on "Manage credit cards" on the Password Manual + Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on a cardholder name in the Credit Card Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on a credit card number in the Credit Card Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on an expiration month in the Credit Card Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on an expiration year in the Credit Card Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + The user opened Credit Card Manual Fallback view. + + + + djean@chromium.org + olivierrobin@chromium.org + The user opened the Password Manual Fallback view. + + + + djean@chromium.org + olivierrobin@chromium.org + The user opened the Profile Manual Fallback view. + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on "Manage passwords" on the Password Manual + Fallback view. + + + + + tmartino@chromium.org + + The user opened the Password Settings submenu using the "Manage + Settings..." link in the Password Manual Fallback View. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on "Use other password" on the Password Manual + Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on a password in the Password Manual Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on a username in the Password Manual Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on line 1 in the Address Manual Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on line 2 in the Address Manual Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on a city in the Address Manual Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on a company name in the Address Manual Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on a country in the Address Manual Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on an email address in the Address Manual Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on "Manage addresses" on the Password Manual + Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on a phone number in the Address Manual Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on a first name in the Address Manual Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on a last name in the Address Manual Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on a middle name in the Address Manual Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on a state / province in the Address Manual Fallback view. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The user tapped on a zip code in the Address Manual Fallback view. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed 02/2017 + mlamouri@chromium.org + A tab became audible. + + + + Removed 02/2017 + mlamouri@chromium.org + A tab is no longer audible. + + + + steimel@chromium.org + media-dev@chromium.org + The user clicked on the cast controls button. + + + + steimel@chromium.org + media-dev@chromium.org + The user clicked on the cast overlay button. + + + + jazzhsu@chromium.org + + The user clicked anywhere in the video frame to pause. + + + + + jazzhsu@chromium.org + + The user clicked anywhere in the video frame to play. + + + + + steimel@chromium.org + media-dev@chromium.org + The user hid the closed caption from the controls. + + + + steimel@chromium.org + media-dev@chromium.org + + The user showed the closed caption from the controls. + + + + + steimel@chromium.org + media-dev@chromium.org + The user clicked on the controls' download button. + + + + steimel@chromium.org + media-dev@chromium.org + The user entered fullscreen mode from the controls. + + + + shaktisahu@chromium.org + + The user has entered fullscreen mode from the controls. Recorded only for + downloaded media on Android and is a subset of + Media.Controls.EnterFullscreen. + + + + + steimel@chromium.org + media-dev@chromium.org + The user left fullscreen mode from the controls. + + + + shaktisahu@chromium.org + + The user has left fullscreen mode from the controls. Recorded only for + downloaded media on Android and is a subset of + Media.Controls.ExitFullscreen. + + + + + steimel@chromium.org + media-dev@chromium.org + The user muted a media element from the controls. + + + + steimel@chromium.org + media-dev@chromium.org + The user closed the overflow menu via the controls. + + + + steimel@chromium.org + media-dev@chromium.org + The user opened the overflow menu via the controls. + + + + steimel@chromium.org + media-dev@chromium.org + The user paused a media element from the controls. + + + + steimel@chromium.org + media-dev@chromium.org + + The user paused a media element from the pause overlay button. + + + + + steimel@chromium.org + media-dev@chromium.org + The user played a media element from the controls. + + + + steimel@chromium.org + media-dev@chromium.org + + The user played a media element from the play overlay button. + + + + + avayvod@chromium.org + + User pauses the video using any controls apart from the media element itself + (aka remote controls: Android Wear, headset, notification, etc). + + + + + avayvod@chromium.org + + User resumes the video using any controls apart from the media element + itself (aka remote controls: Android Wear, headset, notification, etc). + + + + + steimel@chromium.org + media-dev@chromium.org + + User seeks the video backward using any controls apart from the media + element itself (aka remote controls: Android wear, headset, notification, + etc). + + + + + steimel@chromium.org + media-dev@chromium.org + + User seeks the video forward using any controls apart from the media element + itself (aka remote controls: Android wear, headset, notification, etc). + + + + + steimel@chromium.org + media-dev@chromium.org + + The user started to interact with the control's scrubber. + + + + + steimel@chromium.org + media-dev@chromium.org + + The user stopped interacting with the control's scrubber. + + + + + steimel@chromium.org + media-dev@chromium.org + The user unmuted a media element from the controls. + + + + steimel@chromium.org + media-dev@chromium.org + + The user started to interact with the control's volume slider. + + + + + steimel@chromium.org + media-dev@chromium.org + + The user stopped interacting with the control's volume slider. + + + + + avayvod@chromium.org + + User hid the frame containing a video making the video backgrounded. + + + + + guidou@chromium.org + engedy@chromium.org + hkamila@chromium.org + + Logs when the user clicks "Open Preferences", which is a button, + that upon being clicked, triggers showing the "Security & + Privacy" pane of macOS System Preferences. + + + + + Removed as of 2021/02. + avayvod@chromium.org + User resumed a backgrounded video. Android-only. + + + + Removed as of 2021/02. + avayvod@chromium.org + + User paused a video playing in the background or brought it to the + foreground. Android-only. + + + + + avayvod@chromium.org + + User brought the frame containing a video to the foreground. + + + + + guidou@chromium.org + engedy@chromium.org + hkamila@chromium.org + + Logs when the user clicks the camera or microphone sliding icon which + triggers showing the "Security & Privacy" pane of macOS System + Preferences. + + + + + johnme@chromium.org + media-dev@chromium.org + + The user entered fullscreen by rotating their device to match the + orientation of the video. Is a subset of Media.Controls.EnterFullscreen. + + + + + johnme@chromium.org + media-dev@chromium.org + + The user exited fullscreen by rotating their device so it no longer matches + the orientation of the video. Is a subset of Media.Controls.ExitFullscreen. + + + + + No longer recorded. + liberato@chromium.org + + Media playback was paused, either from script or controls. + + + + + No longer recorded. + liberato@chromium.org + A call to play() with a user gesture succeeded. + + + + liberato@chromium.org + Media playback reached the end. + + + + No longer recorded. + liberato@chromium.org + + Mute was turned off, either from script or controls. + + + + + No longer recorded. + liberato@chromium.org + Mute was turned on, either from script or controls. + + + + No longer recorded. + liberato@chromium.org + Media playback started due to any cause. + + + + No longer recorded. + liberato@chromium.org + + User requested to transfer playback to a remote player, via 'cast' button. + + + + + No longer recorded. + liberato@chromium.org + + User requested to control playback of a remote player, such as Chromecast. + + + + + No longer recorded. + liberato@chromium.org + Seek originating from script or controls completed. + + + + No longer recorded. + liberato@chromium.org + + Playback volume was changed, either from script or controls. + + + + + patricialor@chromium.org + backlight-swe@google.com + + Records that the user used the Files App to change their default app for PDF + to a different app, including if they change it from non-MediaApp to another + non-MediaApp. Recorded only when the MediaApp is enabled as a handler for + PDF files. + + + + + patricialor@chromium.org + backlight-swe@google.com + + Records that the user used the Files App to change their default app for PDF + from a different app back to MediaApp, which is the factory setting. + Recorded only when the MediaApp is enabled as a handler for PDF files. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + steimel@chromium.org + media-dev@chromium.org + + User clicked on the contextual menu of a video player to enter + Picture-in-Picture mode. + + + + + steimel@chromium.org + media-dev@chromium.org + + User clicked on the contextual menu of a video player to exit + Picture-in-Picture mode. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Replaced with "AlertIndicatorButton_Dragged". + miu@chromium.org + + User dragged the tab media indicator button; perhaps meant to drag the tab. + + + + + Replaced with "AlertIndicatorButton_Mute". + miu@chromium.org + + User clicked the tab media indicator button to mute the tab. + + + + + Replaced with "AlertIndicatorButton_Unmute". + miu@chromium.org + + User clicked the tab media indicator button to unmute the tab. + + + + + miu@google.com + User ended a Cast Streaming session. + + + + apacible@chromium.org + + User clicked the MediaRouterAction icon, also known as Cast icon, to open + the Media Router dialog. + + + + + btolsch@chromium.org + + User typed text into the filter input to filter the sink list. This is + triggered at most once each time the user enters the filter view of the + Media Router WebUI. As long as the user stays in the filter view, additional + actions will not be recorded for typing more text, deleting text, clearing + the field and entering new text, etc. Additionally, if the user leaves text + in the search input but leaves the filter view, entering the filter view + again will trigger the action again. + + + + + apacible@chromium.org + + User clicked outside the Media Router dialog, possibly in an effort to close + the dialog. + + + + + apacible@chromium.org + + User closed the Media Router dialog by pressing the ESC key. + + + + + apacible@chromium.org + + User clicked the Media Router help menu item, located on the Media Router + contextual menu, to open the Cast help page. + + + + + apacible@chromium.org + + User explicitly clicked the back button from the route details view to + navigate to the sink list view. + + + + + apacible@chromium.org + + User explicitly clicked a sink to navigate to the route details view from + the sink list view. + + + + + apacible@chromium.org + + User explicitly clicked to navigate from the sink view to the cast mode + view. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + ayman@chromium.org + chrome-shopping@google.com + + Triggered when user navigates to a new link on the merchant trust bottom + sheet. + + + + + ayman@chromium.org + chrome-shopping@google.com + + Triggered when user taps the merchant trust message. + + + + + dfried@chromium.org + + Triggered when user middle-clicks a bookmarks bar folder, resulting in all + bookmarks in the folder being opened. Applies to all folders reachable from + the bookmark bar, including subfolders and overflow. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + shaktisahu@chromium.org + chrome-segmentation-platform@chromium.org + + Recorded when the adaptive toolbar settings page is opened. + + + + + hujasonx@google.com + schechter@google.com + + Recorded when the user taps the entrypoint to Lens in the New Tab Page. (iOS + only). + + + + + nicolasmacbeth@google.com + bling-get-set-up@google.com + + User tapped the 'paste' iOS/iPadOS button into the Omnibox and the resulting + text in the Omnibox is a valid URL. iOS and iPadOS only. + + + + + hujasonx@google.com + schechter@google.com + + User pressed 'Lens Copied Image' in the omnibox context menu (iOS only). + + + + + rkgibson@google.com + stkhapugin@google.com + + User pressed 'Search Copied Image' in the omnibox context menu (iOS only). + + + + + rkgibson@google.com + stkhapugin@google.com + + User pressed 'Search Copied Text' in the omnibox context menu (iOS only). + + + + + rkgibson@google.com + stkhapugin@google.com + + User pressed 'Visit Copied Link' in the omnibox context menu (iOS only). + + + + + christianxu@chromium.org + stkhapugin@chromium.org + + User tapped the paste button in Omnibox's keyboard accessory to search for + an image. + + + + + christianxu@chromium.org + stkhapugin@chromium.org + + User tapped the paste button in Omnibox's keyboard accessory to search for a + link. + + + + + christianxu@chromium.org + stkhapugin@chromium.org + + User tapped the paste button in Omnibox's keyboard accessory to search for + text. + + + + + chrome-analysis-team@google.com + + The user clicked on the body of an Android notification for a file download. + This is logged at the same time as the 'Downloads - File' value is logged to + Mobile.SystemNotification.Content.Click. + + This action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + stkhapugin@chromium.org + + Records when a user focuses the omnibox and then defocuses it without + modifying or copying the URL. iOS only. + + + + + gambard@chromium.org + sczs@chromium.org + + Reported when user goes back from Chrome About Settings UI to root Settings + screen. iOS only. + + + + + gambard@chromium.org + sczs@chromium.org + + Reported when Chrome About Settings UI was dismissed. iOS only. + + + + + msarda@chromium.org + jlebel@chromium.org + + Reported when user goes back from Accounts Settings UI to root Settings + screen. iOS only. + + + + + msarda@chromium.org + jlebel@chromium.org + + Reported when Accounts Settings UI was dismissed. iOS only. + + + + + Deprecated as of 04/2020. + donnd@chromium.org + + The Action Bar was shown in response to the user selecting text. Deprecated + in favor of MobileActionBarShown.Toolbar which doesn't record same data + twice. See crbug.com/1072811. + + + + + gayane@chromium.org + src/components/send_tab_to_self/OWNERS + + The floating Action Bar was shown in response to the user selecting or + adjusting already selected text. Valid for Android M+. + + + + + gayane@chromium.org + src/components/send_tab_to_self/OWNERS + + The Action Bar was shown in response to the user selecting or adjusting + already selected text. Valid for versions before Android M. See + MobileActionBarShown.Floating for Android M+. + + + + + donnd@chromium.org + + User chose to process text using one of the assist actions available in the + mobile action bar. These actions trigger an intent to interacte with another + activity, e.g. Translate. + + + + + donnd@chromium.org + + The just-recorded SelectAll action was done in an editable field. + + + + + donnd@chromium.org + + The just-recorded SelectAll action was done in a non-editable field. + + + + + donnd@chromium.org + + The user pressed the Share option in the mobile Action Bar, or in the + floating toolbar for Android M+. The bars are shown after the user selects + text. + + + + + donnd@chromium.org + + The user pressed the Web Search option in the mobile Action Bar, or in the + floating toolbar for Android M+. The bars are shown after the user selects + text. + + + + + chrome-segmentation-platform@google.com + + User selected Edit Shortcut option from the adaptive toolbar button action + menu thereby opening the toolbar shortcut preference page. + + + + + chrome-segmentation-platform@google.com + + User long pressed the adaptive toolbar button and the action menu was shown. + + + + + Feature removed 11/2019 + newt@chromium.org + + User added a bookmark to Chrome via an intent from a third-party app. + + + + + gambard@chromium.org + + User tapped on "Add Payment Method" using the settings payment + methods screen. + + + + + gambard@chromium.org + + User adds a valid credit card using the add credit card screen. + + + + + Removed from code in November 2020 + gambard@chromium.org + + User tapped on "Use Camera" from the settings add credit card + screen. + + + + + olivierrobin@chromium.org + sczs@chromium.org + + Reported when user goes back from Addresses Settings UI to root Settings + screen. iOS only. + + + + + olivierrobin@chromium.org + sczs@chromium.org + + Reported when Addresses Settings UI was dismissed. iOS only. + + + + + gambard@chromium.org + sczs@chromium.org + + Reported when user goes back from Bandwidth Settings UI to root Settings + screen. iOS only. + + + + + gambard@chromium.org + sczs@chromium.org + + Reported when Bandwidth Settings UI was dismissed. iOS only. + + + + + Deprecated as of 1/2020 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 1/2020 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + wylieb@chromium.org + chrome-collections@google.com + + Recorded when a user closes the save flow without editing the boookmark. + + + + + wylieb@chromium.org + chrome-collections@google.com + + Recorded when a user taps the edit bookmark button in the save flow. + + + + + wylieb@chromium.org + chrome-collections@google.com + + Recorded when a user taps the edit folder button in the save flow. + + + + + wylieb@chromium.org + chrome-collections@google.com + + Recorded when a user saves a bookmark via the improved save flow. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + The user undid added bookmark on iOS only. + + + + twellington@google.com + sczs@chromium.org + clank-app-team@google.com + + Recorded when a user closes bookmark manager on iOS or Android. + + + + + twellington@google.com + clank-app-team@google.com + + Recorded when a user deletes all selected bookmarks in the Android bookmark + manager. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + The user undid bookmark deletion on iOS only. + + + + jhimawan@google.com + twellington@google.com + + Recorded when a user drops a bookmark after a drag in the Android bookmark + manager. + + + + + twellington@google.com + clank-app-team@google.com + + Recorded when a user edits a bookmark in bookmark manager, on iOS or + Android. + + + + + twellington@google.com + clank-app-team@google.com + + Recorded when a user edits a folder in bookmark manager, on iOS or Android. + + + + + sczs@chromium.org + + Action indicating that a bookmark was deleted from the bookmark manager. + + + + + ianwen@chromium.org + chrome-analysis-team@google.com + + A bookmark was opened from the bookmark manager. Bookmarks opened directly + from the NTP will not be counted. Instead those will be counted in the + NewTabPage.ContentSuggestions.* histograms. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + twellington@google.com + clank-app-team@google.com + + Recorded when all selected bookmarks are opened in new incognito tabs from + the Android bookmarks manager. + + + + + twellington@google.com + clank-app-team@google.com + + Recorded when all selected bookmarks are opened in new tabs from the Android + bookmarks manager. + + + + + twellington@google.com + clank-app-team@google.com + + Recorded when a user long presses on a bookmark item to toggle selection in + the Android bookmark manager. + + + + + jhimawan@google.com + twellington@google.com + + Recorded when a user uses the "Move Down" button to reorder + bookmarks in the Android bookmark manager. + + + + + twellington@google.com + clank-app-team@google.com + + Recorded when a user moves one bookmark to a new folder in the Android + bookmark manager. + + + + + twellington@google.com + clank-app-team@google.com + + Recorded when a user moves all selected bookmark items to a new folder in + bookmark manager, on iOS or Android. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + The user undid bookmark move on iOS only. + + + + jhimawan@google.com + twellington@google.com + + Recorded when a user uses the "Move Up" button to reorder + bookmarks in the Android bookmark manager. + + + + + wylieb@chromium.org + chrome-collections@google.com + + Recorded when multi-selection is opened from the bookmark manager. Possible + that the selection is only 1 bookmark. + + + + + ianwen@chromium.org + + Action indictating the bookmark manager is created, either by menu or NTP + button, or by navigation. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + The user opened the bookmark editor using the snackbar. + + + + + twellington@google.com + clank-app-team@google.com + + Recorded when a user opens a folder on iOS and Android. + + + + + ianwen@chromium.org + + Action indictating the bookmark manager is created as a Native Page. The + porpuse of this action is to tell how many users on phones are able to get + access to bookmark manager inside of a tab. + + + + + sczs@chromium.org + + Action indicating that the selected bookmark entries were deleted from the + bookmark manager. + + + + + wylieb@chromium.org + clank-app-team@google.com + + Tracks the bookmark manager being reopened while clank was running. + + + + + twellington@google.com + clank-app-team@google.com + + Recorded when a user uses the "Show in folder" button from Android + bookmark search in order to see the bookmark of interest inside of its + parent folder. + + + + + twellington@google.com + clank-app-team@google.com + + Recorded when a user taps on an item in order to select it from the Android + bookmark manager (this can only occur while in selection mode). + + + + + jlebel@chromium.org + chrome-signin-team@google.com + The user undid bookmark update on iOS only. + + + + jlebel@chromium.org + chrome-signin-team@google.com + + The user canceled the bookmark editor view. iOS-only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + The user deleted the bookmark in the bookmark editor view. iOS-only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + The user opened the folder chooser in the bookmark editor view. iOS-only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + The user saved the bookmark editor view. iOS-only. + + + + jlebel@chromium.org + chrome-signin-team@google.com + + The user canceled the bookmark folder chooser view. iOS-only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + The user confirmed the bookmark folder chooser view. iOS-only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + The user canceled the bookmark folder editor view. iOS-only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + The user deleted the folder while in the bookmark folder editor view. + iOS-only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + The user opened the folder chooser in the bookmark folder editor view. + iOS-only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + The user confirmed the bookmark folder editor view. iOS-only. + + + + + Removed as of 2020/09/09. + mdjones@chromium.org + clank-app-team@google.com + + The user tapped on the bottom toolbar's home button. + + + + + mdjones@chromium.org + clank-app-team@google.com + + The user tapped on the bottom toolbar's new tab button. + + + + + mdjones@chromium.org + clank-app-team@google.com + + The user tapped on the bottom toolbar's share button. + + + + + Removed as of 5/2020 + mdjones@chromium.org + clank-app-team@google.com + The bottom toolbar's overflow menu was shown. + + + + mdjones@chromium.org + clank-app-team@google.com + + The user tapped on the bottom toolbar's tab switcher button. + + + + + + Deprecated 2017/02/28 due to confusing semantics and lack of use. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of at least 2017/02/28. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + Deprecated as of 5/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of at least 2017/02/28. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + edchin@chromium.org + gambard@chromium.org + sczs@chromium.org + + Reported when Clear Browsing Data Settings UI was dismissed. iOS only. + + + + + sczs@chromium.org + + Clear browsing data button was tapped on the legacy Clear browsing data UI. + + + + + sczs@chromium.org + + Clear browsing data button was tapped on the UI Refresh Clear browsing data + UI. + + + + + jif@chromium.org + mpearson@chromium.org + + Emitted when Chrome detects that the clipboard contains new content. + + On iOS: this occurs either when Chrome enters the foreground and notices + that the content of the clipboard changed, or when the users selects the + omnibox and Chrome notices that the content of the clipboard changed. + + On Android: this occurs when Chrome starts up or when the clipboard changes + while Chrome is running (in the foreground or not). + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + Recorded when user cancelled closing all tabs with the cancel button. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + Recorded when user cancelled closing all tabs by tapping outside the dialog. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + Recorded when user closed all tabs from the close all tabs dialog. + + + + + tedchoc@chromium.org + + Chrome has come to the foreground. Only emitted if the foreground content is + an Activity that views web content, e.g., not settings. This will be emitted + everytime the Activity goes from entirely hidden to at least partially + visible. Partially visible means that at least some portion of the Activity + is visible, but the Activity is not interactable, e.g. being covered by the + share dialog, javascript alert dialogs, the voice input dialog, etc. + + Please note, this has the potential to be called many times for a given + session. For further details, see the Android activity concept of onPause + and onResume for a better understanding of what circumstances can trigger + this. + + Session tracking is based on the same visibility concept, but a session can + span multiple live Android Activities, while this metric will be logged when + each applicable Activity goes to the foreground (per above). Since session + tracking uses onPause and onResume, this metric is also tied to that to + ensure we capture the event. + + + + + gambard@chromium.org + sczs@chromium.org + + Reported when user goes back from Content Settings UI to root Settings + screen. iOS only. + + + + + gambard@chromium.org + sczs@chromium.org + + s Reported when Content Settings UI was dismissed. iOS only. + + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + bdibello@chromium.org + Please enter the description of this user action. + + + + Deprecated as of 5/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 8/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed from code in November 2020 + gambard@chromium.org + + User closed the Credit Card Scanner without scanning a credit card. + + + + + Removed from code in November 2020 + gambard@chromium.org + + User closed the Credit Card Scanner from an error dialog. + + + + + Removed from code in November 2020 + gambard@chromium.org + + User scanned a credit card using the Credit Card Scanner. + + + + + Removed from code in November 2020 + gambard@chromium.org + + User scanned a credit card using the Credit Card Scanner and scanned card + number was modified. + + + + + Removed from code in November 2020 + gambard@chromium.org + + User scanned a credit card using the Credit Card Scanner and scanned card + expiry month was modified. + + + + + Removed from code in November 2020 + gambard@chromium.org + + User scanned a credit card using the Credit Card Scanner and scanned card + expiry year was modified. + + + + + olivierrobin@chromium.org + sczs@chromium.org + + Reported when user goes back from Credit Card Settings UI to root Settings + screen. iOS only. + + + + + olivierrobin@chromium.org + sczs@chromium.org + + Reported when Credit Card Settings UI was dismissed. iOS only. + + + + + + Deprecated 12/2018. CustomFeedback never shipped to 100% and is no longer + planned for launch. + + wychen@chromium.org + Custom Feedback dialog is shown. + + + + jif@chromium.org + + Records when a user starts a camera search from the omnibox' assistive view. + + + + + hujasonx@google.com + schechter@google.com + + Records when a user starts a Lens search from the omnibox' assistive view. + + + + + jif@chromium.org + + Records when a user starts a voice search from the omnibox' assistive view. + + + + + thegreenfrog@chromium.org + + Records when an iOS user opens the app from the default browser URL open. + + + + + gambard@chromium.org + ajuma@chromium.org + + Reported when user goes back from Default Page Mode Settings UI to Content + Settings screen. iOS only. + + + + + gambard@chromium.org + ajuma@chromium.org + + Reported when Default Page Mode UI was dismissed. iOS only. + + + + + gambard@chromium.org + ajuma@chromium.org + + Reported when the user selects a default mode (Mobile/Desktop) for page + load. iOS only. + + + + + + Removed in 12/2019 after adds of IOSDownloadFileUIGoogleDrive's histogram. + + Please list the metric's owners. Add more owner tags as needed. + + User has requested installation of Google Drive app from the Download file + UI. + + + + + + Removed as of 11/2019 after adds of DownloadFileUI's histogram. + + Please list the metric's owners. Add more owner tags as needed. + User was presented with the Download file UI. + + + + ewannpv@chromium.org + gambard@chromium.org + + User pressed "Open in Downloads" button from the download manager. + + + + + ewannpv@chromium.org + gambard@chromium.org + + User pressed "Downloads" button from the tools menu. + + + + + ewannpv@chromium.org + sdefresne@chromium.org + + User attempted to retry downloading a file after the download failed. + + + + + yusufo@chromium.org + wychen@chromium.org + + User exited the Android tab switcher due to one of the listed actions, + opened a new normal/incognito tab, selected an existed tab, or pressed + system back button. + + + + + thildebr@chromium.org + + Records when the system started a VIEW intent on a navigation click. This + happens when there is another application in the system that's not a browser + and that can handle this URL (e.g. Maps app for http://maps.google.com/ + url). + + + + + thildebr@chromium.org + + Records when a user was given a choice between using Chrome and an installed + app and chose Chrome. + + + + + stkhapugin@chromium.org + User pressed the fakebox on NTP. iOS only. + + + + gambard@chromium.org + + User pressed the fake view on the top of NTP. iOS only. + + + + + Deprecated as of 12/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + thegreenfrog@chromium.org + + Records when an iOS user opens the app from a Google first party app. + + + + + Deprecated as of 12/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 12/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 12/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 10/2021 since this is already recorded as part of the histogram + MobileFre.Progress.*. + + aruslan@chromium.org + + User was presented with the sign-in dialog during the First Run Experience. + This metric is specific to Android. + + + + + Deprecated as of 5/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 5/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 5/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + justincohen@chromium.org + + User tapped on the TOS link on the first run welcome view. This metric is + only recorded if and after the TOS are accepted. This metric is specific to + iOS. + + + + + arthurmilchior@chromium.org + jlebel@chromium.org + chrome-signin-team@google.com + + User tapped on the UMA link on the first run welcome view. This metric is + only recorded if and after the TOS are accepted. This metric is specific to + iOS. + + + + + gambard@chromium.org + sczs@chromium.org + + Reported when user goes back from Google Services Settings UI to root + Settings screen. iOS only. + + + + + msarda@chromium.org + jlebel@chromium.org + + Reported when Google Services Settings UI was dismissed. iOS only. + + + + + tedchoc@chromium.org + + Chrome has gone to the background. Only emitted if the previously + foregrounded content was an Activity that views web content, e.g., not + settings. Chrome may be partially visible at this point, but is not directly + in the foreground/interactable. Partially visible means that at least some + portion of the Activity is visible, but the Activity is not interactable, + e.g. being covered by the share dialog, javascript alert dialogs, the voice + input dialog, etc. + + Please note, this has the potential to be called many times for a given + session. For further details, see the Android activity concept of onPause + and onResume for a better understanding of what circumstances can trigger + this. + + Session tracking is based on the same visibility concept, but a session can + span multiple live Android Activities, while this metric will be logged when + each applicable Activity goes to the background (per above). Since session + tracking uses onPause and onResume, this metric is also tied to that to + ensure we capture the event. + + + + + lpromero@google.com + ajuma@chromium.org + + Reported when user goes back from Handoff Settings UI to root Settings + screen. iOS only. + + + + + lpromero@google.com + ajuma@chromium.org + + Reported when Handoff Settings UI was dismissed. iOS only. + + + + + wychen@chromium.org + The Help and Feedback dialog is shown. + + + + rohitrao@chromium.org + sczs@chromium.org + Recorded when a user closes History on iOS. + + + + sczs@chromium.org + rohitrao@chromium.org + chrome-analysis-team@google.com + + User opened a History entry in a new Incognito Tab. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + sczs@chromium.org + rohitrao@chromium.org + chrome-analysis-team@google.com + + User opened a History entry in a new Tab. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + ajuma@chromium.org + gambard@chromium.org + + User cancelled HTTP Authentication dialog. iOS only. + + + + + ajuma@chromium.org + gambard@chromium.org + + User confirmed provided credentials in HTTP Authentication dialog. iOS only. + + + + + alionadangla@chromium.org + lpromero@chromium.org + chromeleon@google.com + + User pressed 'Close All Inactive' from the inactive tabs view. iOS only. + + + + + alionadangla@chromium.org + lpromero@chromium.org + chromeleon@google.com + + User pressed 'Close All' from the 'Close All Inactive' confirmation toast. + iOS only. + + + + + alionadangla@chromium.org + lpromero@chromium.org + chromeleon@google.com + + Reported when user goes back from Inactive Tabs Settings UI to Tabs Settings + screen. iOS only. + + + + + alionadangla@chromium.org + lpromero@chromium.org + chromeleon@google.com + + Reported when Inactive Tabs Settings UI was dismissed. iOS only. + + + + + stkhapugin@chromium.org + + The user has started biometric authentication for incognito access. iOS + only. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to add the current page to Bookmarks. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to add the current page to Reading + List. + + + + + lpromero@google.com + alionadangla@google.com + The user has performed the key command to go back. + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to clear browsing data. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to close a modal. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to close all tabs. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to close the current tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to find a string in the page. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to find the next string match. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to find the previous string match. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to go forward. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to go to the incognito tabs. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to go to the regular tab grid. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to go to the remote tabs. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to go to the tab grid. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to open a location (aka focus the + omnibox). + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to open a new incognito tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to open a new incognito window. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to open a new regular tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to open a new tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to open a new window. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to reload the page. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to reopen the last closed tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to report an issue. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to search a tab in the tab grid. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show Bookmarks. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show Downloads. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show the first tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show Help. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show History. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show the last tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show the next tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show the previous tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show Reading List. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show Settings. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show the second tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show the third tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show the fourth tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show the fifth tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show the sixth tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show the seventh tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to show the eighth tab. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to stop loading the page. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to undo the command which closes all + tabs. + + + + + lpromero@google.com + alionadangla@google.com + + The user has performed the key command to start a voice search. + + + + + noemies@google.com + + Reported when user goes back from Language Details Settings to root Settings + screen. iOS only. + + + + + noemies@google.com + + Reported when Language Details Settings UI was dismissed. iOS only. + + + + + stkhapugin@chromium.org + rkgibson@google.com + + The user has tapped location bar, which will focus the omnibox. iOS only. + + + + + aurimas@chromium.org + + User pressed the star icon in the app menu to add or remove a bookmark for + the current page. + + + + + aurimas@chromium.org + User pressed 'Add to homescreen' in the app menu. + + + + arthurmilchior@chromium.org + chromeleon@google.com + + User pressed the star icon in the app menu to add or edit a bookmark for the + current page. + + + + + bttk@chromium.org + chrome-collections@google.com + User pressed 'Add to reading list' in the app menu. + + + + ianwen@chromium.org + User pressed 'Bookmarks' in the app menu. + + + + Obsolete as of 5/2015 + aurimas@chromium.org + User pressed the back icon in the app menu. + + + + Deprecated as of 3/2021 + gangwu@chromium.org + User pressed the back icon in the app menu. + + + + rkgibson@google.com + User pressed 'Clear Browsing Data' in the app menu. + + + + gambard@chromium.org + + User pressed 'Close all incognito tabs' in the app menu. + + + + + aurimas@chromium.org + User pressed 'Close all tabs' in the app menu. + + + + lazzzis@google.com + twellington@chromium.org + User pressed 'Close tab' in the app menu. + + + + megjablon@chromium.org + User opened the data saver item in the app menu. + + + + wylieb@chromium.org + + User deleted from their reading list in the app menu. + + + + + aurimas@chromium.org + + User pressed the application icon next to 'Share' to share directly with the + most recently used application. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + dfalcantara@chromium.org + twellington@chromium.org + ianwen@chromium.org + User pressed 'Downloads' in the app menu. + + + + dfalcantara@chromium.org + twellington@chromium.org + ianwen@chromium.org + + User pressed the download page icon in the app menu. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + aurimas@chromium.org + User pressed 'Help and Feedback' in the app menu. + + + + aurimas@chromium.org + User pressed 'Find in page' in the app menu. + + + + adamta@google.org + sczs@chromium.org + tinazwang@chromium.org + User pressed the follow option in the app menu. + + + + aurimas@chromium.org + User pressed the forward icon in the app menu. + + + + This menu item was never added to the app menu. + aurimas@chromium.org + User pressed 'Fullscreen' in the app menu. + + + + yusufo@chromium.org + wychen@chromium.org + User pressed 'Group tabs' in the tab switcher menu. + + + + gambard@chromium.org + User pressed 'Help' in the app menu. + + + + aurimas@chromium.org + User pressed 'History' in the app menu. + + + + Deprecated as of 3/2023 + gambard@chromium.org + + The user tapped the "Incognito Search" button in the mobile menu + displayed when long pressing the New Tab button. + + + + + Deprecated as of 3/2023 + hujasonx@google.com + schechter@google.com + User pressed 'Lens Copied Image' in the app menu. + + + + jinsukkim@chromium.org + twellington@chromium.org + + User pressed 'Move to other window' in the app menu. + + + + + aurimas@chromium.org + User pressed 'New incognito tab' in the app menu. + + + + aurimas@chromium.org + User pressed 'New tab' in the app menu. + + + + hanxi@chromium.org + clank-start@google.com + + User pressed 'New tab' in the app menu when start surface finale is enabled. + + + + + jinsukkim@chromium.org + twellington@chromium.org + User pressed 'New Window' in the app menu. + + + + This action was renamed to MobileMenuRecentTabs. + aurimas@chromium.org + User pressed 'Recent tabs' in the app menu. + + + + hanxi@chromium.org + pkotwicz@chromium.org + + User successfully opened a WebAPK by pressing 'Open WebAPK' in the app menu. + + + + + rkgibson@google.com + User pressed 'Passwords' in the app menu. + + + + Deprecated as of 3/2023 + gambard@chromium.org + User pressed 'Paste and Go' in the app menu. + + + + ewannpv@chromium.org + pakzhygitov@google.com + + User tapped on the 'Pin Tab' action in the iOS overflow menu. + + + + + danieltwhite@google.com + ajuma@chromium.org + User pressed 'Track Price' in the app menu. + + + + aurimas@chromium.org + User pressed 'Print' in the app menu. + + + + This menu item was never added to the app menu. + aurimas@chromium.org + User pressed 'Quit' in the app menu. + + + + gambard@chromium.org + User pressed 'Reading List' in the app menu. + + + + gambard@chromium.org + User pressed 'Add to Reading List' in the app menu. + + + + justincohen@chromium.org + User pressed 'Recent tabs' in the app menu. + + + + tedchoc@chromium.org + + User pressed the reload option in the app menu. This was added in M55. Prior + to M55, the menu reload counts were combined with the toolbar counts, which + were all reported as MobileToolbarReload. + + + + + rohitrao@chromium.org + User pressed 'Report an Issue' in the app menu. + + + + aurimas@chromium.org + + User pressed 'Request Desktop Site' in the app menu. + + + + + liaoyuke@chromium.org + User pressed 'Request Mobile Site' in the app menu. + + + + Deprecated as of 3/2023 + gambard@chromium.org + User pressed 'Scan QR Code' in the app menu. + + + + Deprecated as of 3/2023 + gambard@chromium.org + + The user tapped the "New Search" button in the mobile menu + displayed when long pressing the New Tab button. + + + + + Deprecated as of 3/2023 + rkgibson@google.com + User pressed 'Search Copied Image' in the app menu. + + + + ckitagawa@chromium.org + + User pressed 'Select tabs' in the mobile tab switcher. + + + + + aurimas@chromium.org + User pressed 'Settings' in the app menu. + + + + rkgibson@chromium.org + + User pressed the 'Settings' action in the app menu (iOS). + + + + + aurimas@chromium.org + User pressed 'Share' in the app menu. + + + + aurimas@chromium.org + User opened the app menu. + + + + gambard@chromium.org + User pressed 'Site Information' in the app menu. + + + + tedchoc@chromium.org + User pressed the stop option in the app menu. + + + + rkgibson@google.com + User pressed 'Zoom Text' in the app menu + + + + gambard@chromium.org + rkgibson@google.com + + User triggered the presentation of a context menu on the toolbar + + + + + frechette@chromium.org + User pressed the 'Translate' in the app menu. + + + + adamta@google.org + sczs@chromium.org + tinazwang@chromium.org + User pressed the unfollow option in the app menu. + + + + ewannpv@chromium.org + pakzhygitov@google.com + + User tapped on the 'Unpin Tab' action in the iOS overflow menu. + + + + + Deprecated as of 3/2023 + gambard@chromium.org + User pressed 'Voice Search' in the app menu. + + + + cheickcisse@google.com + sebsg@google.com + User pressed 'What's New' in the app menu. + + + + jinsukkim@chromium.org + twellington@chromium.org + User pressed 'Manage windows' in the app menu. + + + + sczs@chromium.org + thegreenfrog@chromium.org + + User tapped on an accepted Infobar Message badge which displayed the Modal. + + + + + sczs@chromium.org + thegreenfrog@chromium.org + + User tapped on a non-accepted Infobar Message badge which displayed the + Modal. + + + + + sczs@chromium.org + thegreenfrog@chromium.org + + User dragged down the Infobar Message Banner which expanded it into a Modal. + + + + + sczs@chromium.org + thegreenfrog@chromium.org + + User tapped the Infobar Message Banner which expanded it into a Modal. + + + + + sczs@chromium.org + thegreenfrog@chromium.org + User accepted the Infobar Modal main action. + + + + sczs@chromium.org + thegreenfrog@chromium.org + + User dismissed the Infobar Modal without any action. + + + + + sczs@chromium.org + thegreenfrog@chromium.org + + User dismissed both the Infobar Modal and the InfobarBadge. + + + + + sczs@chromium.org + thegreenfrog@chromium.org + + User dismissed the Infobar Modal by opening the Infobar Settings. + + + + + sczs@chromium.org + thegreenfrog@chromium.org + An Infobar Message overflow badge is shown. + + + + sczs@chromium.org + thegreenfrog@chromium.org + User tapped on an Infobar Message overflow badge. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated as of 8/2019. Replaced with MobileNewTabOpened.TabStrip. + + yusufo@chromium.org + wychen@chromium.org + + Users tapped '+' button on the tab strip, causing a new tab to be created in + the group. + + + + + knn@chromium.org + + Android: The user clicked on an Interest item shown on the NTP. + + + + + knn@chromium.org + + Android: The user dismissed the page showing the Interests without clicking + on any of them. + + + + + peconn@chromium.org + User opened the interests dialog. + + + + Deprecated as of 8/2016 + knn@chromium.org + + Android: User clicked on a snippet card into the host website. + + + + + knn@chromium.org + + Android: User scrolled through the snippet cards. Recorded at the beginning + of the scroll event. + + + + + Deprecated as of 5/2016 + mastiz@chromium.org + + Android: User scrolled above the fold (not reading snippets cards). + + + + + Deprecated as of 5/2016 + mastiz@chromium.org + + Android: User scrolled to the snippet cards below the fold. + + + + + Deprecated as of 4/2016 + knn@chromium.org + + Android: User clicked on a snippet card to hide the bigger summary. + + + + + Deprecated as of 4/2016 + knn@chromium.org + + Android: User clicked on a snippet card to reveal a bigger summary. + + + + + mastiz@chromium.org + + Android: User stopped reading the article linked by an opened (clicked) + snippet card. + + + + + mastiz@chromium.org + + Android: User navigated back to the NTP after reading an opened (clicked) + snippet card. + + + + + + Deprecated as of 01/2017. Replaced with MobileBookmarkManagerEntryOpened. + + ianwen@chromium.org + + Action indicating the user has opened a bookmark from the bookmark manager. + + + + + dewittj@chromium.org + + Recorded when a user clicks on an Explore Sites category tile on the NTP. + + + + + + Deprecated as of 01/2017. Replaced with + MobileRecentTabManagerTabFromOtherDeviceOpened. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + msarda@chromium.org + pkl@chromium.org + + Recorded when a user taps on the Identity Disc on NTP. + + + + + dewittj@chromium.org + Recorded when a user clicks on a Most Visited tile. + + + + fhorschig@chromium.org + + The user manually created a New Tab Page (NTP) in a new tab that has not + been shown before. This includes the initial tab (when starting Chrome). + + + + + skym@chromium.org + carloks@chromium.org + twellington@chromium.org + + The New Tab Page (NTP) was open when Chrome was backgrounded by the user. + + + + + + Deprecated as of 01/2017. Replaced with + MobileRecentTabManagerRecentTabOpened. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + justincohen@chromium.org + The user tapped the bookmarks icon on the NTP. + + + + justincohen@chromium.org + The user tapped the history icon on the NTP. + + + + gambard@chromium.org + justincohen@chromium.org + New Tab Page presented Most Visited website tiles. + + + + knn@chromium.org + + The New Tab Page (NTP) was loaded or brought to foreground by the user. + + + + + justincohen@chromium.org + The user tapped the reading list icon on the NTP. + + + + justincohen@chromium.org + The user tapped the recent list icon on the NTP. + + + + cheickcisse@google.com + sebsg@chromium.org + The user tapped the what's new icon on the NTP. + + + + + Removed with deprecation of Bookmark suggestions category. + + ianwen@chromium.org + + Action indicating the user has clicked the boomkark button on NTP to swith + to the bookmark manager. + + + + + + Removed with deprecation of Download suggestions category. + + bauerb@chromium.org + + Android: User clicked on the "More" card at the end of the section + of Downloads suggestions on the NTP to open the Download Manager UI. + + + + + Deprecated as of 5/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 5/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Replaced with MobileOmniboxClipboardChanged in April 2017. + + jif@chromium.org + + Emitted when Chrome detects that the clipboard contains a new URL. + + On iOS: this occurs either when Chrome enters the foreground and notices + that the content of the clipboard changed, or when the clipboard changes + while Chrome is in the foreground. + + On Android: this occurs when Chrome starts up or when the clipboard changes + while Chrome is running (in the foreground or not). + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + thildebr@chromium.org + + The user cleared the contents of the omnibox via the delete button. + + + + + stkhapugin@chromium.org + + Omnibox focused (either directly or through one of the shortcuts). iOS only. + + + + + yusuyoutube@google.com + benwgold@google.com + fgorski@chromium.org + wylieb@chromium.org + lens-chrome@google.com + + Mobile Omnibox Lens button shown when Omnibox focused. + + + + + yusuyoutube@google.com + benwgold@google.com + fgorski@chromium.org + wylieb@chromium.org + lens-chrome@google.com + Mobile Omnibox Lens button clicked. + + + + yusuyoutube@google.com + benwgold@google.com + fgorski@chromium.org + wylieb@chromium.org + lens-chrome@google.com + Mobile Omnibox Lens button shown. + + + + + Deprecated 07/2017. Replaced by MobileOmniboxRefineSuggestion.Query and + MobileOmniboxRefineSuggestion.Url. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + jdonnelly@chromium.org + + User used the refinement arrow in an omnibox search suggestion to copy the + text of the suggestion into the omnibox. + + + + + jdonnelly@chromium.org + + User used the refinement arrow in an omnibox URL suggestion to copy the text + of the suggestion into the omnibox. + + + + + + Removed Sep 2016 because the name kept misleading people. Replaced with + MobileOmniboxUse, which has the same semantics. + + mpearson@chromium.org + tedchoc@chromium.org + + User used the omnibox to go somewhere. The action doesn't have to lead to a + search page (except on iOS, where this is only recorded for search-type + navigations). + + + + + stkhapugin@chromium.org + + The user clicked the Bookmarks shortcut in Omnibox popup shortcuts. iOS + only. + + + + + stkhapugin@chromium.org + + The user clicked the History shortcut in Omnibox popup shortcuts. iOS only. + + + + + stkhapugin@chromium.org + + The user clicked one of the Most Visited tiles in Omnibox popup shortcuts. + iOS only. + + + + + stkhapugin@chromium.org + + The user clicked the Reading List shortcut in Omnibox popup shortcuts. iOS + only. + + + + + stkhapugin@chromium.org + + The user clicked the Recent Tabs shortcut in Omnibox popup shortcuts. iOS + only. + + + + + mpearson@chromium.org + tedchoc@chromium.org + + User used the omnibox to go somewhere. The action doesn't have to lead to a + search page. + + + + + From 04/2021 use MobileOmniboxUse.StartSurface instead. + mattsimmons@chromium.org + memex-team@google.com + + User used the omnibox while it is showing on top of the grid tab switcher. + + + + + hanxi@chromium.org + clank-start@google.com + + User used the omnibox while it is showing on the start surface. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + noemies@google.com + + Reported when user goes back from Password Checkup Settings UI to root + Settings screen. iOS only. + + + + + noemies@google.com + + Reported when Password Checkup Settings UI was dismissed. iOS only. + + + + + kazinova@google.com + sczs@chromium.org + + Reported when user goes back from Passwords Settings UI to root Settings + screen. iOS only. + + + + + djean@chromium.org + kazinova@google.com + sczs@chromium.org + + Reported when Passwords Settings UI was dismissed. iOS only. + + + + + Deprecated as of 3/2023 + gambard@chromium.org + + The user selected an option in the Popup Menu without lifting the finger + from the LongPress action. + + + + + Deprecated as of 7/2015 + ksimbili@chromium.org + + When user navigates back, using either system back or toolbar back button, + from the preview page. + + + + + Deprecated as of 7/2015 + ksimbili@chromium.org + + User pressed reload button while the preview page is being shown. + + + + + Deprecated as of 7/2015 + ksimbili@chromium.org + + User taped on the page while the preview page is being shown. + + + + + Deprecated as of 7/2015 + ksimbili@chromium.org + User closes the tab while preview page is loaded. + + + + danieltwhite@chromium.org + ajuma@chromium.org + + Reported when user goes back from Price Notifications Settings UI to root + Settings screen. iOS only. + + + + + danieltwhite@chromium.org + ajuma@chromium.org + + Reported when Price Notifications Settings UI was dismissed. iOS only. + + + + + joemerramos@chromium.org + ajuma@chromium.org + + Reported when user goes back from Privacy Safe Browsing Settings UI to root + Settings screen. iOS only. + + + + + joemerramos@chromium.org + ajuma@chromium.org + + Reported when Privacy Safe Browsing Settings UI was dismissed. iOS only. + + + + + msramek@chromium.org + sczs@chromium.org + + Reported when user goes back from Privacy Settings UI to root Settings + screen. iOS only. + + + + + msramek@chromium.org + sczs@chromium.org + + Reported when Privacy Settings UI was dismissed. iOS only. + + + + + rkgibson@google.com + michaeldo@chromium.org + + Emitted on iOS when over-scroll action touch gesture closes current tab. + This fires only after the triggering touch is released while the refresh + effect has been pulled beyond the activation threshold. + + + + + rkgibson@google.com + michaeldo@chromium.org + + Emitted on iOS when over-scroll action touch gesture opens a new tab. This + fires only after the triggering touch is released while the refresh effect + has been pulled beyond the activation threshold. + + + + + rkgibson@google.com + tedchoc@chromium.org + + Emitted on Android and iOS when a pull-to-refresh touch gesture initiates a + page reload. This fires only after the triggering touch is released while + the refresh effect has been pulled beyond the activation threshold. + + + + + jianli@chromium.org + feed@chromium.org + + Emitted on Android when a pull-to-refresh touch gesture initiates a NTP + reload. This fires only after the triggering touch is released while the + refresh effect has been pulled beyond the activation threshold. + + + + + jif@chromium.org + User closed the QR Scanner without scanning a code. + + + + jif@chromium.org + User closed the QR Scanner from an error dialog. + + + + jif@chromium.org + User scanned a code using the QR Scanner. + + + + jif@chromium.org + User switched on torch in the QR Scanner. + + + + myuu@google.com + chrome-signin-team@google.com + + Recorded when a user closes Reading List on iOS by performing a VoiceOver + dismiss action. + + + + + gambard@chromium.org + + User added an entry to the ReadingList from inside Chrome. + + + + + rohitrao@chromium.org + olivierrobin@chromium.org + + Recorded when a user closes Reading List on iOS by tapping the + dismiss("Done") button. + + + + + gambard@chromium.org + + User deleted a single entry from the ReadingList using swipe to delete. + + + + + myuu@google.com + chrome-signin-team@google.com + + Recorded when the user clicks on the "undo" button from the + snackbar which is shown when items are added to the reading list, to remove + the new items. + + + + + gambard@chromium.org + + User deleted all the read entries of the ReadingList using 'Delete All + Read'. + + + + + gambard@chromium.org + + User deleted the selected entries from the ReadingList. + + + + + gambard@chromium.org + + User marked one or multiple ReadingList entries as 'Read'. + + + + + gambard@chromium.org + + User marked one or multiple ReadingList entries as 'Unread'. + + + + + gambard@chromium.org + chrome-analysis-team@google.com + + User opened a ReadingList entry. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + Deprecated as of 06/2021. Replaced by MobileTabbedModeViewIntentFromApp and + MobileTabbedModeViewIntentFromChrome. + + tedchoc@chromium.org + + A VIEW intent was received by the tabbed mode activity. This will combine + intents sent by external application as well as Chrome itself. This does not + cover all intent types handled by Chrome. Use + MobileTabbedModeViewIntentFromApp and MobileTabbedModeViewIntentFromChrome + for a complete picture. + + + + + + Deprecated as of 06/2021. Replaced by MobileTabbedModeViewIntentFromApp. + + tedchoc@chromium.org + + A VIEW intent was received by the tabbed mode activity from an external + application. + + + + + + Deprecated as of 06/2021. Replaced by MobileTabbedModeViewIntentFromChrome. + + tedchoc@chromium.org + + A VIEW intent was received by the tabbed mode activity from Chrome. This is + only recorded for intent types that are also allowed from external apps. + + + + + sczs@chromium.org + edchin@chromium.org + chrome-analysis-team@google.com + + The user has selected to Open all tabs from other device in Recent Tabs. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + A recently closed bulk event entry was opened from the recent tabs manager + on Android. This corresponds to a set of tabs and/or groups that are being + restored together. This does not count single tabs which are counted in + MobileRecentTabManagerRecentTabOpened or single groups which are counted in + MobileRecentTabManagerRecentGroupOpened. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + A recently closed group entry was opened from the recent tabs manager on. + Android. This corresponds to a group of tabs that are being restored + together. This does not count single tabs which is counted in + MobileRecentTabManagerRecentTabOpened or bulk entries multiple tabs and/or + groups which are counted in MobileRecentTabManagerRecentBulkEventOpened. + + + + + finkm@chromium.org + chrome-analysis-team@google.com + + A recently closed tab was opened from the recent tabs manager. Recently + closed tabs opened directly from the NTP will not be counted. Instead those + will be counted in the NewTabPage.ContentSuggestions.* histograms. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + michaeldo@chromium.org + mrefaat@chromium.org + + A recently closed tab was opened from the recent tabs manager search + results. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + Recorded on Android when a user clears all entries using the context menu + from Recent Tabs > Recently Closed. This corresponds to clearing the + native TabRestoreService. + + + + + gambard@google.com + sczs@chromium.org + + Recorded when a user opens History from Recent Tabs on iOS. + + + + + finkm@chromium.org + chrome-analysis-team@google.com + + A tab from another device was opened from the recent tabs manager. Tabs from + another device opened directly from the NTP will not be counted. Instead + those will be counted in the NewTabPage.ContentSuggestions.* histograms. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + michaeldo@chromium.org + mrefaat@chromium.org + + A tab from another device was opened from the recent tabs manager search + results. + + + + + gambard@google.com + sczs@chromium.org + Recorded when a user closes Recent Tabs on iOS. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + rohitrao@chromium.org + sdefresne@chromium.org + + The user dismissed Report An Issue screen by cancelling or submitting + feedback (there is no way to differentiate these two). iOS only. + + + + + jwanda@chromium.org + + The user pressed the Send Feedback button on a tab that is displaying the + sad view. + + + + + joemerramos@chromium.org + ajuma@chromium.org + + Reported when user goes back from Safe Browsing Enhanced Protection Settings + UI to root Settings screen. iOS only. + + + + + joemerramos@chromium.org + ajuma@chromium.org + + Reported when Safe Browsing Enhanced Protection Settings UI was dismissed. + iOS only. + + + + + joemerramos@chromium.org + ajuma@chromium.org + + Reported when user goes back from Safe Browsing Standard Protection Settings + UI to root Settings screen. iOS only. + + + + + joemerramos@chromium.org + ajuma@chromium.org + + Reported when Safe Browsing Standard Protection Settings UI was dismissed. + iOS only. + + + + + gambard@chromium.org + sczs@chromium.org + + Reported when user goes back from Search Engine Settings UI to root Settings + screen. iOS only. + + + + + gambard@chromium.org + sczs@chromium.org + + Reported when Search Engine Settings UI was dismissed. iOS only. + + + + + edchin@chromium.org + gambard@chromium.org + sczs@chromium.org + Reported when Settings UI was dismissed. iOS only. + + + + dmurph@chromium.org + + User clicked on the 'Clear All' button in the Storage section of sites + settings. + + + + + Deprecated as of 9/2018 + gambard@chromium.org + + The user pressed "Bookmark" from the share action menu. + + + + + Deprecated as of 9/2018 + gambard@chromium.org + + The user pressed "Find In Page" from the share action menu. + + + + + Deprecated as of 9/2018 + gambard@chromium.org + + The user pressed "Add to Reading List" from the share action menu. + + + + + gambard@chromium.org + + The user pressed "Request Desktop Site" from the share action + menu. This action is logged in addition to MobileShareMenuRequestSite to + disambiguate between desktop and mobile. + + + + + gambard@chromium.org + + The user pressed "Request Mobile Site" from the share action menu. + This action is logged in addition to MobileShareMenuRequestSite to + disambiguate between desktop and mobile. + + + + + gambard@chromium.org + User added current page to device home screen. + + + + gambard@chromium.org + User shared to the device's bookmarks. + + + + gambard@chromium.org + pkl@chromium.org + + The user cancelled the share action menu (i.e. closed it without taking any + action). + + + + + gambard@chromium.org + seblalancette@chromium.org + User copied content to the device's clipboard. + + + + gambard@chromium.org + + User activated the device's FindInPage from the share menu. + + + + + seblalancette@chromium.org + + The user pressed the generate QR code option from the share action menu. + + + + + alionadangla@chromium.org + gambard@chromium.org + + User pressed "Markup" from the share action menu. + + + + + gambard@chromium.org + seblalancette@chromium.org + + User triggered the Print activity from the share menu. + + + + + gambard@chromium.org + User shared to the device's Reading List. + + + + gambard@chromium.org + + User requested the desktop or mobile version of a site web from the share + menu. + + + + + alionadangla@chromium.org + gambard@chromium.org + User saved a file from share action menu. + + + + gambard@chromium.org + seblalancette@chromium.org + User saved an image the device's camera roll. + + + + jeffreycohen@chromium.org + sebsg@chromium.org + + The user pressed "Send Tab To Self" from the share action menu. + + + + + seblalancette@chromium.org + + The user initiated the Share action for the generated QR code image. + + + + + Deprecated as of 5/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Replaced with MobileMenuNewIncognitoTab + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Replaced with MobileMenuNewtab + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + jmentasti@google.com + seblalancette@chromium.org + + The user took a screenshot of a single chrome window. iOS only. + + + + + ewannpv@chromium.org + pakzhygitov@google.com + + User tapped on the UNDO button of the snackbar displayed after pinning a tab + from the iOS overflow menu. + + + + + ewannpv@chromium.org + pakzhygitov@google.com + + User tapped on the UNDO button of the snackbar displayed after unpinning a + tab from the iOS overflow menu. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + rlanday@chromium.org + + User in the Android tab switcher switches from normal mode to incognito + mode. + + + + + rlanday@chromium.org + + User in the Android tab switcher switches from incognito mode to normal + mode. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 02/2019 + tedchoc@chromium.org + + An ACTION_MAIN intent was received by Chrome and an NTP was created due to + the time elapsed since Chrome was last visited. + + + + + tedchoc@chromium.org + + An ACTION_MAIN intent was received by Chrome. This is the best indicator we + have to signal the user tapped on the Chrome icon from the launcher. + + + + + tedchoc@chromium.org + + An ACTION_MAIN intent was received by Chrome after the user had not used + Chrome for 12 hours but fewer than 24 hours. + + + + + tedchoc@chromium.org + + An ACTION_MAIN intent was received by Chrome after the user had not used + Chrome for 1 hour but fewer than 6 hours. + + + + + tedchoc@chromium.org + + An ACTION_MAIN intent was received by Chrome after the user had not used + Chrome for 24 hours. + + + + + tedchoc@chromium.org + + An ACTION_MAIN intent was received by Chrome after the user had not used + Chrome for 6 hours but fewer than 12 hours. + + + + + memex-team@google.com + + An ACTION_MAIN intent was received by Chrome and the user was shown the tab + switcher (overview) on startup. + + + + + jlebel@chromium.org + fernandex@chromium.org + + Sync Encryption Settings UI was dismissed. iOS only. + + + + + jlebel@chromium.org + fernandex@chromium.org + + Sync Passphrase Settings UI was dismissed. iOS only. + + + + + tedchoc@chromium.org + + A VIEW intent was received by the tabbed mode activity from an external + application. + + + + + tedchoc@chromium.org + + A VIEW intent was received by the tabbed mode activity from Chrome. + + + + + Deprecated as of 8/2017 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dtrainor@chromium.org + + Undo tab closure by keyboard shortcut ctrl+shift+T, for Android only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + User added multiple new bookmarks base on the selected tabs, in the iOS tab + grid. It is possible to have one tab selected. + + + + + edchin@chromium.org + marq@chromium.org + User in the iOS tab grid began reordering tabs. + + + + mrefaat@chromium.org + michaeldo@chromium.org + + User in the iOS tab grid search mode tapped Cancel button to return from + search mode to normal mode. + + + + + edchin@chromium.org + marq@chromium.org + + User in the iOS tab grid used the Close All control while viewing the + incognito tabs. + + + + + Deprecated as of 8/2021 + ewannpv@chromium.org + marq@chromium.org + + User in the iOS incognito tab grid used the Close All control and the action + sheet that asks for confirmation has been displayed. + + + + + ewannpv@chromium.org + pakzhygitov@google.com + + User in the iOS tab grid used the Close All control and chose to close all + non-pinned tabs. + + + + + edchin@chromium.org + marq@chromium.org + + User in the iOS tab grid used the Close All control while viewing the + regular tabs. + + + + + Deprecated as of 8/2021 + ewannpv@chromium.org + marq@chromium.org + + User in the iOS regular tab grid used the Close All control and the action + sheet that asks for confirmation has been displayed. + + + + + Deprecated as of 8/2021 + ewannpv@chromium.org + marq@chromium.org + + User in the iOS tab grid used the Close All control and the action sheet + that asks for confirmation has been Canceled. + + + + + Deprecated as of 8/2021 + ewannpv@chromium.org + marq@chromium.org + + User in the iOS tab grid used the Close All control and the action sheet + that asks for confirmation has been Confirmed. + + + + + edchin@chromium.org + marq@chromium.org + + User in the iOS tab grid tapped on the close control of a tab. + + + + + michaeldo@chromium.org + mrefaat@chromium.org + + User in the iOS tab grid tapped on the close control of a tab during search. + + + + + edchin@chromium.org + marq@chromium.org + User in the iOS tab grid closed an incognito tab. + + + + edchin@chromium.org + marq@chromium.org + User in the iOS tab grid closed a regular tab. + + + + edchin@chromium.org + marq@chromium.org + + User in the iOS tab grid created a new incognito tab using the new tab + button. + + + + + edchin@chromium.org + marq@chromium.org + + User in the iOS tab grid created a new incognito tab using the keyboard + shortcut. + + + + + edchin@chromium.org + marq@chromium.org + + User in the iOS tab grid created a new regular tab using the new tab button. + + + + + edchin@chromium.org + marq@chromium.org + + User in the iOS tab grid created a new regular tab using the keyboard + shortcut. + + + + + edchin@chromium.org + marq@chromium.org + User tapped the 'Done' button in the iOS tab grid. + + + + edchin@chromium.org + marq@chromium.org + + User in the iOS tab grid finished reordering tabs, but didn't change the tab + order. + + + + + edchin@chromium.org + marq@chromium.org + User entered the iOS tab grid (from anywhere). + + + + edchin@chromium.org + marq@chromium.org + User exited the iOS tab grid (by any means). + + + + ewannpv@chromium.org + gambard@chromium.org + User moves from a Tab to an existing other Tab. + + + + jlebel@chromium.org + chrome-signin-team@google.com + + User edited an existing bookmark, in the iOS tab grid. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + User adds one new bookmark, in the iOS tab grid. + + + + alionadangla@chromium.org + lpromero@chromium.org + chromeleon@google.com + + User in the iOS tab grid opened an inactive tab by tapping on it. + + + + + alionadangla@chromium.org + lpromero@chromium.org + chromeleon@google.com + + User in the iOS tab grid opened an inactive tab by tapping on it from search + results. + + + + + edchin@chromium.org + marq@chromium.org + + User in the iOS tab grid opened an incognito tab by tapping on it. + + + + + michaeldo@chromium.org + mrefaat@chromium.org + + User in the iOS tab grid opened an incognito tab by tapping on it from + search results. + + + + + edchin@chromium.org + marq@chromium.org + + User in the iOS tab grid opened a regular tab by tapping on it. + + + + + michaeldo@chromium.org + mrefaat@chromium.org + + User in the iOS tab grid opened a regular tab by tapping on it from search + results. + + + + + michaeldo@chromium.org + mrefaat@chromium.org + + User in the iOS tab grid opened a regular tab from another window by tapping + on it from search results. + + + + + ewannpv@chromium.org + pakzhygitov@google.com + + User selected a tab in the iOS tab grid pinned tabs section. + + + + + edchin@chromium.org + marq@chromium.org + + User in the iOS tab grid finished reordering tabs, and changed the tab + order. + + + + + michaeldo@chromium.org + mrefaat@chromium.org + + User in the iOS tab grid closed a tab from another window by closing it from + search results. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + + User in the iOS tab grid tapped the Search button to enter search mode. + + + + + edchin@chromium.org + marq@chromium.org + + User selected the iOS Tab Grid incognito panel by tapping the page control. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + + User in the incognito iOS tab grid used the Close All control with all + available tab items selected and the action sheet that asks for confirmation + has been Confirmed. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + + User in the regular iOS tab grid used the Close All control with all + available tab items selected and the action sheet that asks for confirmation + has been Confirmed. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + + User in the iOS incognito tab grid used the Close Tabs control and the + action sheet that asks for confirmation has been displayed. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + + User in the iOS regular tab grid used the Close Tabs control and the action + sheet that asks for confirmation has been displayed. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + + User in the iOS tab grid used the Close All control and the action sheet + that asks for confirmation has been Canceled. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + + User in the iOS tab grid used the Close All control and the action sheet + that asks for confirmation has been Confirmed. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + + User in the iOS tab grid used the Deselect All button to deselect all items. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + + User in the iOS tab grid used the Done button to exit selection mode and + return to regular or incognito tabs panel. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + + User in the iOS tab grid used the Select All button to select all items. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + + Users in the iOS tab grid used the share button in the selection mode to + share multiple tabs at once. + + + + + edchin@chromium.org + marq@chromium.org + + User selected the iOS Tab Grid regular tabs panel by tapping the page + control. + + + + + edchin@chromium.org + marq@chromium.org + + User selected the iOS Tab Grid remote tabs panel by tapping the page + control. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + + User tapped the 'Select' button in the iOS tab grid. + + + + + lpromero@google.com + alionadangla@google.com + + User tapped on the Inactive Tabs button of the iOS Regular Tab Grid. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + + User in the iOS tab grid used the tab context menu to enter selection mode. + + + + + edchin@chromium.org + marq@chromium.org + + User in the iOS tab grid used the Undo control after closing all regular + tabs. + + + + + lpromero@chromium.org + alionadangla@chromium.org + chromeleon@google.com + User in the iOS tab grid scrolled the grid of tabs. + + + + lpromero@chromium.org + alionadangla@chromium.org + chromeleon@google.com + + User in the iOS tab grid tapped the status bar to scroll to the top of the + grid of tabs. + + + + + ewannpv@chromium.org + gambard@chromium.org + + User opens a new Tab. This includes an opening from the Toolbar, the + Overflow Menu and the Tab Grid (incognito + regular). + + + + + ewannpv@chromium.org + pakzhygitov@google.com + + User pins a Tab. This includes pinning a tab from the tab strip, tab grid + and overflow menu. + + + + + yusufo@chromium.org + wychen@chromium.org + Users returned to the tab that was active. + + + + yusufo@chromium.org + wychen@chromium.org + + Users returned to the tab that was active, either by tapping the single-tab + card or pressing the back button, when the single tab switcher is enabled. + + + + + yusufo@chromium.org + wychen@chromium.org + + Users returned to the tab that was active, either by tapping the tab card or + pressing the back button, when the carousel tab switcher is enabled. + + + + + yusufo@chromium.org + wychen@chromium.org + + Users returned to the tab that was active, either by tapping the tab card or + pressing the back button, when the grid tab switcher is enabled. + + + + + alionadangla@chromium.org + lpromero@chromium.org + + Reported when user goes back from Tabs Settings UI to root Settings screen. + iOS only. + + + + + alionadangla@chromium.org + lpromero@chromium.org + + Reported when Tabs Settings UI was dismissed. iOS only. + + + + + Deprecated as of 5/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 5/2015 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + ewannpv@chromium.org + gambard@chromium.org + User scrolled the tabStrip view. + + + + justincohen@chromium.org + User long-pressed on the tab strip tab grid button. + + + + Please list the metric's owners. Add more owner tags as needed. + + User actively switched to a different tab. This does not include tab refocus + caused by cancelling a tab closure. + + + + + gauravjj@google.com + twellington@chromium.org + clank-large-form-factors@google.com + + User switched tabs via the tab strip on tablets. Recorded for Android only. + + + + + ewannpv@chromium.org + pakzhygitov@google.com + + User unpins a Tab. This includes unpinning a tab from the tab strip, tab + grid and overflow menu. + + + + + djean@chromium.org + edchin@chromium.org + + User in the iOS thumbstrip created a new incognito tab using the new tab + button. + + + + + djean@chromium.org + edchin@chromium.org + + User in the iOS thumbstrip created a new regular tab using the new tab + button. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + mdjones@chromium.org + clank-app-team@google.com + + User tapped the close all incognito tabs button in the tab switcher bottom + toolbar. + + + + + mdjones@chromium.org + clank-app-team@google.com + + User tapped the close all regular tabs button in the tab switcher bottom + toolbar. + + + + + clank-app-team@google.com + twellington@chromium.org + + User clicked close all tabs button by long pressing close button on any tab + in the tablet tab strip. Android Only. + + + + + clank-app-team@google.com + twellington@chromium.org + + User clicked close tab button in the tablet tab strip. Android Only. + + + + + dfalcantara@chromium.org + twellington@chromium.org + ianwen@chromium.org + User pressed the download page icon in the toolbar. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + pavely@chromium.org + clank-app-team@google.com + User tapped on IdentityDisc button on toolbar. + + + + clank-app-team@google.com + twellington@chromium.org + + User clicked new tab button in tablet tab strip. Android only. + + + + + gambard@chromium.org + stkhapugin@chromium.org + + User pressed the NewTab shortcut on the toolbar. iOS only. + + + + + mdjones@chromium.org + clank-app-team@google.com + + User tapped the omnibox accelerator button in the bottom toolbar. + + + + + Deprecated as of 3/2020 + gambard@chromium.org + + User pressed the omnibox shortcut on the toolbar. iOS only. + + + + + tedchoc@chromium.org + + User pressed the reload icon in the toolbar. Pre-M55, MobileToolbarReload + accounted for all reload actions. M55+, this metric only refers to reloads + that occurred from the toolbar. + + + + + clank-app-team@google.com + skavuluru@google.com + + User long-pressed on a tab, dragged and dropped it within a tab group in the + tablet tab strip. Android Only. + + + + + clank-app-team@google.com + skavuluru@google.com + + User long-pressed on a tab with in a group, dragged and dropped it outside + of the group in the tablet tab strip. Android Only. + + + + + Deprecate as of 3/2020 + stkhapugin@chromium.org + rkgibson@google.com + + The user has tapped on search bottom toolbar, which will focus the omnibox. + iOS only. + + + + + jeffreycohen@chromium.org + + User pressed the toolbar's button to open the share menu. Android only. + + + + + gambard@chromium.org + + User pressed the toolbar's button to open the share menu. iOS only. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 3/2023 + gambard@chromium.org + + The user long-pressed on the NewTab button in the toolbar + + + + + Deprecated as of 3/2020 + gambard@chromium.org + + User long pressed the 'Search' button to displayed the associated menu. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 3/2023 + gambard@chromium.org + + User long pressed the Tab Grid button to display the menu associated with + it. + + + + + Deprecated as of 3/2023 + gambard@chromium.org + + User long pressed the toolbar navigation buttons to display the tab history + menu. + + + + + clank-app-team@google.com + twellington@chromium.org + + User started to slide tab to view other tabs in tablet tab strip. Android + only. + + + + + mdjones@chromium.org + clank-app-team@google.com + + User in the Android browsing mode tapped the tab switcher button on the + toolbar to enter the tab switcher. + + + + + rlanday@chromium.org + + User in the Android tab switcher tapped the tab switcher button on the + toolbar to leave the tab switcher. + + + + + gogerald@chromium.org + + The user taps the new tab button '+' on the tab switcher toolbar to create a + new incognito tab. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + clank-app-team@google.com + twellington@chromium.org + + User started to drag a tab to re-order in tablet tab strip. Android only. + + + + + tedchoc@chromium.org + User pressed the stop icon in the toolbar. + + + + rlanday@chromium.org + + User entered the Android tab switcher by swiping down on the toolbar. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + salg@google.com + clank-app-team@google.com + + The user tapped on the top toolbar's add to bookmarks button. + + + + + Removed as of 2020/09/09. + mdjones@chromium.org + clank-app-team@google.com + The user tapped on the top toolbar's home button. + + + + mdjones@chromium.org + clank-app-team@google.com + + The user tapped on the top toolbar's new tab button. + + + + + bttk@chromium.org + clank-app-team@google.com + + The user tapped on the top toolbar's optional button acting as a new tab + button. + + + + + jeffreycohen@chromium.org + tgupta@chromium.org + The user tapped on the top toolbar's share button. + + + + Removed as of 5/2020 + mdjones@chromium.org + clank-app-team@google.com + + Action indicating the top toolbar's overflow menu was shown. + + + + + salg@google.com + clank-app-team@google.com + + The user tapped on the top toolbar's translate button. + + + + + jds@chromium.org + chrome-language@google.com + + The user tapped on the top toolbar's voice search button. + + + + + danieltwhite@chromium.org + ajuma@chromium.org + + Reported when user goes back from Tracking Price Settings UI to root + Settings screen. iOS only. + + + + + danieltwhite@chromium.org + ajuma@chromium.org + + Reported when Tracking Price Settings UI was dismissed. iOS only. + + + + + fedegermi@google.com + sdefresne@chromium.org + + Reported when user goes back from Translate Settings UI to root Settings + screen. iOS only. + + + + + fedegermi@google.com + sdefresne@chromium.org + + Reported when Translate Settings UI was dismissed. iOS only. + + + + + + Deprecated as of 06/2014. We removed this feature http://crbug.com/366154 . + + kkimlabs@chromium.org + + Only for Android. Menu is shown by dragging from hardware menu button. + + + + + kkimlabs@chromium.org + + Only for Android. Menu is shown by tapping hardware menu button. + + + + + kkimlabs@chromium.org + + Only for Android. Menu is shown by dragging from software menu button. + + + + + kkimlabs@chromium.org + + Only for Android. Menu is shown by tapping software menu button. + + + + + rohitrao@chromium.org + sczs@chromium.org + + Reported when user goes back from Voice Search Settings UI to root Settings + screen. iOS only. + + + + + rohitrao@chromium.org + sczs@chromium.org + + Reported when Voice Search Settings UI was dismissed. iOS only. + + + + + gambard@chromium.org + michaeldo@chromium.org + + Recorded when user taps Copy Image in context menu. iOS only. + + + + + gambard@chromium.org + michaeldo@chromium.org + + Recorded when user taps Copy Link in context menu. iOS only. + + + + + gambard@chromium.org + michaeldo@chromium.org + + Recorded when user invokes context menu for web contents image. iOS only. + + + + + gambard@chromium.org + michaeldo@chromium.org + + Recorded when user invokes context menu for web contents link. iOS only. + + + + + gambard@chromium.org + michaeldo@chromium.org + + Recorded when user taps Open Image in context menu. iOS only. + + + + + gambard@chromium.org + michaeldo@chromium.org + + Recorded when user taps Open Image In New Tab in context menu. iOS only. + + + + + gambard@chromium.org + michaeldo@chromium.org + + Recorded when user taps Open In Incognito Tab in context menu. iOS only. + + + + + gambard@chromium.org + michaeldo@chromium.org + + Recorded when user taps Open In New Tab in context menu. iOS only. + + + + + marq@chromium.org + djean@chromium.org + + Recorded when user taps Open In New Window in context menu. iOS only. + + + + + + Deprecated as of 2021/01/26 as the feature has been removed. + + michaeldo@chromium.org + gambard@chromium.org + + Recorded when user taps Open Java Script in context menu. iOS only. + + + + + ewannpv@chromium.org + gambard@chromium.org + + Recorded when user opens a Tab from a context menu. This include: Page link, + History, Bookmark, Reading list, Suggestion from NTP (Regular + incognito). + + + + + gambard@chromium.org + michaeldo@chromium.org + + Recorded when user taps Add to Reading List in context menu. iOS only. + + + + + gambard@chromium.org + michaeldo@chromium.org + + Recorded when user taps Save Image in context menu. iOS only. + + + + + gambard@chromium.org + michaeldo@chromium.org + + Recorded when user taps Search By Image in context menu. iOS only. + + + + + tedchoc@chromium.org + Page Info opened via the menu. + + + + tedchoc@chromium.org + + Page Info opened via the toolbar page info (i.e. https lock) icon. + + + + + ymalik@chromium.org + + Page Info opened via the toolbar page info (i.e. https lock) icon in VR. + + + + + olivierrobin@chromium.org + marq@chromium.org + + App transitioned from background to foreground. Only recorded when the app + was previously running; i.e., not recorded on cold starts. This action is + directly or indirectly triggered by the user. Example of direct trigger: the + user tapped on app icon or choose the app in app switcher. Example of + indirect trigger: the user tapped on GMail link or used Today's View + extension. iOS only. + + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + sfiera@chromium.org + treib@chromium.org + An NTP tile was clicked. Desktop only. + + + + tiborg@chromium.org + yyushkina@chromium.org + chrome-analysis-team@google.com + chrome-desktop-ntp@google.com + + An NTP tile was opened from the context menu. Desktop only. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + sfiera@chromium.org + treib@chromium.org + An NTP tile was blacklisted. iOS only. + + + + christianxu@chromium.org + stkhapugin@chromium.org + An omnibox MV tile was blocklisted. iOS only. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + No longer recorded. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + sophiewen@chromium.org + shidi@chromium.org + + Recorded when a window is partial split to one third. + + + + + sophiewen@chromium.org + shidi@chromium.org + + Recorded when a window is partial split to two thirds. + + + + + michelefan@chromium.org + xdai@chromium.org + + Recorded when the multi window resize widget is clicked on. + + + + + michelefan@chromium.org + xdai@chromium.org + + Recorded when the multi window resize widget is clicked on when two windows + are snapped. + + + + + michelefan@chromium.org + xdai@chromium.org + + Recorded when the resize widget shows on mouse hover on the ResizeWindows. + + + + + michelefan@chromium.org + xdai@chromium.org + + Recorded when the resize widget shows on mouse hover on the ResizeWindows + and the two windows of the ResizeWindows are snapped. + + + + + mek@chromium.org + src/content/browser/file_system_access/OWNERS + + Recorded any time the user opens the usage indicator bubble for the Native + File System API. + + + + + mek@chromium.org + src/content/browser/file_system_access/OWNERS + + Recorded any time the user revokes all Native File System API permissions + from the usage indicator bubble. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + mpearson@chromium.org + + Emitted when a navigation commits. Recorded on both main-frame and sub-frame + navigations. + + Example of "one or more times": navigating to + http://www.google.com will cause two emits. + + A set of NavEntryCommitted emitted in quick succession can be approximately + viewed as a "page load", though possibly in a sub-frame on a page. + A NavEntryCommitted can happen for a variety of reasons: link clicks, + omnibox navigations, reload button, back/forward, Javascript that changes + the URL of the page, etc. Examples of Javascript changing the URL without + changing the page that cause this to be emitted is switching slides in + Google Slides or switching between the inbox and a message in gmail. These + cases happen by changing the URL hash (#whatever) or + history.pushState()/history.replaceState(). + + Note: this is even emitted on a "navigation" to non-web pages, + such as loading the NTP. + + Each set of NavEntryCommitted emitted in quick succession usually are + triggered by a single user action. In this sense, all but the first in the + set are "not user triggered". + + Desktop-only. + + + + + mpearson@chromium.org + + Emitted when a navigation happens to a page whose URL looks like it's a URL + from the user's default search engine. I.e., emitted when it looks like--via + a simple pattern match--the user navigated to a search results page. + + Prior to M-108, this was possible to be emitted for all navigations, even + within profiles such as "system" profiles that don't allow the + user to search. (We expect it was rarely if even logged in those settings.) + In those settings, it looked for the search engine used by default in this + install of Chrome. This is typically Google. In M-108 and later, this user + action is eligible to be emitted only for profiles that allow the user to + search: regular profiles, Incognito profiles, and Guest profiles. + + NavEntryCommitted will also always be emitted at the same time (in the same + code, just a few lines before). + + As with NavEntryCommitted (read the description of that user action), + NavEntryCommitted.SRP is emitted roughly when the URL in the omnibox + changes. This can happen via Javascript by, for example, scrolling through a + news article carousel on the user's search engine page. As such, + NavEntryCommitted.SRP does not necessarily align with the number of searches + done, though it's certainly related. + + Desktop-only. + + + + + mpearson@chromium.org + amaralp@chromium.org + chrome-analysis-team@google.com + + Emitted every time a user uses a Home button to go to their home page and + their the page is not chrome-internal (such as an actual web site instead of + the New Tab Page or about:blank). For the purpose of this action, about:, + chrome: and chrome-native: are considered chrome-internal; everything else + is not. + + This is logged at the same time that the Navigation.Home.IsChromeInternal + histogram is logged. + + This action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + Deprecated 6/2018. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + rhalavati@chromium.org + The user opened a Guest window. + + + + gambard@chromium.org + + The user opened the tools menu while the 'New Incognito Tab' in-product help + is displayed. + + + + + rhalavati@chromium.org + + The user opened an off-the-record window (Incognito or Guest). + + + + + rhalavati@chromium.org + The user opened an Incognito window. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + meiliang@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + The 'get discounts' is clicked in the discount consent to agree to receive + discounts. + + + + + meiliang@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + User disables the discount feature in the new tab page customize menu. + + + + + meiliang@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + The 'x' button is clicked in the discount consent card to hide the consent + card, or the 'x' button is clicked in the discount consent dialog to hide + the dialog. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + The last cart in the module is temporarily hidden or permanently removed, + which causes the module to hide. + + + + + meiliang@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + User enables the discount feature in the new tab page customize menu. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + The 'Hide these carts' option is clicked in the cart module menu to + temporarily hide the module. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + The scroll button on the left side of the module is clicked in order to see + carts on the left. + + + + + meiliang@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + The 'No thanks' is clicked in the discount consent to opt out of receiving + discounts. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + The 'Never show carts' option is clicked in the cart module menu to + permanently remove the module. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + An attempt to temporarily hide or permanently remove the last cart in module + is undone, which causes the hidden module to be restored. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + The scroll button on the right side of the module is clicked in order to see + carts on the right. + + + + + meiliang@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + The 'continue' button is clicked in the discount consent step 1. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + An attempt to temporarily hide the cart module is undone. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + An attempt to permanently remove the cart module is undone. + + + + + tiborg@chromium.org + yyushkina@chromium.org + chrome-analysis-team@google.com + chrome-desktop-ntp@google.com + + Recorded when a link on the WebUI New Tab Page is opened via the context + menu. This can include: Middle-slot promos, Doodles, the One Google Bar, + shortcuts and custom background image attributions. Logged only when Google + is the default search provider, as these elements only appear on the Google + NTP. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + justincohen@chromium.org + mastiz@chromium.org + tiborg@chromium.org + yyushkina@chromium.org + chrome-analysis-team@google.com + chrome-desktop-ntp@google.com + + The user clicked on a most visited tile. This action is logged every time + the NewTabPage.MostVisited histogram is logged. + + This action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + Removed from code in 2022-01. + phillis@chromium.org + desktop-pwas-team@google.com + + The user clicked on a most visited tile that is a preinstalled extension + app. This action is logged every time the NewTabPage.MostVisited histogram + is logged and when the tile is a preinstalled extension app. + + + + + Removed from code in 2021-12. + drubery@chromium.org + chrome-safebrowsing-alerts@google.com + + The Safe Browsing Enhanced Protection promo is accepted. + + + + + Removed from code in 2021-12. + drubery@chromium.org + chrome-safebrowsing-alerts@google.com + + The Safe Browsing Enhanced Protection promo is dismissed. + + + + + yusuyoutube@google.com + benwgold@google.com + fgorski@chromium.org + wylieb@chromium.org + lens-chrome@google.com + + Recorded when the user taps the Lens button in the search box on the new tab + page. + + + + + yusuyoutube@google.com + benwgold@google.com + fgorski@chromium.org + wylieb@chromium.org + lens-chrome@google.com + + Recorded when the Lens button is shown in the search box on the new tab + page. + + + + + adamta@google.org + sczs@chromium.org + feed@chromium.org + + Recorded when the NTP detects a broken view hierarchy and repairs itself. + TODO(crbug.com/1262536): Remove this when issue is fixed. + + + + + markusheintz@chromium.org + + Counts the usage of the "Articles for you" section on the New Tab + Page. Examples for "Articles for You" usage are: A user opening an + article suggestion or a user viewing the articles suggestions section. + + + + + drubery@chromium.org + chrome-safebrowsing-core@google.com + + Recorded when the user clicks a Enhanced Protection promotion on the New Tab + Page on desktop. + + + + + msramek@chromium.org + rainhard@chromium.org + + Recorded when the user clicks a Privacy Guide promotion on the New Tab Page. + + + + + msramek@chromium.org + + Recorded when the user clicks a Safety Check promotion on the New Tab Page. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dewittj@chromium.org + + Recorded when a user enables the message center's Do Not Disturb mode. + + + + + peter@chromium.org + + Recorded when the main body of a persistent notification gets clicked on by + the user (does not include action buttons). + + + + + peter@chromium.org + + Recorded when one of a persistent notification's action buttons gets clicked + on by the user. + + + + + peter@chromium.org + + Recorded when a persistent notification gets clicked on by the user, but the + user has revoked notification permission for the origin since it was shown. + + + + + + Deprecated 10/2015. Replaced by Notifications.Persistent.ClosedByUser and + Notifications.Persistent.ClosedProgrammatically. + + peter@chromium.org + + Recorded when a persistent notification gets closed, either programmatically + or by the user. + + + + + peter@chromium.org + + Recorded when a persistent notification gets closed by the user. This does + not always mean that the user didn't click on the notification: both could + be counted if the website doesn't close the notification on click. + + + + + peter@chromium.org + + Recorded when a persistent notification gets closed programmatically. + + + + + peter@chromium.org + Recorded when a persistent notification gets shown. + + + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + + Logs when the user clicks on the notification permission request animated + icon on the omnibox, that upon being clicked, opens the permission request + bubble . + + + + + engedy@chromium.org + + Logged when the user clicks "Continue Blocking", a button, that + upon being clicked, permanently blocks notifications for the site. + + + + + + From July 2021. Migrated to + Permissions.Prompt.QuietBubble.Notifications.ManageClicked as that name + represents the metric better. + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + + Logs when the user clicks "Manage", which is a button, that upon + being clicked, navigates the user to the notifications category settings + page. + + + + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + + The notification permission request was shown quietly as an icon in the + omnibox. + + + + + + From July 2021. Migrated to + Permissions.Prompt.QuietBubble.Notifications.AllowClicked as that name + represents the metric better. + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + + Logs when the user clicks "Show for site", which is a button, that + upon being clicked, allows the site to send notifications. + + + + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + + Logs when the user clicks on the notification permission request static icon + on the omnibox, that upon being clicked, opens the permission request bubble + . + + + + + dewittj@chromium.org + + Recorded when the message center screen is being presented to the user. + + + + + dewittj@chromium.org + + Recorded when the message center settings screen is being presented to the + user. + + + + + peter@chromium.org + + Recorded when a user clicks on the settings button that could be included on + notification toasts. + + + + + dewittj@chromium.org + + Recorded when the message center's Do Not Disturb mode is disabled, either + due to manual user action, or because a timed Do Not Disturb expires. + + + + + + From 2021-03 use Notifications.WebPlatformV2 instead; it's equivalent. + + peconn@chromium.org + peter@chromium.org + + Recorded when the user clicks on the action button of a web platform + notification. + + + + + + From 2021-03 use Notifications.WebPlatformV2 instead; it's equivalent. + + peconn@chromium.org + beverloo@chromium.org + + Recorded when the user clicks on the action button of a web platform + notification, and the notification closes. + + + + + + From 2021-03 use Notifications.WebPlatformV2 instead; it's equivalent. + + peconn@chromium.org + beverloo@chromium.org + + Recorded when the user clicks on the action button of a web platform + notification, and the notification focuses an Activity. + + + + + + From 2021-03 use Notifications.WebPlatformV2 instead; it's equivalent. + + peconn@chromium.org + beverloo@chromium.org + + Recorded when the user clicks on the action button of a web platform + notification, and the notification opens a new Activity. + + + + + From 2021-03 use Notifications.WebPlatformV2 instead. + peconn@chromium.org + beverloo@chromium.org + + Recorded when the user clicks on the body of a web platform notification. + This metric had a bug where it also counted cases where the user dismissed + the notification, invalidating this and related actions. + + + + + From 2021-03 use Notifications.WebPlatformV2 instead. + peconn@chromium.org + beverloo@chromium.org + + Recorded when the user clicks on the body of a web platform notification, + and the notification closes. + + + + + From 2021-03 use Notifications.WebPlatformV2 instead. + peconn@chromium.org + beverloo@chromium.org + + Recorded when the user clicks on the body of a web platform notification, + and the notification focuses an Activity. + + + + + From 2021-03 use Notifications.WebPlatformV2 instead. + peconn@chromium.org + beverloo@chromium.org + + Recorded when the user clicks on the body of a web platform notification, + and the notification opens a new Activity. + + + + + peconn@chromium.org + peter@chromium.org + + Recorded when the user clicks on the action button of a web platform + notification. + + + + + peconn@chromium.org + beverloo@chromium.org + + Recorded when the user clicks on the action button of a web platform + notification, and the notification closes. + + + + + peconn@chromium.org + beverloo@chromium.org + + Recorded when the user clicks on the action button of a web platform + notification, and the notification focuses an Activity. + + + + + peconn@chromium.org + beverloo@chromium.org + + Recorded when the user clicks on the action button of a web platform + notification, and the notification opens a new Activity. + + + + + peconn@chromium.org + beverloo@chromium.org + + Recorded when the user clicks on the body of a web platform notification. + + + + + peconn@chromium.org + beverloo@chromium.org + + Recorded when the user clicks on the body of a web platform notification, + and the notification closes. + + + + + peconn@chromium.org + beverloo@chromium.org + + Recorded when the user clicks on the body of a web platform notification, + and the notification focuses an Activity. + + + + + peconn@chromium.org + beverloo@chromium.org + + Recorded when the user clicks on the body of a web platform notification, + and the notification opens a new Activity. + + + + + Deprecated due to NPAPI removal. + wfh@chromium.org + + Recorded when the NPAPI removal infobar link is clicked. + + + + + Deprecated due to NPAPI removal. + wfh@chromium.org + Recorded when the NPAPI removal infobar is shown. + + + + Replaced by NewTabPage.LinkOpenedFromContextMenu.WebUI + tiborg@chromium.org + yyushkina@chromium.org + chrome-analysis-team@google.com + chrome-desktop-ntp@google.com + + Recorded when a link on the New Tab Page is opened via the context menu. + This can include: Middle-slot promos, Doodles, the One Google Bar, and + custom background image attributions, but *not* shortcuts. For shortcuts see + MostVisited_Clicked. Logged only when Google is the default search provider, + as these elements only appear on the Google NTP. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + The back arrow was clicked the richer picker. + + + + Deprecated 08/2019. + yyushkina@chromium.org + dbeam@chromium.org + + A background image tile was deselected in the richer picker. + + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + The NTP background image was reset to default from the richer picker. + + + + + yyushkina@chromium.org + dbeam@chromium.org + + A background image tile was selected in the richer picker. + + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + A background image was set as the NTP background from the richer picker. + + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + A collection tile was selected in the richer picker. + + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Daily refresh was enabled by clicking 'Done' in the richer picker + + + + + Deprecated 08/2019. + yyushkina@chromium.org + dbeam@chromium.org + + 'No background' was deselected in the richer picker. + + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + 'No background' was selected in the richer picker. + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + 'Refresh daily' toggle was clicked in the richer picker. + + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + 'Cancel' was clicked on the file select dialog originating from the richer + picker. + + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + 'Upload from device' was clicked in the richer picker. + + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + 'Open' was clicked on the file select dialog originating from the richer + picker. + + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + 'Cancel' was clicked in the richer picker. + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + 'Done' was clicked in the richer picker. + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + The richer picker was opened. + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + The 'My shortcuts' (i.e. custom links) option was clicked in the richer + picker shortcuts submenu. + + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + The 'Most visited sites' option was clicked in the richer picker shortcuts + submenu. + + + + + yyushkina@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + The 'Hide shortcuts' toggle was clicked in the richer picker shortcuts + submenu. + + + + + hewer@chromium.org + sammiequon@chromium.org + + The multitask menu (window layout menu) was opened while the education nudge + was showing. + + + + + sinansahin@google.com + twellington@chromium.org + Recorded when the offline indicator is hidden. + + + + sinansahin@google.com + twellington@chromium.org + Recorded when the offline indicator is shown. + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when "Remove" button is clicked in offline section of + "Edit bookmark" page. + + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when the user navigates away without clicking "Remove" + button in offline section of "Edit bookmark" page. + + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when "Save" button is clicked in offline section of + "Edit bookmark" page. + + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when the user navigates away without clicking "Save" + button in offline section of "Edit bookmark" page. + + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when "Visit" button is clicked in offline section of + "Edit bookmark" page. + + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when the user navigates away without clicking "Visit" + button in offline section of "Edit bookmark" page. + + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when "Delete" button is clicked in the Free Up Space + dialog. + + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when the user leaves the Free Up Space dialog without clicking + "Delete" button. + + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when "Free Up Space" button is clicked in the storage + space promotion section of "Saved Offline" page. + + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when the user navigates away without clicking "Free Up + Space" button is clicked in the storage space promotion section of + "Saved Offline" page. + + + + + jianli@chromium.org + + Recorded when "Reload" button is clicked in the snackbar that is + shown when offline page is opened and there is network. + + + + + romax@chromium.org + + Recorded when "Reload" button is clicked in the snackbar that is + shown when an untrusted offline page is loaded. + + + + + jianli@chromium.org + + Recorded when "Reload" button is not clicked in the snackbar that + is shown when offline page is opened and there is network. + + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when "Save" button is clicked in the snackbar that is + shown when bookmarked page without saved copy is opened. + + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when "Save" button is not clicked in the snackbar that is + shown when bookmarked page without saved copy is opened. + + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when "Free Up Space" button is clicked in the in the + snackbar that is shown when the page is/is not saved and storage is almost + full. + + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when the user navigates away without clicking "Free Up + Space" button is clicked in the storage space promotion section of + "Saved Offline" page. + + + + + romax@chromium.org + + Recorded when the user shares offline pages from Download Home. Each page + will be counted once if there are multiple items being shared in a batch. + This will not increment if the sharing process fails at the page publishing + step. + + + + + romax@chromium.org + + Recorded when the user shares an offline page loaded in the current tab + through the "Share..." button in the overflow menu. This will not + increment if the sharing process fails at the page publishing step. + + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when a user clicks on the "Edit" button on a snackbar + that shown when viewing offline page with no network. + + + + + Offline pages were pulled out of bookmarks UI. + jianli@chromium.org + + Recorded when a snackbar shown when viewing an offline page with no network + is dismissed without "Edit" button being clicked. + + + + + gangwu@chromium.org + chrome-omnibox-team@google.comg + + User clicks on a clipboard suggestion's conceal button to hide the contents + of the clipboard on Android. + + + + + gangwu@chromium.org + chrome-omnibox-team@google.com + + User clicks on a clipboard suggestion's reveal button to show the contents + of the clipboard on Android. + + + + + gangwu@chromium.org + lzbylut@google.com + + User long pressed a clipboard suggestion from the omnibox suggestion list to + remove it from the omnibox suggestion and the system clipboard on Android. + + + + + mdjones@chromium.org + lzbylut@google.com + + User tapped on the copy icon in the edit-URL omnibox suggestion on Android. + + + + + mdjones@chromium.org + lzbylut@google.com + + User tapped on the edit icon in the edit-URL omnibox suggestion on Android. + + + + + mdjones@chromium.org + lzbylut@google.com + + User tapped on the share icon in the edit-URL omnibox suggestion on Android. + + + + + mdjones@chromium.org + lzbylut@google.com + + User tapped on the edit-URL omnibox suggestion on Android. + + + + + mdjones@chromium.org + lzbylut@google.com + + User tapped on the copy button after long-pressing on the omnibox on + Android. + + + + + mdjones@chromium.org + lzbylut@google.com + + User tapped on the cut button after long-pressing on the omnibox on Android. + + + + + mdjones@chromium.org + lzbylut@google.com + + User tapped on the share button after long-pressing on the omnibox on + Android. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + mariakhomenko@chromium.org + + Counts the number of requests sent to the server to delete a suggestion + shown by ZeroSuggestProvider that returned an error code. + + + + + mariakhomenko@chromium.org + + Counts the number of requests sent to the server to delete a suggestion + shown by ZeroSuggestProvider that successfully completed. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + alancutter@chromium.org + + Opens the current tab as an app window belonging to the PWA that has the URL + in its scope. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated 09/2016 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated 04/2023 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated 04/2023 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated 07/2020 + myy@chromium.org + essential-inputs-team@google.com + + When user click the link to open Smart Inputs setting page in ChromeOS. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + michaelpg@chromium.org + Settings: About Chrome + + + + dtseng@chromium.org + Settings: Accessibility: Disable caret highlighting + + + + dtseng@chromium.org + Settings: Accessibility: Enable caret highlighting + + + + dtseng@chromium.org + + Settings: Accessibility: Disable cursor highlighting + + + + + dtseng@chromium.org + Settings: Accessibility: Enable cursor highlighting + + + + dtseng@chromium.org + Settings: Accessibility: Disable focus highlighting + + + + dtseng@chromium.org + Settings: Accessibility: Enable focus highlighting + + + + stevenjb@chromium.org + Settings: Accessibility: Toggle high contrast mode + + + + stevenjb@chromium.org + Settings: Accessibility: Disable high contrast mode + + + + stevenjb@chromium.org + Settings: Accessibility: Enable high contrast mode + + + + stevenjb@chromium.org + Settings: Accessibility: Disable large mouse cursor + + + + stevenjb@chromium.org + Settings: Accessibility: Enable large mouse cursor + + + + stevenjb@chromium.org + Settings: Accessibility: Learn More + + + + warx@chromium.org + + Settings: Disable play the same audio through all speakers (mono audio) + + + + + warx@chromium.org + + Settings: Enable play the same audio through all speakers (mono audio) + + + + + stevenjb@chromium.org + Settings: Accessibility: Disable on-screen keyboard + + + + stevenjb@chromium.org + Settings: Accessibility: Enable on-screen keyboard + + + + stevenjb@chromium.org + Settings: Accessibility: Disable screen magnifier + + + + stevenjb@chromium.org + Settings: Accessibility: Enable screen magnifier + + + + jennyz@chromium.org + + Settings: Accessibility: Disable centering focus for text input in magnifier + screen. + + + + + jennyz@chromium.org + + Settings: Accessibility: Enable centering focus for text input in magnifier + screen. + + + + + dtseng@chromium.org + Settings: Accessibility: Disable select-to-speak + + + + dtseng@chromium.org + Settings: Accessibility: Enable select-to-speak + + + + stevenjb@chromium.org + Settings: Accessibility: Disable ChromeVox + + + + stevenjb@chromium.org + Settings: Accessibility: Enable ChromeVox + + + + stevenjb@chromium.org + Settings: Accessibility: Disable sticky keys + + + + stevenjb@chromium.org + Settings: Accessibility: Enable sticky keys + + + + dtseng@chromium.org + Settings: Accessibility: Disable Switch Access + + + + dtseng@chromium.org + Settings: Accessibility: Enable Switch Access + + + + stevenjb@chromium.org + + Settings: Accessibility: Disable show in system menu + + + + + stevenjb@chromium.org + Settings: Accessibility: Enable show in system menu + + + + stevenjb@chromium.org + Settings: Accessibility: Disable tap dragging + + + + stevenjb@chromium.org + Settings: Accessibility: Enable tap dragging + + + + jwd@chromium.org + + Settings: People: Disables allowing anyone to add a person to Chrome. + + + + + jwd@chromium.org + + Settings: People: Enables anyone to add a person to Chrome. + + + + + stevenjb@chromium.org + + Settings: Users: Disable allowing all users (whitelisted users only) + + + + + stevenjb@chromium.org + Settings: Users: Enable allowing all users + + + + khmel@chromium.org + + User changed setting to disable Android apps from running on the Chromebook. + + + + + khmel@chromium.org + + User changed setting to enable Android apps to run on the Chromebook. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + michaelpg@chromium.org + Settings: Autofill: Address added + + + + michaelpg@chromium.org + Settings: Autofill: Address deleted + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + michaelpg@chromium.org + Settings: Autofill: Credit card added + + + + michaelpg@chromium.org + Settings: Autofill: Credit card deleted + + + + michaelpg@chromium.org + Settings: Autofill: About Autofill + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated 11/2015 + groby@chromium.org + Please enter the description of this user action. + + + + Deprecated 11/2015 + groby@chromium.org + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + stevenjb@chromium.org + Settings: Bluetooth: Add a device: Connect + + + + stevenjb@chromium.org + Settings: Bluetooth: Connect + + + + stevenjb@chromium.org + Sets the Settings:Enable Bluetooth state to false. + + + + stevenjb@chromium.org + Sets the Settings:Enable Bluetooth state to true. + + + + stevenjb@chromium.org + Settings: Bluetooth: remove a device from the list + + + + stevenjb@chromium.org + Settings: Bluetooth: Add a device + + + + jwd@chromium.org + Settings: People: Disable Guest browsing. + + + + jwd@chromium.org + Settings: People: Allows guests to browse. + + + + Deprecated as of 03/2015. Option is removed. + alemate@chromium.org + + Captive portal authorization bypass proxy is disabled. + + + + + Deprecated as of 03/2015. Option is removed. + alemate@chromium.org + + Captive portal authorization bypass proxy is enabled. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + nsatragno@chromium.org + peter@chromium.org + + Triggers when the default content setting for Background Sync is changed. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated as of 2016-10. These settings no longer exist. + mgiuca@chromium.org + Was used for changing fullscreen settings. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Support for Keygen was removed. + rsleevi@chromium.org + svaldez@chromium.org + + Triggers when the default decision for using key generation is changed. + + + + + msramek@chromium.org + + Recorded when the default value for the camera content setting is changed by + the user. + + + + + msramek@chromium.org + + Recorded when the default value for the microphone content setting is + changed by the user. + + + + + + This action was disused in r172302. See + Options_DefaultMediaStreamCameraSettingChanged and + Options_DefaultMediaStreamMicSettingChanged. + + msramek@chromium.org + + Recorded when the default value for the combined camera and microphone + content setting is changed by the user. + + + + + toyoshim@chromium.org + + Triggers when the default decision for Midi SysEx permissions is changed. + + + + + Deprecated as of 2016-10. These settings no longer exist. + mgiuca@chromium.org + Was used for changing mouse lock settings. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + peter@chromium.org + + Recorded when the default value for the Notifications content setting is + changed by the user. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + lshang@chromium.org + + Recorded when the default value for the PPAPI Broker content setting is + changed by the user. + + + + + lshang@chromium.org + + Recorded when the default value for the Protected Media Identifier content + setting is changed by the user. + + + + + miguelg@chromium.org + + Triggers when the default decision for push message permissions is changed. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + michaelpg@chromium.org + Settings: Device: Display settings + + + + stevenjb@chromium.org + + Settings: Device: Display settings: arrange desktops + + + + + stevenjb@chromium.org + Settings: Device: Display settings: Color Profile + + + + stevenjb@chromium.org + Settings: Device: Display settings: Orientation + + + + stevenjb@chromium.org + Settings: Device: Display settings: Overscan + + + + stevenjb@chromium.org + Settings: Device: Display settings: Make primary + + + + stevenjb@chromium.org + + Settings: Device: Display settings: Display mode (i.e. resolution, UI-scale, + and device scale factor). + + + + + stevenjb@chromium.org + Settings: Device: Display settings: Start mirroring + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated. Replaced by the Privacy.DoNotTrackSetting histogram. + + msramek@chromium.org + + Indicates that the Do Not Track setting is disabled. Recording was removed + from the code around M59. + + + + + + Deprecated. Replaced by the Privacy.DoNotTrackSetting histogram. + + msramek@chromium.org + + Indicates that the Do Not Track setting is enabled. Recording was removed + from the code around M59. + + + + + isherman@chromium.org + tengs@chromium.org + + The user disabled the option to require their phone to be in very close + proximity to their Chromebook (roughly, within 1 foot), in order for Smart + Lock to unlock the Chromebook. + + + + + isherman@chromium.org + tengs@chromium.org + + The user enabled the option to require their phone to be in very close + proximity to their Chromebook (roughly, within 1 foot), in order for Smart + Lock to unlock the Chromebook. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + jwd@chromium.org + Extensions: Click on 'Get More Extensions' link. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + stevenjb@chromium.org + Settings: Users: Disable guest browsing + + + + stevenjb@chromium.org + Settings: Users: Enable guest browsing + + + + + Deprecated as of 03/2012. This option is now a checkbox (r127199). + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated as of 03/2012. This option is now a checkbox (r127199). + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + michaelpg@chromium.org + Settings: Appearance: (Homepage settings): Change + + + + michaelpg@chromium.org + Settings: Appearance: Home page: Open this page + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + michaelpg@chromium.org + Settings: Keyboard settings: Auto-repeat delay + + + + michaelpg@chromium.org + Settings: Keyboard settings: Disable auto-repeat + + + + michaelpg@chromium.org + Settings: Keyboard settings: Enable auto-repeat + + + + michaelpg@chromium.org + Settings: Keyboard settings: Auto-repeat interval + + + + stevenjb@chromium.org + Settings: Keyboard settings: Alt + + + + michaelpg@chromium.org + Settings: Keyboard settings: Backspace + + + + stevenjb@chromium.org + Settings: Keyboard settings: CapsLock + + + + stevenjb@chromium.org + Settings: Keyboard settings: Ctrl + + + + stevenjb@chromium.org + Settings: Keyboard settings: Diamond + + + + michaelpg@chromium.org + Settings: Keyboard settings: Escape + + + + stevenjb@chromium.org + Settings: Keyboard settings: Search + + + + michaelpg@chromium.org + + Settings: Keyboard settings: View keyboard shortcuts + + + + + stevenjb@chromium.org + + Settings: Keyboard settings: Change language and input settings + + + + + michaelpg@chromium.org + Settings: Languages and input: Add language + + + + michaelpg@chromium.org + Settings: Languages and input: Input method + + + + michaelpg@chromium.org + Settings: Languages and input: Input method + + + + michaelpg@chromium.org + + Settings: Languages and input: Use language for spell checking + + + + + michaelpg@chromium.org + Settings: Language and input settings + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + jwd@chromium.org + Extensions: Loads an unpacked extension. + + + + stevenjb@chromium.org + Settings: Users: Manage other users + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + stevenjb@chromium.org + + Settings: Internet connection: VPN dropdown: Show built-in dialog for adding + an OpenVPN or L2TP VPN. + + + + + stevenjb@chromium.org + + Settings: Internet connection: VPN dropdown: Show "add network" + dialog for a third-party VPN provider. + + + + + stevenjb@chromium.org + + Settings: Internet connection: Network detail: Auto Connect to network + + + + + stevenjb@chromium.org + + Settings: Internet connection: Network detail (VPN): Connect + + + + + stevenjb@chromium.org + + Settings: Internet connection: Network detail (Wifi): Connect + + + + + stevenjb@chromium.org + + Settings: Internet connection: Network detail (VPN): Disconnect + + + + + stevenjb@chromium.org + + Settings: Internet connection: Network detail (Wifi): Disconnect + + + + + Replaced by Options_NetworkAddVPNBuiltIn. + stevenjb@chromium.org + + Settings: Internet connection: VPN dropdown: Join other + + + + + stevenjb@chromium.org + + Settings: Internet connection: Wifi dropdown: Join other + + + + + stevenjb@chromium.org + + Settings: Internet connection: Network detail: direct or automatic proxy + config + + + + + stevenjb@chromium.org + + Settings: Internet connection: Network detail: manual proxy config + + + + + stevenjb@chromium.org + + Settings: Internet connection: Network detail: Prefer this network + + + + + stevenjb@chromium.org + + Settings: Internet connection: Network detail (cellular) + + + + + stevenjb@chromium.org + + Settings: Internet connection: Network detail (connected cellular) + + + + + stevenjb@chromium.org + Settings: Internet connection: Network detail (VPN) + + + + stevenjb@chromium.org + + Settings: Internet connection: Network detail (connected VPN) + + + + + stevenjb@chromium.org + + Settings: Internet connection: Network detail (wifi) + + + + + stevenjb@chromium.org + + Settings: Internet connection: Network detail (connected wifi) + + + + + stevenjb@chromium.org + + Settings: Internet connection: Wifi dropdiwn: Preferred networks... + + + + + stevenjb@chromium.org + + Settings: Internet connection: Network detail: select proxy tab + + + + + stevenjb@chromium.org + + Settings: Internet connection: Allow proxies for shared networks + + + + + stevenjb@chromium.org + + Settings: Internet connection: Allow proxies for shared networks + + + + + stevenjb@chromium.org + + Settings: Internet connection: Wifi dropdown: Enable/Disable Wifi + + + + + michaelpg@chromium.org + Settings: Appearance: Set wallpaper... + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + michaelpg@chromium.org + Settings: Password manager: Delete password + + + + michaelpg@chromium.org + + Settings: Password manager: Learn more about exceptions + + + + + michaelpg@chromium.org + Settings: Password manager: Search + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + alemate@chromium.org + ChromeOS periodic timezone refresh disabled. + + + + alemate@chromium.org + ChromeOS periodic timezone refresh enabled. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated 6/14. Replaced by SafeBrowsingExtendedReportingCheckbox_Disable. + + felt@chromium.org + Safe Browsing download feedback disabled + + + + + Deprecated 6/14. Replaced by SafeBrowsingExtendedReportingCheckbox_Enable. + + felt@chromium.org + Safe Browsing download feedback enabled + + + + carlosil@chromium.org + Safe Browsing Extended Reporting disabled + + + + carlosil@chromium.org + Safe Browsing Extended Reporting enabled + + + + stevenjb@chromium.org + + Settings: Users: Do not require a password to wake from sleep + + + + + stevenjb@chromium.org + + Settings: Users: Require a password to wake from sleep + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + michaelpg@chromium.org + Settings: Manage search engines...: Remove + + + + michaelpg@chromium.org + Settings: Manage search engines...: Make default + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + pmonette@chromium.org + + The user clicked "Make Chrome the default browser" in the settings + page. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + michaelpg@chromium.org + Set system time dialog was launched. + + + + vidhanj@google.com + Settings: Show addresses + + + + stevenjb@chromium.org + Settings: Show advanced settings + + + + michaelpg@chromium.org + Settings: Show autofill settings + + + + michaelpg@chromium.org + Settings: Power settings + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + michaelpg@chromium.org + Setings: Customize fonts + + + + stevenjb@chromium.org + Settings: Keyboard settings + + + + kazinova@google.com + vasilii@chromium.org + Settings: passwords check + + + + kazinova@google.com + vasilii@chromium.org + Settings: saved passwords + + + + vidhanj@google.com + Settings: Show payment options + + + + michaelpg@chromium.org + Settings: Manage power + + + + olesiamarukhno@google.com + dullweber@chromium.org + Settings: Privacy sandbox + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + xinghuilu@chromium.org + chrome-safebrowsing-alerts@google.com + Settings: Safe Browsing enhanced protection + + + + fukino@chromium.org + Settings: Storage management + + + + stevenjb@chromium.org + Settings: Show advanced sync settings + + + + stevenjb@chromium.org + Settings: Touchpad settings + + + + stevenjb@chromium.org + Settings: Users: Disable usernames on signin + + + + stevenjb@chromium.org + Settings: Users: Enable usernames on signin + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + michaelpg@chromium.org + Settings: Privacy: Use spelling service + + + + michaelpg@chromium.org + Settings: Privacy: Use spelling service + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + fukino@chromium.org + Settings: Storage management: Other users + + + + fukino@chromium.org + Settings: Storage management: Android storage + + + + fukino@chromium.org + Settings: Storage management: Browsing data + + + + fukino@chromium.org + Settings: Storage management: Offline files + + + + fukino@chromium.org + Settings: Storage management: Downloads + + + + stevenjb@chromium.org + Settings: Users: Disable supervised users + + + + stevenjb@chromium.org + Settings: Users: Enable supervised users + + + + stevenjb@chromium.org + + Settings: Users: Sync: Enable selectively syncing data types + + + + + stevenjb@chromium.org + Settings: Users: Sync: Use default settings + + + + stevenjb@chromium.org + Settings: Users: Sync: Encrypt sync data + + + + stevenjb@chromium.org + Settings: Users: Toggle a sync data type + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + michaelpg@chromium.org + Settings: Appearance: Get themes + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + michaelpg@chromium.org + Settings: Date and time: Timezone + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + jwd@chromium.org + + Extensions: Disables developer mode for Chrome extensions. + + + + + jwd@chromium.org + + Extensions: Enables developer mode for Chrome extensions. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + jwd@chromium.org + Extensions: Click on update extensions in settings. + + + + michaelpg@chromium.org + Settings: Date and time: Use 24-hour clock + + + + michaelpg@chromium.org + Settings: Date and time: Use 24-hour clock + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + rdevlin.cronin@chromium.org + + Extensions WebUI: User clicked or navigated directly to view errors for an + extension. + + + + + michaelpg@chromium.org + + Settings: Disable Wake on Wi-Fi Dark Connect feature + + + + + michaelpg@chromium.org + Settings: Enable Wake on Wi-Fi Dark Connect feature + + + + + Deprecated 10/2015 in issue 1412993003 and replaced by + Options_WakeOnWifiDarkConnect_Disable. + + michaelpg@chromium.org + Settings: Disable Wake on Wi-Fi SSID + + + + + Deprecated 10/2015 in issue 1412993003 and replaced by + Options_WakeOnWifiDarkConnect_Enable. + + michaelpg@chromium.org + Settings: Enable Wake on Wi-Fi SSID + + + + stevenjb@chromium.org + Settings: Users: Add a whitelisted user + + + + stevenjb@chromium.org + Settings: Users: Remove a whitelisted user + + + + This flag no longer exists. + macourteau@chromium.org + Please enter the description of this user action. + + + + Removed in M107 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed in M107 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed in M107 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed in M107 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed in M107 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed in M107 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed in M107 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed in M107 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed in M107 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed in M107 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed in M107 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed in M107 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + mad@chromium.org + + When the user clicks on the Enable updates button of the outdated upgrade + bubble. + + + + + mad@chromium.org + + When the user dismisses the outdated upgrade bubble without accepting it. In + m62 and earlier this was via a "Later" button. Since m63, that + button was removed and replaced by a close [x] reporting the same metric. + + + + + mad@chromium.org + + When the user clicks on the Reinstall button of the outdated upgrade bubble. + + + + + mad@chromium.org + + When the outdated upgrade bubble is shown for a user with auto-update on. + + + + + mad@chromium.org + + When the outdated upgrade bubble is shown for a user with auto-update off. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Obsolete as of 08/2016 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + mfomitchev@chromium.org + + When horizontal overscroll corresponding to the BACK navigation is cancelled + - either because the user performed an interfering action such as pressing a + key, or because the user ended the drag before the navigation threshold was + passed. + + + + + mfomitchev@chromium.org + + When horizontal overscroll corresponding to the FORWARD navigation is + cancelled - either because the user performed an interfering action such as + pressing a key, or because the user ended the drag before the navigation + threshold was passed. + + + + + jonross@chromium.org + + When vertical overscroll corresponding to the RELOAD navigation is cancelled + - either because the user performed an interfering action such as pressing a + key, or because the user ended the drag before the navigation threshold was + passed. + + + + + mfomitchev@chromium.org + + When horizontal overscroll initiates a BACK navigation in the browser. + + + + + mfomitchev@chromium.org + + When horizontal overscroll initiates a FORWARD navigation in the browser. + + + + + jonross@chromium.org + + When vertical overscroll initiates a RELOAD navigation in the browser. + + + + + rkgibson@google.com + kkhorimoto@chromium.org + + Called when the user closes the tab using overscroll action. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + olesiamarukhno@google.com + dullweber@chromium.org + More about clicked in AboutThisSite from PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + AboutThisSite subpage opened from PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Source link clicked in AboutThisSite from PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + sauski@google.com + + User selected "Manage interests" from Page Info Ads + Personalization subpage. + + + + + olesiamarukhno@google.com + dullweber@chromium.org + sauski@google.com + + Page Info Ads personalization subpage opened with only FLEDGE present. + + + + + olesiamarukhno@google.com + dullweber@chromium.org + sauski@google.com + + Page Info Ads personalization subpage opened with FLEDGE and Topics present. + + + + + olesiamarukhno@google.com + dullweber@chromium.org + sauski@google.com + + Page Info Ads personalization subpage opened with only Topics present. + + + + + olesiamarukhno@google.com + dullweber@chromium.org + Change password pressed in PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Cookies allowed in PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Cookies blocked in PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Cookies cleared in PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Page Info Cookies subpage opened. + + + + zsalata@google.com + olesiamarukhno@google.com + dullweber@chromium.org + + Opened All sites with a filter for FPS from PageInfo. + + + + + zsalata@google.com + olesiamarukhno@google.com + dullweber@chromium.org + Cookies subpage opened from PageInfo. + + + + zsalata@google.com + olesiamarukhno@google.com + dullweber@chromium.org + + Cookies settings link clicked in Cookies subpage from PageInfo. + + + + + olesiamarukhno@google.com + dullweber@chromium.org + Forget Site dialog confirmed in PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Forget Site dialog opened in PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + History entry clicked from PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + History entry removed from PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + History subpage opened in PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + User opened PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Password reuse allowed from PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Permission changed in page info. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Chooser object deleted from PageInfo. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Certificate details opened in PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Permissions reset from PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Help opened from Safety Tip. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Certificate details opened in PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Connection help opened in PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Certificate details opened in PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Site settings opened in PageInfo. + + + + olesiamarukhno@google.com + dullweber@chromium.org + Store info subpage opened from PageInfo. + + + + + Deprecated. Not a good representation of user behaviour for page loads. + Check the count of PageLoad.ParseTiming.NavigationToParseStart or + IOS.PageLoadCount.Counts (on that platform) for a better approximation of + page loads. + + Please list the metric's owners. Add more owner tags as needed. + + When a page load starts. This can include page loads that are not completed, + sub frames, and pre sign-in ChromeOS pages. + + + + + + Removed 06/2019, replaced with Navigation.MainFrameProfileType histogram to + cover all profile types in a commom context. + + dullweber@chromium.org + msramek@chromium.org + A page was loaded in incognito mode. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + ckitagawa@chromium.org + fredmello@chromium.org + mahmoudi@chromium.org + + Records when the user fling-scrolls the paint preview player. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + mahmoudi@chromium.org + + Records when a link is clicked in the paint preview player. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + mahmoudi@chromium.org + + Records when the user long presses on the paint preview player. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + mahmoudi@chromium.org + + Records when the user scrolls the paint preview player. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + mahmoudi@chromium.org + + Records when the user taps on an area in the paint preview player that is + not a link. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + mahmoudi@chromium.org + + Records when the user zooms in/out the paint preview player. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + mahmoudi@chromium.org + + Records when the user clicks on the actionbar action in + TabbedPaintPreviewPlayer. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + mahmoudi@chromium.org + + Records when the tabbed paint preview player is removed. + + + + + Removed 07/2018 since panels were deprecated in M-69. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed 07/2018 since panels were deprecated in M-69. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + vasilii@chromium.org + Username/password were autofilled on pageload. + + + + + Introduction of Manual Fallbacks broke recording of this action. + + vasilii@chromium.org + + The user submitted a form with an existing credential saved for another + subdomain. For example, the user might have signed in on + https://accounts.spotify.com using a credential previously saved for + https://play.spotify.com. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Introduction of Manual Fallbacks broke recording of this action. + + vasilii@chromium.org + + The user tried to log in with an existing (possibly for another subdomain) + credential but different password. + + + + + + Introduction of Manual Fallbacks broke recording of this action. + + vasilii@chromium.org + + The user tried to log in with a completely new (possibly auto generated) + credential. + + + + + vasilii@chromium.org + + The user submitted a password form, but the website appeared to reject the + credentials. This action reflects the password manager component's logic for + whether or not to offer to save a password. At the time of writing, failure + means that either the form submission was canceled with a failure message, + or the form submission succeeded, but the user was directed back to a page + that still contained a login form. + + + + + vabr@chromium.org + vasilii@chromium.org + + The user logged in successfully with a credential originally filled by + Chrome, and either did not change the stored password at all, or authorized + Chrome to update it with the current password value. + + + + + vasilii@chromium.org + + The user submitted a password form and the website appeared to accept the + credentials. This action reflects the password manager component's logic for + whether or not to offer to save a password. + + + + + tmartino@chromium.org + + The user opened the Password Settings submenu from within the main Password + Manager screen. iOS only. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated 5/2018 because the feature never launched. + estark@chromium.org + + The user selected the "Login not secure" or "Form not + secure" item in the password manager autofill dropdown to show more + information about the warning. + + + + + vabr@chromium.org + vasilii@chromium.org + + Counts the number of times when Chrome fills the user's sync account + credentials, and the user logs in successfully after submitting them. + + + + + gcasto@chromium.org + vabr@chromium.org + + Counts the number of times a user views the saved credentials for their sync + account. + + + + + Counted the wrong thing, http://crbug.com/635428 + gcasto@chromium.org + vabr@chromium.org + + Counts the number of times a user submits an autofilled credential which + matches their sync account. + + + + + + Introduction of Manual Fallbacks broke recording of this action. + + vasilii@chromium.org + + The user logged in with an existing credential other than the default one. + This results in the default credential being updated, to the credential that + the user most recently logged in with. + + + + + nwokedi@chromium.org + chrome-counter-abuse-alerts@google.com + + Reported when a user's hashed gaia password is saved. + + + + + nwokedi@chromium.org + chrome-counter-abuse-alerts@google.com + + Reported when a user clicks on the change password button for a Gmail + account. + + + + + nwokedi@chromium.org + chrome-counter-abuse-alerts@google.com + + Reported when a user clicks on the change password button for a Gsuite + account. + + + + + drubery@chromium.org + chrome-safebrowsing-alerts@google.com + + Reported when the user clicks on the reset password button on the + interstitial. + + + + + drubery@chromium.org + chrome-safebrowsing-alerts@google.com + + Reported when the user clicked on the change password button on the password + protection modal warning. + + + + + drubery@chromium.org + chrome-safebrowsing-alerts@google.com + + Reported when the user closed the password protection modal warning. + + + + + drubery@chromium.org + chrome-safebrowsing-alerts@google.com + + Reported when the user clicked on the ignore button on the password + protection modal warning. + + + + + nwokedi@chromium.org + chrome-counter-abuse-alerts@google.com + + Reported when a user clicks on the change password button for a + Non-Gaia-Enterprise account. + + + + + nwokedi@chromium.org + chrome-counter-abuse-alerts@google.com + + Reported when a user's hashed non-gaia-enterprise password is saved. + + + + + drubery@chromium.org + chrome-safebrowsing-alerts@google.com + + Reported when the user clicks on the change password button on the page info + bubble. + + + + + drubery@chromium.org + chrome-safebrowsing-alerts@google.com + + Reported when the user clicks on the mark site as legitimate button on the + page info bubble. + + + + + nwokedi@chromium.org + chrome-counter-abuse-alerts@google.com + + Reported when the automated change password flow completes with a generated + password. + + + + + nwokedi@chromium.org + chrome-counter-abuse-alerts@google.com + Reported when a password-reset link is requested. + + + + nwokedi@chromium.org + chrome-counter-abuse-alerts@google.com + + Reported when password change/reset flow completes with a user chosen + password. + + + + + nwokedi@chromium.org + chrome-counter-abuse-alerts@google.com + Reported when the password change flow times out. + + + + nwokedi@chromium.org + chrome-counter-abuse-alerts@google.com + + Reported when a user clicks on the change password button for a saved + password. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed with Out of Process PDF (issue 303491) + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed with Out of Process PDF (issue 303491) + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed with Out of Process PDF (issue 303491) + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed with Out of Process PDF (issue 303491) + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed with Out of Process PDF (issue 303491) + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed with Out of Process PDF (issue 303491) + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed with Out of Process PDF (issue 303491) + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + gbillock@chromium.org + leng@chromium.org + + A website with a domain that is not the same as the main frame's domain + requested a permission and that permission was queued because an existing + permission request was already visible, or because an existing request for + the main frame's domain is pending. + + + + + gbillock@chromium.org + leng@chromium.org + A website requested a permission. + + + + gbillock@chromium.org + leng@chromium.org + + A website requested a permission which was queued because an existing + permission request was already visible. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Logs when the user clicks "Allow for this site", which is a + button, that upon being clicked, allows the site to send notifications. This + metric can be baselined against + "Permissions.QuietChip.TimeToInteraction" histogram. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Logs when the user clicks "Manage", which is a button, that upon + being clicked, navigates the user to the geolocation category settings page. + This metric can be baselined against + "Permissions.QuietChip.TimeToInteraction" histogram. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Logs when the user clicks "Show for site", which is a button, that + upon being clicked, allows the site to send notifications. This metric can + be baselined against "Permissions.QuietChip.TimeToInteraction" + histogram. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Logs when the user clicks "Manage", which is a button, that upon + being clicked, navigates the user to the notifications category settings + page. This metric can be baselined against + "Permissions.QuietChip.TimeToInteraction" histogram. + + + + + psarouthakis@chromium.org + + User opened the "Advanced" tab on the Phishing interstitial. + + + + + psarouthakis@chromium.org + User pressed back on a Phishing interstitial. + + + + psarouthakis@chromium.org + User proceeded on a Phishing interstitial. + + + + psarouthakis@chromium.org + User saw the Phishing interstitial. + + + + Replaced by the histogram PhysicalWeb.ActivityReferral + cco3@chromium.org + mattreynolds@chromium.org + mmocny@chromium.org + + A notification advertising nearby Physical Web URLs was pressed. + + + + + + Obsolete 4/2018, Physical Web is disabled (crbug.com/826540). + + cco3@chromium.org + mattreynolds@chromium.org + mmocny@chromium.org + + The user has disabled the Physical Web feature via the settings. + + + + + + Obsolete 4/2018, Physical Web is disabled (crbug.com/826540). + + cco3@chromium.org + mattreynolds@chromium.org + mmocny@chromium.org + + The enable button was pressed in the Physical Web opt-in activity. + + + + + Deprecated 01/2017, no longer used + cco3@chromium.org + mattreynolds@chromium.org + mmocny@chromium.org + + A high priority Physical Web opt-in notification was displayed. + + + + + Deprecated 01/2017, no longer used + cco3@chromium.org + mattreynolds@chromium.org + mmocny@chromium.org + + A min priority Physical Web opt-in notification was displayed. + + + + + Deprecated 01/2017, no longer used + cco3@chromium.org + mattreynolds@chromium.org + mmocny@chromium.org + + The user pressed the Physical Web opt-in notification. + + + + + + Obsolete 4/2018, Physical Web is disabled (crbug.com/826540). + + cco3@chromium.org + mattreynolds@chromium.org + mmocny@chromium.org + + The user has disabled the Physical Web feature via the settings. + + + + + + Obsolete 4/2018, Physical Web is disabled (crbug.com/826540). + + cco3@chromium.org + mattreynolds@chromium.org + mmocny@chromium.org + + The user has enabled the Physical Web feature via the settings. + + + + + + Obsolete 4/2018, Physical Web is disabled (crbug.com/826540). + + cco3@chromium.org + mattreynolds@chromium.org + mmocny@chromium.org + + The user tapped the Physical Web logo in an omnibox suggestion and navigated + to the Physical Web preferences page. iOS only. + + + + + + Obsolete 4/2018, Physical Web is disabled (crbug.com/826540). + + cco3@chromium.org + mattreynolds@chromium.org + mmocny@chromium.org + + The user denied location permission when enabling the Physical Web feature + via the settings. + + + + + + Obsolete 4/2018, Physical Web is disabled (crbug.com/826540). + + cco3@chromium.org + mattreynolds@chromium.org + mmocny@chromium.org + + The user granted location permission when enabling the Physical Web feature + via the settings. + + + + + + Obsolete 4/2018, Physical Web is disabled (crbug.com/826540). + + cco3@chromium.org + mattreynolds@chromium.org + mmocny@chromium.org + A Physical Web URL was selected. + + + + + Obsolete 4/2018, Physical Web is disabled (crbug.com/826540). + + cco3@chromium.org + mattreynolds@chromium.org + mmocny@chromium.org + + The user tapped an URL in the Physical Web list view. + + + + + + Obsolete 4/2018, Physical Web is disabled (crbug.com/826540). + + cco3@chromium.org + mattreynolds@chromium.org + mmocny@chromium.org + The Physical Web WebUI was opened or refreshed. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + tommycli@chromium.org + + A plugin instance has loaded as a left click to play placeholder. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated due to NPAPI removal. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated due to NPAPI removal. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated due to NPAPI removal. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated since the feature is deprecated. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated since the feature is deprecated. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated since the feature is deprecated. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + twifkak@chromium.org + jamartin@chromium.org + + A precache fetch was initiated, having met all the necessary preconditions. + This occurs when precache is in either Enabled or Control mode. + + + + + twifkak@chromium.org + bengr@chromium.org + + An intent was received by PrecacheServiceLauncher, corresponding either to a + change in power or network, or to an alarm set by the + PrecacheServiceLauncher itself. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed since M85, replaced by a histogram. + vasilii@chromium.org + ewald@chromium.org + + User clicked 'Addresses' in the profile chooser menu. + + + + + Removed since M85, replaced by a histogram. + vasilii@chromium.org + ewald@chromium.org + + User clicked 'Close All Windows' in the profile chooser menu. + + + + + Removed since M85, replaced by a histogram. + msalama@chromium.org + + User clicked on settings from the user menu prompted message to go to cookie + settings. The prompt was shown because sync is paused due to cookie settings + set to clear cookies on exit. + + + + + Removed since M85, replaced by a histogram. + vasilii@chromium.org + ewald@chromium.org + + User opened a guest session from the profile chooser menu. + + + + + Removed since M85, replaced by a histogram. + vasilii@chromium.org + ewald@chromium.org + + User clicked 'Manage people' in the profile chooser menu. + + + + + Removed since M85, replaced by a histogram. + droger@chromium.org + msarda@chromium.org + tangltom@chromium.org + + User clicked 'Manage your Google Account' in the profile chooser menu. + + + + + Removed since M85, replaced by a histogram. + vasilii@chromium.org + ewald@chromium.org + + User clicked 'Passwords' in the profile chooser menu. + + + + + Removed since M85, replaced by a histogram. + vasilii@chromium.org + ewald@chromium.org + + User clicked 'Payments' in the profile chooser menu. + + + + + Removed since M85, replaced by a histogram. + vasilii@chromium.org + ewald@chromium.org + + User clicked a profile to switch in the profile chooser menu. + + + + + This is replaced with ProfileMenu_Opened. + vasilii@chromium.org + ewald@chromium.org + The user opened the profile chooser menu. + + + + Removed since M85, replaced by a histogram. + vasilii@chromium.org + ewald@chromium.org + + User clicked 'Sign in again' in the profile chooser menu. + + + + + No longer recorded after the revamp of the profile menu + vasilii@chromium.org + ewald@chromium.org + + The profile chooser opened with 'Sign in again' button. + + + + + msarda@chromium.org + tangltom@chromium.org + + The user clicked a button or a link in the profile menu. + + + + + droger@chromium.org + tangltom@chromium.org + + The user clicked a button or a link in the guest profile menu. + + + + + droger@chromium.org + tangltom@chromium.org + + The user clicked a button or a link in the incognito profile menu. + + + + + droger@chromium.org + tangltom@chromium.org + + The user clicked a button or a link in the regular profile menu. + + + + + msarda@chromium.org + tangltom@chromium.org + The user opened the profile menu. + + + + droger@chromium.org + tangltom@chromium.org + The user opened the guest profile menu. + + + + droger@chromium.org + tangltom@chromium.org + The user opened the incognito profile menu. + + + + droger@chromium.org + tangltom@chromium.org + The user opened the regular profile menu. + + + + msalama@chromium.org + chrome-signin-team@google.com + + The user clicked the add button in chrome://profile-picker. + + + + + msalama@chromium.org + chrome-signin-team@google.com + + The user clicked remove in the three dotted menu in chrome://profile-picker. + + + + + msalama@chromium.org + chrome-signin-team@google.com + + The user clicked the three dotted menu in chrome://profile-picker. + + + + + alancutter@chromium.org + + The plus icon shown in the omnibox when a site has passed the browser's PWA + promotability checks. + + + + + jiamingc@google.com + cros-status-area-eng@google.com + + User clicked on the Join Wi-Fi network entry in the quick settings network + subpage on ChromeOS. + + + + + ender@google.com + fgorski@chromium.org + + The user triggered a Lens query from the Quick Actions Search Widget. + + + + + ender@google.com + fgorski@chromium.org + + User started the Dino Game from the Quick Action Search Widget. + + + + + ender@google.com + fgorski@chromium.org + + User opened an incognito tab from the Quick Action Search Widget. + + + + + ender@google.com + fgorski@chromium.org + + The user triggered a text query from the Quick Actions Search Widget. + + + + + ender@google.com + fgorski@chromium.org + + The user triggered a voice query from the Quick Actions Search Widget. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user added a page to the reading list from the dialog bubble. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user navigated to a page from the reading list dialog bubble. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + donnd@chromium.org + related-searches-vteam@google.com + + The user clicked on a search result in the Search Result Page that was shown + due to a Related Searches suggestion. + + + + + donnd@chromium.org + related-searches-vteam@google.com + + The user took an action that promotes the bottom sheet from an overlay into + its own separate Tab. The bottom sheet was showing results from a Related + Searches suggestion. + + + + + grt@chromium.org + + The user accepted to relaunch Chrome in response to a bubble indicating that + their administrator recommended that Chrome be relaunched. + + + + + grt@chromium.org + + The bubble indicating to the user that their administrator recommends a + browser relaunch was closed by the user. + + + + + grt@chromium.org + + A bubble was shown to the user to indicate that their administrator + recommends that Chrome be relaunched. + + + + + grt@chromium.org + + The user accepted to relaunch Chrome in response to a dialog indicating that + their administrator required that Chrome be relaunched. + + + + + grt@chromium.org + + The dialog indicating to the user that their administrator requires a + browser relaunch was closed by the user. + + + + + grt@chromium.org + + A dialog was shown to the user to indicate that their administrator requires + that Chrome be relaunched. + + + + + yulunwu@chromium.org + + Release Notes was launched from clicking link in about page. + + + + + yulunwu@chromium.org + + Release Notes was launched from clicking notification. + + + + + yulunwu@chromium.org + Release Notes notification was shown. + + + + yulunwu@chromium.org + Release Notes app was launched. + + + + yulunwu@chromium.org + Release Notes was launched from suggestion chip. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + toyoshim@chromium.org + The user triggers Shift-reload operation. + + + + This is replaced with ReloadBypassingCache. + toyoshim@chromium.org + The user triggers Shift-reload operation. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + ssid@chromium.org + boliu@chromium.org + + Recorded when a foreground main frame renderer OOM is observed. + + + + + avi@chromium.org + mpearson@chromium.org + chrome-analysis-team@google.com + + Emitted whenever the IDC_CONTENT_CONTEXT_SEARCHWEBFOR context menu item is + used. + + This is logged at the same time that the RenderViewContextMenu.Used + histogram is logged. + + This action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + mpearson@chromium.org + chrisha@chromium.org + chrome-analysis-team@google.com + + Emitted anytime the most recently closed tab is restored via + browser/ui/browser_tab_restorer.cc. This occurs either via the + (Ctrl-Shift-T) hotkey or the tab context menu. These are cases where the + user hasn't explicitly selected a recently closed tab; the user is asking + that the most recently closed tab be restored. Thus, it's not recorded, for + example, if the user uses three-dots menu > History > Recently Closed + Tabs and selects a tab, as in this case the user has selected a recently + closed tab explicitly. That case and cases like it go directly to + TabRestoreService::RestoreEntryById and bypass the browser_tab_restorer code + path. + + Note: if the last user action was to close an entire window with multiple + tabs, this RestoreTab action will cause the entire window to be restored, + containing multiple tabs. This user action is only emitted once however, + regardless of the number of tabs. + + This is not emitted during session restore that occurs as part of startup. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + jacastro@chromium.org + chrome-safebrowsing-alerts@google.com + The ESB disabled dialog was dismissed. + + + + jacastro@chromium.org + chrome-safebrowsing-alerts@google.com + + User clicks the OK button on the ESB disabled dialog. + + + + + awado@chromium.org + chrome-safebrowsing-alerts@google.com + + User clicks the settings button on the ESB disabled dialog. + + + + + awado@chromium.org + chrome-safebrowsing-alerts@google.com + The ESB disabled dialog was shown to the user. + + + + jacastro@chromium.org + chrome-safebrowsing-alerts@google.com + The ESB enabled dialog was dismissed. + + + + jacastro@chromium.org + chrome-safebrowsing-alerts@google.com + + User clicks the OK button on the ESB enabled dialog. + + + + + awado@chromium.org + chrome-safebrowsing-alerts@google.com + + User clicks the settings button on the ESB enabled dialog. + + + + + jacastro@chromium.org + chrome-safebrowsing-alerts@google.com + The ESB enabled dialog was shown to the user. + + + + xinghuilu@chromium.org + chrome-safebrowsing-alerts@google.com + User bypasses a download warning. + + + + xinghuilu@chromium.org + chrome-safebrowsing-alerts@google.com + A download warning is shown. + + + + xinghuilu@chromium.org + chrome-safebrowsing-alerts@google.com + + User clicks the disable Safe Browsing button in the Safe Browsing setting + page. + + + + + xinghuilu@chromium.org + chrome-safebrowsing-alerts@google.com + + User clicks the confirmed button on the disable Safe Browsing dialog in the + Safe Browsing setting page. + + + + + xinghuilu@chromium.org + chrome-safebrowsing-alerts@google.com + + User clicks the denied button on the disable Safe Browsing dialog in the + Safe Browsing setting page. + + + + + xinghuilu@chromium.org + chrome-safebrowsing-alerts@google.com + + User clicks the exhanced protection button in the Safe Browsing setting + page. + + + + + xinghuilu@chromium.org + chrome-safebrowsing-alerts@google.com + + User clicks the enhanced protection expand arrow in the Safe Browsing + setting page. + + + + + xinghuilu@chromium.org + chrome-safebrowsing-alerts@google.com + + The Safe Browsing setting page is shown to the user. The user reaches the + page from the default route. + + + + + xinghuilu@chromium.org + chrome-safebrowsing-alerts@google.com + + The Safe Browsing setting page is shown to the user. The user reaches the + page from the parent settings. + + + + + xinghuilu@chromium.org + chrome-safebrowsing-alerts@google.com + + The Safe Browsing setting page is shown to the user. The user reaches the + page from SafetyCheck. + + + + + xinghuilu@chromium.org + chrome-safebrowsing-alerts@google.com + + The Safe Browsing setting page is shown to the user. The user reaches the + page from the security interstitial. + + + + + drubery@chromium.org + chrome-safebrowsing-alerts@google.com + + The Safe Browsing setting page is shown to the user. The user reaches the + page from Surface Explorer on NTP on Android. + + + + + xinghuilu@chromium.org + chrome-safebrowsing-alerts@google.com + + User clicks the standard protection button in the Safe Browsing setting + page. + + + + + xinghuilu@chromium.org + chrome-safebrowsing-alerts@google.com + + User clicks the standard protection expand arrow in the Safe Browsing + setting page. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Replaced by the histogram SB2.InterstitialAction + felt@chromium.org + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + avayvod@chromium.org + zqzhang@chromium.org + media-dev@chromium.org + + The use rotates the device triggering a screen orientation change. This + action is Android-specific. + + + + + + Removed 07/2021. The new screen capture tool doesn't have an annotate button + in its notification. + + derat@chromium.org + jdufault@chromium.org + tbuckley@chromium.org + + User clicks the "Annotate" button in the notification displayed + after taking a screenshot. + + + + + + Removed 07/2021. The new screen capture tool copies the image to the + clipboard directly. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Removed 07/2021. Use histogram Ash.CaptureModeController.QuickAction + instead. + + xiyuan@chromium.org + gzadina@google.com + + User clicks the body of the notification displayed after taking a screenshot + in order to show the screenshot file in its folder. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + warx@chromium.org + + User initiates an active window screenshot, a window selection per + kuscher@'s request. + + + + + donnd@chromium.org + contextual-search-eng@google.com + chrome-analysis-team@google.com + + Records that the user opened the contextual search panel when it was shown. + Implemented for Android. + + This is logged at the same time that a true value is logged to the + Search.ContextualSearch.All.ResultsSeen histogram. + + This action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + Removed 11/2021. Query Tiles no longer show chips on NTP. + shaktisahu@chromium.org + chrome-upboarding@google.com + + Recorded whenever a chip showing on the NTP fake search box was cleared. + + + + + shaktisahu@chromium.org + chrome-upboarding@google.com + + Recorded whenever a query tile was clicked in the new tab page. + + + + + vadimt@chromium.org + User opens URL from an answer card. + + + + + Deprecated in favor of analysing proportion of shown + (SearchAnswer.AnswerVisibleTime total) vs. successfully loaded + (SearchAnswer.RequestResult.REQUEST_RESULT_RECEIVED_ANSWER) cards. + + vadimt@chromium.org + Answer card successfully loads. + + + + vadimt@chromium.org + User interacts with an answer card. + + + + zentaro@chromium.org + jimmyxgong@chromium.org + + User pressed Search+Backspace to produce the Delete key. + + + + + zentaro@chromium.org + jimmyxgong@chromium.org + + User pressed Search+RightArrow to produce the End key. + + + + + zentaro@chromium.org + jimmyxgong@chromium.org + + User pressed Search+LeftArrow to produce the Home key. + + + + + zentaro@chromium.org + jimmyxgong@chromium.org + + User pressed Search+Period to produce the Insert key. + + + + + zentaro@chromium.org + jimmyxgong@chromium.org + + User pressed Search+DownArrow to produce the PageDown key. + + + + + zentaro@chromium.org + jimmyxgong@chromium.org + + User pressed Search+UpArrow to produce the PageUp key. + + + + + zentaro@chromium.org + + User pressed search click on a touchpad device to generate right click. This + is measuring the transition of use from the legacy alt click behaviour that + is tracked by AltClickMappedToRightClick. + + + + + ianwen@chromium.org + + Recorded when the user has manually switched default search engine, which + disables search engine auto switch feature in special locale. This is + recorded on Android for every locale, but is currently only meaningful for + studying special locales. + + + + + yusufo@chromium.org + + The user has made a selection in the search engine promo in an existing + device that is setup before the promo was first introduced. This is a dialog + prompting the user to pick a default search engine. Android only. + + + + + dfalcantara@chromium.org + tedchoc@chromium.org + yusufo@chromium.org + + The Existing Device search engine promo screen was shown as a dialog. + + + + + dfalcantara@chromium.org + tedchoc@chromium.org + yusufo@chromium.org + + The Existing Device search engine promo screen was shown in the first run + experience. + + + + + yusufo@chromium.org + + The user has made a selection in the search engine promo in a new device + that is setup after the promo was introduced. This is a dialog prompting the + user to pick a default search engine. Android only. + + + + + dfalcantara@chromium.org + tedchoc@chromium.org + yusufo@chromium.org + + The New Device search engine promo screen was shown as a dialog. + + + + + dfalcantara@chromium.org + tedchoc@chromium.org + yusufo@chromium.org + + The New Device search engine promo screen was shown in the first run + experience. + + + + + zentaro@chromium.org + jimmyxgong@chromium.org + User pressed Search+1 to produce the F1 key. + + + + zentaro@chromium.org + jimmyxgong@chromium.org + User pressed Search+0 to produce the F10 key. + + + + zentaro@chromium.org + jimmyxgong@chromium.org + User pressed Search+Minus to produce the F11 key. + + + + zentaro@chromium.org + jimmyxgong@chromium.org + User pressed Search+Equals to produce the F12 key. + + + + zentaro@chromium.org + jimmyxgong@chromium.org + User pressed Search+2 to produce the F2 key. + + + + zentaro@chromium.org + jimmyxgong@chromium.org + User pressed Search+3 to produce the F3 key. + + + + zentaro@chromium.org + jimmyxgong@chromium.org + User pressed Search+4 to produce the F4 key. + + + + zentaro@chromium.org + jimmyxgong@chromium.org + User pressed Search+5 to produce the F5 key. + + + + zentaro@chromium.org + jimmyxgong@chromium.org + User pressed Search+6 to produce the F6 key. + + + + zentaro@chromium.org + jimmyxgong@chromium.org + User pressed Search+7 to produce the F7 key. + + + + zentaro@chromium.org + jimmyxgong@chromium.org + User pressed Search+8 to produce the F8 key. + + + + zentaro@chromium.org + jimmyxgong@chromium.org + User pressed Search+9 to produce the F9 key. + + + + hanxi@chromium.org + xinyiji@chromium.org + + The search suggestion on the search resumption module is clicked. + + + + + hanxi@chromium.org + xinyiji@chromium.org + + Users click the header of the search resumption module to collapse the + suggestions. + + + + + hanxi@chromium.org + xinyiji@chromium.org + + Users click the header of the search resumption module to expand and show + the suggestions. + + + + + yusufo@chromium.org + + The user made a search from the Android search widget. + + + + + yusufo@chromium.org + + The user launched the Android search widget from home screen. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + ssid@chromium.org + + Segmentation preferences were purged due to an user triggered history + deletion event. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + donnd@chromium.org + + The user changed the selection by manipulating the selection handles. Only + one action of this kind is emmitted when the selection handles are + repeatedly moved. Recorded whenever the selection changes on any platform in + the native touch selection controller. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Replaced by ServiceWorker.PageLoad histogram. + nhiroki@chromium.org + + Counts the number of page loads controlled by a Service Worker. + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + Logged when user taps on close button that dismisses tab restoration UI when + the app was relaunched after the crash. iOS only. + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + Logged when user taps on Restore button that restores tabs when the app was + relaunched after the crash. iOS only. + + + + + gambard@chromium.org + sczs@chromium.org + + Reported when user navigates to Bandwidth Settings. iOS only. + + + + + gambard@chromium.org + sczs@chromium.org + + Reported when user navigates to Content Settings. iOS only. + + + + + gambard@chromium.org + thegreenfrog@chromium.org + + Reported when user taps on the button that opens the Chrome panel in + Settings.app. iOS only. + + + + + jlebel@chromium.org + fernandex@chromium.org + + Reported when user navigates to Google Services Settings. iOS only. + + + + + fernandex@chromium.org + + Reported when user navigates to Google Services Settings from the sign-in + notification infobar. iOS only. + + + + + + Removed as original metrics is over counting. Replaced with + Settings.Homepage.LocationChanged_V2. + + wenyufu@chromium.org + twellington@chromium.org + + Recorded when the user changes their homepage location in settings. Note + that this metric is only recorded on user action and does not capture + changes caused by enterprise policy. Recorded for Android only. + + + + + wenyufu@chromium.org + twellington@chromium.org + + Recorded once when exiting homepage settings if the user changed their + homepage location. Note that this is only recorded if the homepage location + actually changes. So, if for example, the user goes to the settings screen + and toggles between options ultimately ending up at the original state an + event will not be recorded. This metric does not capture changes caused by + enterprise policy. Recorded for Android only. + + + + + wenyufu@chromium.org + twellington@chromium.org + + Recorded when the user opens homepage settings. Recored when the user + launches homepage settings either from the main settings screen or the + homepage button long-press menu. Recorded for Android only. + + + + + jlebel@chromium.org + fernandex@chromium.org + msarda@chromium.org + + Recorded when the user taps on the account item in the settings. Recorded + for iOS only. + + + + + thgreenfrog@chromium.org + sczs@chromium.org + + Reported when user navigates to Language Settings. iOS only. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User clicks the back button on the completion card in Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User clicks the back button on the cookies card in Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User clicks the back button on the history sync card in Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User clicks the back button on the MSBB card in Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User clicks the back button on the Safe Browsing card in Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User changes cookies to block 3rd party in Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User changes cookies to block 3rd party in Incognito in Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + User changes history sync to off in Privacy guide. + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + User changes history sync to on in Privacy guide. + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + User changes MSBB to off in Privacy guide. + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + User changes MSBB to on in Privacy guide. + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User changes Safe Browsing to enhanced in Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User changes Safe Browsing to standard in Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User clicks on the Privacy Sandbox link on the completion step of Privacy + guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User clicks on the sWAA link on the completion step of Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User clicks the next button on the completion card in Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User clicks the next button on the cookies card in Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User clicks the next button on the history sync card in Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User clicks the next button on the msbb card in Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User clicks the next button on the Safe Browsing card in Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User clicks the next button on the welcome card in Privacy guide. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + User starts the Privacy guide via the link row in settings privacy section. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + User starts the Privacy guide via the promo. + + + + rubindl@chromium.org + sauski@google.com + kartoffel-core@google.com + + User disables the privacy sandbox Ad Measurement API in the Ad Measurement + setting page. + + + + + rubindl@chromium.org + sauski@google.com + kartoffel-core@google.com + + User enables the privacy sandbox Ad Measurement API in the Ad Measurement + setting page. + + + + + dullweber@google.com + sauski@google.com + kartoffel-core@google.com + User opened Ad measurement subpage. + + + + dullweber@google.com + sauski@google.com + kartoffel-core@google.com + + User selected "Learn more" about Ad Personalization. + + + + + dullweber@google.com + sauski@google.com + kartoffel-core@google.com + + User opened Ad Personalization subpage from main sandbox settings page. + + + + + dullweber@google.com + sauski@google.com + kartoffel-core@google.com + + User removed a site that was previously in their allowed sites list. + TODO(crbug.com/1378703): Deprecate this action in favor of + Settings.PrivacySandbox.Fledge.SiteRemoved after the feature is launched. + + + + + dullweber@google.com + sauski@google.com + kartoffel-core@google.com + + User removed a topic that was previously in their allowed topics list. + TODO(crbug.com/1378703): Deprecate this action in favor of + Settings.PrivacySandbox.Topics.TopicRemoved after the feature is launched. + + + + + rainhard@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + + User disables the privacy sandbox APIs in the privacy sandbox page. + + + + + rainhard@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + + User enables the privacy sandbox APIs in the privacy sandbox page. + + + + + rainhard@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + + User changes cookie setting and moves from a state where 3P cookies are + enabled, to one where 3P cookies are disabled. Only recorded if the privacy + sandox feature is enabled, and the privacy sandbox API preference is + enabled. A toast linking the provacy sandbox page is shown immediately + following this action. + + + + + harrisonsean@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + User accepted the privacy sandbox consent. + + + + harrisonsean@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + + Consent dialog closed with no interaction (e.g. browser shutdown). + + + + + harrisonsean@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + User declined the privacy sandbox consent. + + + + harrisonsean@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + + User closed the Learn More in the Privacy Sandbox Consent. + + + + + harrisonsean@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + + User expanded the Learn More in the Privacy Sandbox Consent. + + + + + olesiamarukhno@google.com + sauski@google.com + kartoffel-core-eng@google.com + kartoffel-core@google.com + + User clicked on the More button in the Privacy Sandbox Consent. + + + + + harrisonsean@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + User is shown the Privacy Sandbox consent. + + + + rubindl@google.com + sauski@google.com + kartoffel-core@google.com + + User opened the all sites subpage, by clicking on the pref in the Fledge + settings page. + + + + + rubindl@google.com + sauski@google.com + kartoffel-core@google.com + + User opened the blocked sites section, by clicking on the button in the + Topics settings page. + + + + + rubindl@chromium.org + sauski@google.com + kartoffel-core@google.com + + User disables the privacy sandbox Fledge API in the Fledge settings page. + + + + + rubindl@chromium.org + sauski@google.com + kartoffel-core@google.com + + User enables the privacy sandbox Fledge API in the Fledge settings page. + + + + + olesiamarukhno@google.com + sauski@google.com + kartoffel-core@google.com + + User opened the learn more about fledge section, by clicking on the button + in the Fledge settings page. + + + + + rubindl@google.com + sauski@google.com + kartoffel-core@google.com + + User opened Fledge subpage from main sandbox settings page. + + + + + rubindl@google.com + sauski@google.com + kartoffel-core@google.com + + User added back a site that was previously in their removed sites list. + + + + + rubindl@google.com + sauski@google.com + kartoffel-core@google.com + + User removed a site that was previously in their allowed sites list. + + + + + andzaytsev@google.com + sauski@google.com + kartoffel-core@google.com + + User opens the FLoC subpage by clicking on an element on the privacy sandbox + page. + + + + + harrisonsean@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + User acknowledged the Privacy Sandbox notice. + + + + harrisonsean@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + + Notice dialog closed with no interaction (e.g. browser shutdown). + + + + + harrisonsean@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + User dismissed the Privacy Sandbox notice. + + + + olesiamarukhno@google.com + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + + User clicked on the link "estimates your interests" from the + Privacy Sandbox notice. It opens Privacy Sandbox settings page with + "About Browser-based ad personalization" dialog. + + + + + olesiamarukhno@google.com + sauski@google.com + tommasin@chromium.org + kartoffel-core@google.com + + User closed the Learn More in the Privacy Sandbox Notice. + + + + + olesiamarukhno@google.com + sauski@google.com + tommasin@chromium.org + kartoffel-core@google.com + + User expanded the Learn More in the Privacy Sandbox Notice. + + + + + olesiamarukhno@google.com + sauski@google.com + kartoffel-core-eng@google.com + kartoffel-core@google.com + + User clicked on the More button in the Privacy Sandbox Notice. + + + + + harrisonsean@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + + User opened settings from the Privacy Sandbox notice. + + + + + harrisonsean@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + User is shown the Privacy Sandbox notice. + + + + rainhard@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + + User clicks the toast shown on the cookies page after blocking 3P cookies to + open the privacy sandbox page. + + + + + rainhard@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + + User clicks the privacy sandbox row in the privacy page to open the privacy + sandbox page. + + + + + rainhard@chromium.org + sauski@google.com + msramek@chromium.org + kartoffel-core@google.com + + User clicks the details button in the privacy sandbox page to see the + privacy sandbox explainer. + + + + + dullweber@google.com + sauski@google.com + kartoffel-core@google.com + + User clicked on "Interests you removed", to visit the blocked + interests subpage. + + + + + dullweber@google.com + sauski@google.com + kartoffel-core@google.com + + User added back a site that was previously in their removed sites list. + TODO(crbug.com/1378703): Deprecate this action in favor of + Settings.PrivacySandbox.Fledge.SiteAdded after the feature is launched. + + + + + dullweber@google.com + sauski@google.com + kartoffel-core@google.com + + User added back a topic that was previously in their removed topics list. + TODO(crbug.com/1378703): Deprecate this action in favor of + Settings.PrivacySandbox.Topics.TopicAdded after the feature is launched. + + + + + djmitche@chromium.org + kartoffel-core@google.com + tommasin@chromium.org + + User acknowledged the Restricted Privacy Sandbox notice. + + + + + djmitche@chromium.org + kartoffel-core@google.com + tommasin@chromium.org + + User opened settings from the Restricted Privacy Sandbox notice. + + + + + dullweber@google.com + sauski@google.com + kartoffel-core@google.com + User opened Fraud prevention subpage. + + + + rubindl@google.com + sauski@google.com + kartoffel-core@google.com + + User opened the blocked Topics section, by clicking on the button in the + Topics settings page. + + + + + rubindl@chromium.org + sauski@google.com + kartoffel-core@google.com + + User disables the privacy sandbox Topics API in the Topics setting page. + + + + + rubindl@chromium.org + sauski@google.com + kartoffel-core@google.com + + User enables the privacy sandbox Topics API in the Topics settings page. + + + + + olesiamarukhno@google.com + sauski@google.com + kartoffel-core@google.com + + User opened the learn more about topics section, by clicking on the button + in the Topics settings page. + + + + + rubindl@google.com + sauski@google.com + kartoffel-core@google.com + + User opened Topics subpage from main sandbox settings page. + + + + + rubindl@google.com + sauski@google.com + kartoffel-core@google.com + + User added back a topic that was previously in their removed topics list. + + + + + rubindl@google.com + sauski@google.com + kartoffel-core@google.com + + User removed a topic that was previously in their allowed topics list. + + + + + rainhard@chromium.org + msramek@chromium.org + + User clicks the safety check Chrome cleaner row to navigate to the Chrome + cleaner UI. + + + + + rainhard@chromium.org + msramek@chromium.org + + User clicks the safety check Chrome cleaner reboot button. + + + + + rainhard@chromium.org + msramek@chromium.org + + User clicks the review button in an CCT infected state. + + + + + rainhard@chromium.org + andzaytsev@google.com + msramek@chromium.org + + User clicks the manage passwords button in safety check when compromised + passwords have been found. + + + + + rainhard@chromium.org + andzaytsev@google.com + msramek@chromium.org + User clicks the passwords row in safety check. + + + + rainhard@chromium.org + andzaytsev@google.com + msramek@chromium.org + + User clicks the manage safe browsing button in safety check. + + + + + rainhard@chromium.org + andzaytsev@google.com + msramek@chromium.org + User clicks the safe browsing row in safety check. + + + + rainhard@chromium.org + msramek@chromium.org + + User clicks the manage passwords button in safety check when weak passwords + have been found. + + + + + rainhard@chromium.org + andzaytsev@google.com + msramek@chromium.org + + User clicks the relaunch browser button in safety check after an update. + + + + + rainhard@chromium.org + andzaytsev@google.com + msramek@chromium.org + + User clicks the review extensions button in safety check. + + + + + rainhard@chromium.org + andzaytsev@google.com + msramek@chromium.org + User clicks the extensions row in safety check. + + + + sideyilmaz@chromium.org + msramek@chromium.org + + User clicks the button in the unused site permissions row in safety check. + + + + + rainhard@chromium.org + andzaytsev@google.com + msramek@chromium.org + User started a browser safety check in settings. + + + + dschuyler@chromium.org + + A new search has been started in the chrome://settings (preferences) page. A + search is considered complete via timeout since there is no concrete way to + define the end of a search (the search is incremental). + + + + + thegreenfrog@chromium.org + gambard@chromium.org + + Reported when user opens the Default Browser Settings page. iOS only. + + + + + jlebel@chromium.org + fernandex@chromium.org + + Reported when user navigates to Google Sync Settings. iOS only. + + + + + alionadangla@chromium.org + lpromero@chromium.org + + Reported when user navigates to Tabs Settings. iOS only. + + + + + alionadangla@chromium.org + lpromero@chromium.org + + Reported when user navigates to Inactive Tabs Settings. iOS only. + + + + + rohitrao@chromium.org + sczs@chromium.org + + Reported when user navigates to Voice Search Settings. iOS only. + + + + + gzadina@chromium.org + tbarzic@chromium.org + + The user clicked the "Learn more" link for the setting to show + shelf navigation buttons when in tablet mode. The setting is part of + accessibility settings in Chrome OS settings page. + + + + + grt@chromium.org + The Windows Settings app became focused. + + + + grt@chromium.org + pmonette@chromium.org + + The user clicked the "Check it out" button in the Edge promo. + + + + + grt@chromium.org + + The user opened the Windows Settings app's browser chooser. + + + + + grt@chromium.org + + The user selected Chrome from the Windows Settings app's browser chooser. + + + + + grt@chromium.org + + The Windows Settings app monitor initialized successfully. This action can + be used as an anchor representing the start of a user's interactions with + the app regardless of what UX in Chrome initiated the flow. + + + + + grt@chromium.org + + The user selected a different browser from the Windows Settings app's + browser chooser. + + + + + grt@chromium.org + pmonette@chromium.org + The Edge promo became focused. + + + + grt@chromium.org + pmonette@chromium.org + + The user clicked the "Switch Anyway" button in the Edge promo. + + + + + aee@chromium.org + + The user clicked the "Extensions" external link in the settings + menu (drawer). + + + + + + Removed in M79, replaced by the histogram AppManagement.EntryPoints. + + jshikaram@chromium.org + dominickn@chromium.org + + The user clicked on the "Manage your apps" external link in the + settings page. + + + + + mad@chromium.org + Please enter the description of this user action. + + + + mad@chromium.org + Please enter the description of this user action. + + + + mad@chromium.org + Please enter the description of this user action. + + + + mad@chromium.org + Please enter the description of this user action. + + + + alito@chromium.org + The user accepted the settings reset prompt. + + + + alito@chromium.org + + The user clicked the cancel button in the settings reset prompt dialog. + + + + + + Deprecated in M59 in April 2017 and replaced by SettingsResetPrompt_Canceled + and SettingsResetPrompt_Dismissed. + + alito@chromium.org + The user declined the settings reset prompt. + + + + alito@chromium.org + + The user dismissed the settings reset prompt, for example by clicking the x + in the top right corner or pressing the Escape key. + + + + + alito@chromium.org + + The settings reset dialog was displayed to the user. + + + + + seblalancette@chromium.org + chrome-shared-highlighting@google.com + + User pressed the 'OK' button on the Link Generation Error Alert dialog (iOS + only). + + + + + seblalancette@chromium.org + chrome-shared-highlighting@google.com + + User pressed the 'Share Page...' button on the Link Generation Error Alert + dialog (iOS only). + + + + + Removed 02/2022. + ellyjones@chromium.org + src/chrome/browser/share/OWNERS + + The share submenu was opened, but closed without choosing any of the + options. + + + + + Removed 02/2022. + ellyjones@chromium.org + src/chrome/browser/share/OWNERS + + The "copy link" option was selected in the share submenu. + + + + + Removed 02/2022. + ellyjones@chromium.org + src/chrome/browser/share/OWNERS + + The "generate QR code" option was selected in the share submenu. + + + + + Removed 02/2022. + ellyjones@chromium.org + src/chrome/browser/share/OWNERS + + The "send tab to self" option was selected in the share submenu. + + + + + Removed 02/2022. + ellyjones@chromium.org + src/chrome/browser/share/OWNERS + + One of the third-party targets was selected in the share submenu. + + + + + skare@chromium.org + src/components/send_tab_to_self/OWNERS + + User chose to edit a screenshot in the capture bubble. + + + + + skare@chromium.org + src/components/send_tab_to_self/OWNERS + + User saved a screenshot captured from the desktop screenshot bubble. + + + + + + Renamed to SharingHubAndroid.ThirdPartyAppsScrolled 09/2020. + + kmilka@chromium.org + src/components/send_tab_to_self/OWNERS + + The bottom row was horizontally scrolled. Recorded only once per open share + sheet. + + + + + sophey@chromium.org + src/components/send_tab_to_self/OWNERS + + The "Copy GIF" option was selected in the sharing hub. + + + + + sophey@chromium.org + src/components/send_tab_to_self/OWNERS + + The "Copy Image" option was selected in the sharing hub. + + + + + sophey@chromium.org + src/components/send_tab_to_self/OWNERS + + The "Copy Text" option was selected in the sharing hub. + + + + + kmilka@chromium.org + src/components/send_tab_to_self/OWNERS + + The "Copy URL" option was selected in the sharing hub. + + + + + kmilka@chromium.org + src/components/send_tab_to_self/OWNERS + + The chrome app row was horizontally scrolled. Recorded only once per open + share sheet. + + + + + sophey@chromium.org + src/components/send_tab_to_self/OWNERS + + The generic favicon was shown in the sharing hub preview. This means the + link's favicon was not available. + + + + + sophey@chromium.org + src/components/send_tab_to_self/OWNERS + + The link's favicon was shown in the sharing hub preview. + + + + + cheickcisse@google.com + + The user request to share link-to-text in the sharing hub failed. + + + + + cheickcisse@google.com + + The user shared only the text because the link generation failed. + + + + + cheickcisse@google.com + + The user requested sharing the link-to-text in the sharing hub. + + + + + cheickcisse@google.com + The user shared link-to-text. + + + + cheickcisse@google.com + The user shared only the text. + + + + cheickcisse@google.com + + The user requested sharing the text only in the sharing hub. + + + + + + Corresponding option was removed from sharing hub in M95. Never launched. + + gayane@chromium.org + src/components/send_tab_to_self/OWNERS + + The "Link to text" option was selected in the sharing hub. + + + + + kmilka@chromium.org + src/components/send_tab_to_self/OWNERS + + The "Long Screenshot" option was selected in the sharing hub. + + + + + kmilka@chromium.org + src/components/send_tab_to_self/OWNERS + + The "More..." option was selected in the sharing hub. + + + + + kmilka@chromium.org + src/components/send_tab_to_self/OWNERS + The Print option was selected in the sharing hub. + + + + kmilka@chromium.org + src/components/send_tab_to_self/OWNERS + + The "QR Code" option was selected in the sharing hub. + + + + + gayane@chromium.org + src/components/send_tab_to_self/OWNERS + + The "Save Image" option was selected in the sharing hub. + + + + + kmilka@chromium.org + src/components/send_tab_to_self/OWNERS + + The "Screenshot" option was selected in the sharing hub. + + + + + Removed 02/2022. + kmilka@chromium.org + src/components/send_tab_to_self/OWNERS + + The user tapped the Chrome Settings button in the STTS dialog. + + + + + kmilka@chromium.org + src/components/send_tab_to_self/OWNERS + + The user tapped STTS in the sharing hub with no target devices available. + + + + + Removed 02/2022. + kmilka@chromium.org + src/components/send_tab_to_self/OWNERS + + The user tapped STTS in the sharing hub with sync disabled. + + + + + kmilka@chromium.org + src/components/send_tab_to_self/OWNERS + + The "Send to your devices" option was selected in the sharing hub. + + + + + kmilka@chromium.org + src/components/send_tab_to_self/OWNERS + + A third party option was selected in the sharing hub. + + + + + kmilka@chromium.org + src/components/send_tab_to_self/OWNERS + + The third party app row was horizontally scrolled. Recorded only once per + open share sheet. + + + + + + Renamed to SharingHubAndroid.FirstPartyAppsScrolled 09/2020. + + kmilka@chromium.org + src/components/send_tab_to_self/OWNERS + + The top row was horizontally scrolled. Recorded only once per open share + sheet. + + + + + jeffreycohen@chromium.org + kristipark@chromium.org + src/components/send_tab_to_self/OWNERS + + The cast feature was selected in the desktop sharing hub. + + + + + jeffreycohen@chromium.org + kristipark@chromium.org + src/components/send_tab_to_self/OWNERS + + The QR code feature was selected in the desktop sharing hub. + + + + + jianli@chromium.org + feed@chromium.org + + The follow feature was selected in the desktop sharing hub. + + + + + jeffreycohen@chromium.org + kristipark@chromium.org + src/components/send_tab_to_self/OWNERS + + The QR code feature was selected in the desktop sharing hub. + + + + + jeffreycohen@chromium.org + kristipark@chromium.org + src/components/send_tab_to_self/OWNERS + + The Save page feature was selected in the desktop sharing hub. + + + + + jeffreycohen@chromium.org + kristipark@chromium.org + src/components/send_tab_to_self/OWNERS + + The screenshot feature was selected in the desktop sharing hub. + + + + + jeffreycohen@chromium.org + kristipark@chromium.org + src/components/send_tab_to_self/OWNERS + + The send tab to self feature was selected in the desktop sharing hub. + + + + + jeffreycohen@chromium.org + kristipark@chromium.org + src/components/send_tab_to_self/OWNERS + + A third party option was selected in the desktop sharing hub. + + + + + jianli@chromium.org + feed@chromium.org + + The unfollow feature was selected in the desktop sharing hub. + + + + + skare@chromium.org + src/components/send_tab_to_self/OWNERS + + User launched the QR Generator dialog (desktop platforms). + + + + + skare@chromium.org + src/components/send_tab_to_self/OWNERS + + User launched the QR Generator dialog for an image via the context menu on + desktop. + + + + + Removed 02/2022. + ellyjones@chromium.org + src/chrome/browser/share/OWNERS + + User launched the QR Generator dialog for a link via the context menu on + desktop. + + + + + skare@chromium.org + src/components/send_tab_to_self/OWNERS + + User launched the QR Generator dialog for a page via the context menu on + desktop. + + + + + tgupta@chromium.org + src/components/send_tab_to_self/OWNERS + + User attempted to download a QR code from the share hub generator. + + + + + Removed 06/2020. Never launched. + tgupta@chromium.org + src/components/send_tab_to_self/OWNERS + + Downloading a QR Code from the sharing dialog failed. + + + + + Removed 06/2020. Never launched. + tgupta@chromium.org + src/components/send_tab_to_self/OWNERS + + Downloading a QR Code from the sharing dialog succeeded. + + + + + tgupta@chromium.org + src/components/send_tab_to_self/OWNERS + + User attempted to download a QR code from the share hub generator two or + more times. + + + + + src/components/send_tab_to_self/OWNERS + + User edited the text field for a QR code URL (desktop platforms). + + + + + Deprecated 6/2020 + tgupta@chromium.org + src/components/send_tab_to_self/OWNERS + + User tapped on failure notification for saving QR code image. + + + + + tgupta@chromium.org + src/components/send_tab_to_self/OWNERS + + QR code scanner scanned a QR code that did not contain a URL. + + + + + tgupta@chromium.org + src/components/send_tab_to_self/OWNERS + + QR code scanner scanned a QR code that contained a URL. + + + + + Deprecated 6/2020 + tgupta@chromium.org + src/components/send_tab_to_self/OWNERS + + User tapped on successful notification for saving QR code image. + + + + + tgupta@chromium.org + src/components/send_tab_to_self/OWNERS + + User launched, foregrounded, or switched to the QR feature's scan tab. + + + + + tgupta@chromium.org + src/components/send_tab_to_self/OWNERS + + User launched, foregrounded, or switched to the QR feature's generator tab. + + + + + mmourgos@chromium.org + gzadina@google.com + User sets shelf to bottom alignment on ChromeOS. + + + + mmourgos@chromium.org + gzadina@google.com + User sets shelf to left alignment on ChromeOS. + + + + mmourgos@chromium.org + gzadina@google.com + User sets shelf to right alignment on ChromeOS. + + + + erikchen@chromium.org + alexbn@chromium.org + + User interacts with the browser icon in the shelf on ChromeOS to show a + context menu with all the tabs. + + + + + erikchen@chromium.org + alexbn@chromium.org + + User interacts with the browser icon in the shelf on ChromeOS to show a + context menu with all the windows. + + + + + mmourgos@chromium.org + gzadina@google.com + User pinned an app item to the shelf on ChromeOS. + + + + mmourgos@chromium.org + gzadina@google.com + + User unpinned an app item from the shelf on ChromeOS. + + + + + antrim@google.com + cros-lurs@google.com + User shut down from the shelf shutdown button. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Removed in M79, replaced by the histogram AppManagement.EntryPoints. + + jshikaram@chromium.org + dominickn@chromium.org + + The user selected the App Info context menu item in the app launcher. + + + + + Replaced with ShowAppManagementDetailPage + jshikaram@chromium.org + dominickn@chromium.org + + The user selected the App Info context menu item in the app launcher. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Duplicate of ShowBookmarkManager. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + alemate@chromium.org + zalcorn@chromium.org + + The Chrome OS Discover App was displayed to the user. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + sashab@chromium.org + slangley@chromium.org + + The user opened the file manager to a specific file or folder. + + + + + amehfooz@chromium.org + tengs@chromium.org + + The user opened the gesture education help from the notification shown to + highlight new gestures in tablet mode. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + jdufault@chromium.org + Triggered when the palette options are opened. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + Recorded when the new tab button is clicked with the about this site side + panel entry showing. + + + + + brunobraga@chromium.org + chrome-desktop-ui-sea@google.com + + Recorded when the assistant side panel entry is shown. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user collapsed a bookmarks folder within the side panel. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user expanded a bookmarks folder within the side panel. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user navigated to a page from bookmarks in the side panel. + + + + + johntlee@chromium.org + chrome-desktop-ui-sea@google.com + + Recorded when the bookmarks side panel entry is shown. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + Recorded when the companion side panel entry is pinned via the pin button in + the side panel header. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + Recorded when the companion side panel entry is shown. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + Recorded when the companion side panel entry is unpinned via the context + menu from the pinned companion button. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + Recorded when the companion side panel entry is unpinned via the pin button + in the side panel header. + + + + + jianli@chromium.org + chrome-desktop-ui-sea@google.com + Recorded when the feed side panel entry is shown. + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + The user closed the side panel. + + + + mfacey@chromium.org + chrome-desktop-ui-sea@google.com + + Recorded when the new tab button is clicked with the history clusters side + panel entry showing. + + + + + mfacey@chromium.org + chrome-desktop-ui-sea@google.com + + Recorded when the history clusters side panel entry is shown. + + + + + lens-chrome-eng@google.com + juanmojica@google.com + + Recorded when the new tab button is clicked with the Lens side panel entry + showing. + + + + + lens-chrome-eng@google.com + juanmojica@google.com + Recorded when the Lens side panel entry is shown. + + + + abigailbklein@chromium.org + chrome-desktop-ui-sea@google.com + + Recorded when the read anything side panel entry is shown. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user added a page to the reading list from the side panel. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The user navigated to a page from the reading list in the side panel. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + Recorded when the reading list side panel entry is shown. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + The user opened the side panel. + + + + pengchaocai@chromium.org + chrome-cros@google.com + + Recorded when the new tab button is clicked with the side search side panel + entry showing. + + + + + tluk@chromium.org + chrome-desktop-ui-sea@google.com + + Recorded when the side search side panel entry is shown. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + Recorded when the user notes side panel entry is shown. + + + + + mahmadi@chromium.org + + Recorded when the user closes the tab or exits the browser without choosing + any of the other options on the sync confirmation modal. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the user closes the account picker. Only on iOS. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the user opens the account picker. Only on iOS. + + + + + mahmadi@chromium.org + + Recorded when the user clicks the "Google Activity Controls" link + in the account settings page. + + + + + gogerald@chromium.org + Recorded when the add account dialog is opened. + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the add account view is dismissed with an error. Recorded for + iOS only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the add account view is dismissed with adding a new account. + Recorded for iOS only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the add account view is dismissed without adding a new + account. Recorded for iOS only. + + + + + bsazonov@chromium.org + + Recorded when user accepts an option presented by Google Play services error + dialog (e.g., clicks "Update" button). + + + + + bsazonov@chromium.org + + Recorded when dialog is shown to resolve Google Play services error (e.g., + update request). + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the sign-in bottom sheet is canceled. Recorded for iOS only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the sign-in bottom sheet is interrupted by a Chrome action. + Recorded for iOS only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the sign-in bottom sheet closes after the user is signed in. + Recorded for iOS only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the identity chooser dialog from the bottom sheet is closed by + the user. Recorded for iOS only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the identity chooser dialog from the bottom sheet is opened by + the user. Recorded for iOS only. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the bottom sheet is opened. Recorded for iOS only. + + + + + gogerald@chromium.org + + Recorded when the user clicks 'cancel' in the sign in enterprise account + confirmation dialog. + + + + + gogerald@chromium.org + + Recorded when the user chooses to not import data in the sign in enterprise + account confirmation dialog. + + + + + gogerald@chromium.org + + Recorded when the user chooses to import data in the sign in enterprise + account confirmation dialog. + + + + + gogerald@chromium.org + + Recorded when the user chooses to cancel (abort) sign in in the import data + confirmation dialog. + + + + + gogerald@chromium.org + + Recorded when the user chooses to not import data (create new profile) in + the import data confirmation dialog of sign in. + + + + + gogerald@chromium.org + + Recorded when the user chooses to import data in the import data + confirmation dialog of sign in. + + + + + gogerald@chromium.org + + Recorded when showing sign in entry in the chrome://apps page. + + + + + battre@chromium.org + + Recorded when showing sign in entry in the Autofill dropdown. + + + + + gogerald@chromium.org + + Recorded when showing sign in entry in the avatar sign in bubble. + + + + + gogerald@chromium.org + + Recorded when showing sign in entry in the bookmark bubble. + + + + + gogerald@chromium.org + + Recorded when showing sign in entry in the bookmark manager. + + + + + Deprecated 10/2017. No longer needed. + gogerald@chromium.org + + Recorded when showing sign in entry in the cloud print preview page. + + + + + wry@chromium.org + + Recorded when showing sign-in entry in Creator Feed on Android only. + + + + + gogerald@chromium.org + + Recorded when showing sign in entry in the chrome://devices page. + + + + + gogerald@chromium.org + + Recorded when showing sign in entry in the extension installed bubble. + + + + + bsazonov@chromium.org + jlebel@chromium.org + + Recorded when the sign-in promo in the Google services settings is shown. + + + + + beccahughes@chromium.org + steimel@chromium.org + media-dev@chromium.org + + Recorded when showing a sign-in page from Kaleidoscope. + + + + + Removed in M103. + jsaul@google.com + battre@chromium.org + + Recorded when showing sign in entry in the manage cards bubble. + + + + + gogerald@chromium.org + Recorded when showing sign in entry in the menu. + + + + gogerald@chromium.org + + Recorded when showing sign in entry in the new tab page. + + + + + gogerald@chromium.org + + Recorded when showing sign in card in the snippets new tab page. + + + + + sczs@chromium.com + tinazwang@chromium.org + + Recorded when showing sign-in promo card in the feed bottom. + + + + + sczs@chromium.com + tinazwang@chromium.org + + Recorded when showing sign-in promo UI triggered by feed card menu + personalization options. + + + + + mrefaat@google.com + sczs@chromium.org + feed@chromium.org + + Recorded when showing sign in entry in the NTP feed top section promo. + + + + + gogerald@chromium.org + + Recorded when showing sign in entry in the saving password bubble. + + + + + scottyoder@google.com + bling-get-set-up@google.com + + Recorded when showing sign in after the post restore signin promo. + + + + + myuu@google.com + chrome-signin-team@chromium.org + + Recorded when showing sign in entry in the reading list. + + + + + gogerald@chromium.org + + Recorded when showing sign in entry in the recent tabs page. + + + + + bzanotti@chromium.org + + Recorded when showing sign in entry in the re-signin infobar. + + + + + Removed in M103. + jsaul@google.com + battre@chromium.org + + Recorded when showing sign in entry in the save card bubble. + + + + + shaktisahu@google.com + chrome-signin-team@chromium.org + + Recorded when showing sign in promo in the search companion. + + + + + victorvianna@google.com + harrisonsean@chromium.org + + Recorded when showing sign in entry in the send tab to self promo. + + + + + bzanotti@chromium.org + gogerald@chromium.org + + Recorded when showing sign in entry in the settings main page. + + + + + scottyoder@google.com + bling-get-set-up@google.com + + Recorded when showing sign in that originates from the Set Up List on the + NTP. iOS only. + + + + + gogerald@chromium.org + + Recorded when showing sign in entry in the sign in promo. + + + + + gogerald@chromium.org + + Recorded when showing sign in entry in the first run experience. + + + + + bzanotti@chromium.org + + Recorded when showing sign in entry in the tab switcher. + + + + + jkrcal@chromium.org + droger@chromium.org + + Recorded when showing sign in entry in the profile creation flow (as part of + the profile picker). + + + + + Removed in M104. + msarda@chromium.org + + Recorded when the personalized sign-in promo is shown with an account in the + avatar bubble. + (signin_metrics::AccessPoint::ACCESS_POINT_AVATAR_BUBBLE_SIGN_IN). + + + + + Removed in M104. + msarda@chromium.org + + Recorded when the personalized sign-in promo is shown with an account in the + bookmark bubble. + (signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_BUBBLE). + + + + + Removed in M104. + jlebel@chromium.org + + Recorded when the personalized sign-in promo is shown with an account in the + in the bookmark manager. + (signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_MANAGER). + + + + + Removed in M104. + msarda@chromium.org + + Recorded when the personalized sign-in promo is shown with an account in the + extension install bubble. + (signin_metrics::AccessPoint::ACCESS_POINT_EXTENSION_INSTALL_BUBBLE). + + + + + Removed in M103. + jsaul@google.com + battre@chromium.org + + Recorded when the personalized sign-in promo is shown with an account in the + manage cards bubble. + (signin_metrics::AccessPoint::ACCESS_POINT_MANAGE_CARDS_BUBBLE). + + + + + Removed in M104. + bsazonov@chromium.org + + Recorded when starting sign-in using the promo view, with a default account, + from NTP content suggestions + (signin_metrics::AccessPoint::ACCESS_POINT_NTP_CONTENT_SUGGESTIONS). + + + + + Removed in M104. + mrefaat@chromium.org + sczs@chromium.org + jlebel@chromium.org + + Recorded when starting sign-in using the promo view, with a default account, + from NTP Feed top section + (signin_metrics::AccessPoint::ACCESS_POINT_NTP_FEED_TOP_PROMO). + + + + + Removed in M104. + msarda@chromium.org + + Recorded when the personalized sign-in promo is shown with an account in the + password saved bubble. + (signin_metrics::AccessPoint::ACCESS_POINT_PASSWORD_BUBBLE). + + + + + Removed in M104. + jlebel@chromium.org + + Recorded when starting sign-in using the promo view, with a default account, + from recent tabs (signin_metrics::AccessPoint::ACCESS_POINT_RECENT_TABS). + + + + + Removed in M103. + jsaul@google.com + battre@chromium.org + + Recorded when the personalized sign-in promo is shown with an account in the + save card bubble. + (signin_metrics::AccessPoint::ACCESS_POINT_SAVE_CARD_BUBBLE). + + + + + Removed in M104. + jlebel@chromium.org + + Recorded when starting sign-in using the promo view, with a default account, + from settings (signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS). + + + + + Removed in M104. + jlebel@chromium.org + + Recorded when starting sign-in using the promo view, with a default account, + from tab switcher (signin_metrics::AccessPoint::ACCESS_POINT_TAB_SWITCHER). + + + + + Removed in M104. + msarda@chromium.org + + Recorded when the personalized sign-in promo is shown with no account in the + avatar bubble. + (signin_metrics::AccessPoint::ACCESS_POINT_AVATAR_BUBBLE_SIGN_IN). + + + + + Removed in M104. + msarda@chromium.org + + Recorded when the personalized sign-in promo is shown with no account in the + bookmark bubble. + (signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_BUBBLE). + + + + + Removed in M104. + jlebel@chromium.org + + Recorded when starting sign-in using the promo view, with no default + account, from bookmarks manager + (signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_MANAGER). + + + + + Removed in M104. + msarda@chromium.org + + Recorded when the personalized sign-in promo is shown with no account in the + extension install bubble. + (signin_metrics::AccessPoint::ACCESS_POINT_EXTENSION_INSTALL_BUBBLE). + + + + + Removed in M103. + jsaul@google.com + battre@chromium.org + + Recorded when the personalized sign-in promo is shown with no account in the + manage cards bubble. + (signin_metrics::AccessPoint::ACCESS_POINT_MANAGE_CARDS_BUBBLE). + + + + + Removed in M104. + bsazonov@chromium.org + + Recorded when starting sign-in using the promo view, with no default + account, from NTP content suggestions + (signin_metrics::AccessPoint::ACCESS_POINT_NTP_CONTENT_SUGGESTIONS). + + + + + Removed in M104. + mrefaat@chromium.org + jlebel@chromium.org + sczs@chromium.org + + Recorded when starting sign-in using the promo view, with no default + account, from NTP content suggestions + (signin_metrics::AccessPoint::ACCESS_POINT_NTP_FEED_TOP_PROMO). + + + + + Removed in M104. + msarda@chromium.org + + Recorded when the personalized sign-in promo is shown with no account in the + password saved bubble. + (signin_metrics::AccessPoint::ACCESS_POINT_PASSWORD_BUBBLE). + + + + + Removed in M104. + jlebel@chromium.org + + Recorded when starting sign-in using the promo view, with no default + account, from recent tabs + (signin_metrics::AccessPoint::ACCESS_POINT_RECENT_TABS). + + + + + Removed in M103. + jsaul@google.com + battre@chromium.org + + Recorded when the personalized sign-in promo is shown with no account in the + save card bubble. + (signin_metrics::AccessPoint::ACCESS_POINT_SAVE_CARD_BUBBLE). + + + + + Removed in M104. + jlebel@chromium.org + + Recorded when starting sign-in using the promo view, with no default + account, from settings (signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS). + + + + + Removed in M104. + jlebel@chromium.org + + Recorded when starting sign-in using the promo view, with no default + account, from tab switcher + (signin_metrics::AccessPoint::ACCESS_POINT_TAB_SWITCHER). + + + + + jlebel@chromium.org + fernandex@chromium.org + msarda@chromium.org + + Recorded when the user chooses to interrupt the sign in process. It closes + the sign in page without signing the user in and opens the new flow, e.g. + when clicking 'Open in Chrome' from an app. + + + + + gogerald@chromium.org + bzanotti@chromium.org + + Recorded when the More button is shown on the sign in confirmation screen. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the user opens MyGoogleUI account details. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Recorded when the user opens MyGoogleUI activity controls. + + + + + gogerald@chromium.org + + Recorded when showing sign in enterprise account confirmation dialog. + + + + + gogerald@chromium.org + + Recorded when showing sign in import data confirmation dialog. + + + + + gogerald@chromium.org + + Recorded when showing untrusted sign in confirmation dialog. + + + + + tangltom@chromium.org + + Recorded when the user closes the tab, quits Chrome, reloads the page, etc. + during the advanced sync opt-in flow. + + + + + tangltom@chromium.org + + Recorded when the user clicks the "browser back" or the + "settings back" button to leave the sync settings page during the + advanced sync opt-in flow. + + + + + tangltom@chromium.org + + Recorded when the user hits 'Cancel' on the 'Leave site?' dialog during the + advanced sync opt-in flow. This means the user continues their sync setup. + + + + + tangltom@chromium.org + + Recorded when the user clicks the 'Cancel' button during the advanced sync + opt-in flow. + + + + + + Deprecated as the advanced settings can no longer be canceled. + + tangltom@chromium.org + + Recorded when the user clicks the 'Back' button on the 'Cancel sync?' dialog + during the advanced sync opt-in flow. + + + + + tangltom@chromium.org + + Recorded when the user clicks the 'Confirm' button during the advanced sync + opt-in flow. + + + + + tangltom@chromium.org + + Recorded when the user clicks the 'Cancel sync' button on the 'Cancel sync?' + dialog during the advanced sync opt-in flow. + + + + + jlebel@google.com + chrome-signin-team@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_ACCOUNT_CONSISTENCY_SERVICE. + + + + + + Deprecated as the apps page no longer has a sign-in link/promo. + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_APPS_PAGE_LINK. + + + + + battre@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_AUTOFILL_DROPDOWN. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_AVATAR_BUBBLE_SIGN_IN. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_BUBBLE. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_MANAGER. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_CLOUD_PRINT. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_CONTENT_AREA. + + + + + wry@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_CREATOR_FEED_FOLLOW on Android + Only. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_DEVICES_PAGE. + + + + + ewannpv@chromium.org + jlebel@chromium.org + + Recorded on sign in start from the enterprise sign out sheet. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_EXTENSION_INSTALL_BUBBLE. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_EXTENSIONS. + + + + + Deprecated as the warning dialog is no longer used. + zmin@chromium.org + + Recorded when a user signs in again from the force sign in auth error + warning modal dialog. + + + + + dgn@chromium.org + chrome-signin-team@chromium.org + + Recorded when a user taps in the sign-in promo in the Desktop First Run + Experience + + + + + bsazonov@chromium.org + jlebel@chromium.org + + Recorded when a user taps in the sign-in promo in the Google services + settings. + + + + + rogerta@chromium.org + tienmai@chromium.org + + Recorded when a user signs in using a Windows machine's logon screen. + + + + + Removed in M103. + jsaul@google.com + battre@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_MANAGE_CARDS_BUBBLE. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_MENU. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_NTP_LINK. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_NTP_CONTENT_SUGGESTIONS. + + + + + sczs@chromium.org + tinazwang@chromium.org + + A sign-in flow is shown triggered by NTP feed bottom sign-in entry point. + + + + + sczs@chromium.org + tinazwang@chromium.org + + A sign-in flow is shown triggered by NTP feed card sign-in promo UI. + + + + + jlebel@chromium.org + mrefaat@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_NTP_FEED_TOP_PROMO. + + + + + triploblastic@chromium.org + jlebel@chromium.org + + Recorded on signin start from access point + signin_metrics::AccessPoint::ACCESS_POINT_NTP_SIGNED_OUT_ICON. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_PASSWORD_BUBBLE. + + + + + scottyoder@google.com + bling-get-set-up@google.com + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_POST_DEVICE_RESTORE_SIGNIN_PROMO. + + + + + myuu@google.com + chrome-signin-team@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_READING_LIST. + + + + + jlebel@google.com + chrome-signin-team@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_REAUTH_INFO_BAR. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_RECENT_TABS. + + + + + bzanotti@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_RESIGNIN_INFOBAR. + + + + + Removed in M103. + jsaul@google.com + battre@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SAVE_CARD_BUBBLE. + + + + + shaktisahu@google.com + chrome-signin-team@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SEARCH_COMPANION. + + + + + victorvianna@google.com + harrisonsean@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SEND_TAB_TO_SELF_PROMO. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS. + + + + + scottyoder@google.com + bling-get-set-up@google.com + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SET_UP_LIST. iOS only. + + + + + alexilin@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SIGNIN_INTERCEPT_FIRST_RUN_EXPERIENCE. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SIGNIN_PROMO. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_START_PAGE. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SUPERVISED_USER. + + + + + bzanotti@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_TAB_SWITCHER. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_UNKNOWN. + + + + + Replaced by Signin_Signin_FromUnknownAccessPoint. + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_UNSPECIFIED. + + + + + gogerald@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_USER_MANAGER. + + + + + triploblastic@chromium.org + bsazonov@chromium.org + + Recorded when advanced turn on sync flow is started. + + + + + gogerald@chromium.org + Recorded when user sign in was successful. + + + + + This metric was recorded in a wrong way. Deprecated in 2021/08. + + triploblastic@chromium.org + aliceywang@chromium.org + + Recorded when wiping data during child account sign-in process. Only + recorded on Android. + + + + + triploblastic@chromium.org + aliceywang@chromium.org + + Recorded when wiping data during child account sign-in process. Only + recorded on Android. + + + + + gogerald@chromium.org + + Recorded when the user chooses advanced sync settings in the sign in succeed + confirmation dialog. + + + + + gogerald@chromium.org + + Recorded when the user chooses default sync settings in the sign in succeed + confirmation dialog. + + + + + Deprecated 08/2018 + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_AVATAR_BUBBLE_SIGN_IN, with a new + account. + + + + + Deprecated 08/2018 + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_BUBBLE, with a new + account. + + + + + Deprecated 08/2018 + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_MANAGER, with a new + account. + + + + + Deprecated 08/2018 + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_EXTENSION_INSTALL_BUBBLE, with a + new account. + + + + + Deprecated 08/2018 + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_NTP_CONTENT_SUGGESTIONS, with a + new account. + + + + + Deprecated 08/2018 + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_PASSWORD_BUBBLE, with a new + account. + + + + + Deprecated 08/2018 + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_RECENT_TABS, with a new account. + + + + + Deprecated 08/2018 + bsazonov@chromium.org + jsaul@google.com + msarda@chromium.org + sebsg@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SAVE_CARD_BUBBLE, with a new + account. + + + + + Deprecated 08/2018 + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS, with a new account. + + + + + Deprecated 08/2018 + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_TAB_SWITCHER, with a new account. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_AVATAR_BUBBLE_SIGN_IN, with a new + account, while Chrome already has other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_BUBBLE, with a new + account, while Chrome already has other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_MANAGER, with a new + account, while Chrome already has other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_EXTENSION_INSTALL_BUBBLE, with a + new account, while Chrome already has other accounts. + + + + + Removed in M103. + bsazonov@chromium.org + jsaul@google.com + msarda@chromium.org + battre@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_MANAGE_CARDS_BUBBLE, with a new + account, while Chrome already has other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_NTP_CONTENT_SUGGESTIONS, with a + new account, while Chrome already has other accounts. + + + + + Removed in M104. + mrefaat@chromium.org + jlebel@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_NTP_FEED_TOP_PROMO, with a new + account, while Chrome already has other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_PASSWORD_BUBBLE, with a new + account, while Chrome already has other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_RECENT_TABS, with a new account, + while Chrome already has other accounts. + + + + + Removed in M103. + bsazonov@chromium.org + jsaul@google.com + msarda@chromium.org + battre@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SAVE_CARD_BUBBLE, with a new + account, while Chrome already has other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS, with a new account, + while Chrome already has other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_TAB_SWITCHER, with a new account, + while Chrome already has other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_AVATAR_BUBBLE_SIGN_IN, with a new + account, while Chrome does not have other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_BUBBLE, with a new + account, while Chrome does not have other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_MANAGER, with a new + account, while Chrome does not have other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_EXTENSION_INSTALL_BUBBLE, with a + new account, while Chrome does not have other accounts. + + + + + Removed in M103. + bsazonov@chromium.org + jsaul@google.com + msarda@chromium.org + battre@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_MANAGE_CARDS_BUBBLE, with a new + account, while Chrome does not have other accounts, while Chrome does not + have other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_NTP_CONTENT_SUGGESTIONS, with a + new account, while Chrome does not have other accounts. + + + + + Removed in M104. + mrefaat@chromium.org + sczs@chromium.org + jlebel@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_NTP_FEED_TOP_PROMO, with a new + account, while Chrome does not have other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_PASSWORD_BUBBLE, with a new + account, while Chrome does not have other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_RECENT_TABS, with a new account, + while Chrome does not have other accounts. + + + + + Removed in M103. + bsazonov@chromium.org + jsaul@google.com + msarda@chromium.org + battre@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SAVE_CARD_BUBBLE, with a new + account, while Chrome does not have other accounts, while Chrome does not + have other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS, with a new account, + while Chrome does not have other accounts. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_TAB_SWITCHER, with a new account, + while Chrome does not have other accounts. + + + + + Removed M80 + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_AVATAR_BUBBLE_SIGN_IN, with a new + account, on desktop pre-Dice. + + + + + Removed M80 + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_BUBBLE, with a new + account, on desktop pre-Dice. + + + + + Removed M80 + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_MANAGER, with a new + account, on desktop pre-Dice. + + + + + Removed M80 + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_EXTENSION_INSTALL_BUBBLE, with a + new account, on desktop pre-Dice. + + + + + Removed M80 + bsazonov@chromium.org + jsaul@google.com + msarda@chromium.org + sebsg@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_MANAGE_CARDS_BUBBLE, with a new + account, while Chrome does not have other accounts, on desktop pre-Dice. + + + + + Removed M80 + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_NTP_CONTENT_SUGGESTIONS, with a + new account, on desktop pre-Dice. + + + + + Removed M80 + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_PASSWORD_BUBBLE, with a new + account, on desktop pre-Dice. + + + + + Removed M80 + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_RECENT_TABS, with a new account, + on desktop pre-Dice. + + + + + Removed M80 + bsazonov@chromium.org + jsaul@google.com + msarda@chromium.org + sebsg@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SAVE_CARD_BUBBLE, with a new + account, while Chrome does not have other accounts, on desktop pre-Dice. + + + + + Removed M80 + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS, with a new account, on + desktop pre-Dice. + + + + + Removed M80 + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_TAB_SWITCHER, with a new account, + on desktop pre-Dice. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_AVATAR_BUBBLE_SIGN_IN, using + another account than the default one. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_BUBBLE, using another + account than the default one. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_MANAGER, using another + account than the default one. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_EXTENSION_INSTALL_BUBBLE, using + another account than the default one. + + + + + Removed in M103. + jsaul@google.com + battre@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_MANAGE_CARDS_BUBBLE, using another + account than the default one. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_NTP_CONTENT_SUGGESTIONS, using + another account than the default one. + + + + + Removed in M104. + mrefaat@chromium.org + sczs@chromium.org + jlebel@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_NTP_FEED_TOP_PROMO, using another + account than the default one. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_PASSWORD_BUBBLE, using another + account than the default one. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_RECENT_TABS, using another account + than the default one. + + + + + Removed in M103. + bsazonov@chromium.org + jsaul@google.com + msarda@chromium.org + battre@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SAVE_CARD_BUBBLE, using another + account than the default one. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS, using another account + than the default one. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_TAB_SWITCHER, using another + account than the default one. + + + + + gogerald@chromium.org + Recorded when sign in page is loading. + + + + gogerald@chromium.org + Recorded when sign in page is shown. + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_AVATAR_BUBBLE_SIGN_IN, using the + default account. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_BUBBLE, using the default + account. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_BOOKMARK_MANAGER, using the + default account. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_EXTENSION_INSTALL_BUBBLE, using + the default account. + + + + + Removed in M103. + jsaul@google.com + battre@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_MANAGE_CARDS_BUBBLE, using the + default account. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_NTP_CONTENT_SUGGESTIONS, using the + default account. + + + + + Removed in M104. + mrefaat@chromium.org + sczs@chromium.org + jlebel@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_NTP_FEED_TOP_PROMO, using the + default account. + + + + + Removed in M104. + bsazonov@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_PASSWORD_BUBBLE, using the default + account. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_RECENT_TABS, using the default + account. + + + + + Removed in M103. + bsazonov@chromium.org + jsaul@google.com + msarda@chromium.org + battre@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SAVE_CARD_BUBBLE, using the + default account. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS, using the default + account. + + + + + Removed in M104. + bsazonov@chromium.org + jlebel@chromium.org + msarda@chromium.org + + Recorded on sign in start from access point + signin_metrics::AccessPoint::ACCESS_POINT_TAB_SWITCHER, using the default + account. + + + + + jlebel@chromium.org + arthurmilchior@chromium.org + + Recorded when the user signs out. Recorded for iOS only. + + + + + + Removed since M107. Renamed without _FromAccountListSettings since the + action is called from anywhere. + + jlebel@chromium.org + msarda@chromium.org + + Recorded when the user signs out from the Account list view. Recorded for + iOS only. + + + + + Removed since M85, replaced by a histogram. + droger@chromium.org + msarda@chromium.org + tangltom@chromium.org + + Recorded when the user is signed into Chrome, but not syncing, and clicks + the sign out button in the user menu. This is only recorded when Desktop + Identity Consistency is enabled. + + + + + jlebel@chromium.org + arthurmilchior@chromium.org + + Recorded when the user signs out and delete user data. Recorded for iOS + only. + + + + + + Removed since M107. Renamed without _FromAccountListSettings since the + action is called from anywhere. + + jlebel@chromium.org + msarda@chromium.org + + Recorded when the user signs out and delete user data, from the Account list + view. Recorded for iOS only. + + + + + gogerald@chromium.org + + Recorded when the user chooses to undo (abort) the sign in process. It + closes sign in page without signing user in. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + alito@chromium.org + + The user dismissed the Chrome Cleaner webui after a failed cleanup by + clicking on the 'Done' button. + + + + + alito@chromium.org + + The user dismissed the Chrome Cleaner webui after a successful cleanup by + clicking on the 'Done' button. + + + + + alito@chromium.org + + The user closed the details section of the Chrome Cleaner webui. + + + + + alito@chromium.org + + The user clicked the 'Learn more' link on the Chrome Cleaner webui. + + + + + alito@chromium.org + + The user disabled logs upload by toggling the permission checkbox in the + Chrome Cleaner webui. + + + + + alito@chromium.org + + The user enabled logs upload by toggling the permission checkbox in the + Chrome Cleaner webui. + + + + + alito@chromium.org + + The user clicked the 'Restart Computer' button in the Chrome Cleaner webui. + + + + + alito@chromium.org + + The user opened the details section of the Chrome Cleaner webui. + + + + + alito@chromium.org + The Chrome Cleaner webui was shown. + + + + alito@chromium.org + + The cleaner started the cleanup operation offered on the Chrome Cleaner + webui. + + + + + ftirelo@chromium.org + + The cleaner started the scan operation offered on the Chrome Cleaner webui. + + + + + alito@chromium.org + + The user clicked the logs upload permission checkbox and disabled logs + uploading. + + + + + alito@chromium.org + + The user clicked the logs upload permission checkbox and enabled logs + uploading. + + + + + alito@chromium.org + The user accepted the Chrome Cleaner prompt. + + + + alito@chromium.org + + The user clicked the cancel button in the Chrome Cleaner prompt dialog. + + + + + alito@chromium.org + + The Chrome Cleaner prompt dialog was closed without any user interaction. + This can happen, for example, if something goes wrong with the Chrome + Cleaner IPC or if the user interacts with the Chrome Cleaner webui page from + another browser window. + + + + + alito@chromium.org + + The user clicked the 'Details' button in the Chrome Cleaner prompt dialog. + + + + + alito@chromium.org + + The user dismissed the Chrome Cleaner prompt dialog, for example by clicking + the x in the top right corner or pressing the Escape key. + + + + + alito@chromium.org + + The Chrome Cleaner prompt dialog was shown to the user. + + + + + steimel@chromium.org + media-dev@chromium.org + + User muted all sites by changing the default sound setting from the content + settings privacy page (Desktop) or the SingleCategoryPreferences page + (Android). + + + + + steimel@chromium.org + media-dev@chromium.org + User muted site via the Page Info bubble. + + + + steimel@chromium.org + media-dev@chromium.org + + User muted site via adding/removing a pattern exception from the content + settings privacy page (Desktop) or the SingleCategoryPreferences page + (Android). + + + + + steimel@chromium.org + media-dev@chromium.org + User muted site via the site settings page. + + + + steimel@chromium.org + media-dev@chromium.org + User muted site via the tab strip. + + + + steimel@chromium.org + media-dev@chromium.org + + User unmuted all sites by changing the default sound setting from the + content settings privacy page (Desktop) or the SingleCategoryPreferences + page (Android). + + + + + steimel@chromium.org + media-dev@chromium.org + User unmuted site via the Page Info bubble. + + + + steimel@chromium.org + media-dev@chromium.org + + User unmuted site via adding/removing a pattern exception from the content + settings privacy page (Desktop) or the SingleCategoryPreferences page + (Android). + + + + + steimel@chromium.org + media-dev@chromium.org + User unmuted site via the site settings page. + + + + steimel@chromium.org + media-dev@chromium.org + User unmuted site via the tab strip. + + + + xdai@chromium.org + + Recorded when the user double tapped on the split divider to swap windows in + tablet mode on Chrome OS. + + + + + xdai@chromium.org + + Recorded when the user ended split view mode in tablet mode on Chrome OS. + + + + + amusbach@chromium.org + xdai@chromium.org + + Recorded when the number of displays in split view becomes more than one. + + + + + xdai@chromium.org + + Recorded when the user dragged the split divider to resize the windows in + tablet mode on Chrome OS. + + + + + xdai@chromium.org + + Recorded when a window was just snapped in tablet mode on Chrome OS. + + + + + michelefan@chromium.org + xdai@chromium.org + + Recorded when the user clicks on the swap windows button in the expanded + menu shown on the kebab button toggled in Chrome OS. + + + + + Deprecated 02/2017 + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + carlosil@chromium.org + + User went back after seeing the non-overridable SSL interstitial. + + + + + carlosil@chromium.org + User saw a non-overridable SSL interstitial. + + + + carlosil@chromium.org + + User went back after seeing the overridable SSL interstitial. + + + + + carlosil@chromium.org + + User proceeded through an overridable SSL interstitial. + + + + + carlosil@chromium.org + User saw an overridable SSL interstitial. + + + + tbuckley@chromium.org + + Recorded when the active tab is dragged while the tabstrip is using a + stacked layout. The user performs this action in order to view tabs which + are not currently visible within the tabstrip. Note this user action is only + recorded for platforms which use the Views toolkit. + + + + + tbuckley@chromium.org + + Recorded when the tabstrip begins using a stacked layout for its tabs. This + occurs when the user is interacting with the tabstrip using touch and there + is insufficient space to be able to display all tabs at a minimum + touch-friendly width. Note this user action is only recorded for platforms + which use the Views toolkit. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Replaced with Signin_Signin_FromBookmarkManager. + kkimlabs@google.com + + User launches Signin activity from the promo header shown in Android Stars + UI. + + + + + Removed from codebase. + kkimlabs@google.com + + User attempts to create a new account on Android Stars signin activity. + + + + + + Replaced with Signin_Signin_FromBookmarkManager when followed by + Signin_Signin_Succeed. + + kkimlabs@google.com + + User confirms an account to sign in on Android Stars signin activity. + + + + + Removed from codebase. + kkimlabs@google.com + + User dismisses the promo header shown in Android Stars UI + + + + + Replaced with Signin_Impression_FromBookmarkManager. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + gogerald@chromium.org + The start surface overview is hidden. + + + + Deprecated due to removal starting with M92. + wychen@chromium.org + + The omnibox-only start surface is shown (the user taps the tab switcher + button or on Chrome start). + + + + + gogerald@chromium.org + The start surface overview is shown. + + + + hanxi@chromium.org + andrewheard@chromium.org + + The Start surface is showing due to the user taps the back button. + + + + + + Split in StartSurface.SinglePane.Home and + StartSurface.SinglePane.Tabswitcher. + + gogerald@chromium.org + + The single-pane start surface is shown (the user taps the tab switcher + button or on Chrome start). + + + + + gogerald@chromium.org + + The single-pane home surface is shown (the user taps the home button or on + Chrome start). + + + + + gogerald@chromium.org + + The user taps the more tabs button on the single pane start surface. + + + + + gogerald@chromium.org + + The single-pane tabswitcher surface is shown (the user taps the tabswitcher + button or more tabs button). + + + + + Deprecated due to removal starting with M92. + gogerald@chromium.org + + The tasks only start surface is shown (the user taps the tab switcher button + or on chrome start). + + + + + Deprecated due to removal starting with M92. + wychen@chromium.org + yuezhanggg@chromium.org + + The trendy terms start surface is shown (the user taps the tab switcher + button or on Chrome start). + + + + + Deprecated due to removal starting with M92. + wychen@chromium.org + yuezhanggg@chromium.org + The user tapped a trendy term. + + + + Deprecated due to removal starting with M92. + gogerald@chromium.org + + The two panes start surface is shown (the user taps the tab switcher button + or on chrome start). + + + + + Deprecated due to removal starting with M92. + gogerald@chromium.org + + The user taps the explore button on the two panes start surface. + + + + + Deprecated due to removal starting with M92. + gogerald@chromium.org + + The user taps the home button on the two panes start surface + + + + + Deprecated due to removal starting with M92. + gogerald@chromium.org + + The two panes start surface is shown with explore surface visible by + default. + + + + + Deprecated due to removal starting with M92. + gogerald@chromium.org + + The two panes start surface is shown with home surface visible by default. + + + + + Deprecated in favor of AboutFlags.Seen histogram. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + aaronyu@google.com + judyhsiao@google.com + chromeos-audio-sw@google.com + + The user overrode the automatically selected audio input device. + + + + + aaronyu@google.com + judyhsiao@google.com + chromeos-audio-sw@google.com + + The user overrode the automatically selected audio output device. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Replaced with "Ash.QuickSettings.Slider.{SliderBehavior}" in ash, + 09/2022. + + tetsui@chromium.org + User muted audio from the button in SystemTray. + + + + judyhsiao@google.com + aaronyu@google.com + chromeos-audio-sw@google.com + + User selected an audio input device from the SystemTray. + + + + + judyhsiao@google.com + aaronyu@google.com + chromeos-audio-sw@google.com + + User selected an audio output device from the SystemTray. + + + + + + Replaced with "Ash.QuickSettings.Slider.{SliderBehavior}" in ash, + 09/2022. + + tetsui@chromium.org + User unmuted audio from the button in SystemTray. + + + + katie@chromium.org + dtseng@chromium.org + User disabled autoclick from the SystemTray + + + + katie@chromium.org + dtseng@chromium.org + User enabled autoclick from the SystemTray + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Replaced with Ash.QuickSettings.Slider.{SliderBehavior} on 10/2022. + + jamescook@chromium.org + + Recorded when the screen brightness changes, for any reason (including both + UI actions and non-UI actions). + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + minch@chromium.org + + Ash system menu: Accessibility: Disable caret highlighting + + + + + minch@chromium.org + + Ash system menu: Accessibility: Enable caret highlighting + + + + + jdufault@chromium.org + + Counts the number of times the user has clicked on the "Cast desktop + to" status tray item and is now in the detail view to select a cast + receiver. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + jdufault@chromium.org + + Counts the number of times the user has initiated a cast from the system + tray. This does not mean the cast has actually begun, as the user still has + to select what to cast (ie, the desktop or a tab) and they may cancel the + process. + + + + + jdufault@chromium.org + + Counts the number of times the user has stopped a cast from the system tray. + + + + + anastasi@google.com + Ash system menu: Accessibility: Disable Dictation. + + + + anastasi@google.com + Ash system menu: Accessibility: Enable Dictation. + + + + Deprecated 10/2022. No longer needed. + tbuckley@chromium.org + + Counts the number of times the user selects the display row in the system + menu. This action does not always open the display settings, e.g. if the row + is slected from the lock screen. Use the + StatusArea_Display_Default_ShowSettings metric to see how often the settings + are actually launched. + + + + + Deprecated 10/2022. No longer needed. + tbuckley@chromium.org + + Counts the number of times the display settings are opened as a result of + the user selecting the display row in the system menu. + + + + + Deprecated 10/2022. No longer needed. + tbuckley@chromium.org + + Counts the number of times a new display notification is added to the + notification center. + + + + + Deprecated 10/2022. No longer needed. + tbuckley@chromium.org + + Counts the number of times the user selects the display notification. This + action does not always open the display settings, e.g. if the notification + is selected from the lock screen. Use the + StatusArea_Display_Notification_Show_Settings metric to see how often the + settings are actually launched. Note these notifications are managed by the + notification center. + + + + + Deprecated 10/2022. No longer needed. + tbuckley@chromium.org + + Counts the number of times the display settings are opened as a result of + the user selecting the display notification. Note these notifications are + managed by the notification center. + + + + + afakhry@chromium.org + + The user disabled the Docked Magnifier from the accessibility menu in the + system tray. + + + + + afakhry@chromium.org + + The user enabled the Docked Magnifier from the accessibility menu in the + system tray. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + minch@chromium.org + + Ash system menu: Accessibility: Disable keyboard focus highlighting + + + + + minch@chromium.org + + Ash system menu: Accessibility: Enable keyboard focus highlighting + + + + + minch@chromium.org + + Ash system menu: Accessibility: Disable mouse cursor highlighting + + + + + minch@chromium.org + + Ash system menu: Accessibility: Enable mouse cursor highlighting + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + abigailbklein@google.com + + Ash system menu: Accessibility: Disable Live Caption + + + + + abigailbklein@google.com + Ash system menu: Accessibility: Enable Live Caption + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Replaced with "Ash.QuickSettings.Slider.{SliderBehavior}" in ash, + 09/2022. + + amehfooz@chromium.org tengs@chromium.org + + The user changed the slider for mic gain in the audio detailed view. + + + + + + Replaced with "Ash.QuickSettings.Slider.{SliderBehavior}" in ash, + 09/2022. + + amehfooz@chromium.org tengs@chromium.org + + The user muted the mic by pressing the mic mute button. + + + + + + Replaced with "Ash.QuickSettings.Slider.{SliderBehavior}" in ash, + 09/2022. + + amehfooz@chromium.org tengs@chromium.org + + The user unmuted the mic by pressing the mic mute button + + + + + minch@chromium.org + Ash system menu: Accessibility: Disable mono audio + + + + minch@chromium.org + Ash system menu: Accessibility: Enable mono audio + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + tetsui@chromium.org + + User disabled NightLight from the feature button in the system menu. + + + + + tetsui@chromium.org + + User enabled NightLight from the feature button in the system menu. + + + + + tetsui@chromium.org + + User opened NightLight WebUI settings from the feature button in the system + menu. + + + + + + Deprecated in favour of StatusArea_Notifications_StackingBarClearAll. + + tetsui@chromium.org + + User removed all notifications using the bottom Clear All button in the + system menu. This button, which no longer exists, was located on the bottom + of the notification list. + + + + + amehfooz@chromium.org + + User expanded the message center by clicking on the see all notifications + button in the system menu. + + + + + tengs@chromium.org + + User removed all notifications using the top Clear All button in the system + menu. + + + + + tbuckley@chromium.org + + Counts the number of times the user selects the update row in the system + menu. + + + + + tetsui@chromium.org + + User disabled Quiet Mode (Do not disturb) from the feature button in the + system menu. + + + + + tetsui@chromium.org + + User enabled Quiet Mode (Do not disturb) from the feature button in the + system menu. + + + + + braveyao@chromium.org + niklase@chromium.org + + Counts the number of times the user changes screen capture source via the + Screen Capture notification. Note these notifications are managed by the + system menu and not the general notification center. + + + + + Deprecated 10/2022. No longer needed. + tbuckley@chromium.org + + Counts the number of times the user stops screen capturing via the screen + capture row in the system menu. + + + + + Deprecated 10/2022. No longer needed. + tbuckley@chromium.org + + Counts the number of times the user stops screen capturing via the Screen + Capture notification. Note these notifications are managed by the system + menu and not the general notification center. + + + + + katie@chromium.org + + Ash system menu: Accessibility: Disable Select-to-Speak. + + + + + katie@chromium.org + + Ash system menu: Accessibility: Enable Select-to-Speak. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Not recorded as of 10/2022. It's unclear when the recording code was + deleted. + + tbuckley@chromium.org + + Counts the number of times the user has opened the "SMS messages " + detailed view in the system menu. + + + + + + Not recorded as of 10/2022. It's unclear when the recording code was + deleted. + + tbuckley@chromium.org + + Counts the number of times the user has dismissed an SMS message from the + SMS message detailed view in the system menu. + + + + + + Not recorded as of 10/2022. It's unclear when the recording code was + deleted. + + tbuckley@chromium.org + + Counts the number of times the user has dismissed an SMS message + notification. Note these notifications are managed by the system menu and + not the general notification center. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + minch@chromium.org + Ash system menu: Accessibility: Disable sticky keys + + + + minch@chromium.org + Ash system menu: Accessibility: Enable sticky keys + + + + anastasi@google.com + dtseng@chromium.org + + Ash system menu: Accessibility: Disable Switch Access + + + + + anastasi@google.com + dtseng@chromium.org + + Ash system menu: Accessibility: Enable Switch Access + + + + + Tap dragging removed from status area menu 03/2018. + minch@chromium.org + + Ash system menu: Accessibility: Disable tap dragging + + + + + Tap dragging removed from status area menu 03/2018. + minch@chromium.org + Ash system menu: Accessibility: Enable tap dragging + + + + Deprecated 10/2022. No longer needed. + tbuckley@chromium.org + + Counts the number of times the user selects the tracing row in the system + menu. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Replaced with "Ash.QuickSettings.Slider.{SliderBehavior}" in ash, + 09/2022. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + bartfab@chromium.org + + Indicates that the user requested that the built-in dialog for adding an + OpenVPN or L2TP VPN be shown via the ash UI. + + + + + bartfab@chromium.org + + Indicates that the user requested that the "add network" dialog + for a third-party VPN be shown via the ash UI. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + bartfab@chromium.org + + Indicates that the user disconnected from a VPN via the ash UI. + + + + + Replaced by StatusArea_VPN_AddBuiltIn. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + peconn@chromium.org + + User dismissed all cards and was not able to get any more suggestions + resulting in the All Dismissed State. Only records for users with Chrome + Home enabled. + + + + + Removed with removal of Zine code in April 2020. + finkm@chromium.org + dgn@chromium.org + + User tapped on a card's button in the content suggestions UI. + + + + + finkm@chromium.org + dgn@chromium.org + + User swiped a card away in the content suggestions UI. + + + + + finkm@chromium.org + dgn@chromium.org + + User tapped on a card in the content suggestions UI. + + + + + finkm@chromium.org + dgn@chromium.org + User dismissed a content suggestions category. + + + + finkm@chromium.org + dgn@chromium.org + User requested fetching more content suggestions. + + + + + Removed with deprecation of Download suggestions category. + + finkm@chromium.org + dgn@chromium.org + + User navigated to the complete view of a content suggestions section. + + + + + finkm@chromium.org + dgn@chromium.org + User dismissed a content suggestion. + + + + finkm@chromium.org + dgn@chromium.org + chrome-analysis-team@google.com + + User opened a content suggestion. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + mvanouwerkerk@chromium.org + galinap@google.com + + Android: User used the context menu to download a suggested item on the new + tab page. + + + + + + Deprecated with new contextual suggestions implementation. + + dgn@chromium.org + galinap@google.com + + Android: The contextual suggestions carousel in Chrome Home was scrolled by + the user. + + + + + + Deprecated with new contextual suggestions implementation. + + dgn@chromium.org + galinap@google.com + + Android: The contextual suggestions carousel in Chrome Home was shown to the + user. + + + + + + Deprecated with new contextual suggestions implementation. + + dgn@chromium.org + galinap@google.com + + Android: A contextual suggestion in the carousel in Chrome Home was opened + by the user. + + + + + twellington@chromium.org + clank-app-team@google.com + + The suggestions section is collapsed through the section header. + + + + + twellington@chromium.org + clank-app-team@google.com + + The suggestions section is expanded through the section header. + + + + + finkm@chromium.org + dgn@chromium.org + + Recorded right before Suggestions.SurfaceVisible when this is the first time + a suggestions surface is made visible to the user on that device. + + + + + dgn@chromium.org + finkm@chromium.org + + Android: Recorded the first time the user scrolls after opening the + suggestions UI. + + + + + finkm@chromium.org + dgn@chromium.org + User reverted the removal of a suggested site. + + + + finkm@chromium.org + dgn@chromium.org + User removed a suggested site. + + + + Deprecated with Chrome Home ramp down. + finkm@chromium.org + dgn@chromium.org + + ChromeHome: The Suggestion surface is loaded or brought in the foreground in + its fully visible state. In regular Chrome, MobileNTPShown is the + equivalent. + + + + + Deprecated with Chrome Home ramp down. + finkm@chromium.org + dgn@chromium.org + + ChromeHome: The Suggestion surface is loaded or brought in the foreground in + its half visible state. In regular Chrome, MobileNTPShown is the equivalent. + + + + + finkm@chromium.org + dgn@chromium.org + User closed the content suggestions UI. + + + + finkm@chromium.org + dgn@chromium.org + User opened the content suggestions UI. + + + + + Deprecated as of 05/2017. Now recorded as + "Suggestions.Site.RemovalUndone". + + mvanouwerkerk@chromium.org + galinap@google.com + + Android: User tapped the undo button in the snackbar after removing a + suggested item. + + + + + finkm@chromium.org + dgn@chromium.org + + User tapped on a tile in the content suggestions UI. + + + + + + From 04/2021 use Suggestions.Tile.Tapped.StartSurface instead. + + mattsimmons@chromium.org + memex-team@google.com + + User tapped on a suggestions tile while viewing the tab switcher. + Android-only. + + + + + hanxi@chromium.org + xinyiji@chromium.org + clank-start@google.com + + User tapped on a suggestions tile while viewing the new tab page. This is + recorded when 1) user clicks on most visited tiles; 2) long press on most + visited tiles to open in a new incognito tab. This is consistent with + Suggestions.Tile.Tapped.StartSurface on Start Surface. Android-only. + + + + + hanxi@chromium.org + xinyiji@chromium.org + clank-start@google.com + + User tapped on a suggestions tile while viewing the start surface. This is + recorded when 1) user clicks on most visited tiles; 2) long press on most + visited tiles to open in a new incognito tab. This is consistent with + Suggestions.Tile.Tapped.NewTabPage on NTP. Android-only. + + + + + tobyhuang@chromium.org + agawronska@chromium.org + danan@chromium.org + cros-families@google.com + + Emitted when the custodian locally approves the supervised user's request to + install an extension by entering the custodian's password. + + + + + tobyhuang@chromium.org + agawronska@chromium.org + danan@chromium.org + cros-families@google.com + + Emitted when the supervised user removes an extension. + + + + + tobyhuang@chromium.org + agawronska@chromium.org + danan@chromium.org + cros-families@google.com + + Emitted when a supervised user successfully disables an extension. + + + + + tobyhuang@chromium.org + agawronska@chromium.org + danan@chromium.org + cros-families@google.com + + Emitted when a supervised user successfully enables an extension. + + + + + tobyhuang@chromium.org + agawronska@chromium.org + danan@chromium.org + cros-families@google.com + + Emitted when a supervised user clicks "Ask a parent" on the + Extension Install Dialog. + + + + + tobyhuang@chromium.org + agawronska@chromium.org + danan@chromium.org + cros-families@google.com + + Emitted when a supervised user clicks "Cancel" on the Extension + Install Dialog. + + + + + tobyhuang@chromium.org + agawronska@chromium.org + danan@chromium.org + cros-families@google.com + + Emitted when a supervised user tries to install an extension from the Chrome + Web Store and opens the Extension Install Dialog. + + + + + tobyhuang@chromium.org + agawronska@chromium.org + danan@chromium.org + cros-families@google.com + + Emmitted when a supervised user tries to enable a force-disabled extension + and fails. + + + + + Renamed to SupervisedUsers_Extensions_ApprovalGranted. + tobyhuang@chromium.org + agawronska@chromium.org + danan@chromium.org + cros-families@google.com + + Emitted when the custodian locally approves the supervised user's request to + install an extension by entering the custodian's password. + + + + + + Renamed to SupervisedUsers_Extensions_PermissionsIncreaseGranted. + + tobyhuang@chromium.org + agawronska@chromium.org + danan@chromium.org + cros-families@google.com + + Emitted when the supervised user approves a new version of an existing + extension. + + + + + tobyhuang@chromium.org + agawronska@chromium.org + danan@chromium.org + cros-families@google.com + + Emitted when a supervised user tries to enable an extension that requires + parent approval, and opens the Parent Permission Dialog. + + + + + tobyhuang@chromium.org + agawronska@chromium.org + danan@chromium.org + cros-families@google.com + + Emitted when a parent successfully types their password and approves the + extension on the Parent Permission Dialog. + + + + + tobyhuang@chromium.org + agawronska@chromium.org + danan@chromium.org + cros-families@google.com + + Emitted when a parent cancels the Parent Permission Dialog, denying the + supervised user's attempt to enable an extension. + + + + + tobyhuang@chromium.org + agawronska@chromium.org + danan@chromium.org + cros-families@google.com + + Emitted when the supervised user approves a new version of an existing + extension with increased permissions. + + + + + Renamed to SupervisedUsers_Extensions_ApprovalRemoved. + tobyhuang@chromium.org + agawronska@chromium.org + danan@chromium.org + cros-families@google.com + + Emitted when the supervised user removes an extension. + + + + + cros-families-eng@google.com + agawronska@chromium.org + lienhoang@chromium.org + + Recorded when the supervised user clicks on a remote web approval + notification. + + + + + cros-families-eng@google.com + agawronska@chromium.org + lienhoang@chromium.org + + Recorded when a remote web approval notification is shown to a supervised + user. + + + + + finnur@chromium.org + Please enter the description of this user action. + + + + tbuckley@chromium.org + + Recorded when the user switches tabs with a mouse click. This user action is + only recorded on platforms which use the Views toolkit. + + + + + msalama@chromium.org + chrome-signin-team@google.com + + The user selected to customize sync from + chrome://settings/syncSetup/advanced. + + + + + + Deprecated as of 03/2020. Navigation to settings routes are recorded in + WebUI.Settings.PathVisited histogram. + + msalama@chromium.org + chrome-signin-team@google.com + + The user has navigated to the sync advanced settings page + chrome://settings/syncSetup/advanced. + + + + + msalama@chromium.org + chrome-signin-team@google.com + + The user has clicked on the history usage row in chrome://settings/syncSetup + to open Activity controls page. + + + + + msalama@chromium.org + chrome-signin-team@google.com + + The user has clicked on save in the encryption option section from + chrome://settings/syncSetup to encrypt the data with a custom passphrase. + + + + + msalama@chromium.org + chrome-signin-team@google.com + + The user selected sync everything from chrome://settings/syncSetup/advanced. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + triploblastic@google.com + msarda@chromium.org + + Used clicked 'Manage your Google Account' in sync and google services menu + in android. + + + + + lazzzis@google.com + + The user triggered system back **after** Native is initialized. This action + is mutually exclusive with SystemBackBeforeNativeInitialized. Android only. + + + + + lazzzis@google.com + + The user triggered system back **before** Native is initialized. This action + is mutually exclusive with SystemBack. Android only. + + + + + lazzzis@google.com + + The user triggered system back **before UI** with Native is initialized. + Recorded on Android only. + + + + + + Deprecated as of 02/2016. Now recorded in the histogram + "Android.Activity.ChromeTabbedActivity.SystemBackAction". + + dfalcantara@chromium.org + + The user navigated backward in the tab's history using the system back + button. + + + + + lazzzis@google.com + + The user triggered system back when activity is finishing or has been + destroyed. Android only. + + + + + petewil@chromium.org + + Recorded when the user takes a screenshot of a chrome tab. + + + + + sebsg@chromium.org + + Recorded when the user takes a screenshot of a chrome tab when chrome + doesn't have storage permissions. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + miu@chromium.org + + User clicked the tab alert indicator; this will have no effect. + + + + + bsep@google.com + tbergquist@google.com + chrome-desktop-ui-sea@google.com + + User selected an entry in the Add to existing group submenu from the tab + context menu. + + + + + lgrey@chromium.org + chrome-desktop-ui-sea@google.com + + User selected an entry in the Move Tab to Existing Window submenu from the + tab context menu. + + + + + bsep@google.com + tbergquist@google.com + chrome-desktop-ui-sea@google.com + + User selected Add to new group from the tab context menu. + + + + + Deprecated due to removal. + wittman@chromium.org + + User selected Bookmark All Tabs from the tab context menu. + + + + + tbergquist@chromium.org + chrome-desktop-ui-sea@google.com + + User selected Close Other Tabs from the tab context menu. Temporarily + removed in M78. + + + + + tbergquist@chromium.org + chrome-desktop-ui-sea@google.com + User selected Close Tabs from tab context menu. + + + + Could not find traces of this used in code. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + tbergquist@chromium.org + chrome-desktop-ui-sea@google.com + + User selected Close Tabs to the Right from tab context menu. + + + + + Could not find traces of this used in code. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + loubrett@google.com + desktop-pwas-team@google.com + User selected Copy URL from tab context menu. + + + + tbergquist@chromium.org + chrome-desktop-ui-sea@google.com + User selected Duplicate from tab context menu. + + + + dfried@chromium.org + yiningwang@google.com + chrome-desktop-ui-sea@google.com + + User selected Focus This Tab from the tab context menu. + + + + + lgrey@chromium.org + chrome-desktop-ui-sea@google.com + + User selected Move Tab to New Window from the tab context menu. + + + + + miu@chromium.org + + User muted one or more tabs via the tab context menu. + + + + + tbergquist@chromium.org + chrome-desktop-ui-sea@google.com + + User selected New Tab to the Right from the tabstrip context menu. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + User added a tab to an existing group by choosing 'Add to existing group' + from the tabstrip context menu. + + + + + Could not find traces of this used in code. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Could not find traces of this used in code. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + tbergquist@chromium.org + chrome-desktop-ui-sea@google.com + User selected Reload from tab context menu. + + + + bsep@google.com + tbergquist@google.com + chrome-desktop-ui-sea@google.com + + User selected Remove from group from the tab context menu. + + + + + Deprecated due to removal. + mpearson@chromium.org + chrisha@chromium.org + + Emitted when the user uses the tab strip context menu and selects + "Reopen Closed Tab". This interaction also causes the user action + RestoreTab to be emitted. + + Note: if the last user action was to close an entire window with multiple + tabs, this "Reopen Closed Tab" action will cause the entire window + to be restored, containing multiple tabs. This user action is only emitted + once however, regardless of the number of tabs. + + + + + Deprecated because of using histogram. + jeffreycohen@chromium.org + sebsg@chromium.org + + User send current tab to other synced devices by clicking on the option in + the tab strip menu. + + + + + Deprecated because of using histogram. + jeffreycohen@chromium.org + sebsg@chromium.org + Self share option shows in the tab context menu. + + + + + Deprecated since SendTabToSelf is collecting two kinds of metrics (shown and + cliked). + + jeffreycohen@chromium.org + sebsg@chromium.org + + User send current tab to other synced devices by clicking on the option in + the tab strip menu. + + + + + tbergquist@chromium.org + chrome-desktop-ui-sea@google.com + User selected Pin/Unpin from tab context menu. + + + + miu@chromium.org + + User unmuted one or more tabs via the tab context menu. + + + + + Could not find traces of this used in code. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Could not find traces of this used in code. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Could not find traces of this used in code. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + yusufo@chromium.org + wychen@chromium.org + + User reordered tabs in grid layout in accessibility mode. + + + + + yusufo@chromium.org + wychen@chromium.org + User drags a tab to reorder it. + + + + + Deprecated as of 6/2019. Replaced with TabGrid.Drag.Reordered. + + yusufo@chromium.org + wychen@chromium.org + User drags a tab to reorder it. + + + + yusufo@chromium.org + wychen@chromium.org + + User tapped on the search term chip on a tab card in the TabGrid. + + + + + yusufo@chromium.org + wychen@chromium.org + User took an action on the TabGridDialog. + + + + + Deprecated as of 8/2019. Replaced with TabGrid.Drag.RemoveFromGroup. + + yusufo@chromium.org + wychen@chromium.org + + User drags a tab in tab grid dialog and drops it on the ungroup bar to move + the tab out of the group. + + + + + Deprecated as of 11/2019. Sheet UI is no longer used. + yusufo@chromium.org + wychen@chromium.org + + User undoes the closed tab that was closed from tab grid sheet. + + + + + yusufo@chromium.org + wychen@chromium.org + Users created a new tab group. + + + + yusufo@chromium.org + wychen@chromium.org + + Users tapped "^" button on the tab strip, causing tab group + component to be shown. + + + + + yusufo@chromium.org + wychen@chromium.org + + Users tapped "v" button on tab group bottom sheet toolbar, causing + tab group bottom sheet to be hidden. + + + + + + This action no longer occurs as of 11/2022. Tab groups can always collapse. + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + User clicked on the tab group header of the last expanded tab group. This + user action means there are no more available tabs so the user saw a no-op. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + User switched to a tab that belongs in a group. + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + User closed a group by choosing 'Close group' from the tab group editor + bubble. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + User changed the color of a group through the color picker in the tab group + editor bubble. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + User saved an existing tab group by switching the toggle to the right next + to 'Save group' from the tab group editor bubble. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + User unsaved an existing tab group by switching the toggle to the left next + to 'Save group' from the tab group editor bubble. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + User changed the name of a group through the editor bubble. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + User added a new tab to an existing group by choosing 'New tab in group' + from the tab group editor bubble. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + User opened the feedback app by choosing 'Send feedback' from the tab group + editor bubble. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + User removed all tabs in a group from that group by choosing 'Ungroup' from + the tab group editor bubble. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + User clicked on the tab group header of an expanded tab group to collapse + the group. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + User clicked on the tab group header of a collapsed tab group to expand the + group. + + + + + minch@chromium.org + + User dragged a window from top in tablet mode and opened overview behind. + + + + + sammiequon@chromium.org + + User tapped the shelf back button in tablet mode on Chrome OS. + + + + + xdai@chromium.org + + Recorded when the user long pressed the overview button to enter split view + in tablet mode on Chrome OS. + + + + + xdai@chromium.org + + Recorded when the user long pressed the overview button to exit split view + in tablet mode on Chrome OS. + + + + + sammiequon@chromium.org + + User double tapped the overview button in tablet mode on Chrome OS, which + quick switches the current application. + + + + + xdai@chromium.org + + User closed the window through the close button in the caption area in + tablet mode on Chrome OS. + + + + + xdai@chromium.org + + User closed the window through the shelf context menu in tablet mode on + Chrome OS. + + + + + xdai@chromium.org + + User closed the window through the close button in overview mode in tablet + mode on Chrome OS. + + + + + gauravjj@google.com + skavuluru@google.com + twellington@chromium.org + clank-large-form-factors@google.com + + User clicked on the undo close tab snackbar to undo a tab closure on tablet + done from the tab strip. This does not include undo tab closures from the + grid tab switcher. + + + + + Replaced with "TabAlertIndicator_Clicked". + miu@chromium.org + + User clicked the tab media indicator; this will have no effect. + + + + + yusufo@chromium.org + wychen@chromium.org + User took an action on the TabSelectionEditor. + + + + ckitagawa@chromium.org + bjfong@google.com + User took an action on the TabSelectionEditorV2. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + michaeldo@chromium.org + mrefaat@chromium.org + + The user tapped the suggested search action to search open tabs for the + entered search term. + + + + + michaeldo@chromium.org + mrefaat@chromium.org + + The user tapped the suggested search action to search recent tabs for the + entered search term. + + + + + michaeldo@chromium.org + mrefaat@chromium.org + + The user tapped the suggested search action to search the user's history for + the entered search term. + + + + + michaeldo@chromium.org + mrefaat@chromium.org + + The user tapped the suggested search action to search on the web for the + entered search term. + + + + + + This is renamed to TabSuggestions.Considered.Accepted.Closing on 07/2020. + + yusufo@chromium.org + davidjm@chromium.org + + The tab close suggestions were considered and accepted by the user (with + some possible editing). + + + + + + This is renamed to TabSuggestions.Considered.Dismissed.Closing on 07/2020. + + yusufo@chromium.org + davidjm@chromium.org + + The tab close suggestions were considered and dismissed by the user (with + some possible editing). + + + + + This is removed as 07/2020. + yusufo@chromium.org + davidjm@chromium.org + + The tab close suggestions were considered by the user by following through + the tab suggestions offered in the snackbar. + + + + + + This is renamed to TabsSuggestions.NotConsidered.Closing on 07/2020. + + yusufo@chromium.org + davidjm@chromium.org + + The tab close suggestions were not considered at all by the user by + dismissing the snackbar indicating tab suggestions are available. + + + + + yusufo@chromium.org + davidjm@chromium.org + meiliang@chromium.org + + The tab suggestions were considered and accepted by the user (with some + possible editing). + + + + + yusufo@chromium.org + davidjm@chromium.org + meiliang@chromiu.org + + The tab suggestions were considered and dismissed by the user (with some + possible editing). + + + + + yusufo@chromium.org + davidjm@chromium.org + meiliang@chromium.org + + The tab suggestions were not considered at all by the user by dismissing the + tab suggestion card indicating tab suggestions are available. + + + + + The feature was deprecated and code deleted. + yusufo@chromium.org + wychen@chromium.org + User actions about conditional tab strip. + + + + The feature was deprecated and code deleted. + yusufo@chromium.org + wychen@chromium.org + + Records the visibility of conditional tab strip when Chrome on Android shows + in the foreground. + + + + + yusufo@chromium.org + wychen@chromium.org + + User undoes the closed tab that was closed from tab strip. + + + + + The button option was removed and code deleted. + dfalcantara@chromium.org + + User hit the "Open in Chrome" action button. + + + + + The button option was removed and code deleted. + dfalcantara@chromium.org + + User hit the "X" button to close the tab. The return button is an + explicit "close this tab and return to the previous app" button + that may appear to the left of the Omnibox. This is different from regular + tab closing buttons because those doesn't send the user back to the previous + app. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + yusuyoutube@google.com + benwgold@google.com + fgorski@chromium.org + wylieb@chromium.org + lens-chrome@google.com + + Recorded when the user taps the Lens button in the fake box on the tasks + surface on Android. + + + + + yusuyoutube@google.com + benwgold@google.com + fgorski@chromium.org + wylieb@chromium.org + lens-chrome@google.com + + Recorded when the Lens button is shown in the fake box on the tasks surface + on Android. + + + + + gogerald@chromium.org + + Recorded when the user long pressed the fake box on the tasks surface. + + + + + gogerald@chromium.org + + Recorded when the user taps the fake box on the tasks surface. + + + + + gogerald@chromium.org + + Recorded when the user taps the voice search button in the fake box on the + tasks surface. + + + + + alancutter@chromium.org + calamity@chromium.org + joelhockey@chromium.org + + User clicked on the terminal system app menu button. Chrome OS only. + + + + + + Replaced in 1/2018 with bad_message::WCI_NEW_WIDGET_PROCESS_MISMATCH. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + tmartino@chromium.org + eic@chromium.org + + The user selected the "Learn more" option in the Text Fragments + popup menu. + + + + + tmartino@chromium.org + eic@chromium.org + + The user tapped on a highlighted text fragment, opening the popup menu with + additional options. + + + + + tmartino@chromium.org + eic@chromium.org + + The user removed a highlighted text fragment from the page using the popup + menu. + + + + + tmartino@chromium.org + eic@chromium.org + + The user selected the "Share Highlight" option in the Text + Fragments popup menu. + + + + + mvanouwerkerk@chromium.org + wbjacksonjr@chromium.org + The text selection changed. + + + + dtseng@chromium.org + Synthesized speech is paused. + + + + dtseng@chromium.org + Synthesized speech is resumed after being paused. + + + + dtseng@chromium.org + + A single utterance is spoken using synthesized text-to-speech. + + + + + dtseng@chromium.org + Synthesized speech is stopped. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Deprecated. Replaced by the Privacy.ThirdPartyCookieBlockingSetting + histogram. + + msramek@chromium.org + + Recorded on Profile startup if the third party cookie blocking is disabled. + + + + + + Deprecated. Replaced by the Privacy.ThirdPartyCookieBlockingSetting + histogram. + + msramek@chromium.org + + Recorded on Profile startup if the third party cookie blocking is disabled. + + + + + + Deprecated. Replaced by IOS.SearchExtension.Action histogram. + + olivierrobin@chromium.org + Dismissed the Chrome Today extension. + + + + + Deprecated. Replaced by IOS.SearchExtension.Action histogram. + + olivierrobin@chromium.org + + Displayed the notification center and display the Chrome Today extension. + + + + + + Deprecated. Replaced by IOS.SearchExtension.Action histogram. + + olivierrobin@chromium.org + + Displayed the notification center and initialize the Chrome Today extension. + + + + + + Deprecated. Replaced by IOS.SearchExtension.Action histogram. + + olivierrobin@chromium.org + + Tapped on the "New Tab" button in the Chrome Today extension. + + + + + + Deprecated. Replaced by IOS.SearchExtension.Action histogram. + + olivierrobin@chromium.org + + Tapped on the "Open Copied Link" button in the Chrome Today + extension. + + + + + + Obsolete 4/2018, Physical Web is disabled (crbug.com/826540). + + olivierrobin@chromium.org + + Tapped on physical web URL in the Chrome Today extension. + + + + + + Deprecated. Replaced by IOS.SearchExtension.Action histogram. + + olivierrobin@chromium.org + + Tapped on the "Voice Search" button in the Chrome Today extension. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + yangguo@chromium.org + bmeurer@chromium.org + Please enter the description of this user action. + + + + yangguo@chromium.org + bmeurer@chromium.org + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dfried@chromium.org + chrome-analysis-team@google.com + + The user opened a bookmark from the application menu at the top of the + screen on, for example, MacOS. Distinguished from launching from the + wrench/app menu or the bookmarks bar. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + dfried@chromium.org + chrome-analysis-team@google.com + + The user opened a link from the Recently Closed section in the application + menu at the top of the screen on macOS. Distinguished from launching from + the wrench/app menu. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + dfried@chromium.org + chrome-analysis-team@google.com + + The user opened a link from the Recently Visited section in the application + menu at the top of the screen on macOS. Distinguished from launching from + the wrench/app menu. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + collinbaker@chromium.org + chrome-desktop-ui@google.com + + The user switched away from primarily using touch input or the browser + started in non-touch mode. + + + + + collinbaker@chromium.org + chrome-desktop-ui@google.com + + The user switched to primarily using touch input or the browser started in + touch mode. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Not needed as of 05/2018 since performance metrics for ScrollBegin show the + frequency of GSBs. + + tdresser@chromium.org + + Logged at the beginning of touchscreen based scrolling. In M56 and earlier, + was logged at begin, update, and end events for touchscreen scrolling. + + + + + tdresser@chromium.org + Logged on an ET_SCROLL_FLING_START gesture event. + + + + tbuckley@chromium.org + Recorded when a user exits TouchView mode. + + + + tbuckley@chromium.org + Recorded when a user enters TouchView mode. + + + + tbuckley@chromium.org + + Recorded when the Touchview controller is initialized such that TouchView + mode is disabled initially. + + + + + + Not needed as of 05/2018 since performance metrics for ScrollBegin show the + frequency of GSBs. + + tdresser@chromium.org + + Logged on trackpad scroll events. Logging was removed in M57, because it + caused too many events. + + + + + tdresser@chromium.org + Logged on an ET_SCROLL_FLING_START scroll event. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + omrilio@chromium.org + minch@chromium.org + + Counts the number of times the ime menu in shelf was opened. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + afakhry@chromium.org + + Records when the user toggles the Night Light feature on/off. + + + + + tbuckley@chromium.org + + Records when the user presses the overview mode button in the Ash system + tray. Overview mode is a feature of Ash that shows thumbnails of all + currently-open windows. + + + + + tbuckley@chromium.org + + Records when the Settings button on the Ash system menu is clicked. + + + + + rtinkoff@chromium.org + cros-status-area-eng@google.com + + Records when the channel indicator icon is displayed in the system tray. + This is ChromeOS-specific. + + + + + rtinkoff@chromium.org + cros-status-area-eng@google.com + + Records when the user presses the OS version button from the quick settings + channel indicator UI. This is ChromeOS-specific. + + + + + michaelpg@chromium.org + + Settings opened to the Power overlay from the system tray. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + afakhry@chromium.org + sammiequon@chromium.org + + Records when the user presses the stop recording button in the Ash system + tray to stop the current screen recording session. + + + + + + No longer needed since swipe on the tray bubble to close it has been + disabled and unified system tray has been launched. + + omrilio@chromium.org + minch@chromium.org + + Records when the user swipes on the tray bubble (ImeTrayBubble, + SystemTrayBubble, WebNotificationTrayBubble, PaletteTrayBubble) in an + attempt to close it and succeeded ultimately. + + + + + + No longer needed since swipe on the tray bubble to close has been disabled + and unified system tray has been launched. + + omrilio@chromium.org + minch@chromium.org + + Records when the user swipes on the status area tray bubble (ImeTrayBubble, + SystemTrayBubble, WebNotificationBubble, PaletteTrayBubble) in an attempt to + close it but failed ultimately. + + + + + + No longer needed since swipe on the status area tray to open it has been + disabled and unified system tray has been launched. + + omrilio@chromium.org + minch@chromium.org + + Records when the user swipes on the status area tray (ImeTray, SystemTray, + WebNotificationTray, PaletteTray) in an attempt to open the associated + bubble and succeeded ultimately. + + + + + + No longer needed since swipe on the status area tray to open it has been + disabled and unified system tray has been launched. + + omrilio@chromium.org + minch@chromium.org + + Records when the user swipes on the status area tray (ImeTray, SystemTray, + WebNotificationTray, PaletteTray) in an attempt to open the associated + bubble but failed ultimately. + + + + + peconn@chromium.org + pshmakov@chromium.org + peter@chromium.org + + Recorded when a user accepts the "Running in Chrome" disclosure + seen in a Trusted Web Activity. + + + + + peconn@chromium.org + pshmakov@chromium.org + peter@chromium.org + + Recorded when a user sees the "Running in Chrome" disclosure in a + Trusted Web Activity. + + + + + peconn@chromium.org + pshmakov@chromium.org + peter@chromium.org + + Recorded when site settings are opened via "Manage Space" button + in TWA client app's settings. + + + + + weili@chromium.org + + Records when a user connects to a UI DevTools HTTP server, i.e., by clicking + on the 'inspect' link on chrome://inspect/#other. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated 03/2017 in issue 697756. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed from codebase; see GoogleUpdate.UpgradeResult. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed from codebase; see GoogleUpdate.UpgradeResult. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed from codebase; see GoogleUpdate.UpgradeResult. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Not present in codebase. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Removed from codebase; see GoogleUpdate.UpgradeResult, + GoogleUpdate.UpdateErrorCode, and GoogleUpdate.ErrorHresult. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed from codebase; see GoogleUpdate.UpgradeResult. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Not present in codebase. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed from codebase; see GoogleUpdate.UpgradeResult. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Removed from codebase; see GoogleUpdate.UpgradeResult. + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + mahmadi@chromium.org + + Recorded when prefs::kBrowserGuestModeEnabled and + prefs::kBrowserAddPersonEnabled are cleared because they no longer exist in + the Material Design settings page. + + + + + yoshiki@chromium.org + + Chrome OS Video Player: an error occurred upon casting. + + + + + yoshiki@chromium.org + + Chrome OS Video Player: the user opened the Chrome OS Video Player. + + + + + + Deprecated since the conflicts page is changing. TODO(pmonette): Update this + to refer to the action for the new conflicts page. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Deprecated because of using histogram. + jeffreycohen@chromium.org + sebsg@chromium.org + + User send current tab to other synced devices by clicking on the option in + the view context menu. + + + + + Deprecated because of using histogram. + jeffreycohen@chromium.org + sebsg@chromium.org + Self share option shows in the view context menu. + + + + + Deprecated since SendTabToSelf is collecting two kinds of metrics (shown and + cliked). + + jeffreycohen@chromium.org + sebsg@chromium.org + + User send current tab to other synced devices by clicking on the option in + the view context menu. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + myy@chromium.org + essential-inputs-team@google.com + + Emitted when user click the link to open Language setting page in ChromeOS + from the virtual keyboard. + + + + + myy@chromium.org + essential-inputs-team@google.com + + Emitted when user click the link to open Suggestion setting page in ChromeOS + from the virtual keyboard. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + muyuanli@chromium.org + User launched metalayer through Search + Shift + A. + + + + muyuanli@chromium.org + + User launched voice interaction session through long pressing app list + button. + + + + + muyuanli@chromium.org + + User launched voice interaction session through Assistant key. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of the metric. + + + + muyuanli@chromium.org + + User launched voice interaction session through Search + A. + + + + + muyuanli@chromium.org + + User launched voice interaction session through Search + Space. + + + + + billorr@chromium.org + + The user has successfully completed the VR DOFF flow. + + + + + billorr@chromium.org + + The user has successfully completed the VR DON flow. + + + + + billorr@chromium.org + The user has initiated WebVR presentation. + + + + billorr@chromium.org + The user (or site) has stopped WebVR presentation. + + + + piotrs@chromium.org + + The user tapped on the main area of a Webapp actions notification. + + + + + piotrs@chromium.org + + The user tapped on Open in Chrome action in a Webapp actions notification. + + + + + piotrs@chromium.org + + The user tapped on Share action in a Webapp actions notification. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + The user uninstalled a preinstalled app which was previously not in + UserUninstalledPreinstalledWebAppPrefs, and has now been added to the prefs. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + The user set a web app to open in a browser tab. + + + + loubrett@google.com + desktop-pwas-team@google.com + + The user set a web app to open in a tabbed app window. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + The user set a web app to open in an app window. + + + + dmurph@gchromium.org + desktop-pwas-team@google.com + + The user accepted an installation of a web app in the detailed installation + dialog (with screenshots, etc). + + + + + dmurph@gchromium.org + desktop-pwas-team@google.com + + The user cancelled an installation of a web app in the detailed installation + dialog (with screenshots, etc). + + + + + dmurph@gchromium.org + desktop-pwas-team@google.com + + The user was shown the detailed installation dialog for a web app (with + screenshots, etc). + + + + + dmurph@gchromium.org + desktop-pwas-team@google.com + + The user accepted an installation of a web app in the installation dialog. + + + + + dmurph@gchromium.org + desktop-pwas-team@google.com + + The user cancelled an installation of a web app in the installation dialog. + + + + + dmurph@gchromium.org + desktop-pwas-team@google.com + + The user was shown the installation dialog for a web app. + + + + + piotrs@chromium.org + + Tracks when Open in Chrome menu option is clicked in WebApps. + + + + + dfalcantara@chromium.org + + Shortcut added to the homescreen for a page containing the + mobile-webapp-capable meta tag. + + + + + dfalcantara@chromium.org + + Shortcut added to the homescreen for a page containing only the + apple-mobile-webapp-capable meta tag. + + + + + dfalcantara@chromium.org + + Shortcut added to the homescreen for a page containing neither + mobile-webapp-capable nor apple-mobile-webapp-capable meta tags. + + + + + mgiuca@chromium.org + + Shortcut added to the homescreen with a valid Manifest. This action will be + recorded in addition to AppShortcut, AppShortcutApple and Bookmark actions + to keep a trend of whether the webapp also add meta tags. + + + + + + Superseded by the WebsiteSettings.Action histogram on 2014-10-30. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + Superseded by the WebsiteSettings.Action histogram on 2014-10-30. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + tbarzic@google.com + + Tracks Chrome Webstore Gallery Widget app being launched. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + fsamuel@chromium.org + lazyboy@chromium.org + + Tracks when the download permission is explicitly allowed on a webview. + + + + + fsamuel@chromium.org + hanxi@chromium.org + + Tracks when the filesystem permission is explicitly allowed on a webview. + + + + + fsamuel@chromium.org + lazyboy@chromium.org + + Tracks when the fullscreen permission is explicitly allowed on a webview. + + + + + fsamuel@chromium.org + lazyboy@chromium.org + + Tracks when the geolocation permission is explicitly allowed on a webview. + + + + + fsamuel@chromium.org + lazyboy@chromium.org + + Tracks when the dialog permission is explicitly allowed on a webview. + + + + + fsamuel@chromium.org + lazyboy@chromium.org + + Tracks when the media permission is explicitly allowed on a webview. + + + + + fsamuel@chromium.org + lazyboy@chromium.org + + Tracks when the pointerLock permission is explicitly allowed on a webview. + + + + + fsamuel@chromium.org + lazyboy@chromium.org + + Tracks when the download permission is explicitly denied on a webview. + + + + + fsamuel@chromium.org + hanxi@chromium.org + + Tracks when the filesystem permission is explicitly denied on a webview. + + + + + fsamuel@chromium.org + lazyboy@chromium.org + + Tracks when the fullscreen permission is explicitly denied on a webview. + + + + + fsamuel@chromium.org + lazyboy@chromium.org + + Tracks when the geolocation permission is explicitly denied on a webview. + + + + + fsamuel@chromium.org + lazyboy@chromium.org + + Tracks when the dialog permission is explicitly denied on a webview. + + + + + fsamuel@chromium.org + lazyboy@chromium.org + + Tracks when the media permission is explicitly denied on a webview. + + + + + fsamuel@chromium.org + lazyboy@chromium.org + + Tracks when the pointerLock permission is explicitly denied on a webview. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + tmartino@chromium.org + + The user clicked the Sign In button on the Welcome page, starting the + authentication flow. + + + + + cheickcisse@google.com + sebsg@chromium.org + + The user opened Add Password Manually in What's New. + + + + + cheickcisse@google.com + sebsg@chromium.org + + The user tapped on learn more to know more about Add Password Manually in + What's New. + + + + + cheickcisse@google.com + sebsg@chromium.org + + The user tapped on the primary action of Add Password Manually in What's + New. + + + + + cheickcisse@google.com + sebsg@chromium.org + The user opened Autofill in What's New. + + + + cheickcisse@google.com + sebsg@chromium.org + + The user tapped on learn more to know more about Autofill in What's New. + + + + + cheickcisse@google.com + sebsg@chromium.org + The user dismissed What's New. + + + + cheickcisse@google.com + sebsg@chromium.org + The user opened New Overflow Menu in What's New. + + + + cheickcisse@google.com + sebsg@chromium.org + + The user opened Passwords In Other Apps in What's New. + + + + + cheickcisse@google.com + sebsg@chromium.org + + The user tapped on learn more to know more about Passwords In Other Apps in + What's New. + + + + + cheickcisse@google.com + sebsg@chromium.org + + The user tapped on the primary action of Passwords In Other Apps in What's + New. + + + + + cheickcisse@google.com + sebsg@chromium.org + The What's New promo was displayed to the user. + + + + cheickcisse@google.com + sebsg@chromium.org + The user opened Search Tabs in What's New. + + + + cheickcisse@google.com + sebsg@chromium.org + + The user tapped on learn more to know more about Search Tabs in What's New. + + + + + cheickcisse@google.com + sebsg@chromium.org + The user opened Shared Highlighting in What's New. + + + + cheickcisse@google.com + sebsg@chromium.org + + The user tapped on learn more to know more about Shared Highlighting in + What's New. + + + + + cheickcisse@google.com + sebsg@chromium.org + The user opened Chrome By Default in What's New. + + + + cheickcisse@google.com + sebsg@chromium.org + + The user tapped on learn more to know more about Chrome By Default in What's + New. + + + + + cheickcisse@google.com + sebsg@chromium.org + + The user tapped on the primary action of Chrome By Default in What's New. + + + + + pmonette@chromium.org + + The user clicked "Open Windows Settings" in the Win10 version of + the Welcome page. + + + + + cpu@chromium.org + ananta@chromium.org + shrikant@chromium.org + Tracks when Chrome was restarted on Win7 in Ash. + + + + cpu@chromium.org + ananta@chromium.org + shrikant@chromium.org + + Tracks when Chrome was restarted on Win7 in desktop. + + + + + cpu@chromium.org + ananta@chromium.org + shrikant@chromium.org + + Tracks when Chrome was restarted on Win8 in desktop. + + + + + cpu@chromium.org + ananta@chromium.org + shrikant@chromium.org + Tracks when Chrome was restarted on Win8 in metro. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + flackr@chromium.org + + Starting a window selection cycle by pressing alt-tab. Only counts the + initial alt-tab, not each step in the cycle. + + + + + sammiequon@chromium.org + shidi@chromium.org + + Tracks if a window has been snapped to maximized state by dragging the + window to the top of the screen. + + + + + sammiequon@chromium.org + shidi@chromium.org + + Tracks if a window has been snapped to to the left by dragging the window to + the left side of the screen. + + + + + sammiequon@chromium.org + shidi@chromium.org + + Tracks if a window has been snapped to to the right by dragging the window + to the right side of the screen. + + + + + sammiequon@chromium.org + shidi@chromium.org + + Tracks if a window has been unmaximized by dragging down on the title bar of + a maximized window. + + + + + sammiequon@chromium.org + shidi@chromium.org + + Tracks if a window has been unsnapped by dragging down on the title bar of a + snapped window. + + + + + ellyjones@chromium.org + + Logged when the user accepts the "Name Window..." prompt to clear + a custom name for a browser window. + + + + + ellyjones@chromium.org + + Logged when the user opens the "Name Window..." prompt. + + + + + ellyjones@chromium.org + + Logged when the user accepts the "Name Window..." prompt to set a + custom name for a browser window. + + + + + tbuckley@chromium.org + + Recorded when the user selects a window from Ash overview mode which is + different from the window that was active prior to entering overview mode. + + + + + flackr@chromium.org + Starting the window overview mode. + + + + tbuckley@chromium.org + + Using the 'X' button to close a window in the overview. + + + + + tbuckley@chromium.org + + Using Ctrl+W shortcut to close a window in the overview. + + + + + flackr@chromium.org + + Using the enter key to select a window in the overview. + + + + + + Deprecated as of 06/2014. No longer relevant since alt tab window switching + was separated from overview mode. + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + sammiequon@chromium.org + + Vertically swiping or flinging a window in overview to close the window. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + dfried@chromium.org + chrome-analysis-team@google.com + + The user opened one or more bookmarks in the Bookmarks Bar using the context + menu. Distinguished from launching from e.g. the application menu or the + bookmark manager. This is for opening bookmarks normally (in the same + window). + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + dfried@chromium.org + chrome-analysis-team@google.com + + The user opened one or more bookmarks in the Bookmarks Bar using the context + menu. Distinguished from launching from e.g. the application menu or the + bookmark manager. This is for opening bookmarks in an incognito window. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + dfried@chromium.org + chrome-analysis-team@google.com + + The user opened one or more bookmarks in the Bookmarks Bar using the context + menu. Distinguished from launching from e.g. the application menu or the + bookmark manager. This is for opening bookmarks in a new window. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + dfried@chromium.org + chrome-analysis-team@google.com + + The user opened a bookmark from the wrench/application/three-dot menu. + Distinguished from launching from e.g. the bookmarks bar or bookmark + manager. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + dpenning@chromium.org + App Menu: Recently Closed: Open a recent group. + + + + jwd@chromium.org + chrome-analysis-team@google.com + + Hot Dog Menu: Recent Tabs: Open a recent tab from a device. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + jwd@chromium.org + chrome-analysis-team@google.com + + Hot Dog Menu: Recent Tabs: Open a recent tab link from local. + + This user action is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + jwd@chromium.org + + Hot Dog Menu: Recent Tabs: Open a recent tab in a new window. + + + + + + The code that caused the issue this action was meant to track is no longer + present. + + bialpio@chromium.org + + Raised when XR service was unable to obtain necessary component. The action + is not directly raised by the user's behavior as it should only be logged + when the user navigates to a website that uses WebXR Device API, only in + case the necessary provider was not installed during browser start-up. + Created to assess the impact of the issue causing https://crbug.com/1050470. + + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + Please list the metric's owners. Add more owner tags as needed. + Please enter the description of this user action. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/actions/actions_model.py b/actions/actions_model.py new file mode 100644 index 000000000000..f067d0c9f0ed --- /dev/null +++ b/actions/actions_model.py @@ -0,0 +1,108 @@ +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Model objects for actions.xml contents.""" + +import os +import sys +import re + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import models + +_OBSOLETE_TYPE = models.TextNodeType('obsolete', single_line=True) +_OWNER_TYPE = models.TextNodeType('owner', single_line=True) +_DESCRIPTION_TYPE = models.TextNodeType('description', single_line=True) + +# A key for sorting XML nodes by the value of |attribute|. +# Used for sorting tags by their name attribute +_LOWERCASE_FN = lambda attribute: (lambda node: node.get(attribute).lower()) + +# A constant function as the sorting key for nodes whose orderings should be +# kept as given in the XML file within their parent node. +_KEEP_ORDER = lambda node: 1 + +_ACTION_TYPE = models.ObjectNodeType( + 'action', + attributes=[ + ('name', str, None), + ('not_user_triggered', str, r'^$|^true|false|True|False$'), + ], + required_attributes=['name'], + alphabetization=[ + (_OBSOLETE_TYPE.tag, _KEEP_ORDER), + (_OWNER_TYPE.tag, _KEEP_ORDER), + (_DESCRIPTION_TYPE.tag, _KEEP_ORDER), + ], + extra_newlines=(1, 1, 1), + children=[models.ChildType(_OBSOLETE_TYPE.tag, + _OBSOLETE_TYPE, multiple=False), + models.ChildType(_OWNER_TYPE.tag, + _OWNER_TYPE, multiple=True), + models.ChildType(_DESCRIPTION_TYPE.tag, + _DESCRIPTION_TYPE, multiple=False), + ]) + +_SUFFIX_TYPE = models.ObjectNodeType( + 'suffix', + attributes=[ + ('name', str, r'^[A-Za-z0-9.-_]*$'), + ('label', str, None), + ], + required_attributes=['name', 'label'], +) + +_AFFECTED_ACTION_TYPE = models.ObjectNodeType( + 'affected-action', + attributes=[ + ('name', str, r'^[A-Za-z0-9.-_]*$'), + ], + required_attributes=['name'], +) + +_ACTION_SUFFIX_TYPE = models.ObjectNodeType( + 'action-suffix', + attributes=[ + ('separator', str, r'^$|^[\._]+$'), + ('ordering', str, r'^$|^suffix$'), + ], + required_attributes=['separator'], + alphabetization=[ + (_SUFFIX_TYPE.tag, _LOWERCASE_FN('name')), + (_AFFECTED_ACTION_TYPE.tag, _LOWERCASE_FN('name')), + ], + extra_newlines=(1, 1, 1), + children=[ + models.ChildType(_SUFFIX_TYPE.tag, _SUFFIX_TYPE, multiple=True), + models.ChildType(_AFFECTED_ACTION_TYPE.tag, + _AFFECTED_ACTION_TYPE, multiple=True), + ]) + +_ACTIONS_TYPE = models.ObjectNodeType( + 'actions', + alphabetization=[ + (_ACTION_TYPE.tag, _LOWERCASE_FN('name')), + (_ACTION_SUFFIX_TYPE.tag, lambda n: None), + ], + extra_newlines=(2, 1, 1), + indent=False, + children=[ + models.ChildType(_ACTION_TYPE.tag, _ACTION_TYPE, multiple=True), + models.ChildType(_ACTION_SUFFIX_TYPE.tag, + _ACTION_SUFFIX_TYPE, multiple=True), + ]) + +ACTION_XML_TYPE = models.DocumentType(_ACTIONS_TYPE) + +def PrettifyTree(minidom_doc): + """Parses the input minidom document and return a pretty-printed + version. + + Args: + minidom_doc: A minidom document. + + Returns: + A pretty-printed xml string, or None if the config contains errors. + """ + actions = ACTION_XML_TYPE.Parse(minidom_doc) + return ACTION_XML_TYPE.PrettyPrint(actions) diff --git a/actions/actions_model_test.py b/actions/actions_model_test.py new file mode 100644 index 000000000000..95dab4073e04 --- /dev/null +++ b/actions/actions_model_test.py @@ -0,0 +1,309 @@ +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from parameterized import parameterized +import unittest +import xml.dom.minidom + +import actions_model + +PRETTY_XML = """ + + + + owner@chromium.org + Description1 + + + + Obsolete text + owner@chromium.org + Description2 + + + + Obsolete text + owner@chromium.org + owner2@chromium.org + Description3 + + + + + + + + + + + + + + +""".strip() + +XML_WITH_WRONG_INDENT = """ + + + + owner@chromium.org + Description1 + + + + Obsolete text + owner@chromium.org + Description2 + + + +Obsolete text +owner@chromium.org +owner2@chromium.org +Description3 + + + + + + + + + + + + + + +""".strip() + +XML_WITH_WRONG_SINGLELINE = """ + + + + + owner@chromium.org + + Description1 + + + + + Obsolete text + + owner@chromium.org + Description2 + + + + Obsolete text + owner@chromium.org + owner2@chromium.org + + Description3 + + + + + + + + + + + + + + + +""".strip() + +XML_WITH_WRONG_LINE_BREAK = """ + + + owner@chromium.org + Description1 + + + + Obsolete text + owner@chromium.org + Description2 + + + Obsolete text + owner@chromium.org + + owner2@chromium.org + Description3 + + + + + + + + + + + + + +""".strip() + +XML_WITH_WRONG_ORDER = """ + + + + Obsolete text + owner@chromium.org + Description2 + + + + owner@chromium.org + Description1 + + + + Obsolete text + owner@chromium.org + owner2@chromium.org + Description3 + + + + + + + + + + + + + + +""".strip() + +XML_WITH_WRONG_CHILDREN_ORDER = """ + + + + Description1 + owner@chromium.org + + + + owner@chromium.org + Obsolete text + Description2 + + + + Obsolete text + owner@chromium.org + Description3 + owner2@chromium.org + + + + + + + + + + + + + + +""".strip() + +XML_WITH_WRONG_ATTRIBUTE_ORDER = """ + + + + owner@chromium.org + Description1 + + + + Obsolete text + owner@chromium.org + Description2 + + + + Obsolete text + owner@chromium.org + owner2@chromium.org + Description3 + + + + + + + + + + + + + + +""".strip() + + +class ActionXmlTest(unittest.TestCase): + def __init__(self, *args, **kwargs): + super(ActionXmlTest, self).__init__(*args, **kwargs) + self.maxDiff = None + + @parameterized.expand([ + # Test prettify already pretty XML to verify the pretty-printed version + # is the same. + ('AlreadyPrettyXml', PRETTY_XML, PRETTY_XML), + ('Indent', XML_WITH_WRONG_INDENT, PRETTY_XML), + ('SingleLine', XML_WITH_WRONG_SINGLELINE, PRETTY_XML), + ('LineBreak', XML_WITH_WRONG_LINE_BREAK, PRETTY_XML), + ('Order', XML_WITH_WRONG_ORDER, PRETTY_XML), + # The children of should be sorted in the order of , + # and + ('ChildrenOrder', XML_WITH_WRONG_CHILDREN_ORDER, PRETTY_XML), + ]) + def testPrettify(self, _, input_xml, expected_xml): + result = actions_model.PrettifyTree(xml.dom.minidom.parseString(input_xml)) + self.assertMultiLineEqual(result.strip(), expected_xml) + + @parameterized.expand([ + ('BadAttributeBoolean', PRETTY_XML, 'true', 'hello', 'hello'), + ('BadSuffixNameWithSpace', PRETTY_XML, 'AppMenu', 'App Menu', 'App Menu'), + ('BadAffectedActionNameWithSpace', PRETTY_XML, 'AnAction', 'An Action', + 'An Action'), + ('SuffixWithBadSeparator', PRETTY_XML, '.', '-', '-'), + ('BadOrdering_IllegalWord', PRETTY_XML, 'ordering="suffix"', + 'ordering="hello"', 'hello'), + ]) + def testRegex(self, _, pretty_input_xml, original_string, bad_string, + error_string): + BAD_XML = pretty_input_xml.replace(original_string, bad_string) + with self.assertRaises(ValueError) as context: + actions_model.PrettifyTree(xml.dom.minidom.parseString(BAD_XML)) + self.assertIn(error_string, str(context.exception)) + self.assertIn('does not match regex', str(context.exception)) + + +if __name__ == '__main__': + unittest.main() diff --git a/actions/extract_actions.py b/actions/extract_actions.py new file mode 100755 index 000000000000..111bfa2d9587 --- /dev/null +++ b/actions/extract_actions.py @@ -0,0 +1,766 @@ +#!/usr/bin/env python3 +# +# Copyright 2012 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Extract UserMetrics "actions" strings from the Chrome source. + +This program generates the list of known actions we expect to see in the +user behavior logs. It walks the Chrome source, looking for calls to +UserMetrics functions, extracting actions and warning on improper calls, +as well as generating the lists of possible actions in situations where +there are many possible actions. + +See also: + base/metrics/user_metrics.h + +After extracting all actions, the content will go through a pretty print +function to make sure it's well formatted. If the file content needs to be +changed, a window will be prompted asking for user's consent. The old version +will also be saved in a backup file. +""" + +from __future__ import print_function + +__author__ = 'evanm (Evan Martin)' + +import logging +import os +import re +import shutil +import sys +from xml.dom import minidom + +if sys.version_info.major == 2: + from HTMLParser import HTMLParser +else: + from html.parser import HTMLParser + +import action_utils +import actions_model + +# Import the metrics/common module for pretty print xml. +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import presubmit_util +import diff_util +import pretty_print_xml + +USER_METRICS_ACTION_RE = re.compile(r""" + [^a-zA-Z] # Preceded by a non-alphabetical character. + (?: # Begin non-capturing group. + UserMetricsAction # C++ / Objective C function name. + | # or... + RecordUserAction\.record # Java function name. + ) # End non-capturing group. + \( # Opening parenthesis. + \s* # Any amount of whitespace, including new lines. + (.+?) # A sequence of characters for the param. + \) # Closing parenthesis. + """, + re.VERBOSE | re.DOTALL # Verbose syntax and makes . also match new lines. +) +USER_METRICS_ACTION_RE_JS = re.compile(r""" + chrome\.send # Start of function call. + \( # Opening parenthesis. + \s* # Any amount of whitespace, including new lines. + # WebUI message handled by CoreOptionsHandler. + 'coreOptionsUserMetricsAction' + , # Separator after first parameter. + \s* # Any amount of whitespace, including new lines. + \[ # Opening bracket for arguments for C++ function. + \s* # Any amount of whitespace, including new lines. + (.+?) # A sequence of characters for the param. + \s* # Any amount of whitespace, including new lines. + \] # Closing bracket. + \s* # Any amount of whitespace, including new lines. + \) # Closing parenthesis. + """, + re.VERBOSE | re.DOTALL # Verbose syntax and makes . also match new lines. +) +USER_METRICS_ACTION_RE_DEVTOOLS = re.compile(r""" + InspectorFrontendHost\.recordUserMetricsAction # Start of function call. + \( # Opening parenthesis. + \s* # Any amount of whitespace, including new lines. + (.+?) # A sequence of characters for the param. + \s* # Any amount of whitespace, including new lines. + \) # Closing parenthesis. + """, + re.VERBOSE | re.DOTALL # Verbose syntax and makes . also match new lines. +) +COMPUTED_ACTION_RE = re.compile(r'RecordComputedAction') +QUOTED_STRING_RE = re.compile(r"""('[^']+'|"[^"]+")$""") + +# Files that are known to use content::RecordComputedAction(), which means +# they require special handling code in this script. +# To add a new file, add it to this list and add the appropriate logic to +# generate the known actions to AddComputedActions() below. +KNOWN_COMPUTED_USERS = ( + 'back_forward_menu_model.cc', + 'user_metrics.cc', # method definition + 'external_metrics.cc', # see AddChromeOSActions() + 'render_thread_impl.cc', # impl of RenderThread::RecordComputedAction() + # browser side impl for RenderThread::RecordComputedAction() + 'render_process_host_impl.cc', + 'mock_render_thread.cc', # mock of RenderThread::RecordComputedAction() + 'pdf_view_web_plugin_client.cc', # see AddPDFPluginActions() + 'blink_platform_impl.cc', # see WebKit/public/platform/Platform.h + 'devtools_ui_bindings.cc', # see AddDevToolsActions() + 'sharing_hub_bubble_controller.cc', # share targets + 'sharing_hub_sub_menu_model.cc', # share targets +) + +# The path to the root of the repository. +REPOSITORY_ROOT = os.path.join(os.path.dirname(__file__), '..', '..', '..') + +number_of_files_total = 0 + +# Tags that need to be inserted to each 'action' tag and their default content. +TAGS = {'description': 'Please enter the description of the metric.', + 'owner': ('Please list the metric\'s owners. Add more owner tags as ' + 'needed.')} + +SHARE_TARGETS = { + 'CopyURLSelected', 'QRCodeSelected', 'ScreenshotSelected', + 'SendTabToSelfSelected', 'CastSelected', 'SavePageSelected', + 'ThirdPartyAppSelected', 'FollowSelected', 'UnfollowSelected' +} + + +def AddComputedActions(actions): + """Add computed actions to the actions list. + + Arguments: + actions: set of actions to add to. + """ + + # Actions for back_forward_menu_model.cc. + for dir in ('BackMenu_', 'ForwardMenu_'): + actions.add(dir + 'ShowFullHistory') + actions.add(dir + 'Popup') + for i in range(1, 20): + actions.add(dir + 'HistoryClick' + str(i)) + actions.add(dir + 'ChapterClick' + str(i)) + + # Actions for sharing_hub_bubble_controller.cc and + # sharing_hub_sub_menu_model.cc. + for share_target in SHARE_TARGETS: + actions.add('SharingHubDesktop.%s' % share_target) + + +def AddPDFPluginActions(actions): + """Add actions that are sent by the PDF plugin. + + Arguments + actions: set of actions to add to. + """ + actions.add('PDF.LoadFailure') + actions.add('PDF.LoadSuccess') + actions.add('PDF.PreviewDocumentLoadFailure') + actions.add('PDF.PrintPage') + actions.add('PDF.ZoomFromBrowser') + actions.add('PDF_Unsupported_3D') + actions.add('PDF_Unsupported_Attachment') + actions.add('PDF_Unsupported_Bookmarks') + actions.add('PDF_Unsupported_Digital_Signature') + actions.add('PDF_Unsupported_Movie') + actions.add('PDF_Unsupported_Portfolios_Packages') + actions.add('PDF_Unsupported_Rights_Management') + actions.add('PDF_Unsupported_Screen') + actions.add('PDF_Unsupported_Shared_Form') + actions.add('PDF_Unsupported_Shared_Review') + actions.add('PDF_Unsupported_Sound') + actions.add('PDF_Unsupported_XFA') + +def AddBookmarkManagerActions(actions): + """Add actions that are used by BookmarkManager. + + Arguments + actions: set of actions to add to. + """ + actions.add('BookmarkManager_Command_AddPage') + actions.add('BookmarkManager_Command_Copy') + actions.add('BookmarkManager_Command_Cut') + actions.add('BookmarkManager_Command_Delete') + actions.add('BookmarkManager_Command_Edit') + actions.add('BookmarkManager_Command_Export') + actions.add('BookmarkManager_Command_Import') + actions.add('BookmarkManager_Command_NewFolder') + actions.add('BookmarkManager_Command_OpenIncognito') + actions.add('BookmarkManager_Command_OpenInNewTab') + actions.add('BookmarkManager_Command_OpenInNewWindow') + actions.add('BookmarkManager_Command_OpenInSame') + actions.add('BookmarkManager_Command_Paste') + actions.add('BookmarkManager_Command_ShowInFolder') + actions.add('BookmarkManager_Command_Sort') + actions.add('BookmarkManager_Command_UndoDelete') + actions.add('BookmarkManager_Command_UndoGlobal') + actions.add('BookmarkManager_Command_UndoNone') + + actions.add('BookmarkManager_NavigateTo_BookmarkBar') + actions.add('BookmarkManager_NavigateTo_Mobile') + actions.add('BookmarkManager_NavigateTo_Other') + actions.add('BookmarkManager_NavigateTo_Recent') + actions.add('BookmarkManager_NavigateTo_Search') + actions.add('BookmarkManager_NavigateTo_SubFolder') + +def AddChromeOSActions(actions): + """Add actions reported by non-Chrome processes in Chrome OS. + + Arguments: + actions: set of actions to add to. + """ + # Actions sent by Chrome OS update engine. + actions.add('Updater.ServerCertificateChanged') + actions.add('Updater.ServerCertificateFailed') + +def AddExtensionActions(actions): + """Add actions reported by extensions via chrome.metricsPrivate API. + + Arguments: + actions: set of actions to add to. + """ + # Actions sent by Chrome OS File Browser. + actions.add('FileBrowser.CreateNewFolder') + actions.add('FileBrowser.PhotoEditor.Edit') + actions.add('FileBrowser.PhotoEditor.View') + actions.add('FileBrowser.SuggestApps.ShowDialog') + + # Actions sent by Google Now client. + actions.add('GoogleNow.MessageClicked') + actions.add('GoogleNow.ButtonClicked0') + actions.add('GoogleNow.ButtonClicked1') + actions.add('GoogleNow.Dismissed') + + # Actions sent by Chrome Connectivity Diagnostics. + actions.add('ConnectivityDiagnostics.LaunchSource.OfflineChromeOS') + actions.add('ConnectivityDiagnostics.LaunchSource.WebStore') + actions.add('ConnectivityDiagnostics.UA.LogsShown') + actions.add('ConnectivityDiagnostics.UA.PassingTestsShown') + actions.add('ConnectivityDiagnostics.UA.SettingsShown') + actions.add('ConnectivityDiagnostics.UA.TestResultExpanded') + actions.add('ConnectivityDiagnostics.UA.TestSuiteRun') + + +class InvalidStatementException(Exception): + """Indicates an invalid statement was found.""" + + +class ActionNameFinder: + """Helper class to find action names in source code file.""" + + def __init__(self, path, contents, action_re): + self.__path = path + self.__pos = 0 + self.__contents = contents + self.__action_re = action_re + + def FindNextAction(self): + """Finds the next action name in the file. + + Returns: + The name of the action found or None if there are no more actions. + Raises: + InvalidStatementException if the next action statement is invalid + and could not be parsed. There may still be more actions in the file, + so FindNextAction() can continue to be called to find following ones. + """ + match = self.__action_re.search(self.__contents, pos=self.__pos) + if not match: + return None + match_start = match.start() + self.__pos = match.end() + + match = QUOTED_STRING_RE.match(match.group(1)) + if not match: + if self.__action_re == USER_METRICS_ACTION_RE_JS: + return None + self._RaiseException(match_start, self.__pos) + + # Remove surrounding quotation marks. + return match.group(1)[1:-1] + + def _RaiseException(self, match_start, match_end): + """Raises an InvalidStatementException for the specified code range.""" + line_number = self.__contents.count('\n', 0, match_start) + 1 + # Add 1 to |match_start| since the RE checks the preceding character. + statement = self.__contents[match_start + 1:match_end] + raise InvalidStatementException( + '%s uses UserMetricsAction incorrectly on line %d:\n%s' % + (self.__path, line_number, statement)) + + +def GrepForActions(path, actions): + """Grep a source file for calls to UserMetrics functions. + + Arguments: + path: path to the file + actions: set of actions to add to + """ + global number_of_files_total + number_of_files_total = number_of_files_total + 1 + + # Check the extension, using the regular expression for C++ syntax by default. + ext = os.path.splitext(path)[1].lower() + if ext == '.js': + action_re = USER_METRICS_ACTION_RE_JS + else: + action_re = USER_METRICS_ACTION_RE + + finder = ActionNameFinder(path, + open(path, encoding='utf-8').read(), action_re) + while True: + try: + action_name = finder.FindNextAction() + if not action_name: + break + actions.add(action_name) + except InvalidStatementException as e: + logging.warning(str(e)) + + if action_re != USER_METRICS_ACTION_RE: + return + + line_number = 0 + for line in open(path, encoding='utf-8'): + line_number = line_number + 1 + if COMPUTED_ACTION_RE.search(line): + # Warn if this file shouldn't be calling RecordComputedAction. + if os.path.basename(path) not in KNOWN_COMPUTED_USERS: + logging.warning('%s has RecordComputedAction statement on line %d' % + (path, line_number)) + +class WebUIActionsParser(HTMLParser): + """Parses an HTML file, looking for all tags with a 'metric' attribute. + Adds user actions corresponding to any metrics found. + + Arguments: + actions: set of actions to add to + """ + def __init__(self, actions): + HTMLParser.__init__(self) + self.actions = actions + + def handle_starttag(self, tag, attrs): + # We only care to examine tags that have a 'metric' attribute. + attrs = dict(attrs) + if not 'metric' in attrs: + return + + # Boolean metrics have two corresponding actions. All other metrics have + # just one corresponding action. By default, we check the 'dataType' + # attribute. + is_boolean = ('dataType' in attrs and attrs['dataType'] == 'boolean') + if 'type' in attrs and attrs['type'] in ('checkbox', 'radio'): + if attrs['type'] == 'checkbox': + is_boolean = True + else: + # Radio buttons are boolean if and only if their values are 'true' or + # 'false'. + assert(attrs['type'] == 'radio') + if 'value' in attrs and attrs['value'] in ['true', 'false']: + is_boolean = True + + if is_boolean: + self.actions.add(attrs['metric'] + '_Enable') + self.actions.add(attrs['metric'] + '_Disable') + else: + self.actions.add(attrs['metric']) + +def GrepForWebUIActions(path, actions): + """Grep a WebUI source file for elements with associated metrics. + + Arguments: + path: path to the file + actions: set of actions to add to + """ + close_called = False + try: + parser = WebUIActionsParser(actions) + parser.feed(open(path, encoding='utf-8').read()) + # An exception can be thrown by parser.close(), so do it in the try to + # ensure the path of the file being parsed gets printed if that happens. + close_called = True + parser.close() + except Exception as e: + print("Error encountered for path %s" % path) + raise e + finally: + if not close_called: + parser.close() + +def GrepForDevToolsActions(path, actions): + """Grep a DevTools source file for calls to UserMetrics functions. + + Arguments: + path: path to the file + actions: set of actions to add to + """ + global number_of_files_total + number_of_files_total = number_of_files_total + 1 + + ext = os.path.splitext(path)[1].lower() + if ext != '.js': + return + + finder = ActionNameFinder(path, + open(path, encoding='utf-8').read(), + USER_METRICS_ACTION_RE_DEVTOOLS) + while True: + try: + action_name = finder.FindNextAction() + if not action_name: + break + actions.add(action_name) + except InvalidStatementException as e: + logging.warning(str(e)) + +def WalkDirectory(root_path, actions, extensions, callback): + """Walk directory chooses which files to process based on a set + of extensions, and runs the callback function on them. + + It's important to know that `extensions` should be a tuple, + and if it's not, it will be converted into one. This is to correct + for Python automatically converting ('foo') to 'foo'. + + Note: Files starting with a `.` will be ignored by default. See + comments in implementation. + """ + + # Convert `extensions` to tuple if it is not one already + if type(extensions) != tuple: + extensions = (extensions, ) + + for path, dirs, files in os.walk(root_path): + if '.svn' in dirs: + dirs.remove('.svn') + if '.git' in dirs: + dirs.remove('.git') + for file in files: + """splitext() returns an empty extension |ext| for files + starting with `.`, as a result, files starting with a `.` will + be ignored (unless the |extensions| tuple includes an empty + element). Beware of allowing the callback() to run on all files + that start with a `.`: the callback needs to be resilient to + different file formats (binary, ASCII, etc.) and may also end + up processing many files that don't need to be processed, wasting + time. + """ + filename, ext = os.path.splitext(file) + if ext in extensions and not filename.endswith('test'): + callback(os.path.join(path, file), actions) + +def AddLiteralActions(actions): + """Add literal actions specified via calls to UserMetrics functions. + + Arguments: + actions: set of actions to add to. + """ + EXTENSIONS = ('.cc', '.cpp', '.mm', '.c', '.m', '.java') + + # Walk the source tree to process all files. + ash_root = os.path.normpath(os.path.join(REPOSITORY_ROOT, 'ash')) + WalkDirectory(ash_root, actions, EXTENSIONS, GrepForActions) + chrome_root = os.path.normpath(os.path.join(REPOSITORY_ROOT, 'chrome')) + WalkDirectory(chrome_root, actions, EXTENSIONS, GrepForActions) + content_root = os.path.normpath(os.path.join(REPOSITORY_ROOT, 'content')) + WalkDirectory(content_root, actions, EXTENSIONS, GrepForActions) + components_root = os.path.normpath(os.path.join(REPOSITORY_ROOT, + 'components')) + WalkDirectory(components_root, actions, EXTENSIONS, GrepForActions) + net_root = os.path.normpath(os.path.join(REPOSITORY_ROOT, 'net')) + WalkDirectory(net_root, actions, EXTENSIONS, GrepForActions) + webkit_root = os.path.normpath(os.path.join(REPOSITORY_ROOT, 'webkit')) + WalkDirectory(os.path.join(webkit_root, 'glue'), actions, EXTENSIONS, + GrepForActions) + WalkDirectory(os.path.join(webkit_root, 'port'), actions, EXTENSIONS, + GrepForActions) + webkit_core_root = os.path.normpath( + os.path.join(REPOSITORY_ROOT, + 'third_party/blink/renderer/core')) + WalkDirectory(webkit_core_root, actions, EXTENSIONS, GrepForActions) + +def AddWebUIActions(actions): + """Add user actions defined in WebUI files. + + Arguments: + actions: set of actions to add to. + """ + resources_root = os.path.join(REPOSITORY_ROOT, 'chrome', 'browser', + 'resources') + WalkDirectory(resources_root, actions, ('.html'), GrepForWebUIActions) + WalkDirectory(resources_root, actions, ('.js'), GrepForActions) + +def AddDevToolsActions(actions): + """Add user actions defined in DevTools frontend files. + + Arguments: + actions: set of actions to add to. + """ + resources_root = os.path.join(REPOSITORY_ROOT, 'third_party', 'blink', + 'renderer', 'devtools', 'front_end') + WalkDirectory(resources_root, actions, ('.js'), GrepForDevToolsActions) + +def AddHistoryPageActions(actions): + """Add actions that are used in History page. + + Arguments + actions: set of actions to add to. + """ + actions.add('HistoryPage_BookmarkStarClicked') + actions.add('HistoryPage_EntryMenuRemoveFromHistory') + actions.add('HistoryPage_EntryLinkClick') + actions.add('HistoryPage_EntryLinkRightClick') + actions.add('HistoryPage_SearchResultClick') + actions.add('HistoryPage_EntryMenuShowMoreFromSite') + actions.add('HistoryPage_NewestHistoryClick') + actions.add('HistoryPage_NewerHistoryClick') + actions.add('HistoryPage_OlderHistoryClick') + actions.add('HistoryPage_Search') + actions.add('HistoryPage_InitClearBrowsingData') + actions.add('HistoryPage_RemoveSelected') + actions.add('HistoryPage_SearchResultRemove') + actions.add('HistoryPage_ConfirmRemoveSelected') + actions.add('HistoryPage_CancelRemoveSelected') + +def AddAutomaticResetBannerActions(actions): + """Add actions that are used for the automatic profile settings reset banners + in chrome://settings. + + Arguments + actions: set of actions to add to. + """ + # These actions relate to the the automatic settings reset banner shown as + # a result of the reset prompt. + actions.add('AutomaticReset_WebUIBanner_BannerShown') + actions.add('AutomaticReset_WebUIBanner_ManuallyClosed') + actions.add('AutomaticReset_WebUIBanner_ResetClicked') + + # These actions relate to the the automatic settings reset banner shown as + # a result of settings hardening. + actions.add('AutomaticSettingsReset_WebUIBanner_BannerShown') + actions.add('AutomaticSettingsReset_WebUIBanner_ManuallyClosed') + actions.add('AutomaticSettingsReset_WebUIBanner_LearnMoreClicked') + actions.add('AutomaticSettingsReset_WebUIBanner_ResetClicked') + + +class Error(Exception): + pass + + +def _ExtractText(parent_dom, tag_name): + """Extract the text enclosed by |tag_name| under |parent_dom| + + Args: + parent_dom: The parent Element under which text node is searched for. + tag_name: The name of the tag which contains a text node. + + Returns: + A (list of) string enclosed by |tag_name| under |parent_dom|. + """ + texts = [] + for child_dom in parent_dom.getElementsByTagName(tag_name): + text_dom = child_dom.childNodes + if text_dom.length != 1: + raise Error('More than 1 child node exists under %s' % tag_name) + if text_dom[0].nodeType != minidom.Node.TEXT_NODE: + raise Error('%s\'s child node is not a text node.' % tag_name) + texts.append(text_dom[0].data) + return texts + + +def ParseActionFile(file_content): + """Parse the XML data currently stored in the file. + + Args: + file_content: a string containing the action XML file content. + + Returns: + (actions_dict, comment_nodes, suffixes): + - actions_dict is a dict from user action name to Action object. + - comment_nodes is a list of top-level comment nodes. + - suffixes is a list of DOM elements. + """ + dom = minidom.parseString(file_content) + + comment_nodes = [] + # Get top-level comments. It is assumed that all comments are placed before + # tag. Therefore the loop will stop if it encounters a non-comment + # node. + for node in dom.childNodes: + if node.nodeType == minidom.Node.COMMENT_NODE: + comment_nodes.append(node) + else: + break + + actions_dict = {} + # Get each user action data. + for action_dom in dom.getElementsByTagName('action'): + action_name = action_dom.getAttribute('name') + not_user_triggered = bool(action_dom.getAttribute('not_user_triggered')) + + owners = _ExtractText(action_dom, 'owner') + # There is only one description for each user action. Get the first element + # of the returned list. + description_list = _ExtractText(action_dom, 'description') + if len(description_list) > 1: + logging.error('User action "%s" has more than one description. Exactly ' + 'one description is needed for each user action. Please ' + 'fix.', action_name) + sys.exit(1) + description = description_list[0] if description_list else None + # There is at most one obsolete tag for each user action. + obsolete_list = _ExtractText(action_dom, 'obsolete') + if len(obsolete_list) > 1: + logging.error('User action "%s" has more than one obsolete tag. At most ' + 'one obsolete tag can be added for each user action. Please' + ' fix.', action_name) + sys.exit(1) + obsolete = obsolete_list[0] if obsolete_list else None + actions_dict[action_name] = action_utils.Action(action_name, description, + owners, not_user_triggered, obsolete) + + suffixes = dom.getElementsByTagName('action-suffix') + action_utils.CreateActionsFromSuffixes(actions_dict, suffixes) + + return actions_dict, comment_nodes, suffixes + + +def _CreateActionTag(doc, action): + """Create a new action tag. + + Format of an action tag: + + Deprecated. + Owner + Description. + + + not_user_triggered is an optional attribute. If set, it implies that the + belonging action is not a user action. A user action is an action that + is logged exactly once right after a user has made an action. + + is an optional tag. It's added to actions that are no longer used + any more. + + If action_name is in actions_dict, the values to be inserted are based on the + corresponding Action object. If action_name is not in actions_dict, the + default value from TAGS is used. + + Args: + doc: The document under which the new action tag is created. + action: An Action object representing the data to be inserted. + + Returns: + An action tag Element with proper children elements, or None if a tag should + not be created for this action (e.g. if it comes from a suffix). + """ + if action.from_suffix: + return None + + action_dom = doc.createElement('action') + action_dom.setAttribute('name', action.name) + + # Add not_user_triggered attribute. + if action.not_user_triggered: + action_dom.setAttribute('not_user_triggered', 'true') + + # Create obsolete tag. + if action.obsolete: + obsolete_dom = doc.createElement('obsolete') + action_dom.appendChild(obsolete_dom) + obsolete_dom.appendChild(doc.createTextNode(action.obsolete)) + + # Create owner tag. + if action.owners: + # If owners for this action is not None, use the stored value. Otherwise, + # use the default value. + for owner in action.owners: + owner_dom = doc.createElement('owner') + owner_dom.appendChild(doc.createTextNode(owner)) + action_dom.appendChild(owner_dom) + else: + # Use default value. + owner_dom = doc.createElement('owner') + owner_dom.appendChild(doc.createTextNode(TAGS.get('owner', ''))) + action_dom.appendChild(owner_dom) + + # Create description tag. + description_dom = doc.createElement('description') + action_dom.appendChild(description_dom) + if action.description: + # If description for this action is not None, use the store value. + # Otherwise, use the default value. + description_dom.appendChild(doc.createTextNode(action.description)) + else: + description_dom.appendChild(doc.createTextNode( + TAGS.get('description', ''))) + + return action_dom + + +def PrettyPrint(actions_dict, comment_nodes, suffixes): + """Given a list of actions, create a well-printed minidom document. + + Args: + actions_dict: A mappting from action name to Action object. + comment_nodes: A list of top-level comment nodes. + suffixes: A list of tags to be appended as-is. + + Returns: + A well-printed minidom document that represents the input action data. + """ + doc = minidom.Document() + + # Attach top-level comments. + for node in comment_nodes: + doc.appendChild(node) + + actions_element = doc.createElement('actions') + doc.appendChild(actions_element) + + # Attach action node based on updated |actions_dict|. + for _, action in sorted(actions_dict.items()): + action_tag = _CreateActionTag(doc, action) + if action_tag: + actions_element.appendChild(action_tag) + + for suffix_tag in suffixes: + actions_element.appendChild(suffix_tag) + + return actions_model.PrettifyTree(doc) + + +def UpdateXml(original_xml): + actions_dict, comment_nodes, suffixes = ParseActionFile(original_xml) + + actions = set() + AddComputedActions(actions) + AddWebUIActions(actions) + AddDevToolsActions(actions) + AddLiteralActions(actions) + AddAutomaticResetBannerActions(actions) + AddBookmarkManagerActions(actions) + AddChromeOSActions(actions) + AddExtensionActions(actions) + AddHistoryPageActions(actions) + AddPDFPluginActions(actions) + + for action_name in actions: + if action_name not in actions_dict: + actions_dict[action_name] = action_utils.Action(action_name, None, []) + + return PrettyPrint(actions_dict, comment_nodes, suffixes) + + +def main(argv): + presubmit_util.DoPresubmitMain( + argv, + 'actions.xml', + 'actions.old.xml', + UpdateXml, + script_name='extract_actions.py') + + +if '__main__' == __name__: + sys.exit(main(sys.argv)) diff --git a/actions/extract_actions.sh b/actions/extract_actions.sh new file mode 100755 index 000000000000..04d116e88d5d --- /dev/null +++ b/actions/extract_actions.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# Copyright 2009 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +system_root=`cygpath "$SYSTEMROOT"` +export PATH="/usr/bin:$system_root/system32:$system_root:$system_root/system32/WBEM" + +exec_dir=$(dirname $0) + +"$exec_dir/../../../third_party/python_24/python.exe" \ + "$exec_dir/extract_actions.py" "$@" diff --git a/actions/extract_actions_test.py b/actions/extract_actions_test.py new file mode 100755 index 000000000000..2295b15a74fd --- /dev/null +++ b/actions/extract_actions_test.py @@ -0,0 +1,658 @@ +#!/usr/bin/env python3 +# Copyright 2014 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest + +import action_utils +import extract_actions + +# Empty value to be inserted to |ACTIONS_MOCK|. +NO_VALUE = '' + +ONE_OWNER = 'name1@google.com\n' +TWO_OWNERS = """ +name1@google.com\n +name2@google.com\n +""" + +DESCRIPTION = 'Description.\n' +TWO_DESCRIPTIONS = """ +Description.\n +Description2.\n +""" + +OBSOLETE = 'Not used anymore. Replaced by action2.\n' +TWO_OBSOLETE = 'Obsolete1.Obsolete2.' + +COMMENT = '' + +NOT_USER_TRIGGERED = 'not_user_triggered="true"' + +# A format string to mock the input action.xml file. +ACTIONS_XML = """ +{comment} + + + +{obsolete}{owners}{description} + + +""" + +NO_OWNER_EXPECTED_XML = ( + '\n\n' + '\n' + ' Please list the metric\'s owners. ' + 'Add more owner tags as needed.\n' + ' Description.\n' + '\n\n' + '\n' +) + +ONE_OWNER_EXPECTED_XML = ( + '\n\n' + '\n' + ' name1@google.com\n' + ' Description.\n' + '\n\n' + '\n' +) + +TWO_OWNERS_EXPECTED_XML = ( + '\n\n' + '\n' + ' name1@google.com\n' + ' name2@google.com\n' + ' Description.\n' + '\n\n' + '\n' +) + +NO_DESCRIPTION_EXPECTED_XML = ( + '\n\n' + '\n' + ' name1@google.com\n' + ' name2@google.com\n' + ' Please enter the description of the metric.\n' + '\n\n' + '\n' +) + +OBSOLETE_EXPECTED_XML = ( + '\n\n' + '\n' + ' Not used anymore. Replaced by action2.\n' + ' name1@google.com\n' + ' name2@google.com\n' + ' Description.\n' + '\n\n' + '\n' +) + +ADD_ACTION_EXPECTED_XML = ( + '\n\n' + '\n' + ' name1@google.com\n' + ' name2@google.com\n' + ' Description.\n' + '\n\n' + '\n' + ' Please list the metric\'s owners.' + ' Add more owner tags as needed.\n' + ' Please enter the description of the metric.\n' + '\n\n' + '\n' +) + +COMMENT_EXPECTED_XML = ( + '\n\n' + '\n\n' + '\n' + ' name1@google.com\n' + ' name2@google.com\n' + ' Description.\n' + '\n\n' + '\n' +) + +NOT_USER_TRIGGERED_EXPECTED_XML = ( + '\n\n' + '\n' + ' Please list the metric\'s owners. ' + 'Add more owner tags as needed.\n' + ' Description.\n' + '\n\n' + '\n' +) + +BASIC_SUFFIX_EXPECTED_XML = ( + '\n\n' + '\n' + ' name1@chromium.org\n' + ' Description.\n' + '\n\n' + '\n' + ' name1@chromium.org\n' + ' Description. Suffix Description 1.\n' + '\n\n' + '\n' +) + +MULTI_ACTION_MULTI_SUFFIX_CHAIN = ( + '\n\n' + '\n' + ' name1@chromium.org\n' + ' Description.\n' + '\n\n' + '\n' + ' name1@chromium.org\n' + ' Description. Suffix Description 1.\n' + '\n\n' + '\n' + ' name1@chromium.org\n' + ' Description. Suffix Description 2.\n' + '\n\n' + '\n' + ' name1@chromium.org\n' + ' \n' + ' Description. Suffix Description 2. Suffix Description 3.\n' + ' \n' + '\n\n' + '\n' + ' name1@chromium.org\n' + ' \n' + ' Description. Suffix Description 2. Suffix Description 3. ' + 'Suffix Description\n' + ' 4.\n' + ' \n' + '\n\n' + '\n' + ' name2@chromium.org\n' + ' Description.\n' + '\n\n' + '\n' + ' name2@chromium.org\n' + ' Description. Suffix Description 1.\n' + '\n\n' + '\n' + ' name2@chromium.org\n' + ' Description. Suffix Description 2.\n' + '\n\n' + '\n' +) + +SUFFIX_CUSTOM_SEPARATOR = ( + '\n\n' + '\n' + ' name1@chromium.org\n' + ' Description.\n' + '\n\n' + '\n' + ' name1@chromium.org\n' + ' Description. Suffix Description 1.\n' + '\n\n' + '\n' +) + +SUFFIX_OREDERING_PREFIX = ( + '\n\n' + '\n' + ' name1@chromium.org\n' + ' Description. Prefix Description 1.\n' + '\n\n' + '\n' + ' name1@chromium.org\n' + ' Description.\n' + '\n\n' + '\n' +) + +AFFECTED_ACTION_WITH_SUFFIX_TAG = ( + '\n\n' + '\n' + ' name1@chromium.org\n' + ' Description.\n' + '\n\n' + '\n' + ' name1@chromium.org\n' + ' Description. Suffix Description 1.\n' + '\n\n' + '\n' + ' name1@chromium.org\n' + ' Description. Suffix Description 2.\n' + '\n\n' + '\n' + ' name2@chromium.org\n' + ' Description.\n' + '\n\n' + '\n' + ' name2@chromium.org\n' + ' Description. Suffix Description 2.\n' + '\n\n' + '\n' +) + +class ActionXmlTest(unittest.TestCase): + + def _GetProcessedAction(self, owner, description, obsolete, + not_user_triggered=NO_VALUE, new_actions=[], + comment=NO_VALUE): + """Forms an actions XML string and returns it after processing. + + It parses the original XML string, adds new user actions (if there is any), + and pretty prints it. + + Args: + owner: the owner tag to be inserted in the original XML string. + description: the description tag to be inserted in the original XML + string. + obsolete: the obsolete tag to be inserted in the original XML string. + new_actions: optional. List of new user actions' names to be inserted. + comment: the comment tag to be inserted in the original XML string. + + Returns: + An updated and pretty-printed action XML string. + """ + # Form the actions.xml mock content based on the input parameters. + current_xml = ACTIONS_XML.format(owners=owner, description=description, + obsolete=obsolete, comment=comment, + not_user_triggered=not_user_triggered) + actions_dict, comments, suffixes = extract_actions.ParseActionFile( + current_xml) + for action_name in new_actions: + actions_dict[action_name] = action_utils.Action(action_name, None, []) + return extract_actions.PrettyPrint(actions_dict, comments, suffixes) + + def _ExpandSuffixesInActionsXML(self, actions_xml): + """Parses the given actions XML, expands suffixes and pretty prints it. + + Args: + actions_xml: actions XML string. + + Returns: + An updated and pretty-printed actions XML string with suffixes expanded. + """ + actions_dict, comments, suffixes = extract_actions.ParseActionFile( + actions_xml) + # Clear suffixes and mark actions as not coming from suffixes, so that + # the returned XML file is the expanded one. + suffixes = [] + for action in actions_dict.values(): + action.from_suffix = False + return extract_actions.PrettyPrint(actions_dict, comments, suffixes) + + def _PrettyPrintActionsXML(self, actions_xml): + """Parses the given actions XML and pretty prints it. + + Args: + actions_xml: actions XML string. + + Returns: + A pretty-printed actions XML string. + """ + actions_dict, comments, suffixes = extract_actions.ParseActionFile( + actions_xml) + return extract_actions.PrettyPrint(actions_dict, comments, suffixes) + + def testNoOwner(self): + xml_result = self._GetProcessedAction(NO_VALUE, DESCRIPTION, NO_VALUE) + self.assertEqual(NO_OWNER_EXPECTED_XML, xml_result) + + def testOneOwnerOneDescription(self): + xml_result = self._GetProcessedAction(ONE_OWNER, DESCRIPTION, NO_VALUE) + self.assertEqual(ONE_OWNER_EXPECTED_XML, xml_result) + + def testTwoOwners(self): + xml_result = self._GetProcessedAction(TWO_OWNERS, DESCRIPTION, NO_VALUE) + self.assertEqual(TWO_OWNERS_EXPECTED_XML, xml_result) + + def testNoDescription(self): + xml_result = self._GetProcessedAction(TWO_OWNERS, NO_VALUE, NO_VALUE) + self.assertEqual(NO_DESCRIPTION_EXPECTED_XML, xml_result) + + def testTwoDescriptions(self): + current_xml = ACTIONS_XML.format(owners=TWO_OWNERS, obsolete=NO_VALUE, + description=TWO_DESCRIPTIONS, + comment=NO_VALUE, + not_user_triggered=NO_VALUE) + # Since there are two description tags, the function ParseActionFile will + # raise SystemExit with exit code 1. + with self.assertRaises(SystemExit) as cm: + _, _ = extract_actions.ParseActionFile(current_xml) + self.assertEqual(cm.exception.code, 1) + + def testObsolete(self): + xml_result = self._GetProcessedAction(TWO_OWNERS, DESCRIPTION, OBSOLETE) + self.assertEqual(OBSOLETE_EXPECTED_XML, xml_result) + + + def testTwoObsoletes(self): + current_xml = ACTIONS_XML.format(owners=TWO_OWNERS, obsolete=TWO_OBSOLETE, + description=DESCRIPTION, comment=NO_VALUE, + not_user_triggered=NO_VALUE) + + # Since there are two obsolete tags, the function ParseActionFile will + # raise SystemExit with exit code 1. + with self.assertRaises(SystemExit) as cm: + _, _ = extract_actions.ParseActionFile(current_xml) + self.assertEqual(cm.exception.code, 1) + + def testAddNewActions(self): + xml_result = self._GetProcessedAction(TWO_OWNERS, DESCRIPTION, NO_VALUE, + new_actions=['action2']) + self.assertEqual(ADD_ACTION_EXPECTED_XML, xml_result) + + def testComment(self): + xml_result = self._GetProcessedAction(TWO_OWNERS, DESCRIPTION, NO_VALUE, + comment=COMMENT) + self.assertEqual(COMMENT_EXPECTED_XML, xml_result) + + def testNotUserTriggered(self): + xml_result = self._GetProcessedAction(NO_VALUE, DESCRIPTION, NO_VALUE, + NOT_USER_TRIGGERED) + self.assertEqual(NOT_USER_TRIGGERED_EXPECTED_XML, xml_result) + + def testBasicSuffix(self): + original_xml = """ + + + name1@chromium.org + Description. + + + + + + + """ + xml_result = self._ExpandSuffixesInActionsXML(original_xml) + self.assertMultiLineEqual(BASIC_SUFFIX_EXPECTED_XML, xml_result) + + def testSuffixPrettyPrint(self): + """Tests that suffixes are preserved when pretty-printing.""" + original_xml = """ + + + name1@chromium.org + Description. + + + name1@chromium.org + Description. + + + + + + + + + """ + xml_result = self._PrettyPrintActionsXML(original_xml) + expected_pretty_xml = """ + + + name1@chromium.org + Description. + + + + name1@chromium.org + Description. + + + + + + + + + + +""" + self.assertMultiLineEqual(expected_pretty_xml, xml_result) + + def testMultiActionMultiSuffixChain(self): + original_xml = """ + + + name1@chromium.org + Description. + + + name2@chromium.org + Description. + + + + + + + + + + + + + + + + + """ + xml_result = self._ExpandSuffixesInActionsXML(original_xml) + self.assertMultiLineEqual(MULTI_ACTION_MULTI_SUFFIX_CHAIN, xml_result) + + def testSuffixCustomSeparator(self): + original_xml = """ + + + name1@chromium.org + Description. + + + + + + + """ + xml_result = self._ExpandSuffixesInActionsXML(original_xml) + self.assertMultiLineEqual(SUFFIX_CUSTOM_SEPARATOR, xml_result) + + def testSuffixOrderingPrefix(self): + original_xml = """ + + + name1@chromium.org + Description. + + + + + + + """ + xml_result = self._ExpandSuffixesInActionsXML(original_xml) + self.assertMultiLineEqual(SUFFIX_OREDERING_PREFIX, xml_result) + + def testAffectedActionWithSuffixTag(self): + original_xml = """ + + + name1@chromium.org + Description. + + + name2@chromium.org + Description. + + + + + + + + + + + """ + xml_result = self._ExpandSuffixesInActionsXML(original_xml) + self.assertMultiLineEqual(AFFECTED_ACTION_WITH_SUFFIX_TAG, xml_result) + + def testErrorActionMissing(self): + original_xml = """ + + + name1@chromium.org + Description. + + + + + + + + """ + with self.assertRaises(action_utils.UndefinedActionItemError) as cm: + extract_actions.ParseActionFile(original_xml) + + def testErrorSuffixNameMissing(self): + original_xml = """ + + + name1@chromium.org + Description. + + + + + + + """ + with self.assertRaises(action_utils.SuffixNameEmptyError) as cm: + extract_actions.ParseActionFile(original_xml) + + def testErrorBadActionName(self): + original_xml = """ + + + name1@chromium.org + Description. + + + + + + + """ + with self.assertRaises(action_utils.InvalidAffecteddActionNameError) as cm: + extract_actions.ParseActionFile(original_xml) + + def testUserMetricsActionSpanningTwoLines(self): + code = 'base::UserMetricsAction(\n"Foo.Bar"));' + finder = extract_actions.ActionNameFinder('dummy', code, + extract_actions.USER_METRICS_ACTION_RE) + self.assertEqual('Foo.Bar', finder.FindNextAction()) + self.assertFalse(finder.FindNextAction()) + + def testUserMetricsActionAsAParam(self): + code = 'base::UserMetricsAction("Test.Foo"), "Test.Bar");' + finder = extract_actions.ActionNameFinder('dummy', code, + extract_actions.USER_METRICS_ACTION_RE) + self.assertEqual('Test.Foo', finder.FindNextAction()) + self.assertFalse(finder.FindNextAction()) + + def testNonLiteralUserMetricsAction(self): + code = 'base::UserMetricsAction(FOO)' + finder = extract_actions.ActionNameFinder('dummy', code, + extract_actions.USER_METRICS_ACTION_RE) + with self.assertRaises(Exception): + finder.FindNextAction() + + def testTernaryUserMetricsAction(self): + code = 'base::UserMetricsAction(foo ? "Foo.Bar" : "Bar.Foo"));' + finder = extract_actions.ActionNameFinder('dummy', code, + extract_actions.USER_METRICS_ACTION_RE) + with self.assertRaises(Exception): + finder.FindNextAction() + + def testTernaryUserMetricsActionWithNewLines(self): + code = """base::UserMetricsAction( + foo_bar ? "Bar.Foo" : + "Foo.Car")""" + finder = extract_actions.ActionNameFinder('dummy', code, + extract_actions.USER_METRICS_ACTION_RE) + with self.assertRaises(extract_actions.InvalidStatementException): + finder.FindNextAction() + + def testUserMetricsActionWithExtraWhitespace(self): + code = """base::UserMetricsAction("Foo.Bar" )""" + finder = extract_actions.ActionNameFinder('dummy', code, + extract_actions.USER_METRICS_ACTION_RE) + with self.assertRaises(extract_actions.InvalidStatementException): + finder.FindNextAction() + + def testUserMetricsActionSpanningTwoLinesJs(self): + code = "chrome.send('coreOptionsUserMetricsAction',\n['Foo.Bar']);" + finder = extract_actions.ActionNameFinder('dummy', code, + extract_actions.USER_METRICS_ACTION_RE_JS) + self.assertEqual('Foo.Bar', finder.FindNextAction()) + self.assertFalse(finder.FindNextAction()) + + def testNonLiteralUserMetricsActionJs(self): + code = "chrome.send('coreOptionsUserMetricsAction',\n[FOO]);" + finder = extract_actions.ActionNameFinder('dummy', code, + extract_actions.USER_METRICS_ACTION_RE_JS) + self.assertFalse(finder.FindNextAction()) + + def testTernaryUserMetricsActionJs(self): + code = ("chrome.send('coreOptionsUserMetricsAction', " + "[foo ? 'Foo.Bar' : 'Bar.Foo']);") + finder = extract_actions.ActionNameFinder('dummy', code, + extract_actions.USER_METRICS_ACTION_RE_JS) + self.assertFalse(finder.FindNextAction()) + + def testTernaryUserMetricsActionWithNewLinesJs(self): + code = """chrome.send('coreOptionsUserMetricsAction', + [foo ? 'Foo.Bar' : + 'Bar.Foo']);""" + finder = extract_actions.ActionNameFinder('dummy', code, + extract_actions.USER_METRICS_ACTION_RE_JS) + self.assertFalse(finder.FindNextAction()) + + def testUserMetricsActionWithExtraCharactersJs(self): + code = """chrome.send('coreOptionsUserMetricsAction', + ['Foo.Bar' + 1]);""" + finder = extract_actions.ActionNameFinder('dummy', code, + extract_actions.USER_METRICS_ACTION_RE_JS) + self.assertFalse(finder.FindNextAction()) + + def testComputedUserMetricsActionJs(self): + code = """chrome.send('coreOptionsUserMetricsAction', + ['Foo.' + foo_bar ? 'Bar' : 'Foo']);""" + finder = extract_actions.ActionNameFinder('dummy', code, + extract_actions.USER_METRICS_ACTION_RE_JS) + self.assertFalse(finder.FindNextAction()) + + def testUserMetricsActionWithMismatchedQuotes(self): + code = "chrome.send('coreOptionsUserMetricsAction', [\"Foo.Bar']);" + finder = extract_actions.ActionNameFinder('dummy', code, + extract_actions.USER_METRICS_ACTION_RE_JS) + self.assertFalse(finder.FindNextAction()) + + def testUserMetricsActionFromPropertyJs(self): + code = "chrome.send('coreOptionsUserMetricsAction', [objOrArray[key]]);" + finder = extract_actions.ActionNameFinder('dummy', code, + extract_actions.USER_METRICS_ACTION_RE_JS) + self.assertFalse(finder.FindNextAction()) + + def testUserMetricsActionFromFunctionJs(self): + code = "chrome.send('coreOptionsUserMetricsAction', [getAction(param)]);" + finder = extract_actions.ActionNameFinder('dummy', code, + extract_actions.USER_METRICS_ACTION_RE_JS) + self.assertFalse(finder.FindNextAction()) + + +if __name__ == '__main__': + unittest.main() diff --git a/actions/pretty_print.py b/actions/pretty_print.py new file mode 100755 index 000000000000..1a1a61cd446f --- /dev/null +++ b/actions/pretty_print.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging +import os +import sys + +import extract_actions +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import presubmit_util + +def main(argv): + presubmit_util.DoPresubmitMain(argv, 'actions.xml', 'actions.old.xml', + extract_actions.UpdateXml) + + +if '__main__' == __name__: + sys.exit(main(sys.argv)) diff --git a/common/diff_util.py b/common/diff_util.py new file mode 100644 index 000000000000..2141d0e617f8 --- /dev/null +++ b/common/diff_util.py @@ -0,0 +1,54 @@ +# Copyright 2014 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Utility functions for prompting user if changes automatically applied to some +user-managed files are correct. +""" + +from __future__ import print_function + +import logging +import os +import sys +import webbrowser + +from difflib import HtmlDiff +from tempfile import NamedTemporaryFile + + +def PromptUserToAcceptDiff(old_text, new_text, prompt): + """Displays a difference in two strings (old and new file contents) to the + user and asks whether the new version is acceptable. + + Args: + old_text: A string containing old file contents. + new_text: A string containing new file contents. + prompt: Text that should be displayed to the user, asking whether the new + file contents should be accepted. + + Returns: + True is user accepted the changes or there were no changes, False otherwise. + """ + logging.info('Computing diff...') + if old_text == new_text: + logging.info('No changes detected') + return True + html_diff = HtmlDiff(wrapcolumn=80).make_file( + old_text.splitlines(), new_text.splitlines(), fromdesc='Original', + todesc='Updated', context=True, numlines=5) + temp = NamedTemporaryFile(suffix='.html', delete=False) + try: + html_diff = html_diff.encode() + temp.write(html_diff) + temp.close() # Close the file so the browser process can access it. + webbrowser.open('file://' + temp.name) + print(prompt) + if sys.version_info.major == 2: + response = raw_input('(Y/n): ').strip().lower() + else: + response = input('(Y/n): ').strip().lower() + finally: + temp.close() # May be called on already closed file. + os.remove(temp.name) + return response == 'y' or response == '' diff --git a/common/etree_util.py b/common/etree_util.py new file mode 100644 index 000000000000..6266b02dfb95 --- /dev/null +++ b/common/etree_util.py @@ -0,0 +1,102 @@ +# Copyright 2019 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Utility functions for parsing XML strings into ElementTree nodes.""" + +import sys +import xml.etree.ElementTree as ET +import xml.sax + + +class _FirstTagFoundError(Exception): + """Raised when the first tag is found in an XML document. + + This isn't actually an error. Raising this exception is how we end parsing XML + documents early. + """ + pass + + +class _FirstTagFinder(xml.sax.ContentHandler): + """An XML SAX parser that raises as soon as a tag is found. + + Call getFirstTagLine to determine which line the tag was found on. + """ + + def __init__(self): + xml.sax.ContentHandler.__init__(self) + self.first_tag_line = 0 + self.first_tag_column = 0 + + def GetFirstTagLine(self): + return self.first_tag_line + + def GetFirstTagColumn(self): + return self.first_tag_column + + def setDocumentLocator(self, locator): + self.location = locator + + def startElement(self, tag, attributes): + del tag, attributes # Unused. + + # Now that the first tag is found, remember the location of it. + self.first_tag_line = self.location.getLineNumber() + self.first_tag_column = self.location.getColumnNumber() + + # End parsing by throwing. + raise _FirstTagFoundError() + + +class _CommentedXMLParser(ET.XMLParser): + """A Python 2 compatible ElementTree builder that preserves comments.""" + + def __init__(self, *args, **kwargs): + super(_CommentedXMLParser, self).__init__(*args, **kwargs) + self._parser.CommentHandler = self.comment + + def comment(self, data): # pylint: disable=invalid-name + self._target.start(ET.Comment, {}) + self._target.data(data) + self._target.end(ET.Comment) + + +def GetTopLevelContent(file_content): + """Returns a string of all the text in the xml file before the first tag.""" + handler = _FirstTagFinder() + + first_tag_line = 0 + first_tag_column = 0 + try: + xml.sax.parseString(file_content.encode('utf-8'), handler) + except _FirstTagFoundError: + # This is the expected case, it means a tag was found in the doc. + first_tag_line = handler.GetFirstTagLine() + first_tag_column = handler.GetFirstTagColumn() + if first_tag_line == 0 and first_tag_column == 0: + return '' + + char = 0 + for _ in range(first_tag_line - 1): + char = file_content.index('\n', char) + 1 + char += first_tag_column - 1 + + # |char| is now pointing at the final character before the opening tag '<'. + top_content = file_content[:char + 1].strip() + if not top_content: + return '' + + return top_content + '\n\n' + + +def ParseXMLString(raw_xml): + """Parses raw_xml and returns an ElementTree node that includes comments.""" + if sys.version_info.major == 2: + return ET.fromstring(raw_xml.encode('utf-8'), _CommentedXMLParser()) + else: + if sys.version_info >= (3, 8, 0): + tree_builder = ET.TreeBuilder(insert_comments=True) + else: + tree_builder = ET.TreeBuilder() + return ET.fromstring(raw_xml, ET.XMLParser(target=tree_builder)) diff --git a/common/models.py b/common/models.py new file mode 100644 index 000000000000..d06f8a898ff2 --- /dev/null +++ b/common/models.py @@ -0,0 +1,507 @@ +# Copyright 2015 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Types for building models of metric description xml files. + +UMA uses several XML files to allow clients to describe the metrics that they +collect, e.g. +https://chromium.googlesource.com/chromium/src/+/main/tools/metrics/rappor/rappor.xml + +These types can be used to build models that describe the canonical formatted +structure of these files, and the models can be used to extract the contents of +those files, or convert content back into a canonicalized version of the file. +""" + +import abc +import re +import xml.etree.ElementTree as ET +from xml.dom import minidom +import pretty_print_xml + + +# Non-basic type keys for storing comments and text attributes, so they don't +# conflict with regular keys, and can be skipped in JSON serialization. +COMMENT_KEY = ('comment') +TEXT_KEY = ('text') + + +def GetCommentsForNode(node): + """Extracts comments in the current node. + + Args: + node: The DOM node to extract comments from. + + Returns: + A list of comment DOM nodes. + """ + comments = [] + node = node.previousSibling + while node: + if node.nodeType == minidom.Node.COMMENT_NODE: + comments.append(node.data) + elif node.nodeType != minidom.Node.TEXT_NODE: + break + node = node.previousSibling + return comments[::-1] + + +def PutCommentsInNode(doc, node, comments): + """Appends comments to the DOM node. + + Args: + doc: The document to create a comment in. + node: The DOM node to write comments to. + comments: A list of comments. + """ + for comment in comments: + node.appendChild(doc.createComment(comment)) + + +def GetChildrenByTag(node, tag): + """Gets all children of a particular tag type. + + Args: + node: The DOM node to write comments to. + tag: The tag of the nodes to collect. + Returns: + A list of DOM nodes. + """ + return [child for child in node.childNodes if child.nodeName == tag] + + +def GetUnexpectedChildren(node, tags): + """Gets a set of unexpected children from |node|.""" + # Ingore text and comment nodes. + return (set(child.nodeName for child in node.childNodes) - set(tags) - set( + ('#comment', '#text'))) + + +class NodeType(object): + """Base type for a type of XML node. + + Args: + indent: True iff this node should have its children indented when pretty + printing. + extra_newlines: None or a triple of integers describing the number of + newlines that should be printed (after_open, before_close, after_close) + single_line: True iff this node may be squashed into a single line. + alphabetization: A list of [(tag, keyfn)] pairs, which specify the tags of + the children that should be sorted, and the functions to get sort keys + from xml nodes. + """ + __metaclass__ = abc.ABCMeta + + def __init__(self, tag, + indent=True, + extra_newlines=None, + single_line=False, + alphabetization=None): + self.tag = tag + self.indent = indent + self.extra_newlines = extra_newlines + self.single_line = single_line + self.alphabetization = alphabetization + + @abc.abstractmethod + def Unmarshall(self, node): + """Extracts the content of the node to an object. + + Args: + node: The XML node to extract data from. + + Returns: + An object extracted from the node. + """ + + @abc.abstractmethod + def Marshall(self, doc, obj): + """Converts an object into an XML node of this type. + + Args: + doc: A document create an XML node in. + obj: The object to be encoded into the XML. + + Returns: + An XML node encoding the object. + """ + + def GetComments(self, obj): + """Gets comments for the object being encoded. + + Args: + obj: The object to be encoded into the XML. + + Returns: + A list of comment nodes for the object. + """ + del obj # Used in ObjectNodeType implementation + # The base NodeType does not store comments + return [] + + def MarshallIntoNode(self, doc, node, obj): + """Marshalls the object and appends it to a node, with comments. + + Args: + doc: A document create an XML node in. + node: An XML node to marshall the object into. + obj: The object to be encoded into the XML. + """ + PutCommentsInNode(doc, node, self.GetComments(obj)) + node.appendChild(self.Marshall(doc, obj)) + + def GetAttributes(self): + """Gets a sorted list of attributes that this node can have. + + Returns: + A list of names of XML attributes, sorted by the order they should appear. + """ + return [] + + def GetRequiredAttributes(self): + """Gets a list of required attributes that this node has. + + Returns: + A list of names of required attributes of the node. + """ + return [] + + def GetNodeTypes(self): + """Gets a map of tags to node types for all dependent types. + + Returns: + A map of tags to node-types for this node and all of the nodes that it + can contain. + """ + return {self.tag: self} + + +class TextNodeType(NodeType): + """A type for simple nodes that just have a tag and some text content. + + Unmarshalls nodes to strings. + + Args: + tag: The name of XML tag for this type of node. + """ + + def __str__(self): + return 'TextNodeType("%s")' % self.tag + + def Unmarshall(self, node): + """Extracts the content of the node to an object. + + Args: + node: The XML node to extract data from. + + Returns: + The object representation of the node. + """ + + obj = {} + obj[COMMENT_KEY] = GetCommentsForNode(node) + + if not node.firstChild: + return obj + text = node.firstChild.nodeValue + obj[TEXT_KEY] = '\n\n'.join(pretty_print_xml.SplitParagraphs(text)) + + # TextNode shouldn't have any child. + unexpected = GetUnexpectedChildren(node, set()) + if unexpected: + raise ValueError("Unexpected children: %s in <%s> node" % + (','.join(unexpected), self.tag)) + + return obj + + def Marshall(self, doc, obj): + """Converts an object into an XML node of this type. + + Args: + doc: A document to create an XML node in. + obj: An object to be encoded into the XML. + + Returns: + An XML node encoding the object. + """ + node = doc.createElement(self.tag) + text = obj.get(TEXT_KEY) + if text: + node.appendChild(doc.createTextNode(text)) + return node + + def GetComments(self, obj): + """Gets comments for the object being encoded. + + Args: + obj: The object to be encoded into the XML. + + Returns: + A list of comment nodes for the object. + """ + return obj[COMMENT_KEY] + + +class ChildType(object): + """Metadata about a node type's children. + + Args: + attr: The field name of the parents model object storing the child's model. + node_type: The NodeType of the child. + multiple: True if the child can be repeated. + """ + + def __init__(self, attr, node_type, multiple): + self.attr = attr + self.node_type = node_type + self.multiple = multiple + + +class ObjectNodeType(NodeType): + """A complex node type that has attributes or other nodes as children. + + Unmarshalls nodes to objects. + + Args: + tag: The name of XML tag for this type of node. + attributes: A list of (name, type, regex) tubles, e.g. [('foo', unicode, + r'^\w+$')]. The order of the attributes determines the ordering of + attributes, when serializing objects to XML. The "regex" can be None + to do no validation, otherwise the attribute must match that pattern. + text_attribute: An attribute stored in the text content of the node. + children: A list of ChildTypes describing the objects children. + + Raises: + ValueError: Attributes contains duplicate definitions. + """ + + def __init__(self, + tag, + attributes=None, + required_attributes=None, + children=None, + text_attribute=None, + **kwargs): + NodeType.__init__(self, tag, **kwargs) + self.attributes = attributes or [] + self.required_attributes = required_attributes or [] + self.children = children or [] + self.text_attribute = text_attribute + if len(self.attributes) != len(set(a for a, _, _ in self.attributes)): + raise ValueError('Duplicate attribute definition.') + + def __str__(self): + return 'ObjectNodeType("%s")' % self.tag + + def Unmarshall(self, node): + """Extracts the content of the node to an object. + + Args: + node: The XML node to extract data from. + + Returns: + An object extracted from the node. + + Raises: + ValueError: The node is missing required children. + """ + obj = {} + obj[COMMENT_KEY] = GetCommentsForNode(node) + + for attr, attr_type, attr_re in self.attributes: + if node.hasAttribute(attr): + obj[attr] = attr_type(node.getAttribute(attr)) + if attr_re is not None: + attr_val = obj.get(attr, '') + if not re.match(attr_re, attr_val): + raise ValueError('%s "%s" does not match regex "%s"' % + (attr, attr_val, attr_re)) + + # We need to iterate through all the children and get their nodeValue, + # to account for the cases where other children node precedes the text + # attribute. + obj[self.text_attribute] = '' + child = node.firstChild + while child: + obj[self.text_attribute] += (child.nodeValue.strip() + if child.nodeValue else '') + child = child.nextSibling + + # This prevents setting a None key with empty string value + if obj[self.text_attribute] == '': + del obj[self.text_attribute] + + for child in self.children: + nodes = GetChildrenByTag(node, child.node_type.tag) + if child.multiple: + obj[child.attr] = [ + child.node_type.Unmarshall(n) for n in nodes] + elif nodes: + obj[child.attr] = child.node_type.Unmarshall(nodes[0]) + + unexpected = GetUnexpectedChildren( + node, set([child.node_type.tag for child in self.children])) + if unexpected: + raise ValueError("Unexpected children: %s in <%s> node" % + (','.join(unexpected), self.tag)) + + return obj + + def Marshall(self, doc, obj): + """Converts an object into an XML node of this type. + + Args: + doc: A document create an XML node in. + obj: The object to be encoded into the XML. + + Returns: + An XML node encoding the object. + """ + node = doc.createElement(self.tag) + for attr, _, _ in self.attributes: + if attr in obj: + node.setAttribute(attr, str(obj[attr])) + + if self.text_attribute and self.text_attribute in obj: + node.appendChild(doc.createTextNode(obj[self.text_attribute])) + + for child in self.children: + if child.multiple: + for child_obj in obj[child.attr]: + child.node_type.MarshallIntoNode(doc, node, child_obj) + elif child.attr in obj: + child.node_type.MarshallIntoNode(doc, node, obj[child.attr]) + return node + + def GetComments(self, obj): + """Gets comments for the object being encoded. + + Args: + obj: The object to be encoded into the XML. + + Returns: + A list of comment nodes for the object. + """ + return obj[COMMENT_KEY] + + def GetAttributes(self): + """Gets a sorted list of attributes that this node can have. + + Returns: + A list of names of XML attributes, sorted by the order they should appear. + """ + return [attr for attr, _, _ in self.attributes] + + def GetRequiredAttributes(self): + """Gets a list of required attributes that this node has. + + Returns: + A list of names of required attributes, or an empty list if there is no + required attribute. + """ + return self.required_attributes or [] + + def GetNodeTypes(self): + """Get a map of tags to node types for all dependent types. + + Returns: + A map of tags to node-types for this node and all of the nodes that it + can contain. + """ + types = {self.tag: self} + for child in self.children: + types.update(child.node_type.GetNodeTypes()) + return types + + +class DocumentType(object): + """Model for the root of an XML description file. + + Args: + root_type: A NodeType describing the root tag of the document. + """ + + def __init__(self, root_type): + self.root_type = root_type + + def _ParseMinidom(self, minidom_doc): + """Parses the input minidom document + + Args: + minidom_doc: The input minidom document + + Returns: + An object representing the unmarshalled content of the document's root + node. + """ + root = minidom_doc.getElementsByTagName(self.root_type.tag)[0] + return self.root_type.Unmarshall(root) + + def Parse(self, input_file): + """Parses the input file, which can be minidom, ET or xml string. + + The flexibility of input is to accommodate the currently different + representations of ukm, enums, histograms and actions in their + respective pretty_print.py. + + Args: + input_file: The input file can be given in the form of minidom, ET + or xml string. + + Returns: + An object representing the unmarshalled content of the document's root + node. + """ + if not isinstance(input_file, minidom.Document): + if isinstance(input_file, ET.Element): + input_file = ET.tostring(input_file, encoding='utf-8', method='xml') + input_file = minidom.parseString(input_file) + return self._ParseMinidom(input_file) + + def GetPrintStyle(self): + """Gets an XmlStyle object for pretty printing a document of this type. + + Returns: + An XML style object. + """ + types = self.root_type.GetNodeTypes() + return pretty_print_xml.XmlStyle( + attribute_order={t: types[t].GetAttributes() + for t in types}, + required_attributes={ + t: types[t].GetRequiredAttributes() + for t in types + }, + tags_that_have_extra_newline={ + t: types[t].extra_newlines + for t in types if types[t].extra_newlines + }, + tags_that_dont_indent=[t for t in types if not types[t].indent], + tags_that_allow_single_line=[t for t in types if types[t].single_line], + tags_alphabetization_rules={ + t: types[t].alphabetization + for t in types if types[t].alphabetization + }) + + def _ToXML(self, obj): + """Converts an object into an XML document. + + Args: + obj: An object to serialize to XML. + + Returns: + An XML minidom Document object. + """ + doc = minidom.Document() + self.root_type.MarshallIntoNode(doc, doc, obj) + return doc + + def PrettyPrint(self, obj): + """Converts an object into pretty-printed XML as a string. + + Args: + obj: An object to serialize to XML. + + Returns: + A string containing pretty printed XML. + """ + return self.GetPrintStyle().PrettyPrintXml(self._ToXML(obj)) diff --git a/common/path_util.py b/common/path_util.py new file mode 100644 index 000000000000..02d04c80137f --- /dev/null +++ b/common/path_util.py @@ -0,0 +1,14 @@ +# Copyright 2015 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Utility functions for resolving file paths in histograms scripts.""" + +import os.path + + +def GetInputFile(src_relative_file_path): + """Converts a src/-relative file path into a path that can be opened.""" + depth = [os.path.dirname(__file__), '..', '..', '..'] + path = os.path.join(*(depth + src_relative_file_path.split('/'))) + return os.path.abspath(path) diff --git a/common/presubmit_util.py b/common/presubmit_util.py new file mode 100644 index 000000000000..1ba4b80c2583 --- /dev/null +++ b/common/presubmit_util.py @@ -0,0 +1,112 @@ +# Copyright 2015 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from __future__ import print_function + +import difflib +import logging +import os +import shutil +import sys + +sys.path.append( + os.path.join(os.path.dirname(os.path.abspath(__file__)), + os.pardir, os.pardir, 'python', 'google')) +import path_utils + +import diff_util + + +def DoPresubmit(argv, + original_filename, + backup_filename, + prettyFn, + script_name='git cl format'): + """Execute presubmit/pretty printing for the target file. + + Args: + argv: command line arguments + original_filename: The path to the file to read from. + backup_filename: When pretty printing, move the old file contents here. + prettyFn: A function which takes the original xml content and produces + pretty printed xml. + script_name: The name of the script to run for pretty printing. + + Returns: + An exit status. Non-zero indicates errors. + """ + # interactive: Print log info messages and prompt user to accept the diff. + interactive = ('--non-interactive' not in argv) + # presubmit: Simply print a message if the input is not formatted correctly. + presubmit = ('--presubmit' in argv) + # diff: Print diff to stdout rather than modifying files. + diff = ('--diff' in argv) + + if interactive: + logging.basicConfig(level=logging.INFO) + else: + logging.basicConfig(level=logging.ERROR) + + # If there is a description xml in the current working directory, use that. + # Otherwise, use the one residing in the same directory as this script. + xml_dir = os.getcwd() + if not os.path.isfile(os.path.join(xml_dir, original_filename)): + xml_dir = path_utils.ScriptDir() + + xml_path = os.path.join(xml_dir, original_filename) + + # Save the original file content. + logging.info('Loading %s...', os.path.relpath(xml_path)) + with open(xml_path, 'rb') as f: + original_xml = f.read() + + # Check there are no CR ('\r') characters in the file. + if b'\r' in original_xml: + logging.error('DOS-style line endings (CR characters) detected - these are ' + 'not allowed. Please run dos2unix %s', original_filename) + return 1 + + original_xml = original_xml.decode('utf-8') + + try: + pretty = prettyFn(original_xml) + except Exception as e: + logging.exception('Aborting parsing due to fatal errors:') + return 1 + + if original_xml == pretty: + logging.info('%s is correctly pretty-printed.', original_filename) + return 0 + + if presubmit: + if interactive: + logging.error('%s is not formatted correctly; run %s to fix.', + original_filename, script_name) + return 1 + + # Prompt user to consent on the change. + if interactive and not diff_util.PromptUserToAcceptDiff( + original_xml, pretty, 'Is the new version acceptable?'): + logging.error('Diff not accepted. Aborting.') + return 1 + + if diff: + for line in difflib.unified_diff(original_xml.splitlines(), + pretty.splitlines()): + print(line) + return 0 + + logging.info('Creating backup file: %s', backup_filename) + shutil.move(xml_path, os.path.join(xml_dir, backup_filename)) + + pretty = pretty.encode('utf-8') + with open(xml_path, 'wb') as f: + f.write(pretty) + logging.info('Updated %s. Don\'t forget to add it to your changelist', + xml_path) + return 0 + + +def DoPresubmitMain(*args, **kwargs): + sys.exit(DoPresubmit(*args, **kwargs)) diff --git a/common/pretty_print_xml.py b/common/pretty_print_xml.py new file mode 100644 index 000000000000..8c241edf9364 --- /dev/null +++ b/common/pretty_print_xml.py @@ -0,0 +1,328 @@ +# Copyright 2014 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Utility file for pretty printing xml file. + +The function PrettyPrintXml will be used for formatting both histograms.xml +and actions.xml. +""" + +import sys +import logging +import textwrap +from xml.dom import minidom +import xml.etree.ElementTree as ET + +import etree_util + +WRAP_COLUMN = 80 + + +class Error(Exception): + pass + + +def LastLineLength(s): + """Returns the length of the last line in s. + + Args: + s: A multi-line string, including newlines. + + Returns: + The length of the last line in s, in characters. + """ + if s.rfind('\n') == -1: + return len(s) + return len(s) - s.rfind('\n') - len('\n') + + +def XmlEscape(s): + """Returns escaped string for the given string |s|.""" + s = s.replace('&', '&').replace('<', '<') + s = s.replace('\"', '"').replace('>', '>') + return s + + +def SplitParagraphs(text): + """Split a block of text into paragraphs. + + Args: + text: The text to split. + + Returns: + A list of paragraphs as strings. + """ + text = textwrap.dedent(text.strip('\n')) + lines = text.split('\n') + # Split the text into paragraphs at blank line boundaries. + paragraphs = [[]] + for l in lines: + if paragraphs[-1] and not l.strip(): + paragraphs.append([]) + else: + # Replace runs of repeated whitespace with a single space. + transformed_line = ' '.join(l.split()) + paragraphs[-1].append(transformed_line) + # Remove trailing empty paragraph if present. + if paragraphs and not paragraphs[-1]: + paragraphs = paragraphs[:-1] + return ['\n'.join(p) for p in paragraphs] + + +class XmlStyle(object): + """A class that stores all style specification for an output xml file.""" + + def __init__(self, attribute_order, required_attributes, + tags_that_have_extra_newline, tags_that_dont_indent, + tags_that_allow_single_line, tags_alphabetization_rules): + self.attribute_order = attribute_order + self.required_attributes = required_attributes + self.tags_that_have_extra_newline = tags_that_have_extra_newline + self.tags_that_dont_indent = tags_that_dont_indent + self.tags_that_allow_single_line = tags_that_allow_single_line + self.tags_alphabetization_rules = tags_alphabetization_rules + + self.wrapper = textwrap.TextWrapper() + self.wrapper.break_on_hyphens = False + self.wrapper.break_long_words = False + self.wrapper.width = WRAP_COLUMN + + def PrettyPrintXml(self, tree): + # If it's not an ElementTree instance, we assume it's minidom. + if not isinstance(tree, ET.Element): + assert isinstance(tree, minidom.Document) + return self._PrettyPrintMinidom(tree) + + tree = self._TransformByAlphabetizing(tree) + tree = self.PrettyPrintElementTreeNode(tree) + return tree + + def _PrettyPrintMinidom(self, doc): + """Transforms minidom to ElementTree before pretty printing it.""" + raw_xml = doc.toxml() + + # minidom prepends a document type, so remove it. + raw_xml = raw_xml.replace(minidom.Document().toxml(), '') + + etree_root = etree_util.ParseXMLString(raw_xml) + top_content = etree_util.GetTopLevelContent(raw_xml) + + # Add newlines between top-level comments. + top_content = top_content.replace('-->\n\n\n' % node.text + + # Handle element nodes. + return self._PrettyPrintElement(node, indent) diff --git a/histograms/OWNERS b/histograms/OWNERS new file mode 100644 index 000000000000..0f83aa2f8977 --- /dev/null +++ b/histograms/OWNERS @@ -0,0 +1,9 @@ +# Extending enums by adding new buckets is allowed without OWNERS review, but +# you should add a metrics reviewer if you are changing the semantics of +# existing buckets. +per-file enums.xml=* + +# The top-level histograms.xml file is deprecated and should not be modified. +# It's temporarily still present because some tools have the filename hardcoded. +per-file histograms.xml=file://base/metrics/OWNERS +per-file histograms.xml=set noparent diff --git a/histograms/PRESUBMIT.py b/histograms/PRESUBMIT.py new file mode 100644 index 000000000000..39c408096182 --- /dev/null +++ b/histograms/PRESUBMIT.py @@ -0,0 +1,118 @@ +# Copyright 2013 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +""" +See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts +for more details on the presubmit API built into depot_tools. +""" + +USE_PYTHON3 = True +PRESUBMIT_VERSION = '2.0.0' + + +def GetPrettyPrintErrors(input_api, output_api, cwd, rel_path, results): + """Runs pretty-print command for specified file.""" + args = [ + input_api.python3_executable, 'pretty_print.py', rel_path, '--presubmit', + '--non-interactive' + ] + exit_code = input_api.subprocess.call(args, cwd=cwd) + + if exit_code != 0: + error_msg = ( + '%s is not formatted correctly; run git cl format to fix.' % rel_path) + results.append(output_api.PresubmitError(error_msg)) + + +def GetPrefixErrors(input_api, output_api, cwd, rel_path, results): + """Validates histogram prefixes in specified file.""" + exit_code = input_api.subprocess.call( + [input_api.python3_executable, 'validate_prefix.py', rel_path], cwd=cwd) + + if exit_code != 0: + error_msg = ('%s contains histogram(s) with disallowed prefix, please run ' + 'validate_prefix.py %s to fix.' % (rel_path, rel_path)) + results.append(output_api.PresubmitError(error_msg)) + + +def GetValidateHistogramsError(input_api, output_api, cwd, results): + """Validates histograms format and index file.""" + exit_code = input_api.subprocess.call( + [input_api.python3_executable, 'validate_format.py'], cwd=cwd) + + if exit_code != 0: + error_msg = ( + 'Histograms are not well-formatted; please run %s/validate_format.py ' + 'and fix the reported errors.' % cwd) + results.append(output_api.PresubmitError(error_msg)) + + exit_code = input_api.subprocess.call( + [input_api.python3_executable, 'validate_histograms_index.py'], cwd=cwd) + + if exit_code != 0: + error_msg = ( + 'Histograms index file is not up-to-date. Please run ' + '%s/histogram_paths.py to update it' % cwd) + results.append(output_api.PresubmitError(error_msg)) + + +def ValidateSingleFile(input_api, output_api, file_obj, cwd, results): + """Does corresponding validations if histograms.xml or enums.xml is changed. + + Args: + input_api: An input_api instance that contains information about changes. + output_api: An output_api instance to create results of the PRESUBMIT check. + file_obj: A file object of one of the changed files. + cwd: Path to current working directory. + results: The returned variable which is a list of output_api results. + + Returns: + A boolean that True if a histograms.xml or enums.xml file is changed. + """ + p = file_obj.AbsoluteLocalPath() + # Only do PRESUBMIT checks when |p| is under |cwd|. + if input_api.os_path.commonprefix([p, cwd]) != cwd: + return False + filepath = input_api.os_path.relpath(p, cwd) + + if 'test_data' in filepath: + return False + + # If the changed file is histograms.xml or histogram_suffixes_list.xml, + # pretty-print and validate prefix it. + elif ('histograms.xml' in filepath + or 'histogram_suffixes_list.xml' in filepath): + GetPrettyPrintErrors(input_api, output_api, cwd, filepath, results) + # TODO(crbug/1120229): Re-enable validate prefix check once all histograms + # are split. + # GetPrefixErrors(input_api, output_api, cwd, filepath, results) + return True + + # If the changed file is enums.xml, pretty-print it. + elif 'enums.xml' in filepath: + GetPrettyPrintErrors(input_api, output_api, cwd, filepath, results) + return True + + return False + + +def CheckHistogramFormatting(input_api, output_api): + """Checks that histograms.xml is pretty-printed and well-formatted.""" + results = [] + cwd = input_api.PresubmitLocalPath() + xml_changed = False + + # Only for changed files, do corresponding checks if the file is + # histograms.xml or enums.xml. + for file_obj in input_api.AffectedTextFiles(): + is_changed = ValidateSingleFile( + input_api, output_api, file_obj, cwd, results) + xml_changed = xml_changed or is_changed + + # Run validate_format.py and validate_histograms_index.py, if changed files + # contain histograms.xml or enums.xml. + if xml_changed: + GetValidateHistogramsError(input_api, output_api, cwd, results) + + return results diff --git a/histograms/README.md b/histograms/README.md new file mode 100644 index 000000000000..ca401c3ea32b --- /dev/null +++ b/histograms/README.md @@ -0,0 +1,958 @@ +# Histogram Guidelines + +This document gives the best practices on how to use histograms in code and how +to document the histograms for the dashboards. There are three general types +of histograms: [enumerated histograms](#Enum-Histograms), +[count histograms](#Count-Histograms) (for arbitrary numbers), and +[sparse histograms](#When-To-Use-Sparse-Histograms) (for anything when the +precision is important over a wide range and/or the range is not possible to +specify a priori). + +[TOC] + +## Defining Useful Metrics + +### Directly Measure What You Want + +Measure exactly what you want, whether that's the time used for a function call, +the number of bytes transmitted to fetch a page, the number of items in a list, +etc. Do not assume you can calculate what you want from other histograms, as +most ways of doing this are incorrect. + +For example, suppose you want to measure the runtime of a function that just +calls two subfunctions, each of which is instrumented with histogram logging. +You might assume that you can simply sum the histograms for those two functions +to get the total time, but that results in misleading data. If we knew which +emissions came from which calls, we could pair them up and derive the total time +for the function. However, histograms are pre-aggregated client-side, which +means that there's no way to recover which emissions should be paired up. If you +simply add up the two histograms to get a total duration histogram, you're +implicitly assuming the two histograms' values are independent, which may not be +the case. + +Directly measure what you care about; don't try to derive it from other data. + +### Provide Context + +When defining a new metric, think ahead about how you will analyze the +data. Often, this will require providing context in order for the data to be +interpretable. + +For enumerated histograms in particular, that often means including a bucket +that can be used as a baseline for understanding the data recorded to other +buckets: see the [enumerated histogram section](#Enum-Histograms). + +### Naming Your Histogram + +Histograms are taxonomized into categories, using dot (`.`) characters as +separators. Thus, histogram names should be in the form Category.Name or +Category.Subcategory.Name, etc., where each category organizes related +histograms. + +It should be quite rare to introduce new top-level categories into the existing +taxonomy. If you're tempted to do so, please look through the existing +categories to see whether any matches the metric(s) that you are adding. To +create a new category, the CL must be reviewed by +chromium-metrics-reviews@google.com. + +## Coding (Emitting to Histograms) + +Prefer the helper functions defined in +[histogram_functions.h](https://cs.chromium.org/chromium/src/base/metrics/histogram_functions.h). +These functions take a lock and perform a map lookup, but the overhead is +generally insignificant. However, when recording metrics on the critical path +(e.g. called in a loop or logged multiple times per second), use the macros in +[histogram_macros.h](https://cs.chromium.org/chromium/src/base/metrics/histogram_macros.h) +instead. These macros cache a pointer to the histogram object for efficiency, +though this comes at the cost of increased binary size: 130 bytes/macro usage +sounds small but quickly adds up. + +### Don't Use the Same Histogram Logging Call in Multiple Places + +These logging macros and functions have long names and sometimes include extra +parameters (defining the number of buckets for example). Use a helper function +if possible. This leads to shorter, more readable code that's also more +resilient to problems that could be introduced when making changes. (One could, +for example, erroneously change the bucketing of the histogram in one call but +not the other.) + +### Use Fixed Strings When Using Histogram Macros + +When using histogram macros (calls such as `UMA_HISTOGRAM_ENUMERATION`), you're +not allowed to construct your string dynamically so that it can vary at a +callsite. At a given callsite (preferably you have only one), the string +should be the same every time the macro is called. If you need to use dynamic +names, use the functions in histogram_functions.h instead of the macros. + +### Don't Use Same Inline String in Multiple Places + +If you must use the histogram name in multiple places, use a compile-time +constant of appropriate scope that can be referenced everywhere. Using inline +strings in multiple places can lead to errors if you ever need to revise the +name and you update one location and forget another. + +### Efficiency + +Generally, don't be concerned about the processing cost of emitting to a +histogram (unless you're using [sparse +histograms](#When-To-Use-Sparse-Histograms)). The normal histogram code is +highly optimized. If you are recording to a histogram in particularly +performance-sensitive or "hot" code, make sure you're using the histogram +macros; see [reasons above](#Coding-Emitting-to-Histograms). + +## Picking Your Histogram Type + +### Enum Histograms + +Enumerated histogram are most appropriate when you have a list of connected / +related states that should be analyzed jointly. For example, the set of actions +that can be done on the New Tab Page (use the omnibox, click a most visited +tile, click a bookmark, etc.) would make a good enumerated histogram. +If the total count of your histogram (i.e. the sum across all buckets) is +something meaningful—as it is in this example—that is generally a good sign. +However, the total count does not have to be meaningful for an enum histogram +to still be the right choice. + +Enumerated histograms are also appropriate for counting events. Use a simple +boolean histogram. It's usually best if you have a comparison point in the same +histogram. For example, if you want to count pages opened from the history page, +it might be a useful comparison to have the same histogram record the number of +times the history page was opened. + +In rarer cases, it's okay if you only log to one bucket (say, `true`). However, +think about whether this will provide enough [context](#Provide-Context). For +example, suppose we want to understand how often users interact with a button. +Just knowing that users clicked this particular button 1 million times in a day +is not very informative on its own: The size of Chrome's user base is constantly +changing, only a subset of users have consented to metrics reporting, different +platforms have different sampling rates for metrics reporting, and so on. The +data would be much easier to make sense of if it included a baseline: how often +is the button shown? + +If only a few buckets are emitted to, consider using a [sparse +histogram](#When-To-Use-Sparse-Histograms). + +#### Requirements + +Enums logged in histograms must: + +- be prefixed with the comment: + ```c++ + // These values are persisted to logs. Entries should not be renumbered and + // numeric values should never be reused. + ``` +- be numbered starting from `0`. Note this bullet point does *not* apply for + enums logged with sparse histograms. +- have enumerators with explicit values (`= 0`, `= 1`, `= 2`) to make it clear + that the actual values are important. This also makes it easy to match the + values between the C++/Java definition and [histograms.xml](./histograms.xml). +- not renumber or reuse enumerator values. When adding a new enumerator, append + the new enumerator to the end. When removing an unused enumerator, comment it + out, making it clear the value was previously used. + +If your enum histogram has a catch-all / miscellaneous bucket, put that bucket +first (`= 0`). This makes the bucket easy to find on the dashboard if additional +buckets are added later. + +#### Usage + +*In C++*, define an `enum class` with a `kMaxValue` enumerator: + +```c++ +enum class NewTabPageAction { + kUseOmnibox = 0, + kClickTitle = 1, + // kUseSearchbox = 2, // no longer used, combined into omnibox + kOpenBookmark = 3, + kMaxValue = kOpenBookmark, +}; +``` + +`kMaxValue` is a special enumerator that must share the highest enumerator +value, typically done by aliasing it with the enumerator with the highest +value: clang automatically checks that `kMaxValue` is correctly set for `enum +class`. + +The histogram helpers use the `kMaxValue` convention, and the enum may be +logged with: + +```c++ +UMA_HISTOGRAM_ENUMERATION("NewTabPageAction", action); +``` + +or: + +```c++ +UmaHistogramEnumeration("NewTabPageAction", action); +``` + +where `action` is an enumerator of the enumeration type `NewTabPageAction`. + +Logging histograms from Java should look similar: + +```java +// These values are persisted to logs. Entries should not be renumbered and +// numeric values should never be reused. +@IntDef({NewTabPageAction.USE_OMNIBOX, NewTabPageAction.CLICK_TITLE, + NewTabPageAction.OPEN_BOOKMARK}) +private @interface NewTabPageAction { + int USE_OMNIBOX = 0; + int CLICK_TITLE = 1; + // int USE_SEARCHBOX = 2; // no longer used, combined into omnibox + int OPEN_BOOKMARK = 3; + int COUNT = 4; +} + +// Using a helper function is optional, but avoids some boilerplate. +private static void logNewTabPageAction(@NewTabPageAction int action) { + RecordHistogram.recordEnumeratedHistogram( + "NewTabPageAction", action, NewTabPageAction.COUNT); +} +``` + +Finally, regardless of the programming language you are using, add the +definition of the enumerator to [enums.xml](./enums.xml). + +#### Legacy Enums + +**Note: this method of defining histogram enums is deprecated. Do not use this +for new enums *in C++*.** + +Many legacy enums define a `kCount` sentinel, relying on the compiler to +automatically update it when new entries are added: + +```c++ +enum class NewTabPageAction { + kUseOmnibox = 0, + kClickTitle = 1, + // kUseSearchbox = 2, // no longer used, combined into omnibox + kOpenBookmark = 3, + kCount, +}; +``` + +These enums must be recorded using the legacy helpers: + +```c++ +UMA_HISTOGRAM_ENUMERATION("NewTabPageAction", action, NewTabPageAction::kCount); +``` + +or: + +```c++ +UmaHistogramEnumeration("NewTabPageAction", action, NewTabPageAction::kCount); +``` + +### Flag Histograms + +When adding a new flag in +[about_flags.cc](../../../chrome/browser/about_flags.cc), you need to add a +corresponding entry to [enums.xml](./enums.xml). This is automatically verified +by the `AboutFlagsHistogramTest` unit test. + +To add a new entry: + +1. After adding flags + to [about_flags.cc](../../../chrome/browser/about_flags.cc), + run `generate_flag_enums.py --feature ` or + simply `generate_flag_enums.py` (slower). + +You can alternatively follow these steps: + +1. Edit [enums.xml](./enums.xml), adding the feature to the `LoginCustomFlags` + enum section, with any unique value (just make one up, although whatever it + is needs to appear in sorted order; `pretty_print.py` can do this for you). +2. Build `unit_tests`, then run `unit_tests + --gtest_filter='AboutFlagsHistogramTest.*'` to compute the correct value. +3. Update the entry in [enums.xml](./enums.xml) with the correct value, and move + it so the list is sorted by value (`pretty_print.py` can do this for you). +4. Re-run the test to ensure the value and ordering are correct. + +You can also use `tools/metrics/histograms/validate_format.py` to check the +ordering (but not that the value is correct). + +Don't remove entries when removing a flag; they are still used to decode data +from previous Chrome versions. + +### Count Histograms + +[histogram_macros.h](https://cs.chromium.org/chromium/src/base/metrics/histogram_macros.h) +provides macros for some common count types, such as memory or elapsed time, in +addition to general count macros. These have reasonable default values; you +seldom need to choose the number of buckets or histogram min. However, you still +need to choose the histogram max (use the advice below). + +If none of the default macros work well for you, please thoughtfully choose a +min, max, and bucket count for your histogram using the advice below. + +#### Count Histograms: Choosing Min and Max + +For the max, choose a value such that very few histogram samples exceed the max. +If a sample is greater than or equal to the max value, it is put in an +"overflow" bucket. If this bucket is too large, it can be difficult to compute +statistics. One rule of thumb is that at most 1% of samples should be in the +overflow bucket (and ideally, less). This allows analysis of the 99th +percentile. Err on the side of too large a range versus too short a range. +Remember that if you choose poorly, you'll have to wait for another release +cycle to fix it. + +For the min, use 1 if you care about all possible values (zero and above). All +histograms have an underflow bucket for emitted zeros, so a min of 1 is +appropriate. Otherwise, choose the min appropriate for your particular +situation. + +#### Count Histograms: Choosing Number of Buckets + +Choose the smallest number of buckets that give you the granularity you need. By +default, count histogram bucket sizes increase exponentially with respect to the +value (i.e., exponential binning), so you can get fine granularity when the +values are small yet still reasonable resolution when the values are larger. The +macros default to 50 buckets (or 100 buckets for histograms with wide ranges), +which is appropriate for most purposes. Because histograms pre-allocate all the +buckets, the number of buckets selected directly dictates how much memory is +used. Do not exceed 100 buckets without good reason (and consider whether +[sparse histograms](#When-To-Use-Sparse-Histograms) might work better for you in +that case—they do not pre-allocate their buckets). + +### Timing Histograms + +You can easily emit a time duration (time delta) using UMA_HISTOGRAM_TIMES, +UMA_HISTOGRAM_MEDIUM_TIMES, UMA_HISTOGRAM_LONG_TIMES macros, and their +friends, as well as helpers like SCOPED_UMA_HISTOGRAM_TIMER. Many timing +histograms are used for performance monitoring; if this is the case for you, +please read [this document about how to structure timing histograms to make +them more useful and +actionable](https://chromium.googlesource.com/chromium/src/+/lkgr/docs/speed/diagnostic_metrics.md). + +### Percentage or Ratio Histograms + +You can easily emit a percentage histogram using the UMA_HISTOGRAM_PERCENTAGE +macro provided in +[histogram_macros.h](https://cs.chromium.org/chromium/src/base/metrics/histogram_macros.h). +You can also easily emit any ratio as a linear histogram (for equally sized +buckets). + +For such histograms, you want each value recorded to cover approximately the +same span of time. This typically means emitting values periodically at a set +time interval, such as every 5 minutes. We do not recommend recording a ratio at +the end of a video playback, as video lengths vary greatly. + +It is okay to emit at the end of an animation sequence when what's being +animated is fixed / known. In this case, each value represents roughly the same +span of time. + +Why? You typically cannot make decisions based on histograms whose values are +recorded in response to an event that varies in length because such metrics can +conflate heavy usage with light usage. It's easier to reason about metrics that +avoid this source of bias. + +Many developers have been bitten by this. For example, it was previously common +to emit an actions-per-minute ratio whenever Chrome was backgrounded. Precisely, +these metrics computed the number of uses of a particular action during a Chrome +session, divided by length of time Chrome had been open. Sometimes, the recorded +rate was based on a short interaction with Chrome–a few seconds or a minute. +Other times, the recorded rate was based on a long interaction, tens of minutes +or hours. These two situations are indistinguishable in the UMA logs–the +recorded values can be identical. + +The inability to distinguish these two qualitatively different settings make +such histograms effectively uninterpretable and not actionable. Emitting at a +regular interval avoids the issue. Each value represents the same amount of time +(e.g., one minute of video playback). + +### Local Histograms + +Histograms can be added via [Local macros](https://codesearch.chromium.org/chromium/src/base/metrics/histogram_macros_local.h). +These still record locally, but are not uploaded to UMA and are therefore not +available for analysis. This can be useful for metrics only needed for local +debugging. We don't recommend using local histograms outside of that scenario. + +### Multidimensional Histograms + +It is common to be interested in logging multidimensional data–where multiple +pieces of information need to be logged together. For example, a developer may +be interested in the counts of features X and Y based on whether a user is in +state A or B. In this case, they want to know the count of X under state A, +as well as the other three permutations. + +There is no general purpose solution for this type of analysis. We suggest +using the workaround of using an enum of length MxN, where you log each unique +pair {state, feature} as a separate entry in the same enum. If this causes a +large explosion in data (i.e. >100 enum entries), a [sparse histogram](#When-To-Use-Sparse-Histograms) +may be appropriate. If you are unsure of the best way to proceed, please contact +someone from the OWNERS file. + +## Histogram Expiry + +Histogram expiry is specified by the `expires_after` attribute in histogram +descriptions in histograms.xml. The attribute can be specified as date in +**YYYY-MM-DD** format or as Chrome milestone in **M**\*(e.g. M105) format. In +the latter case, the actual expiry date is about 12 weeks after that branch is +cut, or basically when it is replaced on the "stable" channel by the following +release. + +After a histogram expires, it ceases to be displayed on the dashboard. +Follow [these directions](#extending) to extend it. + +Once a histogram has expired, the code that records it becomes dead code and +should be removed from the codebase. You should also [clean up](#obsolete) the +corresponding entry in histograms.xml. In _rare_ cases, a histogram may be +expired intentionally while keeping the code around; such cases must be +[annotated appropriately](#Intentionally-expired-histograms) in histograms.xml. + +In **rare** cases, the expiry can be set to "never". This is used to denote +metrics of critical importance that are, typically, used for other reports. For +example, all metrics of the +"[heartbeat](https://uma.googleplex.com/p/chrome/variations)" are set to never +expire. All metrics that never expire must have an XML comment describing why so +that it can be audited in the future. Setting an expiry to "never" must be +reviewed by chromium-metrics-reviews@google.com. + +``` + +``` + +For all new histograms, the use of expiry attribute is strongly encouraged and +enforced by the Chrome Metrics team through reviews. + +#### How to choose expiry for histograms + +If you are adding a histogram to evaluate a feature launch, set an expiry date +consistent with the expected feature launch date. Otherwise, we recommend +choosing 3-6 months. + +Here are some guidelines for common scenarios: + +* If the listed owner moved to different project, find a new owner. +* If neither the owner nor the team uses the histogram, remove it. +* If the histogram is not in use now, but might be useful in the far future, + remove it. +* If the histogram is not in use now, but might be useful in the near + future, pick ~3 months (also ~3 milestones) ahead. +* If the histogram is actively in use now and is useful in the short term, + pick 3-6 months (3-6 milestones) ahead. +* If the histogram is actively in use and seems useful for an indefinite time, + pick 1 year. + +We also have a tool that automatically extends expiry dates. The most frequently +accessed histograms, currently 99%, have their expirations automatically +extended every Tuesday to 6 months from the date of the run. Googlers can view +the [design +doc](https://docs.google.com/document/d/1IEAeBF9UnYQMDfyh2gdvE7WlUKsfIXIZUw7qNoU89A4) +of the program that does this. The bottom line is: If the histogram is being +checked, it should be extended without developer interaction. + +#### How to extend an expired histogram {#extending} + +You can revive an expired histogram by setting the expiration date to a +date in the future. + +There's some leeway here. A client may continue to send data for that +histogram for some time after the official expiry date so simply bumping +the 'expires_after' date at HEAD may be sufficient to resurrect it without +any data discontinuity. + +If a histogram expired more than a month ago (for histograms with an +expiration date) or more than one milestone ago (for histograms with +expiration milestones; this means top-of-tree is two or more milestones away +from expired milestone), then you may be outside the safety window. In this +case, when extending the histogram add to the histogram description a +message: "Warning: this histogram was expired from DATE to DATE; data may be +missing." (For milestones, write something similar.) + +When reviving a histogram outside the safety window, realize the change to +histograms.xml to revive it rolls out with the binary release. It takes +some time to get to the stable channel. + +It you need to revive it faster, the histogram can be re-enabled via adding to +the [expired histogram allowlist](#Expired-histogram-allowlist). + +### Expired histogram notifier + +The expired histogram notifier notifies histogram owners before their histograms +expire by creating crbugs, which are assigned to owners. This allows owners to +extend the lifetime of their histograms, if needed, or deprecate them. The +notifier regularly checks all histograms across the histograms.xml files and +identifies expired or soon-to-be expired histograms. It then creates or updates +crbugs accordingly. + +### Expired histogram allowlist + +If a histogram expires but turns out to be useful, you can add the histogram's +name to the allowlist to re-enable logging for it, until the updated expiration +date reaches the Stable channel. When doing so, update the histogram's summary +to document the period during which the histogram's data is incomplete. To add a +histogram to the allowlist, see the internal documentation: +[Histogram Expiry](https://goto.google.com/histogram-expiry-gdoc). + +### Intentionally expired histograms + +In **rare** cases, a histogram may be expired intentionally while keeping the +code around. For example, this can be useful for diagnostic metrics that are +occasionally needed to investigate specific bugs, but do not need to be reported +otherwise. + +To avoid such histograms to be flagged for code clean up, they must be annotated +in the histograms.xml with the `expired_intentionally` tag as follows: + +```xml + + Kept as a diagnostic metric. + histogramowner@chromium.org + Histogram summary. + +``` + +## Testing + +Test your histograms using `chrome://histograms`. Make sure they're being +emitted to when you expect and not emitted to at other times. Also check that +the values emitted to are correct. Finally, for count histograms, make sure +that buckets capture enough precision for your needs over the range. + +Pro tip: You can filter the set of histograms shown on `chrome://histograms` by +appending to the URL. For example, `chrome://histograms/UserActions` shows +only histograms whose names contain "UserActions", such as +"UMA.UserActionsCount". + +In addition to testing interactively, you can have unit tests examine the +values emitted to histograms. See [histogram_tester.h](https://cs.chromium.org/chromium/src/base/test/metrics/histogram_tester.h) +for details. + +See also `chrome://metrics-internals` ([docs](https://chromium.googlesource.com/chromium/src/+/master/components/metrics/debug/README.md)) +for more thorough manual testing if needed. + +By default, histograms in unit or browser tests will not be actually uploaded. +In general, you can rely on the UMA infrastructure to upload the metrics correctly. + +## Interpreting the Resulting Data + +The top of [go/uma-guide](http://go/uma-guide) has good advice on how to go +about analyzing and interpreting the results of UMA data uploaded by users. If +you're reading this page, you've probably just finished adding a histogram to +the Chromium source code and you're waiting for users to update their version of +Chrome to a version that includes your code. In this case, the best advice is +to remind you that users who update frequently / quickly are biased. Best take +the initial statistics with a grain of salt; they're probably *mostly* right but +not entirely so. + +## Revising Histograms + +When changing the semantics of a histogram (when it's emitted, what the buckets +represent, the bucket range or number of buckets, etc.), create a new histogram +with a new name. Otherwise analysis that mixes the data pre- and post- change +may be misleading. If the histogram name is still the best name choice, the +recommendation is to simply append a '2' to the name. See [Cleaning Up Histogram +Entries](#obsolete) for details on how to handle the XML changes. + +## Deleting Histograms + +Please delete code that emits to histograms that are no longer needed. +Histograms take up memory. Cleaning up histograms that you no longer care +about is good! But see the note below on +[Cleaning Up Histogram Entries](#obsolete). + +## Documenting Histograms + +Document histograms in an appropriate [metadata/foo/histograms.xml](https://source.chromium.org/search?q=f:metadata%2F.*%2Fhistograms.xml&ss=chromium%2Fchromium%2Fsrc) +file. + +There is also a [google-internal version of the file](https://goto.google.com/chrome-histograms-internal) +for two cases: + +* The histogram is confidential (an accurate description about how to interpret + the histogram would reveal information about Google's plans). In this case, + you must only document the histogram in the internal version. +* The corresponding code that emits the histogram is internal (added only to + Chrome code, not to Chromium code). In this case, you may document the + histogram in either the internal or external version. + +### Add Histogram and Documentation in the Same Changelist + +If possible, please add the [histograms.xml](./histograms.xml) description in +the same changelist in which you add the histogram-emitting code. This has +several benefits. One, it sometimes happens that the +[histograms.xml](./histograms.xml) reviewer has questions or concerns about the +histogram description that reveal problems with interpretation of the data and +call for a different recording strategy. Two, it allows the histogram reviewer +to easily review the emission code to see if it comports with these best +practices and to look for other errors. + +### Understandable to Everyone + +Histogram descriptions should be roughly understandable to someone not familiar +with your feature. Please add a sentence or two of background if necessary. + +Note any caveats associated with your histogram in the summary. For example, if +the set of supported platforms is surprising, such as if a desktop feature is +not available on Mac, the summary should explain where it is recorded. It is +also common to have caveats along the lines of "this histogram is only recorded +if X" (e.g., upon a successful connection to a service, a feature is enabled by +the user). + + +### State When It Is Recorded + +Histogram descriptions should clearly state when the histogram is emitted +(profile open? network request received? etc.). + +Some histograms record error conditions. These should be clear about whether +all errors are recorded or only the first. If only the first, the histogram +description should have text like: +``` +In the case of multiple errors, only the first reason encountered is recorded. Refer +to Class::FunctionImplementingLogic() for details. +``` + +### Provide Clear Units or Enum Labels + +For enumerated histograms, including boolean and sparse histograms, provide an +`enum=` attribute mapping enum values to semantically contentful labels. Define +the `` in enums.xml if none of the existing enums are a good fit. Use +labels whenever they would be clearer than raw numeric values. + +For non-enumerated histograms, include a `units=` attribute. Be specific: +e.g. distinguish "MB" vs. "MiB", refine generic labels like "counts" to more +precise labels like "pages", etc. + +### Owners + +Histograms need owners, who are the experts on the metric and the points of +contact for any questions or maintenance tasks, such as extending a histogram's +expiry or deprecating the metric. + +Histograms must have a primary owner and may have secondary owners. A primary +owner is a Googler with an @google.com or @chromium.org email address, e.g. +lucy@chromium.org, who is ultimately responsible for maintaining +the metric. Secondary owners may be other individuals, team mailing lists, e.g. +my-team@google.com, or paths to OWNERS files, e.g. +src/directory/OWNERS. + +It's a best practice to list multiple owners, so that there's no single point +of failure for histogram-related questions and maintenance tasks. If you are +using a metric heavily and understand it intimately, feel free to add yourself +as an owner. + +Notably, owners are asked to determine whether histograms have outlived their +usefulness. When a histogram is nearing expiry, a robot files a reminder bug in +Monorail. It's important that somebody familiar with the histogram notices and +triages such bugs! + +Tip: When removing someone from the owner list for a histogram, it's a nice +courtesy to ask them for approval. + +### Components + +Histograms may be associated with components, which can help make sure that +histogram expiry bugs don't fall through the cracks. + +There are two ways in which components may be associated with a histogram. The +first and recommended way is to add a tag to a histogram or histogram suffix, +e.g. UI>Shell. The second way is to specify an OWNERS +file as a secondary owner for a histogram. If the OWNERS file has an adjacent +DIR_METADATA file that contains a component, then that component is associated +with the histogram. If there isn't a parallel DIR_METADATA file with such a +component, but a parent directory has one, then the parent directory's component +is used. + +### Improvement Direction +For some histograms, an increase or a decrease in the reported values can be +associated with either an improvement or a deterioration. For example, if you +are tracking page load speed, then seeing your metrics tracking page load time +in milliseconds getting gradually larger values, perhaps as the result of a +Finch study, may signify worse performance; on the contrary, seeing a reduction +in the page load speed may indicate an improvement. You can provide this +information on the movement direction by adding a tag + `` within your ``. The +opposite is ``. + +For other histograms where there may not be a movement direction that's clearly +better, you can set ``. + +This `` tag is optional. You can also add/delete this tag or make a +correction to its `direction` attribute any time. + +### Cleaning Up Histogram Entries {#obsolete} + +If a histogram is no longer being emitted to, there are two options to clean up +the entry: either mark the histogram as obsolete or remove the corresponding +histograms.xml entry. This also applies to variants of a +[patterned histogram](#Patterned-Histograms) and to suffix entries for a +suffixed histogram. + +However you proceed, a changelist that obsoletes a histogram entry should be +reviewed by all current owners. + +Note: the Chrome team is in the process of streamlining this process so that a +histogram entry can be deleted and an obsoletion message recorded in a single +change list. + +#### Option: Add an Obsoletion Message + +You can choose to add a message to a histogram entry which will mark it as +obsolete, and which will also provide relevant information to interested Chrome +developers. + +* Add the obsoletion message between `` and `` tags within + the `` block. +* This should include the date or milestone when the entry became obsolete. +* You could also include information about why the histogram has become + obsolete. For example, you might indicate how the histogram's summary did not + accurately describe the collected data. +* If the obsolete histogram is being replaced, include the name of the + replacement and make sure that the new description is different from the + original to reflect the change between versions. + +#### Option: Remove the Entry + +If you do not want to add an obsoletion message, you can simply delete the +entry in the histograms.xml file. + +* In some cases there may be artifacts that remain, with some examples being: + * Empty `` blocks. + * `` blocks from enums.xml that are no longer used. + * Suffix entries in histogram_suffixes_list.xml. +* Please remove these artifacts if you find them. + * **Exception**: please update the label of `` with + the `(Obsolete) ` prefix, e.g. + `` + rather than deleting them, if the surrounding `` block is not being + deleted. +* A histogram entry can be removed after an obsoletion message was added, but + please check that at least a day has passed since the change landed. This + ensures that the message will be recorded by internal tools. + +### Patterned Histograms + +It is sometimes useful to record several closely related metrics, which measure +the same type of data, with some minor variations. You can declare the metadata +for these concisely using patterned histograms. For example: + +```xml + + individual@chromium.org + team@chromium.org + + The efficacy multiplier for {Character} against an opponent of + {OpponentType} type. + + + + + + + + + + + + + +``` + +This example defines metadata for 12 (= 3 x 4) concrete histograms, such as + +```xml + + individual@chromium.org + team@chromium.org + + The efficacy multiplier for Charizard against an opponent of water type. + + +``` + +Each token `` defines what text should be substituted for it, +both in the histogram name and in the summary text. The name part gets +substituted into the histogram name; the summary part gets substituted in +the summary field (the histogram description). As shorthand, a +`` that omits the `summary` attribute substitutes the value of +the `name` attribute in the histogram's `` text as well. + +*** promo +Tip: You can declare an optional token by listing an empty name: ``. This can be useful when +recording a "parent" histogram that aggregates across a set of breakdowns. +*** + +You can use the `` tag to define a set of ``s out-of-line. +This is useful for token substitutions that are shared among multiple families +of histograms. See +[histograms.xml](https://source.chromium.org/search?q=file:histograms.xml%20%3Cvariants) +for examples. + +*** promo +Warning: The `name` attribute of the `` tag is globally scoped, so +use detailed names to avoid collisions. +*** + +By default, a `` inherits the owners declared for the patterned +histogram. Each variant can optionally override the inherited list with custom +owners: +```xml + + subteam-lead@chromium.org + subteam@chromium.org + +``` + +*** promo +Tip: You can run `print_expanded_histograms.py --pattern=` to show all generated +histograms by patterned histograms or histogram suffixes including their +summaries and owners. For example, this can be run (from the repo root) as: +``` +./tools/metrics/histograms/print_expanded_histograms.py --pattern=^UMA.A.B +``` +*** + +*** promo +Tip: You can run `print_histogram_names.py --diff` to enumerate all the +histogram names that are generated by a particular CL. For example, this can be +run (from the repo root) as: +``` +./tools/metrics/histograms/print_histogram_names.py --diff origin/main +``` +*** + +For documentation about the `` syntax, which is deprecated, +see +https://chromium.googlesource.com/chromium/src/+/refs/tags/87.0.4270.1/tools/metrics/histograms/one-pager.md#histogram-suffixes-deprecated-in-favor-of-pattern-histograms + +## When To Use Sparse Histograms + +Sparse histograms are well-suited for recording counts of exact sample values +that are sparsely distributed over a large range. They can be used with enums +as well as regular integer values. It is often valuable to provide labels in +[enums.xml](./enums.xml). + +The implementation uses a lock and a map, whereas other histogram types use a +vector and no lock. It is thus more costly to add values to, and each value +stored has more overhead, compared to the other histogram types. However it +may be more efficient in memory if the total number of sample values is small +compared to the range of their values. + +Please talk with the metrics team if there are more than a thousand possible +different values that you could emit. + +For more information, see [sparse_histograms.h](https://cs.chromium.org/chromium/src/base/metrics/sparse_histogram.h). + + +# Becoming a Metrics Reviewer + +Any Chromium committer who is also a Google employee is eligible to become a +metrics reviewer. Please follow the instructions at [go/reviewing-metrics](https://goto.google.com/reviewing-metrics). +This consists of reviewing our training materials and passing an informational +quiz. Since metrics have a direct impact on internal systems and have privacy +considerations, we're currently only adding Googlers into this program. + + +# Reviewing Metrics CLs + +If you are a metric OWNER, you have the serious responsibility of ensuring +Chrome's data collection is following best practices. If there's any concern +about an incoming metrics changelist, please escalate by assigning to +chromium-metrics-reviews@google.com. + +When reviewing metrics CLs, look at the following, listed in approximate order +of importance: + +## Privacy + +Does anything tickle your privacy senses? (Googlers, see +[go/uma-privacy](https://goto.google.com/uma-privacy) for guidelines.) + +**Please escalate if there's any doubt!** + +## Clarity + +Is the metadata clear enough for [all Chromies](#Understandable-to-Everyone) to +understand what the metric is recording? Consider the histogram name, +description, units, enum labels, etc. + +It's really common for developers to forget to list [when the metric is +recorded](#State-When-It-Is-Recorded). This is particularly important context, +so please remind developers to clearly document it. + +Note: Clarity is a bit less important for very niche metrics used only by a +couple of engineers. However, it's hard to assess the metric design and +correctness if the metadata is especially unclear. + +## Metric design + +* Does the metric definition make sense? +* Will the resulting data be interpretable at analysis time? + +## Correctness + +Is the histogram being recorded correctly? + +* Does the bucket layout look reasonable? + + * The metrics APIs like base::UmaHistogram* have some sharp edges, + especially for the APIs that require specifying the number of + buckets. Check for off-by-one errors and unused buckets. + + * Is the bucket layout efficient? Typically, push back if there are >50 + buckets -- this can be ok in some cases, but make sure that the CL author + has consciously considered the tradeoffs here and is making a reasonable + choice. + + * For timing metrics, do the min and max bounds make sense for the duration + that is being measured? + +* The base::UmaHistogram* functions are + [generally preferred](#Coding-Emitting-to-Histograms) over the + UMA_HISTOGRAM_* macros. If using the macros, remember that names must be + runtime constants! + +Also, related to [clarity](#Clarity): Does the client logic correctly implement +the metric described in the XML metadata? Some common errors to watch out for: + +* The metric is only emitted within an if-stmt (e.g., only if some data is + available) and this restriction isn't mentioned in the metadata description. + +* The metric description states that it's recorded when X happens, but it's + actually recorded when X is scheduled to occur, or only emitted when X + succeeds (but omitted on failure), etc. + +When the metadata and the client logic do not match, the appropriate solution +might be to update the metadata, or it might be to update the client +logic. Guide this decision by considering what data will be more easily +interpretable and what data will have hidden surprises/gotchas. + +## Sustainability + +* Is the CL adding a reasonable number of metrics/buckets? + * When reviewing a CL that is trying to add many metrics at once, guide the CL + author toward an appropriate solution for their needs. For example, + multidimensional metrics can be recorded via UKM, and we are currently + building support for structured metrics in UMA. + * There's no hard rule, but anything above 20 separate histograms should be + escalated by being assigned to chromium-metrics-reviews@google.com. + * Similarly, any histogram with more than 100 possible buckets should be + escalated by being assigned to chromium-metrics-reviews@google.com. + +* Are expiry dates being set + [appropriately](#How-to-choose-expiry-for-histograms)? + +## Everything Else! + +This document describes many other nuances that are important for defining and +recording useful metrics. Check CLs for these other types of issues as well. + +And, as you would with a language style guide, periodically re-review the doc to +stay up to date on the details. + + +# Team Documentation + + +## Processing histograms.xml + +When working with histograms.xml, verify whether you require fully expanded +OWNERS files. Many scripts in this directory process histograms.xml, and +sometimes OWNERS file paths are expanded and other times they are not. OWNERS +paths are expanded when scripts make use of merge_xml's function MergeFiles; +otherwise, they are not. diff --git a/histograms/enums.xml b/histograms/enums.xml new file mode 100644 index 000000000000..cf788e89061e --- /dev/null +++ b/histograms/enums.xml @@ -0,0 +1,113577 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tracks status of AboutThisSite queries. + A valid response. + No result received. + SiteInfo is missing. + SiteInfo is empty. + + kIncompleteDescription - deprecated. + + Source is incomplete. + Source URL is invalid. + Timestamp is incomplete. + Timestamp is invalid. + + User has not opted in to Optimization guide. + + Description is missing. + + Description field in description is missing. + + Name is missing. + Lang is missing. + Source is missing. + Banner info is missing. + MoreAbout URL is invalid. + MoreAbout URL is missing. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from code 2020/10. + + + + + + + + + Track flags and capabilities of enabled accessibility services on Android. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Track which ATK APIs are being called by clients on Linux Desktop. + + atk_object_get_name + atk_object_get_description + + atk_object_get_n_accessible_children + + atk_object_ref_accessible_child + atk_object_get_index_in_parent + atk_object_get_parent + atk_object_ref_relation_set + atk_object_get_attributes + atk_object_get_role + atk_object_ref_state_set + + + + Tracks the color scheme used when high contrast is enabled. + + + + + + + + + + + + + + + + + + + + + + + + + + + Tracks what mode the user has selected for accessibility image labels, + either always enabled, enabled once, or disabled. + + + + + + + + + Tracks what mode the user has selected for accessibility image labels on + Android, either always enabled, always enabled but only on Wi-Fi, just once, + just once and don't ask again, or if they cancel. + + + + + + + + + + Track individual accessibility mode flags that are enabled. + + + + + + + + + + + + Track enabled state of page zoom option on app menu. + + + + + + + + + + + Tracks the type of failure that occured when unserializing the accessibility + tree. + + + + + + + + + + + + + + Track which Windows accessibility APIs are being called by clients. + + + MSAA accDoDefaultAction + + MSAA accHitTest + MSAA accLocation + MSAA accNavigate + MSAA accSelect + IA2 addSelection + + UIA ConvertReturnedElement + + IA2 doAction + IA2 get_accessibleAt + MSAA get_accChild + + MSAA get_accChildCount + + + MSAA get_accDefaultAction + + + MSAA get_accDescription + + MSAA get_accFocus + MSAA get_accHelp + MSAA get_accHelpTopic + + MSAA get_accKeyboardShortcut + + MSAA get_accName + MSAA get_accParent + MSAA get_accRole + MSAA get_accSelection + MSAA get_accState + MSAA get_accValue + IA2 get_anchor + IA2 get_anchorTarget + IA2 get_appName + IA2 get_appVersion + + ISDN get_attributesForNames + + IA2 get_caption + IA2 get_caretOffset + IA2 get_cellAt + + IA2 get_characterExtents + + ISDN get_childAt + IA2 get_childIndex + + IA2 get_clippedSubstringBounds + + + IA2 get_columnDescription + + IA2 get_columnExtent + + IA2 get_columnExtentAt + + IA2 get_columnHeader + + IA2 get_columnHeaderCells + + IA2 get_columnIndex + + ISDN get_computedStyle + + + ISDN get_computedStyleForProperties + + IA2 get_currentValue + IA2 get_description + IA2 get_docType + IA2 get_domText + IA2 get_endIndex + IA2 get_extendedRole + + IA2 get_extendedStates + + ISDN get_firstChild + IA2 get_fontFamily + IA2 get_groupPosition + + UIA get_HostRawElementProvider + + IA2 get_hyperlink + + IA2 get_hyperlinkIndex + + + UIA GetIAccessiblePair ALT + + IA2 get_imagePosition + IA2 get_imageSize + + IA2 get_indexInParent + + ISDN get_innerHTML + + IA2 get_isColumnSelected + + + IA2 get_isRowSelected + + IA2 get_isSelected + IA2 get_keyBinding + ISDN get_language + ISDN get_lastChild + IA2 get_locale + + IA2 get_localizedExtendedRole + + + IA2 get_localizedExtendedStates + + IA2 get_localizedName + + ISDN get_localInterface + + IA2 get_maximumValue + IA2 get_mimeType + IA2 get_minimumValue + IA2 get_name + + IA2 get_nameSpaceURIForID ALT + + IA2 get_newText + ISDN get_nextSibling + ISDN get_nodeInfo + IA2 get_nCharacters + IA2 get_nColumns + + IA2 get_nExtendedStates + + IA2 get_nHyperlinks + IA2 get_nRelations + IA2 get_nRows + + IA2 get_nSelectedCells + + + IA2 get_nSelectedChildren + + + IA2 get_nSelectedColumns + + + IA2 get_nSelectedRows + + IA2 get_nSelections + + UIA GetObjectForChild + + + IA2 get_offsetAtPoint + + IA2 get_oldText + ISDN get_parentNode + + UIA GetPatternProvider + + + ISDN get_previousSibling + + UIA GetPropertyValue + + UIA get_ProviderOptions + + IA2 get_relation + IA2 get_relations + + IA2 get_rowColumnExtents + + + IA2 get_rowColumnExtentsAtIndex + + + IA2 get_rowDescription + + IA2 get_rowExtent + IA2 get_rowExtentAt + IA2 get_rowHeader + + IA2 get_rowHeaderCells + + IA2 get_rowIndex + UIA GetRuntimeId + + IA2 get_selectedCells + + + IA2 get_selectedChildren + + + IA2 get_selectedColumns + + IA2 get_selectedRows + IA2 get_selection + IA2 get_startIndex + IA2 get_states + IA2 get_summary + IA2 get_table + IA2 get_text + + IA2 get_textAfterOffset + + IA2 get_textAtOffset + + IA2 get_textBeforeOffset + + IA2 get_title + IA2 get_toolkitName + + IA2 get_toolkitVersion + + + IA2 get_unclippedSubstringBounds + + IA2 get_uniqueID + IA2 get_URL + IA2 get_valid + IA2 get_windowHandle + + IA2 get_attributes ALT + + IA2 scrollTo ALT + + IA2 get_description ALT + + + IA2 get_attributes ALT + + + ISDN get_attributes ALT + + + ISDN scrollTo ALT + + IA2 nActions + + IA2 put_alternateViewMediaTypes + + QueryService + IA2 removeSelection + IA2 role + + IA2 scrollSubstringTo + + + IA2 scrollSubstringToPoint + + IA2 scrollToPoint + + IA2 scrollToSubstring + + IA2 selectColumn + IA2 selectRow + IA2 setCaretOffset + IA2 setCurrentValue + IA2 setSelection + + IA2 get_selectedColumns ALT + + + IA2 get_selectedRows ALT + + + IA2 get_columnIndex ALT + + + IA2 get_isSelected ALT + + + IA2 get_rowIndex ALT + + IA2 unselectColumn + IA2 unselectRow + + UIA get_BoundingRectangle + + UIA get_FragmentRoot + + UIA GetEmbeddedFragmentRoots + + UIA Navigate + UIA SetFocus + UIA ShowContextMenu + + UIA ExpandCollapse.Collapse + + + UIA ExpandCollapse.Expand + + + UIA ExpandCollapse.get_ExpandCollapseState + + + UIA GridItem.get_Column + + + UIA GridItem.get_ColumnSpan + + + UIA GridItem.get_ContainingGrid + + UIA GridItem.get_Row + + UIA GridItem.get_RowSpan + + UIA Grid.GetItem + UIA Grid.get_RowCount + + UIA Grid.get_ColumnCount + + UIA Invoke.Invoke + + UIA RangeValue.SetValue + + + UIA RangeValue.get_LargeChange + + + UIA RangeValue.get_Maximum + + + UIA RangeValue.get_Minimum + + + UIA RangeValue.get_SmallChange + + + UIA RangeValue.get_Value + + + UIA ScrollItem.ScrollIntoView + + UIA Scroll.Scroll + + UIA Scroll.SetScrollPercent + + + UIA Scroll.get_HorizontallyScrollable + + + UIA Scroll.get_HorizontalScrollPercent + + + UIA Scroll.get_HorizontalViewSize + + + UIA Scroll.get_VerticallyScrollable + + + UIA Scroll.get_VerticalScrollPercent + + + UIA Scroll.get_VerticalViewSize + + + UIA SelectionItem.AddToSelection + + + UIA SelectionItem.RemoveFromSelection + + + UIA SelectionItem.Select + + + UIA SelectionItem.get_IsSelected + + + UIA SelectionItem.get_SelectionContainer + + + UIA Selection.GetSelection + + + UIA Selection.get_CanSelectMultiple + + + UIA Selection.get_IsSelectionRequired + + + UIA TableItem.GetColumnHeaderItems + + + UIA TableItem.GetRowHeaderItems + + + UIA Table.GetColumnGeaders + + + UIA Table.GetRowHeaders + + + UIA Table.get_RowOrColumnMajor + + UIA Text.GetSelection + + UIA Text.GetVisibleRanges + + + UIA Text.RangeFromChild + + + UIA Text.RangeFromPoint + + + UIA Text.get_DocumentRange + + + UIA Text.get_SupportedTextSelection + + + UIA TextChild.get_TextContainer + + + UIA TextChild.get_TextRange + + + UIA TextEdit.GetActiveComposition + + + UIA TextEdit.GetConversionTarget + + UIA TextRange.Clone + UIA TextRange.Compare + + UIA TextRange.CompareEndpoints + + + UIA TextRange.ExpandToEnclosingUnit + + + UIA TextRange.FindAttribute + + + UIA TextRange.FindText + + + UIA TextChange.GetAttributeValue + + + UIA TextRange.GetBoundingRectangles + + + UIA TextRange.GetEnclosingElement + + UIA TextRange.GetText + UIA TextRange.Move + + UIA TextRange.MoveEndpointByUnit + + + UIA TextRange.MoveEndpointByRange + + UIA TextRange.Select + + UIA TextRange.AddToSelection + + + UIA TextRange.RemoveFromSelection + + + UIA TextRange.ScrollIntoView + + + UIA TextRange.GetChildren + + UIA Toggle.Toggle + + UIA Toggle.get_ToggleState + + UIA Value.SetValue + + UIA Value.get_IsReadOnly + + UIA Value.get_Value + + UIA Window.SetVisualState + + UIA Window.Close + + UIA Window.WaitForInputIdle + + + UIA Window.get_CanMaximize + + + UIA Window.get_CanMinimize + + + UIA Window.get_IsModal + + + UIA Window.get_WindowVisualState + + + UIA Window.get_WindowInteractionState + + + UIA Window.get_IsTopmost + + + UIA FragmentRoot.ElementProviderFromPoint + + UIA FragmentRoot.GetFocus + + UIA AdviseEvents.AdviseEventAdded + + + UIA AdviseEvents.AdviseEventRemoved + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Promo is not shown as there are no accounts on device. + + + User has dismissed the promo by tapping back button. + + + User has tapped |Add account to device| from expanded account list. + + + Deprecated 05/2021. User tapped the button from the expanded account list to + open the incognito interstitial then confirmed opening the page in the + incognito tab by tapping |Continue| in the incognito interstitial. + + + User has selected the default account and signed in with it. + + + User has selected one of the non default account and signed in with it. + + The promo was shown to user. + + Promo is not shown due to sign-in being disallowed either by an enterprise + policy or by |Allow Chrome sign-in| toggle. + + + User has added an account and signed in with this account. + + + User has dismissed the promo by tapping on the scrim above the bottom sheet. + + + User has dismissed the promo by swiping down the bottom sheet. + + + User has dismissed the promo by other means. + + + The auth error screen was shown to the user. + + + The generic error screen was shown to the user. + + + User has dismissed the promo by tapping on the dismissal button in the + bottom sheet. + + + User has completed the account addition flow triggered from the bottom + sheet. + + + The bottom sheet was suppressed as the user hit consecutive active dismissal + limit. + + + The sign-in time out error was shown to the user. + + + The web sign-in is not shown because the user is already signed in. + + Sign-in failed. + + The promo was shown to a user without an existing on-device account. + + + User has tapped |Sign In…| from the no-default-account promo, starting an + add-account flow. + + + User has added an account from a state without any on-device account. + + + User has signed in to Chrome, from a state without any on-device account. + + + + + + Removed 2021-08-23 + + + User signed in with the default device account. This account is the first + account in the cookies. + + + User signed in with non-default device account. + + + User signed in with an account not present on device. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 12/2022. + + + + + + + + + + + + + Deprecated as of 12/2022. + + + + + + + + + + + + + + + + + + + + + + + The type of Omnibox Action in Suggest. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This list corresponds to the ways device could be joined to the Active + Directory domain. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from code May 2017. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tracks the state of the Add Supervision dialog process. + + + + + + + + + + Deprecated in M77. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + For recording which of the 4 disallowed combinations of allow_new_users and + user_allowlist policies occured. + + + + + + + + + + + + + + + + Obsolete since M88. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is when user clicked on the top level Screen Saver toggle but did not + click on any of photo source categories. The system will default show Art + Gallery with a default list of art sub categories. + + + + + + + + + + + The entry point that initiated an ambient search query. (e.g. Context Menu + Item) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in April 2023. + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 10/2019. Section menu button was removed during Download Home V2 + implementation review. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2020-01 + + + + The user pressed the system back button, sending Chrome to the background. + + + The user hit the return UI button to close the tab and return to the + previous app. + + + The Activity immediately launched a CustomTabActivity on top of itself. + + + The child CustomTabActivity was closed by the user, so this Activity sent + itself to the background to return the user to the previous app. + + + Another of Chrome's Activities (e.g. Settings or Bookmarks) launched and + took focus. + + + + + + Removed 2020-01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + See Android.DarkTheme.AutoDarkMode.SettingsChangeSource.* + + + + + + + + + + + + + + + + + + + Removed Mar 2021; experiment is done and the data isn't useful. + + + + + + + + + Removed Mar 2021; experiment is done and the data isn't useful. + + + + + + + + Removed Dec 2020; experiment is done and the data isn't useful. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The Android Safe Browsing Enhanced Protection promo was created on the new + tab page. + + + The Android Safe Browsing Enhanced Protection promo was shown. + + + User dismissed the Safe Browsing Enhanced Protection promo. + + + User navigated to the Settings page by accepting the promo. + + + + + + + + + + + + + + Deprecated 12/2018. CustomFeedback never shipped to 100% and is no longer + planned for launch. + + + This list corresponds to the categories the user can press when selecting a + category their feedback falls under. + + + + + + + + + + Deprecated 12/2018. CustomFeedback never shipped to 100% and is no longer + planned for launch. + + + This list corresponds to all the possible options a user can press when + selecting an option their feedback falls under. Each option is prefixed with + a shortened name of the category that the option belongs to. + + + + + + + + + + + + + + + + + + + + + + + + + + This list includes all errors from the Bluetooth Specification Version 4.2 + [Vol 2, Part D] as well as an error from Android's BluetoothGatt (0x101 + GATT_FAILURE) and an error from Bluedroid's gatt_api.h (0x100 L2CAP + connection cancelled). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This list includes errors from the Bluetooth Specification Version 4.2 Vol + 3, Part F, Section 3.4.1.1 and Core Specification Supplement Part B. Also + Android's BluetoothGatt (0x101 GATT_FAILURE) and an error from Bluedroid's + gatt_api.h (0x100 L2CAP connection cancelled). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 04/2018 (M67). + + + + + + + + + + Deprecated as of 04/2018 (M67). + + + + + + + + + + + + + + + + + + + + GPU is killed by Android due to OOM while app is foreground. + + + Renderer is killed by Android due to OOM while app is foreground and + renderer is hosting visible clients (generally tabs). + + + Renderer is killed to free renderer slot while and app is foreground. + + + Renderer hosting visible subframe is killed by Android due to OOM while app + is foreground. + + + Renderer hosting visible subframe is killed to free renderer slot while app + is foreground. + + + Renderer is crashed (with crash report) while app is foreground and renderer + is hosting visible clients (generally tabs). + + + Renderer hosting visible subframe is crashed (with crash report) while app + is foreground. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Events related to Search Engine Choice feature. + + + + + + + Events related to Search Engine Choice V2 feature. + + + + + + + + + + + + Events related to Search Engine logo feature. + + + + + + + + + + + + + + + + + + + + + + + + + The Android signin promo was enabled to show on next startup. + + The Android signin promo was shown. + + User declined the Android signin promo. + + + User completed signin through the Android signin promo flow successfully. + + + User completed signin through the Android signin promo flow successfully and + chose to configure sync settings. + + + + + + + + + + + + The stack unwinding implementation was not checked. The SamplingHeapProfiler + will collect stack samples but they may be invalid. (Starting in Sept 2022, + the implementation is always checked on Android so this is obsolete.) + + + The SamplingHeapProfiler uses the default unwind tables. + + + The SamplingHeapProfiler uses the trace_event::CFIBacktraceAndroid class. + + + Stack unwinding is not available. The SamplingHeapProfiler will not collect + stack samples. + + + The SamplingHeapProfiler uses the TraceStackFramePointers function. + + + + + + + + + + + + + See Android.DarkTheme.ThemeSettingsEntry. + + + + + + + A set of common MIME types resolved by Android MimeTypeUtils. + + + + + + + + + + + + Removed 02/2020. The ActualUiThread metric has been removed. + + + + + + + + + + + + + + + + + + Removed 04/2020. These metrics are tracked generally for SafeBrowsing, and + WebView no longer needs specializations. + + + The resource was blocked for a reason other than the ones provided here. + + + The resource was blocked because it contains malware. + + + The resource was blocked because it contains deceptive content. + + + The resource was blocked because it contains unwanted software. + + + The resource was blocked because it may trick the user into a billing + agreement. + + + + + + Enabled by commandline. This doesn't check later cases (ex. user consent). + + + Enabled by the Flag UI, but not by CommandLine file. This doesn't check + later cases (ex. user consent). + + + Enabled by user consent (not by commandline flags). + + + Disabled because we're missing user consent. We were able to present the + user with an Intent to the settings app. + + + Disabled because we're missing user consent. We could not direct the user to + the settings app. + + + Disabled because we cannot use GMS APIs. + + + + + + The user tapped the "upload this crash report" button. + + + The developer UI uploaded the crash report with no dialog because the user + met the criteria for crash uploads. + + + The user was shown a dialog after tapping the upload button. The user + responded by uploading the crash report anyway. + + + The user was shown a dialog after tapping the upload button. The user + responded by dismissing the dialog and did not upload the crash. + + + The user tapped the "file bug report" button. + + + The user was shown a dialog after tapping the "file bug report" + button. The user responded by proceeding to crbug.com. + + + The user was shown a dialog after tapping the "file bug report" + button. The user responded by dismissing the dialog and did not file a bug + report. + + + The user tapped the "hide crash" button. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in July 2021. + + + + + + + + + Removed in July 2021. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 09/2020. These are no longer being tracked. + + The certificate is not yet valid. + The certificate has expired. + Hostname mismatch. + + The certificate authority is not trusted. + + + The date of the certificate is invalid. + + A generic error occurred. + + + + + Removed from code July 2018. Variations in WebView has launched. + + + + + + + + + WebViewCompat#addWebMessageListener(WebView,String,List(String),WebMessageListener) + + + ProxyController#clearProxyOverride(Executor,Runnable) + + + ProxyController#getInstance() + + + WebViewCompat#getSafeBrowsingPrivacyPolicyUrl() + + + ServiceWorkerControllerCompat#getInstance() + + + ServiceWorkerControllerCompat#getServiceWorkerWebSettings() + + + TracingController#getInstance() + + + WebViewCompat#getWebchromeClient(WebView) + + + WebViewCompat#getWebViewClient(WebView) + + + WebViewCompat#getWebViewRenderer(WebView) + + + WebViewCompat#getWebViewRenderProcessClient(WebView) + + + WebViewCompat#startSafeBrowsing(Context,ValueCallback(Boolean)) + + + WebViewCompat#postVisualStateCallback(WebView,long,VisualStateCallback) + + + WebViewCompat#isMultiProcessEnabled() + + + JsReplyProxy#postMessage(String) + + + WebViewCompat#postWebMessage(WebView,WebMessageCompat,Uri) + + + WebViewCompat#removeWebMessageListener(WebView,String) + + + ServiceWorkerWebSettingsCompat#getAllowContentAccess() + + + ServiceWorkerWebSettingsCompat#getAllowFileAccess() + + + ServiceWorkerWebSettingsCompat#getBlockNetworkLoads() + + + ServiceWorkerWebSettingsCompat#getCacheMode() + + + ServiceWorkerWebSettingsCompat#setAllowContentAccess(boolean) + + + ServiceWorkerWebSettingsCompat#setAllowFileAccess(boolean) + + + ServiceWorkerWebSettingsCompat#setBlockNetworkLoads(boolean) + + + ServiceWorkerWebSettingsCompat#setCacheMode(int) + + + ProxyController#setProxyOverride(Executor,Runnable) + + + WebViewCompat#setSafeBrowsingWhitelist(List(String),ValueCallback(Boolean)) + + + ServiceWorkerControllerCompat#setServiceWorkerClient(ServiceWorkerClientCompat) + + + WebViewCompat#setWebViewRenderProcessClient(WebView,WebViewRenderProcessClient) + + + TracingController#isTracing() + + + TracingController#start(TracingConfig) + + + TracingController#stop(OutputStream,Executor) + + WebMessageCompat#getData() + + WebMessageCompat#getPorts() + + + WebMessagePortCompat#close() + + + WebMessagePortCompat#postMessage(WebMessageCompat) + + + WebMessagePortCompat#setCallback(WebMessageCallbackCompat) + + + WebMessagePortCompat#setCallback(Handler,WebMessageCallbackCompat) + + + WebResourceRequestCompat#isRedirect(WebResourceRequest) + + + WebSettingsCompat#getDisabledActionModeMenuItems(WebSettings) + + + WebSettingsCompat#getForceDark(WebSettings) + + + WebSettingsCompat#getForceDarkStrategy(WebSettings) + + + WebSettingsCompat#getOffscreenPreRaster(WebSettings) + + + WebSettingsCompat#getSafeBrowsingEnabled(WebSettings) + + + WebSettingsCompat#willSuppressErrorPage(WebSettings) + + + WebSettingsCompat#setDisabledActionModeMenuItems(WebSettings,int) + + + WebSettingsCompat#setForceDark(WebSettings,int) + + + WebSettingsCompat#setForceDarkStrategy(WebSettings,int) + + + WebSettingsCompat#setOffscreenPreRaster(WebSettings,boolean) + + + WebSettingsCompat#setSafeBrowsingEnabled(WebSettings,boolean) + + + WebSettingsCompat#setWillSuppressErrorPage(WebSettings,boolean) + + + WebViewRenderProcess#terminate() + + + WebViewCompat#addDocumentStartJavaScript(String,String[]) + + + ScriptReference#remove() + + + WebViewCompat#setSafeBrowsingAllowlist(Set(String),ValueCallback(Boolean)) + + + ProxyController#setProxyOverride(String[][],String[],Runnable,Executor,boolean); + + + WebSettingsCompat#setRequestedWithHeaderMode(int) (deprecated) + + + WebViewCompat#WebSettingsCompat#getRequestedWithHeaderMode() (deprecated) + + + ServiceWorkerWebSettingsCompat#setRequestedWithHeaderMode(int) (deprecated) + + + ServiceWorkerWebSettingsCompat#getRequestedWithHeaderMode() (deprecated) + + + WebViewCompat#getVariationsHeader() + + + WebSettingsCompat#setEnterpriseAuthenticationAppLinkPolicyEnabled(boolean) + + + WebSettingsCompat#getEnterpriseAuthenticationAppLinkPolicyEnabled() + + + CookieManagerCompat#getCookieInfo() + + + WebMessageCompat#getMessagePayload() + + + WebMessagePayload#getType(); + + + WebMessagePayload#getAsString(); + + + WebMessagePayload#getAsArrayBuffer(); + + + WebSettingsCompat#setRequestedWithHeaderOriginAllowList(Set(String) + allowedOriginRules) + + + WebViewCompat#WebSettingsCompat#getRequestedWithHeaderOriginAllowList() + + + ServiceWorkerWebSettingsCompat#setRequestedWithHeaderOriginAllowList(Set(String) + allowedOriginRules) + + + ServiceWorkerWebSettingsCompat#getRequestedWithHeaderOriginAllowList() + + + WebViewProviderFactory#getDropDataProviderImplementation() + + + WebSettingsCompat#enableRestrictSensitiveWebContent() + + + JsReplyProxy#postMessageWithPayload(WebMessagePayload) + + + + + + Deprecated 11/2020 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated on 2019-06-17. appcache.CheckResponseResult no longer tracked. + + + + + + + + + + + + + + Deprecated on 2019-06-17. appcache.MissingManifestDetectedAtCallsite no + longer tracked. + + Identifies the point of failure, see sources. + + + + + Deprecated on 2019-06-17. appcache.InitResult no longer tracked. + + + + + + + + Values for appcache.Manifest.InterceptUsage. + + + + + + + Values for appcache.UpdateJobInternalState. + + + + + + + + + + + + Deprecated on 2019-06-17. appcache.UpdateJobResult no longer tracked. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + App list doesn't support doodles anymore. + + + + + + + + + + + + + + Deprecated 03/2018 with Mash AppList refactoring. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated March 2021. + + + + + + + + + + Deprecated March 2021. + + + + + + + + + + + + + + + Deprecated March 2021. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated November 2021. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 03/2021. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from code October 2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ApplicationWillTerminate notification was not received for this XTE. + + + ApplicationWillTerminate notification was not received for this UTE. + + + ApplicationWillTerminate notification was received for this XTE. + + + ApplicationWillTerminate notification was received for this UTE. + + + + + + + + + + + Accessibility features supported by ARC and counted in UMA + Docked Magnifier + Fullscreen Manigifier + Select To Speak + Spoken Feedback + Switch Access + TalkBack + + + + Defines ARC ANR types. + ANR type cannot be determined. + ANR while handling input event dispatching. + ANR in foreground service. + ANR handling broadcast. + ANR from ContentProvider. + ANR requested explicitly by app. + ANR in process. + ANR in background service. + + + + Defines ARC app shortcut result + + + + + + + + + + + + + + Defines the source of AndroidId during provisioning of ARC. + + + + + + + + Defines the status of auth code retrieval. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed as of 05/2022 + + + + + + + + Tracks status of SELinux contexts restore flows of Android /data for ARC++ P + container. This also means ARC++ container boot delay. + + + SELinux data restoration was not needed. + + SELinux data restoration succeeded. + SELinux data restoration failed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 10/2021. Replaced by FuseArchiveError. + + EXIT_SUCCESS + EXIT_FAILURE + + MINIJAIL_ERR_SIG_BASE + SIGILL from libminijail + + + MINIJAIL_ERR_SIG_BASE + SIGABRT from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGKILL (9) from libminijail + + + MINIJAIL_ERR_SIG_BASE + SIGSEGV from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGTERM (15) from libminijail + + + MINIJAIL_ERR_MOUNT from libminijail + + + MINIJAIL_ERR_JAIL from libminijail + + + + + + Defines how the view reposition operation is achieved for ARC input overlay. + + + + + + + + Defines the window state. + + + + + + + + + Defines Arc intent handler actions + + + + + + + + + + + + + + + + + + + + + + Defines ARC intent handler platforms to continue the navigation. + + + + + + + + + + + Action type of an intent opened via ARC IntentHelperHost interface. + + + + + + + + + Types of things opened via ARC IntentHelperHost interface. + + + + + + + + + + + + + + + + + + + Types of mojo connections to the ARC container. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Defines Arc OptIn actions + + + + + + + + + + + + + + + Defines Arc OptIn cancel reason + + + + + + + + + + + + + + Defines Arc optin dialog actions when a network-related provisioning error + occurs. + + + + + + + + + + Defines Arc OptIn flow states. Normally each OptIn flow reports 2-3 states; + Started should be accompined with Succeeded or Canceled. Optionally + Succeeded after retry or Canceled after error may be provided. + + + + + + + + + + Defines Arc OptIn Silent Auth code state + + + + + + + + + + + + + + Defines PlayAutoInstal flow state aftert the request. + + + + + + + + + + + + + + Defines the keys ArcPolicy object can contain. + + + + + + + + + + + + + + + + + + + Defines ARC GMS check-in failure reasons + + + + + + + + + Defines Arc Cloud DPC Provisioning failure reasons + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Defines ARC GMS sign-in failure reasons + + + + + + + + + + Defines ARC GMS check-in failure reasons + + + + + + + + + + + + + + + + + + + + + Defines the types of resize lock setting status that overrides the state + Android calculates + + + + + + + + + + + + + + + + + + + + + + Describes whether the right click was converted to long press or not + + + + + + + + Defines the types of ARC SDK version upgrade + + + + + + + + + + + + + + Describes whether Share files feature on ARC is correctly exiting or not + + + + + + + + + + + + Describes the reason the ARC instance is stopped + + + + + + + + + Defines Arc supervision transition success and failure reasons + + + + + + + + + + + + Actions which happen on the ARC ToS screen. + + + + + + + + + + + + + Defines Arc Tracing tool actions + + + + + + + + + + + Defines Arc User Interactions + + + + + + + + + + + + + + + + + + + + + + + + + + + + Defines ArcVideoDecodeAccelerator initialization status + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Defines the reason why ARCVM /data migration is marked as finished. + + + + + + + + + The types of events that can happen during the screen flow of ARCVM /data + migration. + + + + + + + + + + + + + + + The types of initial states of the screen flow of ARCVM /data migration. + + + + + + + + + The types of failures that can happen during the setup phase of the screen + flow of ARCVM /data migration. + + + + + + + + + + + + + + + The types of the result of the setup of ARCVM /data migration. + + + + + + + + + + + Defines the status of ARCVM /data migration. + + + + + + + + + + Defines a subset of ARM CPU (implementer, part-number) pairs composed as a + 20-bit number. This is a non-exhaustive enumeration. See + https://goto.google.com/cyqss for details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + Defines the possible states of the Auto Night Light notification as a result + of a user's interaction with it. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Defines the possible displays' color transform matrix support types + + + + + + + + Defines the possible Night Light schedule types + + + + + + + + Defines the ranges in which the value of the color temperature may reside + + + + + + + + + + Various individual Picture-in-picture events. + + + + + + + + + + + + + Defines approximate positions of the Picture-in-picture window + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2021-01. + + + + + + + + + + + + + + + Removed 2021-01. + + + + + + + + + + + + + + + + + + + Removed 2021-01. + + + + + + + + + + + Removed unknown date before 2021-01. + + Type of nameservers in the DNS config. + No nameservers configured. + + All nameservers are Google Public DNS servers. + + + All nameservers have public IP addresses (and aren't Google Public DNS + servers). + + + All nameservers have private IP addresses (loopback, link-local, or RFC + 1918). + + + Nameservers are a mix of types (Google Public DNS, public, private). + + + + + + Removed unknown date before 2021-01. + + Results of DnsResponse::ParseToAddressList. + + + + + + + + + + + + + Removed unknown date before 2021-01. + + + + + + + + + Removed unknown date before 2021-01. + + + + + + + + + + + + + + Removed unknown date before 2021-01. + + + https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-6 + + No Error + Format Error + Server Failure + Non-Existent Domain + Not Implemented + Query Refused + + + + + Removed unknown date before 2021-01. + + Succeeded with async DNS. + + Succeeded with getaddrinfo after async DNS failed. + + Both async DNS and getaddrinfo failed. + + Same as PROC_SUCCESS except the hostname fits NetBIOS name criteria. + + + + + + Removed 2021-01. + + Started. + + Failed to start watching config. + + + Failed to start watching HOSTS. + + Failed during watching config. + Failed during watching HOSTS. + + + + + + + + + + + + + A new entry was stored in the cache. + + The existing cache entry was revalidated. + + + An error occurred before a response was received. + + + An error occurred while reading the response body. + + A redirect response was received. + + A request for authentication was received, and no cached credentials were + available. + + + Timed out before a response was received. + + + Timed out while reading the response body. + + + + + AsyncTask was not started when waited on. + AsyncTask was running when waited on. + AsyncTask is done. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from code Sep 2014. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 10/2018. + + Normal process termination. + Process crashed. + + Process is killed, e.g. though SIGKILL or task manager kill. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M90. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 8/2013. + + + + + + + + + + + Deprecated as of 8/2013. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 2/2016, replaced by AutofillCardUploadDecisionExpanded. + + + + + + + + + + Deprecated as of 5/2017, replaced by AutofillCardUploadDecisionMetric. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 10/2022. Will not launch save card Message UI. + + + + + + + + + + Deprecated 10/2022. Will not launch save card Message UI. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A bitmask indicating which credit card field types were autofilled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The user selected a masked server card that triggered an unmask attempt. + + + The user selected a masked server card that triggered an unmask attempt at + least once. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in M77. The corresponding histogram has been deprecated. + + + + + + + + + + + + + + + + + + + + + + + + + + + + The HTTP method used to fetch a URL. Logged as a boolean corresponding to + the first two enumeration values found in ::net::URLFetcher::RequestType. + See: net/url_request/url_fetcher.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in 02/2021. The corresponding histogram has been replaced by new + ones. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Closed with successful unmask on the first attempt. + + + Closed with successful unmask after failed attempts. + + + + + + + + + + + + These metrics track the user happiness about Autofill on address and credit + card forms. Starting from M63, these metrics are also split between + Autofill.UserHappiness.Address and Autofill.UserHappiness.CreditCard. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 11/2018. The corresponding histogram has been deprecated. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from code April 2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2021-08-11. https://crbug.com/1165237 + + + + + + + Removed 2021-08-11. https://crbug.com/1165237 + + + + + + + + + + + + + + + + + Removed in M104. + + + Not emitted + + + + + + + + + + + + + + + + + + + + Status of biometric authentication availability on Windows. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The ratio of image size in bits to displayed size in pixels. Ranges are + half-open: (low, high]. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The reason WebGL / Pepper3D were blocked, or not. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + As of 08/2015 this has been replaced with WebBluetoothGATTOperationOutcome. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No longer used by active histograms in M73. + + + 31-bit hash of the service UUID. Values here are populated from + https://www.bluetooth.com/specifications/assigned-numbers/service-discovery + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The Boomarks bar pref state and whether the user is on the NTP when the + reading list is opened. + + + + + + + + + + + + + + + + + + + + + + + + + + + Whether a GUID came from BookmarkSpecifics, or, in case it was missing, + whether an originator_client_item_id of valid GUID format replaced it or it + was left empty. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The result if a code path is being used. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from the code in July 2019. See https://crbug.com/975701. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A boolean for whether the web content is dark or light color scheme + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in 2019-07. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in 2018-09. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 9/2021. Replaced by VariationsSeedUsage. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed as of 06/2022 + + + + + + + + + + + + + + + + + + + + + + + Removed 01/2020 as we no longer record this metric. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M91 since the data is not monitored + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + These correspond to e2fsck exit codes. Note that 0 differs from e2fsck's man + (https://linux.die.net/man/8/e2fsck). 0 is used to capture any errors we + don't expect (i.e higher than the sum of all documented errors) and 1 + captures when fsck exits with multiple errors at once. TODO(b/258589422): + Revisit once we have metrics to determine if error 1 is sufficient, or if we + need more in-depth enumeration for combined errors. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in March 2016. + + + See include/openssl/ssl.h at the corresponding BoringSSL revision for the + corresponding values. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in M77 with the removal of Browser Actions. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Migration did not run because there was not enough free space. + + + Migration did not complete since copy stage did not complete. + + + Migration did not complete since move stage did not complete. + + + Failed to delete lacros data directory with old data. + + + The total size of data that needs to be copied exceeded the limit. This + limit is set as a short-term fix to avoid making users stuck on the + migration screen for more than a few minutes. + + + + + + + + + + + + + + + + + + + + + + Result of Trusted Web Activity verification attempt. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 3/2023 in favor of BrowsingTopicsApiAccessResult. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 10/2022 in favor of BrowsingTopicsApiAccessFailureReason. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 12/2020 as it is no longer used for analysis. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 09/2021 with the removal of the Blink.Canvas.ContextType and + Blink.OffscreenCanvas.ContextType histograms + + + + + + + + + + + + + + + + Deprecated 10/2018 Blink.Canvas.IsComposited, + Blink.Canvas.ResourceProviderIsAccelerated, + Blink.Canvas.ResourceProviderType and Blink.Canvas.2DLayerBridgeIsDeferred + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 11/2017 with removal of Display List Canvas 2D mode. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 08/2016 with removal of Chrome Crash Service component. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from code 2021-08. + + + + + + + + + + + + + + + + + + + + Deprecated as of 04/2016. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 08/2015. + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 02/2017. + + + + + + + + + + + + + ChromeCart discount consent status. + + + + + + + + + Discount consent variation. + + + + + + + + Discount related data associated with the cart module. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Obsoleted on September 2020 as it's no longer being collected. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 04/2021. + + + + + + + + + + + + + Deprecated as of 01/2016. CertCacheTrial has been removed. + https://crbug.com/522312 + + + + + + + + + + + + + + Not used after M67. Replaced by using NetErrorCodes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from code Jan 2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Relevant histogram (DidSuppressJavaScriptException) expired 2018-08. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 12/2019. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + See ui/display/display_constants.h for the variation. + + + + + + + + + + + + + Tracks if offline user login is allowed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Possible results of a platform verification attempt at the browser layer. + See chrome/browser/media/platform_verification_chromeos.cc. + + + + + + + + + + Possible results of a platform verification expiry check. See + chrome/browser/ash/attestation/platform_verification.cc. + + + + + + + + + + + Possible results of a platform verification attempt. See + chrome/browser/ash/attestation/platform_verification.h. + + + + + + + + + + + + Possible results of a platform verification attempt. See + chrome/browser/ash/attestation/platform_verification.h. + + + + + + + + + + + Process types couldn't be collected as PS command errored. + + + Thread types couldn't be collected as PS command errored. + + + Process type parsing returned empty output. + + + Thread type parsing returned empty output. + + + Process types were partially collected. + + + Thread types were partially collected. + + + Process types were completely collected. + + + Thread types were completely collected. + + + + + Profile was collected successfully. + + Profile timer triggered but the collector's buffer is full. + + + Profile timer triggered but an incognito window was open. + + + Profile was collected but an incognito window was opened during the + collection. + + + Profile data was collected and sent to Chrome as a serialized protobuf but + it could not be deserialized by Chrome. + + + The profile data sent back to Chrome is invalid. + + + Another profile collection was already active. + + + Collection could not start due to failing prerequisites. + + + Failure while collecting data. + + + The profile session has zero samples. + + + + + + Profile data was not recorded since metric recording is disabled. + + + Profile data was redacted since the profile manager used to obtain user + profile(s) is unset. + + + Profile data was redacted since there is no user profile initialized. When + looking at user profile(s), the Default profile in Chrome OS is skipped. + + + Profile data was redacted since App Sync is disabled. + + + Profile data was recorded in full since App Sync is enabled. + + + Profile data was redacted since sync service is unavailable. + + + Profile data was redacted since Chrome sync feature is disabled. + + + Profile data was redacted since Chrome App Sync is disabled. + + + Profile data was redacted since Chrome OS sync feature is disabled. + + + Profile data was redacted since Chrome OS App Sync is disabled. + + + + + + Reason for entering Recovery Mode. See + platform/vboot_reference/firmware/2lib/include/2recovery_reasons.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ChromeOS login flow by Identity Provider. Can be either GAIA-based, SAML + with API or pure SAML with password scraping. + + + + + + + + + Different SAML providers that uses SAML login flow in ChromeOS. + + + + + + + + + + + + + + + + + Defines Chrome OS sharesheet actions. + + + + + + + + + + + Different form factors. + + + + + + The source from which sharesheet is invoked. + + + + + + + + + + + The mime types of the content the user is trying to share from the + sharesheet. + + + + + + + + + + + + + + The types of share actions present in the sharesheet when it is invoked. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + https://www.usb.org/defined-class-codes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Special images and default images as defined in + chrome/browser/ash/login/users/default_user_image/default_user_images.cc. + Value 0 is the image taken from camera. Value 1 is the image selected from + file or photo. Value 2 is the profile image. Values 3-9 are reserved for + other special images. Values 10-48 are legacy default images that are still + used by some users, but cannot be selected from Settings. Values > 48 are + the newly added default images that are selectable from Settings > + Personalization > Change device account image. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 09/2019. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 06/2019. + + + + + + + + + Deprecated as of 06/2019. + + + + + + + + + + + + + + + + + + Deprecated as of 11/2017, since cld2 is deprecated. + + + See Language in third_party/cld_2/src/internal/generated_language.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M82 after collecting enough data. See https://crbug.com/1053140. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This metric enumerates how Chrome choses a client certificate when needed as + a result of user action or content settings. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enumerates the possible results from the client side phishing detector. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Details about whether or not it's possible to get coalition resource usage + data on the system. + + + + + + + + + + + + + + + + + + + + + + + + + + + Nonlinear fit code moved to skcms on 2018-04-25. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sources of commerce heuristics data. + + + + + + + + + + + + + + + + Deprecated in favor of PageLoad.Timing2.NavigationToCommit and + PageLoad.AbortTiming. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No CachedMetadataHandler was provided, thus caching functionality is + disabled. + + Caching is disabled by settings. + + The script is too short to benefit from caching, thus caching functionality + is disabled. + + + The script is not loaded often enough to benefit from caching, thus not + producing cache. + + + Parser cache is produced for the script when compiled. + + + Consume previously generated parser cache for the script. + + + Code cache is produced for the script when compiled. + + + Consume previously generated code cache for the script. + + Use streamed compilation result. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Expired 2020-03-01. + + + + + + + + + + + + + + + + + + + + + + + Whether a reporting pipeline record is compressed or not. + + + + + + + Dprecated as of Aug 2016. CompressibleString has been reverted once at + https://crrev.com/2227933002. + + + + + + + + + + + + + + Deprecated as of Jun 2016. The enum was added for debugging purpose and is + not needed anymore. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Application protocol used for HTTP response as defined in + net::HttpResponseInfo::ConnectionInfo. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed May 2016. + + + Connection type as defined in net/base/connection_type_histograms.h + + Any connection (SSL, HTTP, SPDY, etc.) + An SSL connection + + An SSL connection with an MD5 certificate in the certificate chain + (excluding root) + + + An SSL connection with an MD2 certificate in the certificate chain + (excluding root) + + + An SSL connection with an MD4 certificate in the certificate chain + (excluding root) + + + An SSL connection with an MD5 CA certificate in the certificate chain + (excluding root) + + + An SSL connection with an MD2 CA certificate in the cerfificate chain + (excluding root) + + An HTTP connection + A SPDY connection + An SSL connection that uses SSL 2.0 + An SSL connection that uses SSL 3.0 + An SSL connection that uses TLS 1.0 + An SSL connection that uses TLS 1.1 + An SSL connection that uses TLS 1.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + Actions which happen on the consolidated consent screen. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The type of a Content Index entry. Corresponds to + blink.mojom.ContentCategory. + + + + + + + + + + Superseded by ContentResourceType2 in December 2015 when SUB_RESOURCE was + split into RESOURCE_TYPE_SUB_RESOURCE and RESOURCE_TYPE_PLUGIN_RESOURCE, and + PING was split into RESOURCE_TYPE_PING and RESOURCE_TYPE_CSP_REPORT. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 04/2019. Breaking News feature removed. + + + + + + + + + + Deprecated as of 10/2017 as + NewTabPage.ContentSuggestions.BreakingNews.MessageReceived is replaced by + NewTabPage.ContentSuggestions.BreakingNews.ReceivedMessageAction. + + + + + + + + + + Removed 04/2019. Breaking News feature removed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Superseded by ContentSuggestionsUIUpdateResult2 in January 2017. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The reason for losing a GPU context. + + + + + + + + + + + + + + + + + + + + + + + + Used to record resulting action when the gesture recognizer recognizes a + long press before the DOM element details are available. + + + Recorded when the context menu is shown once the DOM element details become + available. + + + Recorded when the context menu display is cancelled before the DOM element + details are available. + + + + + The frame that the element was found in. + + Recorded when the element was found in the main frame. + + + Recorded when the element was found in an iframe. + + + + + + Events of Copy Image from context menu under iOS. Enum0 is the entrance of + an image copy process; Enum1~3 are correlated and they are recorded in the + callback of fetching image data; Enum4~5 are correlated and they are + recorded in the callback of popping up waiting alert. There is no gurantee + that each callback will be invoked in the process, so enum1~3 and enum4~5 + are not necessarily corelated. But since enum5 blocks enum1 from advancing + to enum2, approximately we have enum5 = enum2 - enum1. + + + Recorded when Copy Image is invoked. This is the universal set. + + + Recorded when image data is fetched and ready for pasting to system + pasteboard. This is a subset of "Copy Image invoked". + + + Recorded when image data is fetched and the copy process is not canceled, so + pasting image data to system pasteboard will be attempted. This is a subset + of "Image data fetched". + + + Recorded when image data is valid and pasted to system pasteboard + successfully. This is a subset of "Try copying fetched image". + + + Recorded when copy does not finish in a short time, thus an alert is popped + up to let the user wait until copy finish. This is a subset of "Copy + Image invoked". + + + Recorded when the alert is popped up, and user clicks the "Cancel" + button on the alert. This is a subset of "Waiting alert popped + up". + + + Recorded when image data format is not recognized and the URL of the image + is copied instead of its data. This is a subset of "Try copying fetched + image". + + + + + + + + + + + + + Deprecated. Switch to use LensSupportStatus to support all Lens entry + points. + + Whether lens is supported and if not the reason why. + + + + + + + + + + + + + + + + Removed from code as of 5/2019. + + The item selected from a context menu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The item selected from a context menu on Android. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The item selected from a context menu on Desktop. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in M94 + + The item selected from a context menu on iOS. + + + + + + + + + + + + + + + Removed in M103 + + + The content type when user chooses save link context menu option + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 5/2017. Experiment is finished. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed as of 05/2022 + + + + + + + + + + + + + + + + + Removed as of 05/2022 + + + + + + + + + + + + Removed as of 05/2022 + + + + + + + + + + + + Removed as of 05/2022 + + + + + + + + + + + + + + + + Removed as of 05/2022 + + + + + + + + + Removed as of 05/2022 + + + + + + + + + + + + + + + + Removed as of 05/2022 + + + + + + + + + + + + + + + Removed as of 05/2022 + + + + + + + + + + + + + + + + + Removed as of 06/2022 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed because the feature no longer exists. + + The outcome of the Contextual Search Peek Promo. + + + + + + + + The privacy permissions for the current user. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed as of 05/2022 + + + + + + + + + + + + + + + + + Removed as of 06/2022 + + + + + + + + + + + + + + + Removed as of 06/2022 + + + + + + + + Notes when a translation one-box should be forced by Contextual Search. + + + + + + + + Removed as of 06/2022 + + + + + + + + + + + + + + + This feature was deprecated in M74 + + + + + + + + + This feature was deprecated in M74 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 2019-10-23 as part of cookie histogram cleanup + (https://crbug.com/993120). + + + + + + + + + + Reason why a cookie was removed from the cookie store + + The user explicitly requested that we delete a cookie + + + The value of the cookie was overwritten by a new value + + The cookie expiration time passed + + The cookie was evicted during garbage collection (replaced by + domain_evicted/global_evicted below) + + + The backing store had two copies of the cookie so one was removed (i.e. + problems writing the backing store database) + + + The cookie deletion should not be recorded because it occurred, e.g., during + shutdown (the fact that these values showed up in the histogram is a bug, + since fixed) + + + The cookie was evicted during per-domain/eTLD+1 garbage collection + + + The cookie was evicted during whole store garbage collection. + + + The cookie evicted during per-domain/eTLD+1 garbage collection, and would + have been evicted by the global garbage collection process (because they + hadn't been accessed recently enough). + + + The cookie evicted during per-domain/eTLD+1 garbage collection, and would + not have been evicted by global metrics as well (because they had been + accessed recently enough to save). + + + The cookie deletion occurred because the server overwrote it with an already + expired cookie (this is a common idiom for server deletions of cookies). + + + + + + + + + + + + + + + + + + + + + + Deprecated 2019-10-31 as part of cookie histogram cleanup + (https://crbug.com/993120). + + + First party cookie with `Secure` attribute. + + + Third party cookie with `Secure` attribute. + + + First party host cookie which is covered by HSTS with lifetime exceeding + that of the cookie. + + + Third party host cookie which is covered by HSTS with lifetime exceeding + that of the cookie. + + + First party domain cookie which is covered by HSTS (including subdomains) + with lifetime exceeding that of the cookie. + + + Third party domain cookie which is covered by HSTS (including subdomains) + with lifetime exceeding that of the cookie. + + + First party host cookie which is covered by HSTS with lifetime falling short + of that of the cookie. + + + Third party host cookie which is covered by HSTS with lifetime falling short + of that of the cookie. + + + First party domain cookie which is covered by HSTS (including subdomains) + with lifetime falling short of that of the cookie. + + + Third party domain cookie which is covered by HSTS (including subdomains) + with lifetime falling short of that of the cookie. + + + First party domain cookie which is covered by HSTS but without including + subdomains. + + + Third party domain cookie which is covered by HSTS but without including + subdomains. + + + First party cookie not covered by HSTS, transmitted over secure connection. + + + Third party cookie not covered by HSTS, transmitted over secure connection. + + + First party cookie transmitted over nonsecure connection. + + + First party cookie transmitted over nonsecure connection. + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 1/2022 in favor of CookieSameSite2, which starts at 0 and so + supports non-sparse histograms. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Actions done in "Cookies in use" dialog. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The type of a cookie when its added to the cookie store. + + + + + + + + + + + + + + + + + + Coarse MIME type classification for CORB decisions. + + https://mimesniff.spec.whatwg.org/#html-mime-type. + + + https://mimesniff.spec.whatwg.org/#xml-mime-type, except `image/svg+xml` and + `application/dash+xml`. + + + https://mimesniff.spec.whatwg.org/#json-mime-type. + + text/plain + + Other, unrecognized MIME type. Blocked if sniffing finds a JSON security + prefix. + + + Used for content types that are unlikely to be incorrectly applied to + images, scripts and other legacy no-cors resources (which consequently don't + need any confimation sniffing). For example: `application/pdf`, + `application/zip`, etc. + + + + + + Whether CORB blocking might have been caused by treating |request_initiator| + as opaque when |request_initiator_origin_lock| is incompatible (as may be + the case for HTML Imports). + + + + CORB blocked either an empty response, or a 4xx/5xx response. + + + CORB blocked a response after forcing |request_initiator| to be treated as + opaque (because it was incompatible with |request_initiator_origin_lock|). + This case is most likely to be hit with HTML Imports. + + + + + + + Coarse MIME type classification for CORB decisions. + + + + + + + + + + + + The result of trying to initialize the CoreAudio dispatch override hotfix. + See media/audio/mac/coreaudio_dispatch_override.cc. + + + + + + + + + + + + The types of lookup events that the CoreAudio dispatch override hotfix can + emit. See media/audio/mac/coreaudio_dispatch_override.cc. + + + + + + + + + Removed 08/2020 + + + The core value of PageTransition. See ui/base/page_transition_types.h. + + + + + + + + + + + + + + + + + The reason why content verification flagged an extension as corrupted. See + ContentVerifyJob::FailureReason in + src/extensions/browser/content_verify_job.h. + + + + + + + + + + + + + + + + The detailed error type for CORS check failures. See + services/network/public/mojom/cors.mojom for detailed information. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The CORS check results for each request. + + + + + + + + + Removed at 06/2019 with Net.Cors.CompletionStatus histogram. + + The completion status of CorsURLLoader request. + + + + + + + + + The CORS preflight cache query result. + + + + + + + + + + + + + Thread types used for CPU time metric breakdowns. + + CPU time consumed by the process that could not be attributed to a specific + thread. + + + Thread whose name was not known to the instrumentation, e.g. a new/unknown + type of thread or a Java thread not registered with + base::ThreadIdNameManager. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of RLZ codes of all boards which are using Cr50, the Google security + chip. Used by various Cr50 related metrics keeping track of Board ID and RLZ + assignments. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of currently defined Cr50 flash log event types. The latest and + greatest set can be found in + https://chromium.googlesource.com/chromiumos/platform/ec/+/refs/heads/main/include/flash_log.h + (enum flash_event_type and enum nvmem_failure_type). Note that NVMEM errors + are logged as subevents of flash log event 5, we register them offset by + 200. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of U2F commands that can be handled by cr50. + + + + + + + + List of codes to indicate why Bluetooth A2DP audio session exits the + connected state. CRAS side definition in + https://chromium.googlesource.com/chromiumos/third_party/adhd/+/main/cras/src/server/cras_server_metrics.h + + + Disconnected while idle. The default exit code without anything special. + + + Disconnected while a2dp is streaming and audio thread didn't catch any + socket error. + + + Disconnected while streaming and receiving ECONNRESET code. + + + CRAS request the disconnection because of longer than 5 seconds of + consecutive packet Tx failure. + + + CRAS request the disconnection because kernel socket returns error code that + CRAS treats as fatal error. + + + + + + List of the client type of CRAS. The list can be found in + https://chromium.googlesource.com/chromiumos/third_party/adhd/+/main/cras/src/common/cras_types.h + (enum CRAS_CLIENT_TYPE). + + Unknown client. + + A client using an old CRAS lib. (CRAS_PROTO_VER = 3) + + + A client created by cras_test_client. + + + A client using CRAS via pcm, like aplay. + + + + + + + + + + + + + + + List of the device pair of CRAS. The value is combined from two device + types. + https://chromium.googlesource.com/chromiumos/third_party/adhd/+/main/cras/src/server/cras_server_metrics.c + (enum CRAS_METRICS_DEVICE_TYPE). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of the device type of CRAS. The list can be found in + https://chromium.googlesource.com/chromiumos/third_party/adhd/+/main/cras/src/server/cras_server_metrics.c + (enum CRAS_METRICS_DEVICE_TYPE). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of known battery indicator supports in Bluetooth Hands-free profile. + This list should be aligned with CRAS: + https://chromium.googlesource.com/chromiumos/third_party/adhd/+/main/cras/src/server/cras_hfp_slc.h + + + + + + + + + + + + + + List of codec ids used for SCO audio, in Bluetooth Hands-free profile. This + list should be aligned with CRAS: + https://chromium.googlesource.com/chromiumos/third_party/adhd/+/main/cras/src/server/cras_hfp_slc.h + + + + + + + + + List of status types of Super Resolution for the bluetooth microphone audio. + This list should be aligned with CRAS: + https://chromium.googlesource.com/chromiumos/third_party/adhd/+/main/cras/src/server/cras_server_metrics.h + + + + + + + + + + + List of results(success or error code) of setting up a SCO connection for + Bluetooth Hands-free profile. This list should be aligned with CRAS: + https://chromium.googlesource.com/chromiumos/third_party/adhd/+/main/cras/src/server/cras_server_metrics.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This enum describes the timing of a renderer crash in relation to whether a + sad frame was visible. Whether a subframe is "visible" is + currently defined as 1) in visible, non-occluded WebContents and 2) with a + non-empty viewport intersection rect. + + + The renderer crashed while the subframe was visible. + + + The renderer crashed while the subframe was hidden, but later the frame + became visible (the tab was foregrounded, the frame was scrolled into view, + the frame was resized, etc.). + + + The renderer crashed while the subframe was hidden, and the frame was never + shown afterwards (e.g. until eventually being discarded when the whole tab + is navigated away). + + + The renderer crashed while the subframe was hidden, and the frame became + visible while an ancestor frame had a pending load. This form of sad frame + is not as bad for user experience as ShownAfterCrashing, since the sad frame + is expected to disappear shortly when the ancestor frame finishes + navigation. + + One common case where this is expected to happen is when a crashed subframe + appears on a hidden tab, which will mark the tab for reload, and then the + user switches to this tab. The tab will start reloading, but the crashed + subframe may become visible momentarily before the reload completes. + + + + + + + + + + + + + + + + + + + + + + + + + + List of status types of Noise Cancellation for the supported audio device. + This list should be aligned with CRAS: + https://chromium.googlesource.com/chromiumos/third_party/adhd/+/main/cras/src/server/cras_alsa_io.c + + + + + + + + + List of errors could happen when CRAS adds a stream to its audio thread. + Cras side definition in + https://chromium.googlesource.com/chromiumos/third_party/adhd/+/main/cras/src/server/cras_server_metrics.h + + + The IO device has encountered error. + + + Certain arguments are invalid. + + Other errors. + + + + + List of errors could thrown when client requests to connect a stream to + CRAS. Cras side definition in + https://chromium.googlesource.com/chromiumos/third_party/adhd/+/main/cras/src/server/cras_server_metrics.h + + + The requested format is invalid. + + + The shared memory size is invalid. + + + Fails to get shm fds. + + + Fails to add stream to stream_list at CRAS server side. + + + Fails to send reply to CRAS client. + + + + + + List of errors could happen when CRAS creates a stream. Cras side definition + in + https://chromium.googlesource.com/chromiumos/third_party/adhd/+/main/cras/src/server/cras_server_metrics.h + + + Certain arguments are invalid. + + No memory. + + Fail to set up shared memory. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Numeric values correspond to CredentialManagerStatusCodes class. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Error types matching ProbeError types from cros_healthd mojom + https://source.chromium.org/chromium/chromium/src/+/main:chromeos/ash/services/cros_healthd/public/mojom/cros_healthd_probe.mojom;l=60 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of Dictation macro names. This list should be aligned with macro list + specified in Dictation JavaScript: + https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/resources/chromeos/accessibility/accessibility_common/dictation/macros/macro_names.js + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Uncompressed TAR + Bzip2-compressed TAR + Gzip-compressed TAR + Bzip2-compressed File + Gzip-compressed File + 7-Zip + Chrome Extension + ISO image + XZ-compressed TAR + XZ-compressed File + LZMA-compressed TAR + LZMA-compressed File + Z-compressed TAR + Z-compressed File + Zstandard-compressed TAR + Zstandard-compressed File + LZIP-compressed TAR + LZIP-compressed File + + + + + + + + + + + + + + + + + + + MountError::kNone + MountError::kUnknown + MountError::kInternal + MountError::kInvalidArgument + MountError::kInvalidPath + + MountError::kPathAlreadyMounted + + MountError::kPathNotMounted + + MountError::kDirectoryCreationFailed + + + MountError::kInvalidMountOptions + + + MountError::kInvalidUnmountOptions + + + MountError::kInsufficientPermissions + + + MountError::kMountProgramNotFound + + + MountError::kMountProgramFailed + + + MountError::kInvalidDevicePath + + + MountError::kUnknownFilesystem + + + MountError::kUnsupportedFilesystem + + MountError::kInvalidArchive + MountError::kNeedPassword + MountError::kInProgress + MountError::kCancelled + MountError::kBusy + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100 * MountType::kInvalid + MountError::kNone + + + 100 * MountType::kInvalid + MountError::kUnknown + + + 100 * MountType::kInvalid + MountError::kInternal + + + 100 * MountType::kInvalid + MountError::kInvalidArgument + + + 100 * MountType::kInvalid + MountError::kInvalidPath + + + 100 * MountType::kInvalid + MountError::kPathAlreadyMounted + + + 100 * MountType::kInvalid + MountError::kPathNotMounted + + + 100 * MountType::kInvalid + MountError::kDirectoryCreationFailed + + + 100 * MountType::kInvalid + MountError::kInvalidMountOptions + + + 100 * MountType::kInvalid + MountError::kInvalidUnmountOptions + + + 100 * MountType::kInvalid + MountError::kInsufficientPermissions + + + 100 * MountType::kInvalid + MountError::kMountProgramNotFound + + + 100 * MountType::kInvalid + MountError::kMountProgramFailed + + + 100 * MountType::kInvalid + MountError::kInvalidDevicePath + + + 100 * MountType::kInvalid + MountError::kUnknownFilesystem + + + 100 * MountType::kInvalid + MountError::kUnsupportedFilesystem + + + 100 * MountType::kInvalid + MountError::kInvalidArchive + + + 100 * MountType::kInvalid + MountError::kNeedPassword + + + 100 * MountType::kInvalid + MountError::kInProgress + + + 100 * MountType::kInvalid + MountError::kCancelled + + + 100 * MountType::kInvalid + MountError::kBusy + + + 100 * MountType::kDevice + MountError::kNone + + + 100 * MountType::kDevice + MountError::kUnknown + + + 100 * MountType::kDevice + MountError::kInternal + + + 100 * MountType::kDevice + MountError::kInvalidArgument + + + 100 * MountType::kDevice + MountError::kInvalidPath + + + 100 * MountType::kDevice + MountError::kPathAlreadyMounted + + + 100 * MountType::kDevice + MountError::kPathNotMounted + + + 100 * MountType::kDevice + MountError::kDirectoryCreationFailed + + + 100 * MountType::kDevice + MountError::kInvalidMountOptions + + + 100 * MountType::kDevice + MountError::kInvalidUnmountOptions + + + 100 * MountType::kDevice + MountError::kInsufficientPermissions + + + 100 * MountType::kDevice + MountError::kMountProgramNotFound + + + 100 * MountType::kDevice + MountError::kMountProgramFailed + + + 100 * MountType::kDevice + MountError::kInvalidDevicePath + + + 100 * MountType::kDevice + MountError::kUnknownFilesystem + + + 100 * MountType::kDevice + MountError::kUnsupportedFilesystem + + + 100 * MountType::kDevice + MountError::kInvalidArchive + + + 100 * MountType::kDevice + MountError::kNeedPassword + + + 100 * MountType::kDevice + MountError::kInProgress + + + 100 * MountType::kDevice + MountError::kCancelled + + + 100 * MountType::kDevice + MountError::kBusy + + + 100 * MountType::kArchive + MountError::kNone + + + 100 * MountType::kArchive + MountError::kUnknown + + + 100 * MountType::kArchive + MountError::kInternal + + + 100 * MountType::kArchive + MountError::kInvalidArgument + + + 100 * MountType::kArchive + MountError::kInvalidPath + + + 100 * MountType::kArchive + MountError::kPathAlreadyMounted + + + 100 * MountType::kArchive + MountError::kPathNotMounted + + + 100 * MountType::kArchive + MountError::kDirectoryCreationFailed + + + 100 * MountType::kArchive + MountError::kInvalidMountOptions + + + 100 * MountType::kArchive + MountError::kInvalidUnmountOptions + + + 100 * MountType::kArchive + MountError::kInsufficientPermissions + + + 100 * MountType::kArchive + MountError::kMountProgramNotFound + + + 100 * MountType::kArchive + MountError::kMountProgramFailed + + + 100 * MountType::kArchive + MountError::kInvalidDevicePath + + + 100 * MountType::kArchive + MountError::kUnknownFilesystem + + + 100 * MountType::kArchive + MountError::kUnsupportedFilesystem + + + 100 * MountType::kArchive + MountError::kInvalidArchive + + + 100 * MountType::kArchive + MountError::kNeedPassword + + + 100 * MountType::kArchive + MountError::kInProgress + + + 100 * MountType::kArchive + MountError::kCancelled + + + 100 * MountType::kArchive + MountError::kBusy + + + 100 * MountType::kNetworkStorage + MountError::kNone + + + 100 * MountType::kNetworkStorage + MountError::kUnknown + + + 100 * MountType::kNetworkStorage + MountError::kInternal + + + 100 * MountType::kNetworkStorage + MountError::kInvalidArgument + + + 100 * MountType::kNetworkStorage + MountError::kInvalidPath + + + 100 * MountType::kNetworkStorage + MountError::kPathAlreadyMounted + + + 100 * MountType::kNetworkStorage + MountError::kPathNotMounted + + + 100 * MountType::kNetworkStorage + MountError::kDirectoryCreationFailed + + + 100 * MountType::kNetworkStorage + MountError::kInvalidMountOptions + + + 100 * MountType::kNetworkStorage + MountError::kInvalidUnmountOptions + + + 100 * MountType::kNetworkStorage + MountError::kInsufficientPermissions + + + 100 * MountType::kNetworkStorage + MountError::kMountProgramNotFound + + + 100 * MountType::kNetworkStorage + MountError::kMountProgramFailed + + + 100 * MountType::kNetworkStorage + MountError::kInvalidDevicePath + + + 100 * MountType::kNetworkStorage + MountError::kUnknownFilesystem + + + 100 * MountType::kNetworkStorage + MountError::kUnsupportedFilesystem + + + 100 * MountType::kNetworkStorage + MountError::kInvalidArchive + + + 100 * MountType::kNetworkStorage + MountError::kNeedPassword + + + 100 * MountType::kNetworkStorage + MountError::kInProgress + + + 100 * MountType::kNetworkStorage + MountError::kCancelled + + + 100 * MountType::kNetworkStorage + MountError::kBusy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 7/2018 in Issue 866550 in favor of using global Text-to-Speech + settings for speech pitch. + + + + + + + + + + + + Deprecated 7/2018 in Issue 866550 in favor of using global Text-to-Speech + settings for speech rate. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed as of 05/2020 (crbug/1072514). + + + + + + + + + + Removed as of 07/2022 (crbug.com/1231142). + + + + + + + + + + Deprecated as of 12/2013. Default pinned apps trial is finished. + + + + + + + + + + + + + + + Removed April 2018. New metric uses CrossOriginAdStatus. + + + + + + + + + + + + + + Deprecated as January 2019. No longer needed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The asset was successfully fetched and rendered. + + + Rendering was attempted but the asset could not be fetched. + + + Rendering was not attempted because the flag was disabled or the + probabilistic check failed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The error enum defined in platform2/cryptohome/crypto_error.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ephemeral users were enabled. Removed all profiles except those currently + mounted or belonging to the owner. + + + Successfully freed space above the 2GB target. + + + Successfully freed space above the 2GB target. + + + Disk space was not above the 2GB target, but was above the minimum needed. + Decided not to proceed further with more aggressive cleanups. + + + Successfully freed space above 2GB target. + + + Disk space was not above the 2GB target, but was above the minimum needed. + Decided not to proceed further with more aggressive cleanups. + + + Successfully freed space above 2GB target. + + + Disk space was not above 2GB target. + + + No users or no logged-out users. + + + Successfully freed space above 2GB target. + + + Disk space was not above the 2GB target, but was above the minimum needed. + Decided not to proceed further with more aggressive cleanups. + + + Ephemeral users were enabled. Removed all profiles except those currently + mounted, belonging to the owner or non-ephemeral. Succesfully freed space + above 2GB target. + + + Ephemeral users were enabled. Removed all profiles except those currently + mounted, belonging to the owner or non-ephemeral. + + + + + Cleanup performed successfully. + Cleanup failed. + + Cleanup skipped, enough free space is available. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Failed to parse the /etc/lsb-release file, so unable to determine the + current channel. + + + + + + The result when a Low Entropy CheckCredential operation was performed. + + + + + + + + + + + + + + + + The result when a Low Entropy LogReplay operation was performed. + + + + + + + + + + Unused + + Successfully freed space above 1GB target by removing users. + + + Disk space was not above 1GB target, even after removing all possible users. + + + There are no unmounted cryptohomes to clean. + + + + + + + + + + + + + The possible results of attempting an unmount/mount clean-up using the + out-of-process mount helper. + + + + + + + + + + The possible results of attempting a mount operation using the + out-of-process mount helper. + + + + + + + + + + + The possible results and failure reasons of a Cryptohome recovery attempt. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 1/2016. + + + + + + + + Used by CustomTabs.Branding.BrandingDecision + + Branding is not shown. Used when branding is already shown in the past set + cadence (e.g. one hour). + + + Branding is shown on the toolbar. Used when the client app launches CCT past + the set branding cadence. + + + Branding is shown with a toast. Used when the client app launches CCT for + the first time. + + + + + + + + + + + + + + + + + + + Removed in February 2020 + + + + + + + + + + + Removed in February 2020 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Obsolete as of November 2022. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A decoder has started the initialization step. + + + A decoder has completed the initialization step successfully. + + + A decoder has finished playing without crashing. + + + + + + Video is not disqualified from potential playback. + + + D3D11 is not 11.1 or later. + + + A video codec is using an unsupported HDR profile. + + + The GPU is not configured to allow zero copy for nv12. + + + The GPU is not configured to allow zero copy for videos. + + + Video is using an unsupported codec. + + Video is encrypted. + + Could not get D3D11 device. + + + Video decoder off by GPU workaround. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MINIJAIL_ERR_SIG_BASE (128) + SIGILL (4) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGABRT (6) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGKILL (9) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGSEGV (11) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGTERM (15) from libminijail + + + MINIJAIL_ERR_JAIL from libminijail + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Obsolete as of October 2017. + + + + + + + + + Deprecated as of October 2017 per transition to blacklist. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A crash was detected during the page load. + + + A crash was analyzed and the report was added to the pending pingback. + + + A crash was attempted to be analyzed did not finish before the report was + sent. + + + A crash was not analyzed and the report was added to the pending pingback. + This is default behavior for non-Android crashes. + + + A crash report was successfully uploaded. + + + A crash report was attempted to be sent, but did not upload successfully. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 10/2018. + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in 5/2017, since the experiment to use default QUIC alternative + proxy was deprecated. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from code October 2017. + + + + + + + + + + + Deprecated 2018/07. + + + + + + + + + + Deprecated 2018/07. + + + + + + + + + + Deprecated 2018/07. + + + + + + + + + + + + Deprecated 2018/07. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PageTransitions in ui/base/page_transition_types.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 2015/11. Renamed to SetDefaultAttemptResult. + + No errors encountered. + + Chrome was already the default web client. This counts as a successful + attempt. + + + Chrome was not set as the default web client. + + + The attempt was abandoned because the observer was destroyed. + + + Failed to launch the process to set Chrome as the default web client + asynchronously. + + + Another worker is already in progress to make Chrome the default web client. + + + The user initiated another attempt while the asynchronous operation was + already in progress. + + + + + + The user clicked the "Set as default" button. + + + The user clicked the "Don't ask again" button. + + + The user did not interact with the info bar. + + The user explicitly closed the infobar. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Chrome is not the default web client. + Chrome is the default web client. + + Chrome is in a unknown default state. + + + The current install of Chrome is not the default web client, yet another + side-by-side install of Chrome is. + + + + + + Echo Cancellation quality most likely good. + + Echo Cancellation may suffer. + + Echo Cancellation likely fails unless user is using headset. + + Insufficient amount of data. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pre-installed app or other window type available in Chrome OS Demo Mode. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Source of App Launches in Demo Mode. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in M111. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 11/2018 in issue 894963. + + + + + + + + + + + Deprecated 11/2018 in issue 894963. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed July 2019. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M95. + + + + + + + + + + + + + + Removed in M88. + + + + + + + + Removed in M95. See crbug.com/1235544. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M87. See crbug.com/1125666. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M89. + + + + + + + + Superseded by DevtoolsGridSettingChanged2. + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M89. + + + + + + + + + + + + + + + Removed in M89. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Instrumentation was removed before M76. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed July 2018. + + + + + + + + No longer used after 2021-05 and the switch to OAuthMultilogin. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Error codes defined in net/disk_cache/errors.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Defines the implementation of mirror mode. + + + + + + + Defines the types of mirror mode in which displays connected to the device + are in. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The blacklist is deprecated in favor of third-party DLL blocking. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Metrics removed from code 2021-01. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 127.0.0.1 was not the only nameserver in the system DNS config. + + + 127.0.0.1 was the only nameserver in the system DNS config. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Various SANE backends (effectively scanner drivers) that can be used to scan + a document in Chrome OS. These values are defined in the SaneBackend enum in + chromeos/src/platform2/lorgnette/enums.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Feature was removed (crbug.com/875053). + + + + + + + + + + + + + Removed January 2018. + + + + + + + + + + + + + + + + + + + + Channel ID was enabled, but the client did not support elliptic curve key + generation. + + + Channel ID was enabled, but the client had an invalid system time which + prevented using it. + + + The SSLClientSocket was created without a ServerBoundCertService. + + + + + + + + + + + + + + + + + + + + Removed from code 2017-08. + + + These values are defined in the DownloadOutcome enum in + components/doodle/doodle_service.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 08/2020 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 08/2020 + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 2022-06-06 + + + + + + + + + Deprecated 2/2018 + + + + + + + + + + + + + Deprecated 2/2018 + + + + + + + + + + + + + + + + AR model download was created but not yet started. + + AR model download was started. + AR model download was successful. + + AR model download failed due to either a 401 or 403 HTTP response. + + + AR model download did not download the correct MIME type. This can happen in + the case of web server redirects. + + + AR model download failed for a reason other than 401/403 HTTP response or + incorrect MIME type. Does not include items already counted in the more + specific buckets, e.g., UnauthorizedFailure and WrongMimeTypeFailure. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The download failed. This task was running when the app was active. + + + The download failed. This task was fully or partially running when the app + was not active. + + + The download successfully completed. This task was running when the app was + active. + + + The download successfully completed. This task was fully or partially + running when the app was not active. + + + The download was cancelled, because the app was quit by the user. Some of + these downloads can be salvaged by supporting + application:handleEventsForBackgroundURLSession:completionHandler: + AppDelegate callback. + + + + + + + + + + + + Download has successfully completed. + + In progress download was cancelled by the user. + + Download has completed with error. + + In progress download did no finish because the tab was closed or user has + quit the app. + + + The user closed Download Manager UI without starting the download. + + + + + + + + + + + + + + + + + + Deprecated 11/2018. + + + The type of frame in which a download occurs and whether the download + involves a transient user gesture. It is only recorded for downloads + originated from navigations or from HTML anchor download attributes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + window.opener is the same origin as the top frame of this download. + + + window.opener is cross origin to the top frame of this download. + + + window.opener is cross origin but same site to the top frame of this + download (e.g. google.com vs subdomain.google.com). + + + Either window.opener or the top frame of this download is not an HTTP or + HTTPS URL (e.g. about:blank). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in July 2019. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 12/2020. + + + + + + + + + + + + + + + Deprecated 10/2018. + + + + + + + + + + + + + + Obsolete 02/2019 as it's no longer used in any metrics. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated February 2021. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DTLS/SRTP crypto suites from the IANA registry as specified at + https://tools.ietf.org/html/rfc5764#section-4.1.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Obsolete July 2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DirectX color space type. Documented here: + https://msdn.microsoft.com/en-us/library/windows/desktop/dn903661(v=vs.85).aspx + + + + + + + + + + + + + + + + + + + + + + + + + + Resource data formats. Defined here: + https://github.com/apitrace/dxsdk/blob/master/Include/dxgiformat.h + + + + + + + + + + + + + + + + + + + + + + A decoder has started the initialization step. + + + A decoder has completed the initialization step for DX11 successfully. + + + A decoder failed DX11 playback without sending a frame to the client. + + + A decoder failed DX11 playback after sending a frame to the client. + + + A decoder has finished playing with DX11. + + + A decoder has completed the initialization step for DX9 successfully. + + + A decoder failed DX9 playback without sending a frame to the client. + + + A decoder failed DX9 playback after sending a frame to the client. + + + A decoder has finished playing with DX9. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The server reported a reason that the client is not aware of. This should + only be recorded if the client's list of possible reasons is out of date. + + + The server returned the value "Unknown". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in M91 after v2 EduCoexistence. + + + + + + + + + + + + + + + + + + + + + The enum index of each resolution is the product of its dimensions. A + portrait dimension has 1 subtracted from the enum index to differentiate it + from the landscape index value. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 9/2015. + + + + + + + + + + + + + + + Account status fetched before enrollment process starts. + + + + + + + + + + + valid: machine in pristine state + + + rare: install attributes locked but TPM clear (could happen if taking TPM + ownership carries over a reboot) + + + impossible: non-existent install attributes cannot yield enterprise mode + + + rare: install attributes locked but TPM clear (could happen if taking TPM + ownership carries over a reboot) + + + inconsistent: install attributes clear but TPM locked + + + valid: consumer owned + + + impossible: non-existent install attributes cannot yield enterprise mode + + + valid: enterprise enrolled + + error: cryptohomed unreachable + + + + Timeout status for AutoEnrollmentController + + + + + + + Value for BrowserSignin policy + + + + + + + + Defined as DomainCheckErrors in + components/policy/core/common/policy_loader_win.cc. + + + + + + + Extension request pending list update event. + + + + + + CBCM enrollment token location on Mac. + + + + + + Result of uploading an enterprise report. + + + + + + + + + + Defined as Code in components/reporting/util/status.h + + + + + + + + + + + + + + + + + + + + + Types of CRD sessions connection request result code. + + + + + + + + + + + + + Types of enterprise user connections. + + + + + + + + + Status codes produced by DeviceManagementService for requests made to the + device management server as defined in + components/policy/core/common/cloud/cloud_policy_constants.h. + + + + + + + + + + + + + + + + + + + + + + Type of errors triggered by the adaptor usage in the ChromeOS Data Leak + Prevention daemon. + + + + + + + + + + + + + + + + Type of errors triggered when performing initialization operations in the + ChromeOS Data Leak Prevention daemon. + + + + + + + + Type of errors triggered by fanotify usage in the ChromeOS Data Leak + Prevention daemon. + + + + + + + + + + + + + + + + + Type of errors triggered when using the file database in the ChromeOS Data + Leak Prevention daemon. + + + + + + + + + + + + + + + Types of restricted file actions checked by Data Leak Prevention policy. + + + + + + + + + + + + + + Type of restriction enforced by Data Leak Prevention policy. + + + + + + + + + + + + + Number of DeviceManagementServer request retries as defined in + components/policy/core/common/cloud/device_management_service.cc. + + + + + + + + + + + + Deprecated 03/2019, since no code reports it anymore. + + + Result of DMToken operations as defined in + components/policy/core/common/cloud/enterprise_metrics.h. + + + A cached token was successfully loaded from disk. + + + Reading a cached token from disk failed. + + + A token fetch request was sent to the DM server. + + + The request was invalid, or the HTTP request failed. + + + Error HTTP status received, or the DM server failed in another way. + + + A response to the fetch request was received. + + + The response received was invalid. This happens when some expected data was + not present in the response. + + + DM server reported that management is not supported. + + + DM server reported that the given device ID was not found. + + DM token successfully retrieved. + + Successfully cached a token to disk. + + Caching a token to disk failed. + The Device-ID is not unique. + + Serial number rejected by DMServer. + + + No more licenses available for that domain. + + + + + Which domain regex generated an ICU error. + + + + + + + + + + + + + + + Result of device enrollment as defined in + components/policy/core/common/cloud/enterprise_metrics.h. + + + User pressed 'Cancel' during the enrollment process. + + + The user submitted valid credentials (GAIA or registration certificate) to + start the enrollment process. + + + OAuth token fetch failed: network error. + + + OAuth token fetch failed: login error. + + + Registration / policy fetch failed: DM server reports management not + supported. + + + UNUSED: Enrollment failed because it failed to apply device policy. + + + UNUSED: Enrollment failed due to an unexpected error. This currently happens + when the GAIA auth token is not issued for the DM service, the device cloud + policy subsystem isn't initialized, or when fetching GAIA tokens fails for + an unknown reason. + + Enrollment was successful. + + Registration / policy fetch failed: DM server reports that the serial number + we try to register is not assigned to the domain used. + + + UNUSED: Auto-enrollment started automatically after sign-in. + + + UNUSED: Auto-enrollment failed. + + + UNUSED: Auto-enrollment started again after a failure. + + + UNUSED: User opted-out of auto-enrollment. + + + UNUSED: Auto-enrollment OK. + + + Registration failed: DM server returns unknown/disallowed enrollment mode. + + + UNUSED: Auto-enrollment is not supported for the mode supplied by the + server. This presently means trying to auto-enroll in kiosk mode. + + + Lockbox initialization took too long to complete. + + + Lockbox error on re-enrollment: domain does not match install attributes. + + + Registration / policy fetch failed: DM server reports licenses expired or + exhausted. + + + Failed to fetch device robot authorization code from DM Server. + + + Failed to fetch device robot refresh token from GAIA. + + + Failed to persist robot account refresh token on device. + + + Registration / policy fetch failed: DM server reports administrator + deprovisioned the device. + + + Registration / policy fetch failed: DM server reports domain mismatch. + + + Enrollment has been triggered, the webui login screen has been shown. + + + The user submitted valid credentials (GAIA or registration certificate) to + start the enrollment process for the second (or further) time. + + + UNUSED: Failed to store DM token and device ID. + + + Failed to obtain FRE state keys. + + + Failed to validate policy. + + + Failed due to error in CloudPolicyStore. + + + UNUSED: Failed to lock device. + + + Registration / policy fetch failed: DM server reports invalid request + payload. + + + Registration / policy fetch failed: DM server reports device not found. + + + Registration / policy fetch failed: DM server reports DM token invalid. + + + Registration / policy fetch failed: DM server reports activation pending. + + + Registration / policy fetch failed: DM server reports device ID conflict. + + + Registration / policy fetch failed: DM server can't find policy. + + + Registration / policy fetch failed: HTTP request failed. + + + Registration / policy fetch failed: DM server reports temporary problem. + + + Registration / policy fetch failed: DM server returns non-success HTTP + status code. + + + Registration / policy fetch failed: can't decode DM server response. + + + OAuth token fetch failed: account not signed up. + + + UNUSED: OAuth token fetch failed: account deleted. + + + UNUSED: OAuth token fetch failed: account disabled. + + + Re-enrollment pre-check failed: domain does not match install attributes. + + + Lockbox backend failed to initialize. + + + Lockbox backend (TPM) already locked. + + + Lockbox failure setting attributes. + + + Lockbox failure during locking. + + + Lockbox read back is inconsistent. + + + Failed to update device attributes. + + + Enrollment mode does not match already locked install attributes. + + + A registration certificate could not be obtained from the PCA. + + + The request to enroll could not be signed. + + + Device model or serial number missing from VPD. + + + Active Directory policy fetch failed. + + + Failed to store DM token into the local state. + + + Failed to get available licenses from server. + + + Can't enroll a device with a packaged license to a consumer account. + + + The device is not pre-provisioned for Zero-Touch. + + + The enterprise account is not eligible to enroll. + + + The term of service is not accepted by enterprise. + + + Too many requests are uploaded within a short time. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M91 since the data is not monitored. + + Initial Enrollment is required. + + Initial Enrollment is skipped because the serial number is missing from VPD. + + + Initial Enrollment is skipped because the brand code is missing from VPD. + + + Initial Enrollment is skipped because the embargo end date is invalid. This + was detected after the system clock has been synchronized with the network. + + + Initial Enrollment is skipped because the embargo end date is invalid. This + was detected when the system clock could not be synchronized with the + network. + + + Initial Enrollment is skipped because the device is within the embargo + period. This was detected after the system clock has been synchronized with + the network. + + + Initial Enrollment is skipped because the device is within the embargo + period. This was detected when the system clock could not be synchronized + with the network. + + + + + + The Mac MDM enrollment status (new API). See + https://blog.fleetsmith.com/what-is-user-approved-mdm-uamdm/ for more + details. + + + + + + + + + + + The Mac MDM enrollment status (old API). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + All policies are set from cloud. This also includes cloud_ash policy source + + + All policies are set from cloud except CBCM enrollment token and option. + + + All policies are set from platform management tool. This also includes AD + policeis on CrOS. + + Policies are set with multiple tools. + + There is no policy except CBCM enrollment token and option. + + + + + + Defined as PolicyDeviceIdValidity in + components/policy/core/common/cloud/enterprise_metrics.h. + + + + + + + + + + Defined as PolicyInvalidationType in + components/policy/core/common/cloud/enterprise_metrics.h. + + + + + + + + + + Removed in M91 since the data is not monitored + + + Defined as MetricPolicyKeyVerification in + components/policy/core/common/cloud/cloud_policy_validator.cc. + + Client has no verification key. + + The Policy being verified has no key signature (e.g. policy fetched before + the server supported the verification key). + + + The key signature did not match the expected value (in theory, this should + only happen after key rotation or if the policy cached on disk has been + modified). + + + Key verification succeeded. + + + + + + Status codes produced by the policy loaders that pull policy settings from + the platform-specific management infrastructure, such as Windows Group + Policy. Defined as PolicyLoadStatus in + components/policy/core/common/policy_load_status.h. + + + Policy load attempt started. This gets logged for each policy load attempt + to get a baseline on the number of requests, and an arbitrary number of the + below status codes may get added in addition. + + + System failed to determine whether there's policy. + + No policy present. + + Data inaccessible, such as non-local policy file. + + + Data missing, such as policy file not present. + + + Trying with Wow64 redirection disabled. + + + Data read error, for example file reading errors. + + Data too large to process. + Parse error. + + + + + Defined as MetricPolicyRefresh in + components/policy/core/common/cloud/enterprise_metrics.h. + + + + + + + + + + + Deprecated 03/2019, since no code reports it anymore. + + + Result of Policy operations as defined as MetricPolicy in + components/policy/core/common/cloud/enterprise_metrics.h. + + + A cached policy was successfully loaded from disk. + + + Reading a cached policy from disk failed. + + + A policy fetch request was sent to the DM server. + + + The request was invalid, or the HTTP request failed. + + + Error HTTP status received, or the DM server failed in another way. + + + Policy not found for the given user or device. + + + DM server didn't accept the token used in the request. + + + A response to the policy fetch request was received. + + + The policy response message didn't contain a policy, or other data was + missing. + + Failed to decode the policy. + + The device policy was rejected because its signature was invalid. + + + Rejected policy because its timestamp is in the future. + + + Device policy rejected because the device is not managed. + + + The policy was provided for a username that is different from the device + owner, and the policy was rejected. + + + The policy was rejected for another reason. Currently this can happen only + for device policies, when the SignedSettings fail to store or retrieve a + stored policy. + + The fetched policy was accepted. + + The policy just fetched didn't have any changes compared to the cached + policy. + + + Successfully cached a policy to disk. + + Caching a policy to disk failed. + + + + + Defined as MetricPolicyUserVerification in + components/policy/core/common/cloud/cloud_policy_validator.cc. + + + Gaia id check was used, but failed. + + + Gaia id check was used and succeeded. + + + Gaia id is not present for user or in the policy, because of that username + check was used, but failed. + + + Gaia id is not present for user, because of that username check was used and + succeeded. + + + Gaia id is present for user, but not in the policy. Because of that username + check was used and succeeded. + + + + + + + + + + + + Removed in M91 since the data is no longer monitored. + + + Status codes produced by SessionManagerClient for policy retrieval requests. + Corresponds to RetrievePolicyResponseType in + chromeos/ash/components/dbus/session_manager_client.h. + + + + + + + + + + Result of system log upload attempt. + + + + + + + + + Deprecated 01/2022 + + + Number of UploadJob retries as defined in + chrome/browser/ash/policy/uploading/upload_job_impl.cc. + + + + + + + + + + + Re-registration results after a failed policy fetch. + + + + + + + + Deprecated 11/2020. + + + Abort of asynchronous user policy initialization when the user is managed + with the Google cloud management. + + + Abort of asynchronous user policy initialization when the user is managed + with the Active Directory management. + + + Abort of blocking (synchronous) user policy initialization when the user is + managed with the Google cloud management. + + + Abort of blocking (synchronous) user policy initialization when the user is + managed with the Active Directory management. + + + + + + Types of sign-in events as defined in + chrome/browser/ash/login/enterprise_user_session_metrics.h + + + + + + + + + + + Page was loading at the time of the snapshot request, and the snapshot + failed. + + + Page was loading at the time of the snapshot request, and the snapshot + succeeded. + + + Page was not loading at the time of the snapshot request, and the snapshot + failed. + + + Page was not loading at the time of the snapshot request, and the snapshot + succeeded. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Actions which happen on the screen. + + + + + + + + + + + + Deprecated 06/2017. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 06/2017. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This list corresponds to the calendar providers supported by Experience Kit + on iOS. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Request completed successfully. + + Request failed even after all the retries. + + + Request failed with error indicating that the request can not be serviced by + the server. + + + The request was blocked by a URL blacklist configured by the domain + administrator. + + + + + + Store was opened for this first time during this session. + + + Store was opened after closing at least once during this session. + + Store was closed. + + Store closing was skipped, because it was not opened at the time of closing. + + + + + + + + + + + + + + + + + + + + + Code removed 2022/12. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 10/2013. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Corresponding metric removed 2019-06. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2020/04 with the removal of the relevant histogram. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Reasons the sandboxed extension unpacker can fail. See enum FailureReason in + src/chrome/browser/extensions/sandboxed_extension_unpacker.h . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The status of metadata extraction for Appindexing. + + + + + + + + + + + + + + + + Defines the validity of the factory ping embargo end date in RW_VPD. + + + The value does not have a correct format. + + + The value has a correct format, but it is semantically invalid. This means + that it is more than 14 days in the future. + + + The value is present and valid. This could either mean that the device is in + the factory ping embargo period, or that the factory ping embargo period has + passed. + + + + + + + + + + + + + + + SSL version fallback did not occur. + Fell back on SSL 3.0. + Fell back on TLS 1.0. + Fell back on TLS 1.1. + + + + + Deprecated in M91 after v2 EduCoexistence. + + + + + + + + + + + + + + + + + Request to allow visiting a host was approved by the parent i.e. the parent + completed the verification flow and selected the ("Approve" + button). Available on Android. + + + Request to allow visiting a host was denied by the parent, i.e. the parent + completed the verification flow and selected the ("Don't approve" + button). + + + The user cancelled the local website parent approval, i.e. the parent + navigated away from the approval widget and did not complete the + verification flow. + + + Feature to support parent verification is missing. + + + An unexpected exception occured during parent verification. + + + + + + The result of local web approval request. Reported by the browser once + platform specific approval flow finishes and returns the result. + + + Request was explicitely approved after parent verification. + + + Request was explicitely declined after parent verification. + + + Request was canceled at any point (before, during or after parent + verification). + + An error occured during the request flow. + + + + + Filters family link user metrics into categories of interest. ChromeOS uses + service flags to segment by account types, whereas Chrome browser uses + Capabilities API to identify users with this specific requirement. ChromeOS + will transition to use Capabilities API with crbug.com/1251622. + + + + + + + + + + Error that occurs in the parent access widget. ChromeOS only. + + + Error that occurs when OAuth2 token request fails. + + + Error that occurs when Delegate is not available in ParentAccessUIHandler. + Likely caused by trying to create WebUI without a dialog. + + + Error that occurs when parent access result cannot be decoded from base64. + + + Error that occurs when decoded parent access result cannot be parsed into a + proto. + + + Error that occurs when an unknown type of callback is provided for + ParentAccessHandler::OnParentAccessCallback. + + + + + + Error that prevents the parent access widget dialog from showing. ChromeOS + only. + + Unknown error in ParentAccess UI. + + Error that occurs when ParentAccess UI invoked by non-child user. Indicates + a programming error. + + + Error that occurs when ParentAccess UI invoked while instance already + visible. Indicates a programming error. + + + + + + + + + + + Filters family user metrics into categories of interest. + + + + + + + + + + Possible different cache states that `FastCheckoutCapabilitiesFetcherImpl` + can encounter when `IsTriggerFormSupported` is called. + + + + + + + + + + Possible states of parsing the response body when a fetch completes in + `FastCheckoutCapabilitiesFetcherImpl`. + + + + + + + + Defines possible outcomes of a Fast Checkout run. + + + + + + + + + Classifies different outcomes of the attempt to trigger showing a + FastCheckout bottomsheet on a form that is known to support FastCheckout and + for a user that has the FastCheckout feature enabled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Download succeeded. + Download failed. + + Download skipped because the URL was known to have failed previously. + + + The amount of outcomes that can a download may have. + + + + + + Success - favicon found in local cache + + + Success - favicon fetched from the server + + Failure - favicon not available + + + + + + + + + + + + + + + + + + + + + Removed 2023/01 with the removal of the relevant histogram. + + + + + + + + + Feature module has been requested but is not installed yet. + + + Feature module is installed after being requested. + + + Feature module is installed but has not been requested previously. + + + + + Unknown update status. + Module requested (on-demand). + Module pending. + Module downloading. + Module downloaded. + Module installing. + Module installed. + Module request failed. + Module request canceling. + Module request canceled. + + Module request requires user confirmation. + + Module requested (deferred). + + + + Installation succeeded. + + (deprecated) Catch-all for install failures. + + + (deprecated) Catch-all for request failures. + + The installation has been cancelled. + + Download not permitted under current device circumstances (e.g. in + background). + + + Too many sessions are running for current app, existing sessions must be + resolved first. + + + Split Install API is not available. + + + Requested session contains modules from an existing active session and also + new modules. + + + Install failed due to insufficient storage. + + Request is otherwise invalid. + + A requested module is not available (to this user/device, for the installed + apk). + + + Network error: unable to obtain split details + + + + Service handling split install has died. + + + Requested session is not found. + + + Error in copying files for SplitCompat. + + + Error in SplitCompat emulation. + + + Signature verification error when invoking SplitCompat. + + + Unknown error processing split install. + + + Unmapped error processing split install error code. + + + Catch-all for unknown request failures. + + SplitCompat has not been enabled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed as of 06/2022. Revoke is deprecated. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed as of 05/2021. Replaced by FeedVideoPlayEvent. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Visit - user scrolled an inch or interacted + + + Visit - user scrolled any amount or interacted" + + + Interaction - Opening a page or using the menu" + + + + Interaction - Scrolled any amount + + Visit - user (a) had a good explicit interaction, (b) spent a minute in the + feed and scrolled, or (c) spent ten seconds viewing or opening a piece of + content. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in 05/2022 since we removed feed notice card related codes. + + + + + + + + + + + + + + + + + + + + + The feed is visible and trigger is not already one of the other foreground + visible triggers. + + + A server request is only made if the feed model is considered stale. + + + The feed is not visible but the app is in the foreground (e.g., user is in + another tab). + + + A new feed view controller has been configured and has become visible to the + user. + + + The app is backgrounding from the foreground and the refresh is running on + an app extended execution time. + + + Refresh is triggered in a background cold start with app close enabled. + + + Refresh is triggered in a background warm start with app close enabled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 09/2022. No longer needed. + + + + + + + + + + + Removed 09/2022. No longer needed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + deprecated Sep 15 2015 in favor of FFmpegCodecHashes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 03/2020 in https://crbug.com/1053030. + + + + + + + + + + + + + + + + + + + Result of re-creating shortcut during file handler registration process + + + + + + + Result of registering file handlers for PWA on Linux + + + + + + + + Result of registering file handlers for PWA on MacOS + + + + + + Result of registering file handlers for PWA on Windows + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The filter type for Recent view, the types here should be in sync with the + enumFileType from chrome/browser/ash/fileapi/recent_source.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + M75+, when file has embedded profile, based on presence of cpu info + + + M75+, when file has embedded profile, based on presence of cpu info + + + + + + Deprecated February, 2018. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is the same as the default Capture mode with no capture type. + + ec::FpMode::Mode::kCapture == ec::FpMode::Mode::kCaptureVendorFormat + + + + + + + + + + + Reported when the get FPMode command fails or other. + + ec::FpMode::Mode::kModeInvalid + + + + + + + + + + Actions which happen on the screen. + + + Obsolete, splited into skip in flow and skip on start actions in M90. + + + Obsolete, the button is removed. + + + + Obsolete, the button in removed. + + + + + + + + Successful fingerprint unlock occurred. + + FingerprintUnlockResult::kSuccess = 0 + + + FingerprintUnlockResult::kFingerprintUnavailable = 1 + + + FingerprintUnlockResult::kAuthTemporarilyDisabled = 2 + + + FingerprintUnlockResult::kMatchFailed = 3 + + + FingerprintUnlockResult::kMatchNotForPrimaryUser = 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed July 2019. + + + + + + + + + Deprecated as of 05/17/2017. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The cloud policy store was already loaded when the FRE intro was first + initialiazed. + + + The cloud policy store has loaded within the time delay specified in the + observer. + + + The cloud policy store did not load within the time delay specified in the + observer. + + + The cloud policy store raised an error while loading. + + + The cloud policy store was null (no CBCM). + + + + + + + + + + + + + Status code indicating how the first run experience was exited. + + + + + + + + + + + + + + + + + + External applications/promotions that triggered Chrome launch and First Run. + + + + + + + + + The result of an attempt to create the first run sentinel file. + + + + + + + + + Result states for the first-run sign-in flow. + + + + + + + + + + + + + Stages of the first run experience. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Types of actions a user can perform upon startup or unbackgrounding. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Number of browser processes that have started at least one NPAPI Flash + process during their lifetime. + + + Number of browser processes that have started at least one PPAPI Flash + process during their lifetime. + + + Total number of browser processes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed Sep 2020. No longer used. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Whether a buyable product annotation was found in the response from an + endpoint which provides page metadata in ShoppingPersistedTabData. + + + + + + + + + + + + + Deprecated as of March 2019. + + + + + + + + + + Deprecated as of March 2019. + + + + + + + + + + + + + + Obsoleted on 2021-01-22 as corresponding experiment code was removed and the + experiment wrapped up. + + + + + + + + + + + + + + + + + Used to describe the relationship between frames hosted in a process, + indicating whether or not there are any frames in the process that share the + same SiteInstance. + + + + + + + + + + + + + + + Removed 03/2021. + + + + + + + + + + Removed in Chrome 76. + + + + + + + + + + + + Deprecated 2012-11-13. No longer generated. + + + Old FTP server type as previously defined in + net/ftp/ftp_server_type_histograms.h + + + Unknown (could be a server we don't support, a broken server, or a security + attack) + + Server using /bin/ls -l and variants + Server using /bin/dls + Server using EPLF format + + WinNT server configured for old style listing + + VMS (including variants) + IBM VM/CMS, VM/ESA, z/VM formats + OS/2 FTP Server + + win16 hosts: SuperTCP or NetManage Chameleon + + + + + + Removed in Chrome 76. + + + FTP server type as defined in net/ftp/ftp_server_type_histograms.h + + + + + + + Obsolete, no longer detected or supported. + + Obsolete, no longer detected or supported. + + + + Result of attempting to start an FTP request + + + + + + + + + + + + + EXIT_SUCCESS + EXIT_CODE_GENERIC_FAILURE + EXIT_CODE_CANNOT_OPEN_ARCHIVE + EXIT_CODE_PASSPHRASE_REQUIRED + EXIT_CODE_PASSPHRASE_INCORRECT + + EXIT_CODE_PASSPHRASE_NOT_SUPPORTED + + EXIT_CODE_INVALID_RAW_ARCHIVE + + EXIT_CODE_INVALID_ARCHIVE_HEADER + + + EXIT_CODE_INVALID_ARCHIVE_CONTENTS + + + EXIT_CODE_INVALID_EXPLICIT_DUPLICATE_ENTRY + + + EXIT_CODE_INVALID_IMPLICIT_DUPLICATE_ENTRY + + + MINIJAIL_ERR_SIG_BASE (128) + SIGILL (4) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGABRT (6) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGKILL (9) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGSEGV (11) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGTERM (15) from libminijail + + + MINIJAIL_ERR_MOUNT from libminijail + + + MINIJAIL_ERR_JAIL from libminijail + + + + + EXIT_SUCCESS + + ZIP_ER_BASE (10) from fuse-zip + ZIP_ER_MULTIDISK (1) from libzip + + + ZIP_ER_BASE (10) from fuse-zip + ZIP_ER_READ (5) from libzip + + + ZIP_ER_BASE (10) from fuse-zip + ZIP_ER_NOENT (9) from libzip + + + ZIP_ER_BASE (10) from fuse-zip + ZIP_ER_OPEN (11) from libzip + + + ZIP_ER_BASE (10) from fuse-zip + ZIP_ER_MEMORY (13) from libzip + + + ZIP_ER_BASE (10) from fuse-zip + ZIP_ER_COMPNOTSUPP (16) from libzip + + + ZIP_ER_BASE (10) from fuse-zip + ZIP_ER_EOF (17) from libzip + + + ZIP_ER_BASE (10) from fuse-zip + ZIP_ER_NOZIP (19) from libzip + + + ZIP_ER_BASE (10) from fuse-zip + ZIP_ER_INCONS (21) from libzip + + + ZIP_ER_BASE (10) from fuse-zip + ZIP_ER_ENCRNOTSUPP (24) from libzip + + + ZIP_ER_BASE (10) from fuse-zip + ZIP_ER_NOPASSWD (26) from libzip + + + ZIP_ER_BASE (10) from fuse-zip + ZIP_ER_WRONGPASSWD (27) from libzip + + + ZIP_ER_BASE (10) from fuse-zip + ZIP_ER_OPNOTSUPP (28) from libzip + + + MINIJAIL_ERR_SIG_BASE (128) + SIGILL (4) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGABRT (6) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGKILL (9) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGSEGV (11) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGTERM (15) from libminijail + + + MINIJAIL_ERR_MOUNT from libminijail + + + MINIJAIL_ERR_JAIL from libminijail + + + + + + + + + + + + + + + + + + + + + + + + + Actions which happen on the screen. + + + + + + + + + + + + + + + + + + + + Deprecated in M91 after v2 EduCoexistence. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in M92. + + + + + + + + + + + + + + + + + + Gamepad model as defined in device/gamepad/gamepad_id.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gamepad data fetcher, defined as GamepadSource in + device/gamepad/gamepad_pad_state_provider.h. Note that the labeling is off + for data recorded prior to 73.0.3683.10. See https://crbug.com/984786 + + + + + + + + + + + + + + + + + + + + + + + Integer values encoding the vendor and product IDs for known gamepads. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 2020-02, no longer used. + + + + + + + + + + Deprecated 2020-02, no longer used. + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 7/2019. No longer used. + + + + + + + + + + + + + Deprecated as of 01/2016. The error has been fixed by GCM. (crbug/580367) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 9/2012, and replaced by DriveEntryKind + + + + + + + + + + + + + + + + + + + + + + + + + + + Generic enums where the label is just the raw number + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 9/2014, and replaced by PermissionAction. + + + For the Android platform the count for this event should be exactly the same + as the corresponding event in the GeolocationInfoBarDelegateEvent enum. + + + + + + + Deprecated 9/2014, and replaced by PermissionAction. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 07/2020 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Output parmeters for a device are requested, and there is no corresponding + sink cached; new sink is created and cached. + + + If session id is used to specify a device, we always have to create and + cache a new sink. + + + Output parmeters for a device are requested, and there is a corresponding + sink cached. + + + + + + Perf data was collected, parsed and attached to the UMA protobuf + successfully. + + + Could not add perf data to the UMA protobuf because no perf data was ready + to be uploaded. + + + Perf timer triggered but the perf provider already had a perf data proto to + be added to the UMA protobuf. + + + Perf timer triggered but an incognito window was open. + + + Perf data was collected but an incognito window was opened during the + collection. + + + Perf data was collected and sent to Chrome as a serialized protobuf but it + could not be deserialized by Chrome. + + + The perf data sent back to Chrome by debugd is invalid. + + + A perf data collection was already active. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents a card type ID. See cardTypeId in + chrome/browser/resources/google_now/background.js. + + + + + + + + + + + + + + + + Events in Google Now component extension. See GoogleNowEvent in + chrome/browser/resources/google_now/background.js. + + + + + + + + + + + + + + + + + + + + Removed 04/2021 + + + + + + + + + Results of attempting a connection to Google Play Services. See Javadoc for + com.google.android.gms.common.ConnectionResult at + http://developer.android.com/reference for more information. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Types of action taken in response to Google Play Services user-recoverable + errors. See subclasses of UserRecoverableErrorHandler in + org.chromium.chrome.browser.externalauth.ExternalAuthUtils for more + information. + + + + + + + + + Canonical error codes for gRPC APIs. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 08/2020 + + + + + + + + + + + + + + + + + Indicates the enable state for the GPU AppContainer sandbox. + + + + + + + + + Results of testing against a GPU feature being allowed/blocklisted/disabled. + + + + + + + + + Results of testing against a GPU feature being blocklisted or not in various + Windows sub-versions. + + + + + + + + + + + + + + Replaced by GPUBlocklistFeatureTestResultsWindows2 in M67. + + + Results of testing against a GPU feature being allowed/blocklisted/disabled + in various Windows sub-versions. + + + + + + + + + + + + + + + + + + + + + Removed in Oct 2020. + + + Results of testing against a GPU feature being allowed, blocklisted, + disabled, fallback to software, or undefined in various Windows + sub-versions. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Results of testing against the GPU blacklist entries. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The exit code returned by the GPU process when it terminated. These match + the enumeration in result_codes.h. + + + + + + + + + + + Causes for the GPU Process to be launched. From: + content/common/gpu/gpu_process_launch_causes.h + + + CAUSE_FOR_GPU_LAUNCH_ABOUT_GPUCRASH + + CAUSE_FOR_GPU_LAUNCH_ABOUT_GPUHANG + + CAUSE_FOR_GPU_LAUNCH_GPUDATAMANAGER_REQUESTDXDIAGDX12VULKANGPUINFOIFNEEDED + + + CAUSE_FOR_GPU_LAUNCH_RENDERWIDGETFULLSCREENPEPPER_CREATECONTEXT + + + CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZE + + CAUSE_FOR_GPU_LAUNCH_NO_LAUNCH + + CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE + + + CAUSE_FOR_GPU_LAUNCH_PEPPERPLATFORMCONTEXT3DIMPL_INITIALIZE + + + CAUSE_FOR_GPU_LAUNCH_BROWSER_STARTUP + + CAUSE_FOR_GPU_LAUNCH_CANVAS_2D + + CAUSE_FOR_GPU_LAUNCH_PEPPERVIDEOENCODERACCELERATOR_INITIALIZE + + + CAUSE_FOR_GPU_LAUNCH_GPU_MEMORY_BUFFER_ALLOCATE + + + CAUSE_FOR_GPU_LAUNCH_JPEGDECODEACCELERATOR_INITIALIZE + + CAUSE_FOR_GPU_LAUNCH_MOJO_SETUP + + CAUSE_FOR_GPU_LAUNCH_GET_GPU_SERVICE_REGISTRY + + + CAUSE_FOR_GPU_LAUNCH_BROWSER_SHARED_MAIN_THREAD_CONTEXT + + + CAUSE_FOR_GPU_LAUNCH_RENDERER_SHARED_MAIN_THREAD_CONTEXT + + CAUSE_FOR_GPU_LAUNCH_WEBGL_CONTEXT + + CAUSE_FOR_GPU_LAUNCH_SHARED_WORKER_THREAD_CONTEXT + + + CAUSE_FOR_GPU_LAUNCH_RENDERER_VERIFY_GPU_COMPOSITING + + + CAUSE_FOR_GPU_LAUNCH_DISPLAY_COMPOSITOR_CONTEXT + + + CAUSE_FOR_GPU_LAUNCH_MEDIA_CONTEXT + + + + + + Lifetime events of the GPU Process, as defined in + content/browser/gpu/gpu_process_host.cc. + + + + + + + + + + + + + + + + + + Combinations of input parameter active and previous active state set in + third_party/WebKit/WebKit/chromium/src/ChromiumBridge.cpp + + + + + + + + + + Return status re-encoded values from GpuTerminationOrigin as defined in + content/browser/gpu/gpu_process_host.h enum GpuTerminationOrigin. + + UNKNOWN_ORIGIN + OZONE_WAYLAND_PROXY + + + + + Return status re-encoded values from GetTerminationStatus as defined in + base/process/kill.h enum TerminationStatus. + + NORMAL_TERMINATION + ABNORMAL_TERMINATION + PROCESS_WAS_KILLED + PROCESS_CRASHED + STILL_RUNNING + PROCESS_WAS_KILLED_BY_OOM + OOM_PROTECTED + LAUNCH_FAILED + OOM + + + + + Removed 06/2020. Both LUMINANCE_F16 and R16_EXT must be supported for now. + + + Keeps track of how many users have R16_EXT or/and LUMINANCE_F16, and also + how many have none of the two. + + + + + + + + + Results of user actions when a 3D API info bar is raised. + + + + + + + + + + + + + + + + + + + + + + + + + + + + Combinations of context loss variables from + chrome/renderer/webgraphicscontext3d_command_buffer_impl.cc + + + + + + + + + + + + + + + + The result of thumbnail fetching in the Grid Tab Switcher. + + + + + + + + + Suggestion group IDs toggled visible or hidden in the omnibox result list. + Reflects the omnibox::GroupId enum values for the Polaris zero-prefix + suggestions in //third_party/omnibox_proto/groups.proto. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed July 2019. + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 08/2019. Replaced with + HappinessTrackingSurveyDesktopBubbleUsage. + + + + + + + + + + + + + + + + + + + + + Fetching survey from the server encounters connection errors. + + + The survey is over its capacity. + + + + + + + + + + + + + + + + + List of the possible qualification status of a component. This is defined in + https://chromium.googlesource.com/chromiumos/platform2/+/refs/heads/main/hardware_verifier/proto/hardware_verifier.proto + (enum QualificationStatus). + + Unqualified + Rejected + Qualified + No_Match + + + + + + + + + + + + + + + + + + + Possible survey states and answers for each question. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprected 09/2019 in favor of HeavyAdStatus2. + + + + The ad exceeded the network threshold for the Heavy Ad Intervention. + + + The ad exceeded the CPU threshold for the Heavy Ad Intervention. + + + + + + + The ad exceeded the network threshold for the Heavy Ad Intervention. + + + The ad exceeded the total CPU usage threshold for the Heavy Ad Intervention. + + + The ad exceeded the peak CPU usage threshold for the Heavy Ad Intervention. + + + + + + The user was shown the capping heavy pages InfoBar. + + + The user clicked the InfoBar button pausing subresource loading. + + + The user clicked the InfoBar again resuming subresource loading. + + + The InfoBar was dismissed because the network usage on the page stopped. + + + + + Possible list search result states in the HelpAppProvider. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Statuses returned by Hermes, the Chrome OS daemon process which configures + eSIM profiles a device's hardware. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M96. + + Possible detected devices combination on leaving dialog + + + + + + + + + + + + + Possible combination of human input device types that may be missing when + OOBE starts. + + + + + + + + + + Possible device types of HIDs interfaced with in the OOBE HID detection + screen + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Possible store entry types contained within the HintCacheStore. + + + + + + + + + + + + + + + + + + + + + + + + + + These numbers are the lower 32 bits of the hash of the metric name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed as of 05/2022. + + + The final state, or outcome, of an interaction on the HistoryClusters, or + Journeys, UI. + + + Followed a link in the same tab. + The tab was closed. + + Followed a same-doc link (i.e., the 'Chrome history' and 'Tabs from other + devices' links) in the same tab without returning to the HistoryClusters UI. + + Refreshed the tab. + + + + + The initial state that describes how an interaction with the + HistoryClusters, or Journeys, UI was started. + + + + The UI was reached via direct navigation, like the user typing the WebUI URL + in the omnibox. + + + The UI was reached via indirect navigation, e.g. clicking on the omnibox + action chip. + + + The UI was reached via same-document navigation, like the user visiting + History first, and then clicking the Journeys Tab. This also includes other + edge cases, like if the user clicked over from 'Tabs on other devices'. + + + The Side Panel HistoryClusters UI was opened from the omnibox. Technically + this COULD be logged as kIndirectNavigation, but we want to be able to + distinguish between Side Panel and History WebUI initializations. + + + The Side Panel HistoryClusters UI was opened from side panel toolbar button. + + + + + + Logs which HaTS survey was requested by the History Clusters UI code. + + + + + + + + History.FaviconsRecovery no longer tracked as of March 2017. + + Error states noted in thumbnail_database.cc recovery code. + Successful recovery. + + sql::Recovery failed init. + + + Query failed against recovery meta table. + + + No version row in recovery meta table. + + + Recovery meta table has version 6. + + + Recovery meta table has version 5. + + + Recovery meta table has an unexpected version. + + + Failed to create recovery meta table. + + + Failed to copy recovery meta table. + + + Failed to init target schema. + + + Failed to create recovery favicons table. + + + Failed to copy recovery favicons table. + + + Failed to create recovery favicon_bitmaps table. + + + Failed to copy recovery favicon_bitmaps table. + + + Failed to create recovery icon_mapping table. + + + Failed to copy recovery icon_mapping table. + + + Successful recovery of version 6 database. + + + Failed sql::MetaTable::Init(). + + + Failed sql::Recovery::SetupMeta() or GetMetaVersionNumber(). + + + Recovery found deprecated version and razed. + + + Failed v5 recovery loading schema. + + + Failed v5 recovery on favicons. + + + Failed v5 recovery on icon_mapping. + + + Successful recovery of version 6 database. + + + Failed v6/7 recovery on favicons. + + + Failed v6/7 recovery on favicon_bitmaps. + + + Failed v6/7 recovery on icon_mapping. + + + Failed sql::Recovery::Recovered(). + + + + + + + + + + + + + + + + + + + + + + + Error states noted in top_sites_database.cc recovery code. + Successful recovery. + + Recovery found deprecated version and razed. + + + sql::Recovery failed init. + + + Failed sql::Recovery::SetupMeta() or GetMetaVersionNumber(). + + + Recovery meta table has an unexpected version. + + + Failed sql::MetaTable::Init(). + + + Failed to init target schema. + + + Failed recovery on thumbnails table. + + + Failure from sql::Recovery::Recovered(). + + + Rows were deleted because |url_rank| and |last_forced| didn't agree. Does + not prevent recovery. + + + Rows were deleted because |redirects| did not contain |url|. Does not + prevent recovery. + + + |url_rank| was renumbered due to missing rows. Does not prevent recovery. + + + + + + Removed Jan 2021 as the only user has expired + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from code as of 10/2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Error codes defined at + https://www.iana.org/assignments/http2-parameters/http2-parameters.xhtml#error-code + + + + + + + + + + + + + + + + + + + + + + + + + + + Auth prompt displayed over a blank interstitial + + + Auth prompt displayed for the main frame, without a blank interstitial + + + Auth prompt displayed for a subresource from the same origin + + + Auth prompt displayed for a subresource from a different origin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + HTTP credentials were moved during migration to HTTPS + + + HTTP credentials were copied during migration to HTTPS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of July 2019. + + + + + + + + + + + + + + + + + + + + Upgrade attempted + Upgrade succeeded + Upgrade failed (for any reason) + + Upgrade failed due to cert error + + Upgrade failed due to net error + Upgrade failed due to timing out + + Prerender navigation cancelled + + + Upgrade not attempted because not enabled + + + + + + + + + + + newly connected socket + + connected unused socket (idle prior to use) + + previously used (keep-alive?) socket + + + + + Tracks the result of querying for an INTEGRITY or HTTPSSVC record. This enum + can represent each of Chrome's supported RCODE values as well as any + unrecognized RCODE values. It also has the TimedOut value to represent + queries that timed out. + + IANA registry: + https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml + + + + + + + + + + + + + + + Represents the result of checking the INTEGRITY record's integrity. + + + + + + + + + + + + + + + + Spec-compliant status line + Empty status line + Incorrect protocol name + Protocol name not uppercase + Protocol version missing + Protocol version invalid + + Protocol version number is multiple digits + + Unknown but valid-looking version + Explicitly specified HTTP/0.9 + Missing status code + Invalid status code + + Trailing characters after status code + + Missing reason phrase + + Disallowed character in reason phrase + + + Excess whitespace separating protocol version and status code + + + Status code from reserved ranges (0xx or 6xx-9xx) + + + + + + State of HttpStreamFactoryJob. See net::HttpStreamFactoryImpl::Job::State + for more details + + + + + + + + + + + + + + + + + + + + + + + + + + + Succeeded. + Communication failure. + Session failure. + Retry the action later. + The state that requires reboot. + In the defense mode. + User authorization failure. + Retrying won't change the outcome. + + The elliptic curve scalar out of range. + + User presence not detected. + + The space for this operation is not fount. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Recorded when the there is an attempt to open the backing store from disk, + where it wasn't previously opened. This can happen during the API calls + IDBFactory::Open, GetDatabaseNames, GetDatabaseInfo, and DeleteDatabase. + + + Recorded when there is an attempt to delete the database using the + IDBFactory::DeleteDatabase API. + + + + + + A request was made to delete the data for an origin. + + + An unrecoverable error occurred accessing the backing store. + + + A forced close was requested from the indexeddb-internals page. + + + The database is force closed so that it can be copied. + + + A forced schema downgrade was requested from the indexeddb-internals page. + + + + + + + + + + + + + + + + Removed August 2019. Was added to measure use of features which not all + actively developed browser engines supported. No longer relevant. + + No key path. + Key path is a string. + Key path is an array of strings. + + + + + Removed August 2019. Was added to measure use of features which not all + actively developed browser engines supported. No longer relevant. + + Invalid key. + Key is an array. + Key is a binary buffer. + Key is a string. + Key is a date. + Key is a number. + + + + + IndexedDB encountered an error attempting to read or decode a value from the + leveldb backing store, indicative of corruption or I/O error. Unused as of + M26. + + + IndexeDB encountered an error attempting to write or commit a value to the + leveldb backing store, indicative of I/O error. Unused as of M26. + + + IndexedDB encountered a consistency error in the leveldb backing store, + indicative of corruption or an coding error. Unused as of M26. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An in-memory backing store was opened successfully. + + + An on-disk backing store was opened successfully. + + + An on-disk backing store could not be opened or created because the + directory could not be opened or created. Cleanup will not be attempted. + + + An on-disk backing store was opened but had an unknown schema version, due + to corruption or reverting to a previous version of Chrome. Cleanup will be + attempted. + + + An on-disk backing store failed to open; cleanup was attempted but the + database could not be destroyed. + + + An on-disk backing store failed to open; cleanup was attempted but + re-opening the database failed. + + + An on-disk backing store failed to open; cleanup was attempted and the + database was then opened successfully. + + + An on-disk backing store was opened but leveldb failed to read the schema + version. + + + + An in-memory backing store failed to open. + + + A database with non-ascii characters in its path was opened (with either + success or failure). + + + An open failed on a machine with a full disk. No cleanup was attempted. + + + Open failed because either a path component or the overall path was too + long. + + + An open attempt failed with an I/O error that doesn't necessitate a recovery + attempt. + + + The corrupted open database was deleted. + + + Open failed because the blob journal could not be cleaned up. + + + Open failed because the backing store's metadata could not be set up. + + + + + + Removed April 2020. + + + + + + + + Deprecated as of 9/2017. + + + Reusing an idle socket that is previously used. + + + Reusing an idle socket that is not previously used. + + + Reusing an idle socket and found it unusable. + + + When releasing the socket to the pool, found it unusable. + + + Cleaning up the idle socket is forced. + + + Cleaning up a timed-out, reused idle socket. + + + Cleaning up a timed-out, unused idle socket. + + + Cleaning up an unusable idle socket. + + + Socket is closed usually when per-origin socket limit is reached. + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 07/2018. The corresponding metric was deleted in + https://chromium-review.googlesource.com/c/chromium/src/+/1131495. + + + + + + + + The result status of a request made to the image annotation service by a + client feature. + + + + + + + + + + + The type of description annotation returned from the image annotation + service. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 03/2015, and replaced by IMECommitType2. + + + Types X, commits X as the top suggestion. + + + Types X, commits Y as the top suggestion. + + + Types X, commits X as the non-top suggestion. + + + Types X, commits Y as the non-top suggestion. + + Commits a prediction suggestion. + + Reverts the previous auto-corrected and committed word. + + + + + + Types X, commits X as the top suggestion. + + + Types X, commits Y as the top suggestion. + + + Types X, commits X as the 2nd suggestion. + + + Types X, commits Y as the 2nd suggestion. + + + Types X, commits X as the 3rd/other suggestion. + + + Types X, commits Y as the 3rd/other suggestion. + + Commits a prediction suggestion. + + Reverts the previous auto-corrected and committed word. + + The commit is triggered by voice input. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed as of Jan 2020. + + Success in registering ProxyView to IMM + Failure in registering ProxyView to IMM + Failure in detecting the result + + ReplicaInputConnection was used instead + + + + + IME switches by tray menu + IME switches by accelerator + + IME switches by mode change key + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IE (Windows-only) + Firefox 2 + Firefox 3 (and later) + Safari (Mac-only) + Google Toolbar + + A bookmarks.html file + + Edge (Windows-only) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A boolean for whether the user is in the developer mode. + + + + + + + Deprecated as of July 2018. + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of December 2022. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Inline updates are deprecated as of M97. + + + + + + + + + + + Inline updates are deprecated as of M97. + + + + + + + + + + Inline updates are deprecated as of M97. + + + + + + + + + + + + + + + + Inline updates are deprecated as of M97. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XKeyboard + + + + Multilingualization + Transliteration + + + + + + + + + + + + + + + + + + + + Only applicable to InputMethod.ID histogram that was deprecated at M46. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in M77. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M90. + + + + + + + + + + + + + + + + + + + + + + Removed in M96. Replaced with InstallReason. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 10/2013. + + + + + + + + + + + + + + + + + Deprecated 2013-06. + + + + + + + + + + + + Deprecated as of 7/2015. + + + + + + + + + Deprecated as of 7/2015. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + User device GPU series type. Only meaningful with Intel GPUs. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Defines actions taken by the user in the Intent Picker dialog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Internal Errors in the page_load_metrics system + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from the code May 2021. + + + + + + + + + + + + + + Deprecated in M89 since it's no longer being used for metrics collection. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The tab owning the dialog was closed + + The user tapped on the OK or Cancel button. + + + Dialog was blocked because the user tapped the "Suppress Dialogs" + option. + + + The user navigated the tab (e.g. back/forward, reload) + + + + + The entrypoint that the user entered Lens by. + + + + + + + Lens was triggered via the "Search Copied Image" Omnibox entry + point. + + + + + + + Whether lens is supported and if not the reason why. + + + + + + + + + + The status of the upload of image data to Lens. + + + + + + + + + + + + + + + Freeze detection stopped after obtaining the breakpad lock. + + + Freeze detection stopped after moving the hang report out of the Breakpad + directory and into the |UTE| directory. + + + Freeze detection stopped after calling DumpWithCrash from Crashpad. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + User canceled the download manually. + + + Download failed either by getting a corrupted file or no file at all. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + One of several separate stability metrics. The values are non-contiguous as + they are a subset of values matching fields of the Stability proto (from the + SystemProfile). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 12/2020 as it is no longer used for analysis. + + + This enum is used to track the user actions that occur when previewing links + using the WKWebView 3D touch API. This feature is not currently supported, + and "Preview Attempted" will be used to gauge user interest in 3D + touch link previewing. + + + Recorded when a WKWebView link preview is attempted. + + + + + + The brokerable attachment had a valid destination. This is the success case. + + + The brokerable attachment had a destination, but the broker did not have a + channel of communication with that process. + + + The brokerable attachment did not have a destination process. + + + Error making an intermediate Mach port. + + + Error parsing DuplicateMachPort message. + + + Couldn't get a task port for the process with a given pid. + + + Couldn't make a port with receive rights in the destination process. + + + Couldn't change the attributes of a Mach port. + + + Couldn't extract a right from the destination process. + + + Couldn't send a Mach port in a call to mach_msg(). + + + Couldn't decrease the ref count on a Mach port. + + + Couldn't extract a right from the source process. + + + Broker didn't have a channel of communication with the source process. + + + Broker could not open the source or destination process with extra + privileges. + + + Broker was asked to transfer a HANDLE with invalid permissions. + + + Broker was not immediately able to send an attachment. + + + Broker successfully sent a delayed attachment. + + + + + + The brokerable attachment was successfully processed. + + + The brokerable attachment's destination was not the process that received + the attachment. + + + An error occurred while trying to receive a Mach port with mach_msg(). + + + + + + Removed 2021/09. + + + + + + + + + + + + + + + Failed to parse version + Version value not recognized + IPP 1.0 + IPP 1.1 + IPP 2.0 + IPP 2.1 + IPP 2.2 + + + + + + + + + + + + getifaddrs or GetAdaptersAddresses failed + + + + + + + + + A boolean for whether a force installed extension which failed with error + CRX_HEADER_INVALID is from Chrome Web Store or not. + + + + + + + + A boolean for whether a device is "fully managed". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Indicates no settings migration was performed on startup, since the user is + still using legacy settings. + + + Indicates no settings migration was performed since the user is already + using JP SYS PK and already migrated previously. + + + Indicates migration was performed since the user has just switched to using + the JP SYS PK or the migration was marked as undone and was just redone. + + + Indicates migration is being marked as to be undone. This could be because + the migration flag was enabled previously, but now the flag has been + disabled, so we mark the migration as incomplete, so it retriggers on + turning the flag back on. + + + + + + + + + + + + The tab owning the dialog was closed + + A new dialog was shown, closing the existing dialog + + HandleJavaScriptDialog was called + CancelDialogs was called + The tab owning the dialog was hidden + + The browser owning the dialog was deactivated + + + The user clicked on the OK or Cancel button + + + The user navigated the tab (e.g. back/forward, reload) + + + The page displaying the dialog was switched out of its tab (e.g. tab + discarding) + + + The UI toolkit forced the dialog to close (at root caused by the user + closing the owning tab but going through a different path due to platform + differences) + + + + + + + + + + + + + + + + + + + + + This is the bucket that counts the images that did not fall under any of the + other categories. + + + + + + + + + + + + + + + + + Captures errors codes that can be given by + JSONFileValueDeserializer::Deserialize(). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 2020/12. + + + + + + + + Deprecated as of 2020/12. + + + + + + + + Deprecated as of 2020/12. + + + + + + + + + + Deprecated as of 2020/12. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Encryption types that are allowed when requesting Kerberos tickets from a + Kerberos Authentication server. Any set of types can be mapped into one of + the categories below. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Actions that are available on the Korean IME. + + + + + + + + Layouts that are available on the Korean IME. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hash values for the first two letters of a locale code. This is mapped to + the English name for each language. Only the first two letters are used so + country and script codes are ignored. The hash is created by + LanguageUsageMetrics::ToLanguageCode. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of all the error types that DLC Service returns. + + + + + + + + + + + + + + + List of all the Features that are supported by Language Packs. A Feature is + a synonym for client. + + + + + + + + + + + Multidimension Enum that captures success and failures broken down by + Feature ID. We use this approach based on the Histograms guidelines to + represent a MxN matrix. + + + + + + + + + + + + Hash values of language codes that correspond to a Language Pack. The hash + is created by computing base::PersistentHash() of the label, then cast to + int32. To generate new values in a way that is consistent, use the unit test + at chromeos/ash/components/language/language_packs/metrics_unittest.cc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from Android in M89 and Desktop in M90. Still on iOS. + + + + + + + + + Windows and Android only + + + + + + + + + + + + + + + + + + + + + + + + + + + iOS only. + Android only + + Android only + + Android only + + Android only + + + + + + + + + + Downloaded but not installed. Split Compat most likely not available. + + + + Not a final split install session status. + + + + + Top Android language is available. + + Top Android language is not available but another one is. + + + + Overridden languages must be avaliable. + + + + + + + + Languages that are not available cannot be correct. + + + The Java UI language is correct but native UI language not. + + + + + + + + + + + + + + + + + + + + + + The state of the largest contentful paint algorithm at the time of + reporting. + + + + + + + + + + Whether the LargestContentfulPaint results from image or text. These are the + only content types currently tracked by the metric + PageLoad.PaintTiming.NavigationToLargestContentfulPaint, so there is no need + for an 'Other' label. + + + + + + + + Deprecated 2015-10-05 in Issue 433475. Histogram was used temorarily for + diagnosing crash causes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The type of a result in the Chrome OS launcher, simplified to fewer + categories for the purposes of ranking. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of actions that represent a launcher workflow that the user can perform + within the launcher UI, either in tablet or clamshell mode. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unknown + Catch-all launch for Windows + + Launched after acceptance of a user experiment + + + Result bucket for OSes with no specific launch modes + + + Chrome launched as registered protocol handler + + + Chrome launched as registered file handler + + + Chrome launched with url(s) in the command line, but not from a shell + registration or a shortcut. Only the first arg is considered. + + + Chrome launched with file(s) in the command line, but not from a shell + registration or a shortcut. Only first arg is considered. + + + Launched from shortcut but no name available, Chrome, or Web App. + + + + + Launched from user-defined shortcut + + + Launched from a desktop shortcut + + + Launched from the Windows taskbar + + + Launched from a Windows Start Menu shortcut + + + Launched from toast notification activation on Windows + + + Launched as a logon stub for the Google Credential Provider for Windows + + + Mac - undocked launch from disk + + + Mac - docked launch from disk + + + Mac - undocked launch from a disk image + + + Mac - docked launch from a disk image + + + Mac - error determining Chrome's Dock status + + + Mac - error determining Chrome's disk image status + + + Mac - error determining Chrome's Dock and disk image statuses + + + Web App on command line, but not from a shortcut, or a file type/protocol + handler. + + + Web App launched from a user-defined shortcut + + + Web App launched from a desktop shortcut + + + Web App launched from a start menu shortcut + + + Web App launched from taskbar shortcut + + + Web App launched as a registered file type handler + + + Web App launched as a registered protocol handler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enum describing the aspect ratio of the captured region. The aspect ratios + are defined arbitrarly as follows: SQUARE: [0.8, 1.2] WIDE: (1.2, 1.7] + VERY_WIDE: (1.7, infinity] TALL: [0.3, 0.8) VERY_TALL: [0, 0.3) + + + + + + + + + + + Result of Lens Region Search feature. + + + + + + + + + + + + + + + + + + + + Whether lens is supported and if not the reason why. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 06/2019. + + + obsolete + obsolete + + obsolete + obsolete + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Defines events in the link capturing user flow + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 2021/09, as relevant UMA is deprecated. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 2020-04 in favor of LinuxDistro2 because distro-specific version + metrics were added. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2020-02 as part of crbug.com/1021156. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Not yet initialized + User pressed reload + Back or forward + User entered URL, or omnibox search + (deprecated) Included next 4 categories + Commonly following of link + JS/link directed reload + + back/forward or encoding change + + + Allow stale data (avoid doing a re-post) + + Speculative prerendering of a page + + + + + + + + + + + + Hash values for ISO 639 locale codes (including country and script tags e.g + "en-US"). Each of these values is computed by casting the output + of base::HashMetricName(locale_string_id) to base::HistogramBase::Sample. JS + users should use metricsPrivate.recordSparseValueWithHashMetricName(). + + + + + + + + + + + + + + + + + + + + + + + Reported as page source language when language detection code was not run + (i.e. page closed or navigated away before running). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in October 2021 + + + + + + + + Removed in September 2021 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M91, enough data has been gathered. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Command-line flag doesn't start with two dashes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enumerates the different types of user log-in that can be detected on a page + based on the site (effective TLD+1). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No reason recorded so far, nothing to report. This value should never be + reported in histogram. + + Legacy profile holders. + + Password changed, revoked credentials, account deleted. + + + Incorrect password entered 3 times at the pod. + + + Incorrect password entered by a SAML user once. OS would show a tooltip + offering user to complete the online sign-in. + + + Company policy required re-auth for SAML users. + + + Cryptohome is missing, most likely due to deletion during garbage + collection. + + + After prior login, OS failed to connect to the sync with the existing RT. + This could be due to a deleted account, password changed, account revoked, + etc. + + + User cancelled the password change prompt. Chrome OS has to continue to send + the user through the online flow until user updates their cryptohome + password or agrees to start the new cryptohome. + + + + Cryptohome was corrupted and deemed unrecoverable. + + + Admin policy required re-auth for Gaia without SAML users. + + + Admin policy required re-auth on lock screen for Gaia without SAML users. + + + Admin policy required re-auth on lock screen for SAML users. + + + + + + Triggers that may indirectly cause PasswordStore observers notifications + because logins *may* have changed. + + + Chrome either was notified about external changes (e.g. via subscription + notification) or started a new foregrounding session and needs to refresh + data that may have changed due to external credential management. + + + A credential was saved by Chrome. Update observers with all credentials + because the addition may conflict with an existing credential. + + + A credential was updated by Chrome. Update observers with all credentials + because updates may have caused implicit removals (e.g. due to primary key + changes) or the update may have failed (e.g. because of a prior deletion). + + + A single credential was removed by Chrome. Update observers with all + credentials because removal might fail (i.e. credential was already gone). + + + Multiple credentials where removed by Chrome. Update observers with all + credentials because removals might fail. + + + Chrome removed blocklisting entries. Update observers with all credentials + to confirm the remaining saving exceptions. + + + + + + + + + + + + + + + + Session ended normally, or for a reason not listed below. + + + Session ended because Chrome crashed repeatedly. + + + + + The result of a state key generation operation. + + Successfully generated state keys from machine identifiers. + + + Successfully generated state keys from stable device secret. + + + Failed due to missing machine IDs. + + + Failed due to invalid device secret input. + + HMAC initialization failed. + HMAC computation failed. + + + + + Login success offline and online + + Login success offline only + + + + Incognito Normal + Owner Normal + Other Normal + Incognito Dev + Owner Dev + Other Dev + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mach kern return values defined in + https://opensource.apple.com/source/xnu/xnu-4570.41.2/osfmk/mach/kern_return.h + and + https://opensource.apple.com/source/xnu/xnu-4570.41.2/osfmk/mach/message.h + + + + Specified address is not currently valid. + + + Specified memory is valid, but does not permit the required forms of access. + + + The address range specified is already in use, or no address range of the + size specified could be found. + + + The function requested was not applicable to this type of argument, or an + argument is invalid + + + The function could not be performed. A catch-all. + + + A system resource could not be allocated to fulfill this request. This + failure may not be permanent. + + + The task in question does not hold receive rights for the port argument. + + Bogus access restriction. + + During a page fault, the target address refers to a memory object that has + been destroyed. This failure is permanent. + + + During a page fault, the memory object indicated that the data could not be + returned. This failure may be temporary; future attempts to access this same + data may succeed, as defined by the memory object. + + + The receive right is not a member of a port set. + + + The name already denotes a right in the task. + + + The operation was aborted. Ipc code will catch this and reflect it as a + message error. + + + The name doesn't denote a right in the task. + + + The name denotes a right, but not an appropriate right. + + A blatant range error. + + The task already has send or receive rights for the port under another name. + + + An attempt was made to supply "precious" data for memory that is + already present in a memory object. + + + A page was requested of a memory manager via memory_object_data_request for + an object using a MEMORY_OBJECT_COPY_CALL strategy, with the + VM_PROT_WANTS_COPY flag being used to specify that the page desired is for a + copy of the object, and the memory manager has detected the page was pushed + into a copy of the object while the kernel was walking the shadow chain from + the copy to the object. This error code is delivered via + memory_object_data_error and is handled by the kernel (it forces the kernel + to restart the fault). It will not be seen by users. + + + A strategic copy was attempted of an object upon which a quicker copy is now + possible. The caller should retry the copy using vm_object_copy_quickly. + This error code is seen only by the kernel. + + + An argument applied to assert processor set privilege was not a processor + set control port. + + + The specified scheduling attributes exceed the thread's limits. + + + The specified scheduling policy is not currently enabled for the processor + set. + + + The external memory manager failed to initialize the memory object. + + + A thread is attempting to wait for an event for which there is already a + waiting thread. + + + An attempt was made to destroy the default processor set. + + + An attempt was made to fetch an exception port that is protected, or to + abort a thread while processing a protected exception. + + + A ledger was required but not supplied. + + + The port was not a memory cache control port. + + + An argument supplied to assert security privilege was not a host security + port. + + + thread_depress_abort was called on a thread which was not currently + depressed. + + + Object has been terminated and is no longer available + + + Lock set has been destroyed and is no longer available. + + + The thread holding the lock terminated before releasing the lock + + + The lock is already owned by another thread + + + The lock is already owned by the calling thread + + + Semaphore has been destroyed and is no longer available. + + + Return from RPC indicating the target server was terminated before it + successfully replied + + + Terminate an orphaned activation. + + + Allow an orphaned activation to continue executing. + + + A signalled thread was not actually waiting. */ + + + During a page fault, indicates that the page was rejected as a result of a + signature check. + + + The requested property cannot be changed at this time. + + + The provided buffer is of insufficient size for the requested data. + + + Kernel resource shortage handling out-of-line memory. + + + Kernel resource shortage handling an IPC capability. + + + No room in VM address space for out-of-line memory. + + + No room in IPC name space for another capability name. + + + Bogus in-line data. + + + Bogus destination port. + + + Message not sent before timeout expired. + + + Bogus voucher port. + + Software interrupt. + + Data doesn't contain a complete message. + + Bogus reply port. + + Bogus port rights in the message body. + + + Bogus notify port argument. + + + Invalid out-of-line memory pointer. + + + No message buffer is available. + + + Send is too large for port + + + Invalid msg-type specification. + + + A field in the header had a bad value. + + + The trailer to be sent does not match kernel format. + + + compatibility: no longer a returned error + + + Bogus name for receive port/port-set. + + + Didn't get a message within the timeout value. + + + Message buffer is not large enough for inline data. + + Software interrupt. + + compatibility: no longer a returned error + + + Bogus notify port argument. + + + Bogus message buffer for inline data. + + + Port/set was sent away/died during receive. + + + compatibility: no longer a returned error + + + Error receiving message header. See special bits. + + + Error receiving message body. See special bits. + + + Invalid msg-type specification in scatter list. + + + Out-of-line overwrite region is not large enough + + + trailer type or number of trailer elements not supported + + + + + + + + + + + + + + + + + + + Deprecated as of 03/2019. + + + For a download that occurs in top frame, record whether the frame is + sandboxed and whether the download involves a transient user gesture. It is + only recorded for downloads originated from navigations or from HTML anchor + download attributes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A side-by-side install of Chrome was made default (not this one). + + + + + + Deprecated July 2018. + + + + + + + + + + + + + + + + Changed in manager session + Changed in supervised user session + Master key not found + + Signature or encryption key not found + + Password data not found + + Manager key authorization failed + + + Could not load new password data upon supervised user signin + + + Incomplete password data loaded upon supervised user signin. + + + Authentication failure while changing password during supervised user + signin. + + + Could not store new password data for supervised user. + + + + + Request was made from main frame + Request was made from subframe + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An event that occurs on the MarketingBackendConnector used in the OOBE + MarketingOptInScreen. + + + + + + + + + + Geolocation resolve status on OOBE MarketingOptInScreen. + + + + + + Opt-in actions that occur on the OOBE MarketingOptInScreen. + + + + + + + + + Deprecated 12/2017. + + + + + + + + + + + + Deprecated 09/2016 and replaced with MarkHttpAsStatus. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 08/2017. + + + + + + + + Deprecated 11/2016 in Issue 666370 with the deprecation of Autoplay + experiment. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 07/2019 as no longer needed. + + + + + + + + + + + Deprecated 07/2019 as no longer needed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Replaced by MediaRouterDeviceDescriptionParsingResult as of 2023-04-04. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 08/2017. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 08/2017. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Error occurred while updating MetricsReporting + + + + + + + + + + + + + + + + + Archive loaded successfully + + Failed to load archive because the file was empty + + + Failed to load archive because the url wasn't http(s), file, or content + + + Failed to load archive because it was not valid MHTML + + + Failed to load archive because it had no main resource + + + + + + + + + + + Removed 06/2019. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tracks certain events related to MimeHandlerView; most importantly the use + of the exposed "postMessage" API on HTMLPlugInElement for various + expected message values. It also tracks state of "access" to + resource based on CORB (e.g., same vs cross origin postMessage). + + + Emitted once a new BrowserPlugin-based MimeHandlerView is created. + + + Emitted once the embedder process is notified that the extension's document + has loaded. + + + Invalid message string/object posted to an accessible resource. + + + Message {type: "getSelectedText"} posted to an accessible + resource. + + + Message {type: "print"} posted to an accessible resource. + + + Message {type: "selectAll"} posted to an accessible resource. + + + Invalid message string/object posted to an inaccessible resource. + + + Message {type: "getSelectedText"} posted to an inaccessible + resource. + + + Message {type: "print"} posted to an inaccessible resource. + + + Message {type: "selectAll"} posted to an inaccessible resource. + + + Any message posted to a MimeHandlerViewContainerBase that is embedded; i.e., + is not created as a result of navigating a frame to the resource. + + + Emitted when an internal postMesasge to 'print' is issued from C++ code. + + + Emitted when a MimeHandlerViewFrameContainer is instantiated to support post + messaging to a MimeHandlerViewGuest in plugin's content frame. + + + Emitted when a plugin update results in reusing a + MimeHandlerViewFrameContainer. + + + Emitted once a MimeHandlerViewFrameContainer is removed in UpdatePlugin + phase. + + + Emitted once a MimeHandlerViewFrameContainer is removed as a result of + observing mismatch between routing IDs of frames inside and those that are + expected. + + + + + + Captures the MIME type of the HTTP response that carried an HLS manifest. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2020-10. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 04/2020 because the Privacy Notice is removed from FRE. (See + crbug.com/1065912) + + + + + + + + + + + + + + + + + + + + + + + + These values are defined inside the MobileFreSignInChoice enum + chrome/browser/android/metrics/uma_bridge.cc and reference possible ways of + completing the sign-in part of the First Run Experience. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A non-Google application (more precisely an app that doesn't share an app + group with Chrome) launched Chrome with an http or https URL. This can + happen on iOS 14+ when Chrome is set as the default browser and a system app + (f.e. Messages) or an app from a 3rd party developer opens a URL. + + + + + + + + + + + + + + + + Logged when an application passes an http URL to Chrome using the custom + registered scheme (f.e. googlechrome). + + + Logged when an application passes an https URL to Chrome using the custom + registered scheme (f.e. googlechromes). + + + + + + + + Logged when any application passes an http URL to Chrome using the standard + "http" scheme. This can happen when Chrome is set as the default + browser on iOS 14+ as http openURL calls will be directed to Chrome by the + system from all other apps. + + + Logged when any application passes an https URL to Chrome using the standard + "https" scheme. This can happen when Chrome is set as the default + browser on iOS 14+ as http openURL calls will be directed to Chrome by the + system from all other apps. + + + + + + + + + + + + + + + + + + + + + + + + + + + Result of pressing the mode change key + + Showed the indicator for the current input method. + + + Switched to the next input method. + + + + + Result of loading a model for execution + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M87. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The Mach port was successfully sent or received. + + + Couldn't get a task port for the process with a given pid. + + + Couldn't make a port with receive rights in the destination process. + + + Couldn't change the attributes of a Mach port. + + + Couldn't extract a right from the destination. + + + Couldn't send a Mach port in a call to mach_msg(). + + + Couldn't extract a right from the source. + + + + + The Mach port was successfully received. + + An error occurred while trying to receive a Mach port with mach_msg(). + + + + + + + + + + + + + + + + + + + + + When the Phone Hub bubble is opened, this enum denotes when either the + glimmer animation is shown on the More Apps button or if the apps are loaded + immediately and no animation is shown. + + + + + + + + Index of a tile on the new tab page. This is only an enum so that the + dashboard won't produce misleading statistics like averages. + + + + + + + + + + + + + + + + + The type of tool that triggers a pointer-type MotionEvent. + Unknown tool type. + The tool is a finger (touch). + The tool is a stylus. + The tool is a mouse or trackpad. + + The tool is an eraser or a stylus being used in an inverted posture. + + + + + Dm-crypt over a sparse backing file. + Encrypted ext4 directory. + + + + Key not loaded yet. + Key loaded from encrypted.key file. + + Key loaded from needs-finalization file. + + Freshly generated key. + + + + No key loaded yet. + Using lockbox salt as system key. + + Key in dedicated encstateful NVRAM space. + + + TPM not ready, obfuscated key on disk. + + Hard-coded factory key. + Key from kernel command line. + Using product UUID as system key. + Using hard-coded fallback key. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + All removal operations failed. + + Some, but not all, operations succeeded. + + All operations succeeded. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Accepted MultiDevice OOBE Setup. + + + Declined MultiDevice OOBE Setup. + + + + + + Defines the ranges in which the number of displays connected in multi + display mode may reside. + + + + + + + + + + + Defines the modes in which displays connected to the device are in. + + + + + + + + + + + + + + + + + + + + + Deprecated 09/2017. See histogram MultiProfile.SessionMode. + + + + + + + + + + + + + + + + + + + Deprecated 04/2018. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in favor of NaClEmbedderTypeEnum. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in July 2019. See https://crbug.com/975556. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of Chrome 59 in favour of OverscrollNavigationType. + + Direction of the overscroll gesture. + Did not scroll + Scrolled forward + Scrolled back + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A digital asset link validation started. Recorded once for a lookalike and + target site pair. + + + Failed to fetch the lookalike site's manifest. This could be because the + lookalike site doesn't serve a manifest, serves an invalid manifest or a + manifest that doesn't match the target site. + + + Timed out while fetching the lookalike site's manifest. + + + Failed to fetch the target site's manifest. This could be because the target + site doesn't serve a manifest, serves an invalid manifest or a manifest that + doesn't match the lookalike site. + + + Timed out while fetching the lookalike site's manifest. + + + Validation of lookalike and target manifests succeeded, no need to show a + lookalike warning. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in Feb 2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A Prefetched article that has been offlined. + + + A video file previously downloaded by the user. + + + An audio file previously downloaded by the user. + + + An offline page previously downloaded by the user. + + + + + + An error page was shown. This bucket encompasses all others and works as a + total count for error pages (instead of the histogram's total sample count + which doesn't reflect that information). + + + An error page was shown with at least a "Reload" button on it. + + + An error page was shown with at least a "Reload" button on it and + the user pressed that button. + + + An error page was previously loaded with a "Reload" button and + another load error happened as a result of the user pressing that button. + + + An error page was shown with at least a "Show Saved Copy" button + on it. + + + An error page was shown with at least a "Show Saved Copy" button + on it and the user pressed that button. + + + An error page was previously loaded with a "Show Saved Copy" + button and another load error happened as a result of the user pressing that + button. + + + An error page was shown with at least a "More" (aka + "Details") button on it and the user pressed that button. + + + An error page was previously loaded and the user started a reload by + pressing the browser's reload button. + + + An error page was shown with at least a "Reload" and a "Show + Saved Copy" buttons on it. Note that this is not exclusive with the + respective individual button buckets. + + + An error page was shown with at least a "Reload" and a "Show + Saved Copy" buttons on it and the user pressed the "Reload" + button. Note that this is not exclusive with the respective individual + button buckets. + + + An error page was shown with at least a "Reload" and a "Show + Saved Copy" buttons on it and the user pressed the "Show Saved + Copy" button. Note that this is not exclusive with the respective + individual button buckets. + + + An error page was shown with the offline dino image and and the user + activated it (to play the dino game). + + + An error page was shown with at least a "Show Cached Copy" button + on it. + + + An error page was shown with at least a "Show Cached Copy" button + on it and the user pressed that button. + + Obsolete. + Obsolete. + + An error page was shown with at least a "Diagnose Error" button on + it and the user pressed that button. + + Obsolete. + Obsolete. + Obsolete. + Obsolete. + + An error page was shown with at least a "Download Page Later" + button on it. + + + An error page was shown with at least a "Download Page Later" + button on it and the user pressed that button. + + + A list containing at least one item of offline content suggestions was shown + in the expanded/shown state. + + + An item from the offline content suggestions list was clicked. + + + A link that opens the downloads page was clicked. + + + A summary of available offline content was shown. + + + A list containing at least one item of offline content suggestions was shown + in the collapsed/hidden state. + + + The error page was shown because the device is offline (dino page). + + + An error page was shown with at least a "Sign in to network" + button on it and the user pressed that button. + + + + + + Now only NetFilterType2 is used. + + + Specific content decoding filter. See net::Filter::FilterType for more + details + + + + + + + + + + + + + Specific content decoding filter. See net::SourceStream::SourceType for more + details + + + + + + + + + + + Unlike other values, this one is reported from HttpNetworkTransaction in a + case when an unadvertised, but known encoding appears in a + "Content-Encoding" header, and is thus not comparable with the + other values, which are potentially returned from cached entries. + + + Reported from URLRequestHttpJob::SetUpSourceStream when an unknown encoding + appears in a "Content-Encoding" header. Despite being reported in + this histogram, this does not cause a CONTENT_DECODING_FAILED error. + + + + + + + + + + + Removed from code June 2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from code, June 2020. + + + + + + + + + + + + + + + + + Removed from code, June 2020. + + + + + + + + + + + + + + + + + + Removed from code, June 2020. + + + + + + + + + + + + + + + + + + + + Removed from code, July 2021. + + + + + + + + + + + + + + + + + + + + + Removed from code June 2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + These error indexes are produced by QCErrorToMetricIndex() in + gobi-cromo-plugin. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A signal loss in the cellular service was detected and a delayed connection + drop request was posted. This request causes the cellular connection to be + dropped if it is not cancelled within the delay provided. + + + Signal strength returned to normal soon after a delayed drop request was + made, causing the request to be canceled. This indicates a flaky network. + + + + + + Removed and renamed to NetworkCellularPSimActivationState 2/2021 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Status code that we received in response to a cellular usage API request. + + + This value is distinct from the others in that it indicates that we were + unable to issue a request or that we received no reply. The other values + represent the status code contained in a reply. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The DHCP client will attempt to identify the default gateway using a unicast + ARP to the gateway's MAC address. This may help speed up the re-connection + process. + + + The DHCP client will attempt to ARP for the IP address that it was supplied. + This indicates that the client is unsure whether the address it was assigned + is valid. + + + The DHCP client has successfully acquired an IP address. + + + The DHCP client has inititated a DHCP DISCOVER, a broadcast request for any + server to provide it with an address. + + + The DHCP client has received more than one offer in response to its DHCP + DISCOVER request. + + + The DHCP client has received an offer in response to its DHCP DISCOVER which + is the same as an address it previously failed to validate via an "Arp + Self" test. + + + The DHCP client has received an offer in response to its DHCP DISCOVER which + is either an all-zeros or all-ones IP address, and therefore invalid. + + + The DHCP client has received a response to its DHCP DISCOVER which is not + actually a DHCP OFFER. + + + The DHCP client has issued a DHCP INFORM message for an IP address it has + self-assigned. + + + The DHCP client is intializing its internal state. + + + The DHCP client has received a DHCP NAK and will defer processing this + response for a receive interval. + + + The DHCP client is performing the second level "rebind" lease + renewal stage, and has presumably failed the first level "renew" + stage. + + + The DHCP client is attempting to re-acquire a lease on a network where it + had previously been connected at some time in the past. + + + The DHCP client is releasing its current lease to its assigned IP address. + + + The DHCP client is performing a first level renewal of its current lease. + + + The DHCP client is performing a DHCP REQUEST for a lease it has been + offered. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The portal result types come from PortalResult in shill/metrics.h + + + + + + + + + + + + + + + + + Corresponds to NetworkPortalSigninController::SigninMode used to determine + how to display captive portal signin UI. + + + + + + + + + + + + + Corresponds to NetworkPortalSigninController::SigninSource used to determine + how the signin UI was shown. + + + + + + + + + + The portal status types from NetworkPortalDetector::CaptivePortalStatus + + + + + + + + + + + + + + + The stop reasons come from shill/mac80211_monitor.h. + + + + + + + + + + + + Removed July 2019. + + + + + + + + + + + + + + + The possible states for the network service sandbox. See + chrome/browser/net/system_network_context_manager.cc. + + + + + + + + + + + Possible instances of WiFi security changes that happen after initial + connection. These are not all possible security changes but a subset that is + interesting: downgrades plus "WPA1/2 to WPA1/2/3" change which + could trigger splitting of a network into two services. + + + + + + + + + + + + + + + Shill's WiFi security types. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A data migration was successful. + + Failed to create cache directory. + + + Failed to create data directory. + + Failed to copy data. + Failed to delete old data. + + Failed to grant sandbox access to cache directory. + + + Failed to grant sandbox access to data directory. + + + The operation was not attempted because granting sandbox access was not + supported on the current platform configuration, no data paths were + specified (e.g. in-memory) or no unsandboxed_data_path was specified to + migrate from. + + + Failed to create checkpoint file. + + + A valid unsandboxed_data_path was specified but no migration was requested. + + + Migration has already succeeded previously. + + + Migration has already succeeded but it was not possible to grant the sandbox + access to the data directory. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 08/2020. + + + + + + + + + Deprecated as of 01/2017. Replaced by NewTabPageActionAndroid2. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + These values are defined in PartnerBookmarkAction enum in + chrome/browser/ui/webui/ntp/android/bookmarks_handler.cc. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + These values are defined in LogoDownloadOutcome enum in + components/search_provider_logos/logo_service_impl.h. + + + + + + + + + + + + + + + + + + These values are defined inside the PromoImpressionBuckets enum in + chrome/browser/ui/webui/ntp/android/promo_handler.cc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 06/2018. Replaced by + NotificationHelperNotificationActivatorPrimaryStatus and + NotificationHelperNotificationActivatorSecondaryStatus. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NPAPI is not supported on this platform + + NPAPI is disabled + NPAPI is enabled + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2019-08. + + + + + + + + + + + + + + + + + + + + + + + + + + + Hash values for the IDs of NTP background image collections. Each of these + values is computed by casting the output of + base::PersistentHash(collection_id) to base::HistogramBase::Sample. + + Geometric shapes + + Native American Artists Collection + + Landscapes + + LGBTQ Artists Collection + + Art + Earth + Life + Colors + Unknown collection ID + Textures + + Black Artists Collection + + Cityscapes + + Latino Artists Collection + + Seascapes + + + + + Removed 2022-10. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2020-06. + + + + + + + + + Hash values for the IDs of NTP modules. Each of these values is computed by + casting the output of base::PersistentHash(module_id) to + base::HistogramBase::Sample. + + + + + + + + + + + + + + + Deprecated 2016-05. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2019-08. + + + + + + + + + + + + + + + + + + + + + + + The state of the RemoteSuggestionsProvider (formerly known as + NTPSnippetsService). + + + + + + + + + + + + + + + + The types of actions performed by the Most Visited Tile Placement + experiment, used to identify the cases where the experiment could not + operate as expected, and the reason for it. + + + + + + + + + + The source where the displayed title of an NTP tile originates from. + + + The title might be invalid, aggregated, user-set, extracted from history, + not loaded or simply not known. + + + The site's manifest contained a usable "(short_)name" attribute. + + + The site provided a meta tag (e.g. OpenGraph's site_name). + + + The site's title is used as tile title, extracted from the title tag. + + + The title was inferred from multiple signals (e.g. meta tags, url, title). + + + + + The visual type of a most visited tile on the new tab page. + The icon or thumbnail hasn't loaded yet. + + The item displays a site's actual favicon or touch icon. + + + The item displays a color derived from the site's favicon or touch icon. + + + The item displays a default gray box in place of an icon. + + + Deprecated: The item displays a locally-captured thumbnail of the site + content. + + + Deprecated: The item displays a server-provided thumbnail of the site + content. + + + Deprecated: The item displays a default graphic in place of a thumbnail. + + + The item displays a thumbnail of the page. Removed 9/2019. + + + The item displays a default gray box in place of a thumbnail. Removed + 9/2019. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A Nullable Boolean can True, False or Null (ie: unset or absent). + + + + + + + + + Removed from code March 2019. + + + Interactions a user can take on the email interstitial onboarding step. + + + + + + + + + + Deprecated 2019-04. + + + All possible user journeys when interacting with the NUX email provider + page. + + + + + + + + + + + + + + + + + Deprecated 2019-04. + + Email providers that can be added by the NUX. + + + + + + + + + + The button that a user pressed when interacting with the Google Apps NUX. + + + + + + + + + + + + + + + + + + Google apps that can be added by the NUX. + + + + + + + + + + + + Interactions a user can take on the initial onboarding step. + + + + + + + + + + All possible user journeys when interacting with the NUX NTP background + page. + + + + + + + + + + + + + + + + Interactions a user can take on the "Set as default" onboarding + step. + + + + + + + + + + + + Interactions a user can take on the sign in interstitial onboarding step. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hooks for file system operations that use MS Office files outside of Drive. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The notification was shown to the user (though it may have been blocked) + + + The notification was removed programmatically, because the operation was + complete. + + + The user tapped the cancel button on the notification. + + + The user dismissed the notification by swiping it away. + + The user tapped the notification. + + + + + + + + + + + + + + + + + The attempt finished successfully. + + The attempt was canceled by the request coordinator. This is triggered when + the user cancels an in-flight offlining attempt, and will always result in + BackgroundSavePageResult::USER_CANCELED. + + + Loading was canceled by various pre-render monitoring. These include when + window.open was called, when audio is detected, etc. + + + The attempt resulted in a retriable loading failure. The system or Chrome + encountered an error (e.g. render killed, WebContents destroyed). + + + The attempt failed because save did not succeed. + + + The attempt failed because chrome is now operating in the foreground on a + svelte device. + + + The attempt failed because the particular attempt ran out of time. + + + + The attempt resulted in a non-retriable loading error. This is mostly + deprecated as of 4/2017 because a fickle network and a good page might + result in the same errors as a bad page with invalid URL. + + + The attempt resulted in a loading failure but we've reason to believe we + shouldn't try something else for a little while: i.e. we failed because a + renderer crashed or we got INTERNET_DISCONNECTED as the network error. + + + The offliner was asked to attempt something when it's not ready. + + + The request coordinator failed updating the status of the request in the + queue. The attempt is aborted. + + + Called when the background scheduler stops the processing. + + + The attempt succeeded, but only as a result of snapshotting on the last + retry and we have already received PrimaryMainDocumentElementAvailable. Note + that if we're already in the middle of snapshotting, we will record SAVED. + The quality of the page is presumed to be lower. + + + The browser was killed for reasons such as OOM, swiped out, or crashed. + + + The attempt resulted in a retriable loading failure. We encountered a + network error (e.g. NETWORK_CHANGED, TIMED_OUT). Because fickle networks + make network errors unreliable, an incorrectly typed URL will also result in + retriable loading failure. + + + The attempt resulted in a retriable loading failure. We encountered an error + page (e.g. 404 page). + + + Background loading of the page was deferred because its URL matches the one + on the active tab URL. The attempt will be retried later. + + + The loaded page has a HTTPS certificate error. The request was aborted. + + + The loaded page is blocked by SafeBrowsing. The request was aborted. + + + The loaded page is a Chrome interstitial or an error page. The request was + aborted. + + + + + + + Request was completed successfully. + + Request failed because a non-recoverable loading failure occurred. + + + Loading was canceled by various pre-renderer monitoring. This is not used + anywhere. + + + Loading was canceled by chrome moving to the foreground on a svelte device. + + + Loading failed because we failed saving the page. + + + Request failed because it expired before we were able to get to it. + + + Request failed because we exceeded the maximum number of retries. + + + Request failed because we exceeded the maximum number of starts. Each start + may have completed (resulting in a load error or one of the other + per-attempt statuses) or chrome may have died before the attempt's result + was recorded. + + + The request was removed by the user. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OfflinePages.LoadStatus was removed in M65. + + + + + + + + + Namespace used as default. + + Namespace used when offline page is saved when bookmarking. + + + Namespace used when offline page is saved as last_n page. + + + Namespace used when offline page is saved after the user clicks a button on + the dino page. + + + Namespace used when offline page is saved from custom tabs. + + + Namespace used when offline page is saved as downloads. + + + Namespace used when offline page is saved as NTP suggestions. + + + Namespace used when offline page is saved as suggested articles. + + + Namespace used when offline page is saved from browser actions. + + + Namespace used when offline page is saved for live page sharing. + + + Namespace used for temporary offline pages requested to be downloaded when + the user landed in a dino page. + + + + + + There was no attempt to perform a navigation in a day. + + + At least one navigation was started but none committed successfully in a + day. + + + Chrome navigations committed exclusively to locally saved offline pages in a + day. + + + Chrome navigations committed exclusively to online pages in a day. + + + Chrome navigations committed to both online pages and locally saved offline + pages in a day. + + + + + + + Prefetched offline pages were downloaded in a day but none were opened by + the user. + + + The user opened prefetched offline pages in a day but no new ones were + downloaded. + + + Prefetched offline pages were both downloaded a opened by the user in a day. + + + + + + + + + + + Reported when the publishing path finds the page by Offline Id + + + Reported when the publishing path finds the page by Guid. + + + + + + Deprecated 2016-08. + + + + + + + + + + + + + + + Page was saved successfully. + Page save was cancelled in the interim. + + Save operation failed because device storage was full. + + + A save operation was called with an invalid archiver. + + + Either something went wrong with the save operation, or the url we saved was + different from the one we passed in. + + + The SQL operation to add the page to the offline store failed. + + + A page with this ID already exists. + + + Certain pages like file URL or NTP will not be saved because they're already + available offline. + + + Deprecated: Save operation failed because the page resulted in a security + certificate error. + + + Deprecated: Save operation failed because an error page (i.e. offline dino + page) was detected. + + + Deprecated: Save operation failed because an interstitial page (i.e. page + warning of expired certificates or improper dev signatures) was detected. + + + Failed to compute the digest of an archive file. + + + Unable to move the file into a public directory while creating an offline + copy. + + + Unable to add the file to the system download manager + + + Unable to get storage permission for publish the page. + + + The URL from the saved page doesn't match the requested page URL. + + + + + + + + + + + Store was opened for this first time during this session. + + + Store was opened after closing at least once during this session. + + Store was closed. + + Store closing was skipped, because it was not opened at the time of closing. + + + + + + + + + + + + + + + Tab was successfully restored while the device was online. Can help assess + the potential benefit of allowing loading from offline pages even when the + device is online. + + + Tab was successfully restored while the device was online but in a context + that wouldn't allow it to be saved as an offline page: not HTTP/HTTPS or in + an incognito tab. + + + Tab was successfully restored to a non-last_n offline page while the device + was online. This will happen when a tab is specifically loading a downloaded + offline page. + + + Tab was successfully restored to a last_n offline page while the device was + online. This will only happen if/when loading of last_n pages is allowed in + online situations. + + + Tab was successfully restored while the device was offline. The page was + most probably loaded from cache without revalidation. + + + Tab was successfully restored while the device was offline but in a context + that wouldn't have allowed it to be saved as an offline page: not HTTP/HTTPS + or in an incognito tab. This includes tab restores to the NTP or other + chrome: pages. + + + Tab was successfully restored to a non-last_n offline page while the device + was offline. This will happen when a tab had an associated offline page that + was not saved by last_n. + + + Tab was successfully restored to a last_n offline page while the device was + offline. + + + Tab failed being restored and an error page was presented. This represents + any kind of failure and not only dino pages. + + + The tab's renderer process crashed while it was being restored. + + + + + + + + + + + + + + + + + + + + + Deprecated 4/2015. + + + + + + + + + + + + + + + + + + Launched as an installed web application in a standalone window + + Launched with urls in the cmd line + + Fallback value when no other LM_ condition is satisfied + + + Launched from shortcut but the path to the shortcut cannot be determined + + + Launched from user-defined shortcut + + + Launched from the quick launch bar (pre-Win7; obsolete) + + + Launched from a desktop shortcut + + + Launched from the taskbar (Win7 and higher) + + + Launched from the installer as part of a retention experiment + + + Launch mode result bucket for OSes with no coverage + + + Mac - undocked launch from disk + + + Mac - docked launch from disk + + + Mac - undocked launch from a disk image + + + Mac - docked launch from a disk image + + + Mac - error determining Chrome's Dock status + + + Mac - error determining Chrome's disk image status + + + Mac - error determining Chrome's Dock and disk image statuses + + + Launched from toast notification activation (Win10-RS1 and higher) + + + Launched from a Start Menu shortcut (Windows). + + + Launched as a logon stub for the Google Credential Provider for Windows + (Windows). + + + Launched as an installed web application in a browser tab + + + The requested web application was not installed + + + Launched installed web app in standalone window from command line, using + --app flag. + + + Launched installed web app in standalone window from command line, using + --app-id flag. + + + Launched installed web app in standalone window by any method other than + command line or a platform shortcut. + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 06/2020 as histogram expired. + + + + + + + + + + + + + + + + Deprecated 10/2018 and replaced with OmniboxEnteredKeywordMode2. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2021-01. + + + + + + + + Obsolete as of M105. + + Suggest requests that were sent. + + Suggest requests that were invalidated, e.g., due to user starting to type. + + + Suggest responses that were received. Includes both those received directly + from the server and those loaded from the HTTP cache. + + + Subset of Suggest responses that were loaded from the HTTP cache. + + + Subset of Suggest responses that were loaded from the HTTP cache and were + out-of-date. + + + Subset of Suggest responses that ended up updating the displayed results. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + One-time permission events. + + + + + + + + + OnServiceConnected is already called. Everything worked as expected. + + + OnServiceConnected is not called and connection is not needed. Could for + example indicate the user closed the tab before timeout. + + + Timed out and perform fallback operation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Obsolete as of 06/2020. + + + + + + + + + + + + + + + + + + + + + + + Initial decision taken by Opaque Response Blocking (ORB, see also + https://github.com/annevk/orb) based on just the response headers. + + + ORB only applies to opaque respones - the NonOpaqueResponse value covers: + mode != no-cors (e.g. mode=navigate or mode=cors) and browser-initiated + requests. + + + ORB algorithm is *surely* able to make a decision based on the response + headers. The ProcessedBasedOnHeaders enum value covers all subresource + requests: scripts, images, video, etc. (both same-origin and cross-origin + requests). + + + ORB algorithm *might* requires parsing the response body as Javascript. + + This might be a false positive if the response: 1) sniffs as an + audio/image/video format 2) represents a valid range response for a media + element + + + + + App categories for the app that opens the browser. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The entity annotator was requested to be created but no metadata for how to + create it was present. + + + The entity annotator was requested to be created but the metadata specific + to this model was not present. + + + The entity annotator was requested to be created but no slices were + specified in the entities model metadata. + + + + + + + + + All required files were present but the creation failed for a different + reason + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Request sent and received response. + + Request sent but response not received. + + + Request not sent because network offline. Deprecated as of 1/2022. + + + Request not sent because fetcher busy with another request. + + + Request not sent because no hosts or URLs left after filtering. + + + Request not sent because there were no supported optimizations types. + + + + + + + The model was delivered immediately at registration. + + + The model was delivered after loading from store or downloading from server. + + + GetModelsRequest was sent to the optimization guide server. + + + Model was requested to be downloaded using download service. + + + Download service started the model download. + + + Model got downloaded from the download service. + + + Download service was unavailable. + + + GetModelsResponse failed. + + Download URL invalid. + + Model download failed due to download service or verifying the downloaded + model. + + + Loading the model from store failed. + + + Model download was attempted after the model load failed. + + + + + + Removed as of 04/2020. + + + + The main frame host of the navigation was covered by a hint or was attempted + to be fetched from the remote Optimization Guide Service in the last 7 days. + + + A fetch for information from the remote Optimization Guide Service about the + main frame host of the navigation was not attempted. + + + A fetch for information from the remote Optimization Guide Service about the + main frame host of the navigation was attempted but not successful. + + + + + + Found configuration data for a server filter. + + + Successfully created a server filter. + + + Failed to create a server filter per bad configuration. + + + Failed to create a server filter because it would use too much RAM. + + + Failed to create a server filter because it has more than one configuration. + + + There was an invalid RE2 in the regexps field. + + + + + + The necessary information needed to make the decision is not yet available. + + + The necessary information needed to make the decision is available and the + decision is affirmative. + + + The necessary information needed to make the decision is available and the + decision is negative. + + + + + + There was no model for the optimization target evaluated, so the target + decision is unknown. + + + The model for the optimization target was evaluated and the page load was + not predicted to match the optimization target. + + + The model for the optimization target was evaluated and the page load was + predicted to match the optimization target. + + + The model for the optimization target not available on the client. + + + The page load is part of a model prediction holdback where all decisions + will return false in an attempt to not taint the data in order to understand + the production recall of the model. + + + The OptimizationGuideDecider was not initialized yet. + + + + + + There was no hint or optimization filter consulted for the optimization + type, so the type decision is unknown. + + + An optimization filter for the optimization type was consulted and the page + load was allowed by the filter. + + + An optimization filter for the optimization type was consulted and the page + load was not allowed by the filter. + + + An optimization filter for the optimization type was on the device but was + not loaded in time to make a decision. There is no guarantee that had the + filter been loaded that the page load would have been allowed for the + optimization type. + + + The optimization type was allowed to be applied based on information from a + hint. + + + The optimization type was not allowed to be applied based on information + from a hint. + + + There was a hint loaded that matched the page load, but no matching page + hint for the page load. Deprecated as of 01/2020. Page loads that used to + match this decision are now recorded as "Page load not allowed by + hint". + + + A hint for the page load was on the device but was not loaded in time to + make a decision. There is no guarantee that had the hint been loaded that + the page load would have been allowed for the optimization type. + + + There was no hint on the device that matched the page load. + + + The OptimizationGuideDecider was not initialized yet. + + + A fetch for a hint that matches the page load from the remote Optimization + Guide Service was started but was not available in time to make a decision. + (Added in M80, Previously, this was combined with "No hint available + for page load".) + + + + + + + The specific visit that we wanted to annotate content for was found in the + History Service and the content annotations for the visit were required to + be stored in the History Service. + + + There were no visits found in the History Service for the URL that the + content annotations are associated with. + + + Visits for the URL the content annotations are for were found, but not the + specific visit we were annotating for. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The prediction model for the optimization target is loaded and available for + evaluation. + + + The store is initialized but the model does not exist for the optimization + target. + + + The store is initialized but the model has not been loaded into memory yet. + + + The store is not yet initialized and it is unknown if it contains a model + for the optimization target or not. + + + + + + Model was requested to be downloaded. + + Download service started the model download. + + + + + + + The download was successfully verified and processed. + + + The download failed verification. + + + The download was successfully verified but a directory to unzip the file to + could not be created. + + + The download was successfully verified but it failed to be unzipped. + + + The download was successfully verified, but the expected model info file + could not be read. + + + The download was successfully verified, but the expected model info file + could not be parsed. + + + The download and model info files were successfully verified and processed, + but the expected model file was not found. + + + The download and model info files were successfully verified and processed, + but the expected model file failed to be processed. + + + The download was successfully verified, but the model info contained in the + model info file was invalid. + + + The download was a valid CRX file but came from a publisher that is + untrusted. + + + The parent directory used to store models does not exist. + + + The directory needed to store this model version could not be created. + + + The model info was not saved to model store file. + + + The additional file was not found in the CRX file. + + + + + + Model was expired. + + Model was found to be expired when the model is loaded. + + Model dirs were invalid. + + Failed when loading the model files from the store. + + + Model file path verification failed on a model update. + + Model version is invalid. + + + + + Hints were processed and at least one supported hint was stored. + + + Component was sent for processing but there was either no component file to + read or the version was invalid. + + + Component file was received but there was an error reading the file + containing the hints. + + + Component file was received and read successfully but did not contain a + valid configuration. + + + Failed to finish processing same version previously so skipping to avoid + potential crash loop. + + + Skipped processing hints, likely because the hint cache already contains the + same version. + + + Hints processed but no supported hints found. + + + Previous version for which processing did not complete could not be read so + clearing the state and skipping for the session. Will try again next + session. + + + + + + + Hints for the current navigation were already available so the fetch race + was not needed. + + + The fetch race was attempted for only the host of the current navigation. + + + The fetch race was attempted for only the URL of the current navigation. + + + The fetch race was attempted for the host and URL of the current navigation. + + + A fetch race for the host and URL of the current navigation is already in + progress. + + + The fetch race was not attempted for the host and URL of the current + navigation since there are too many page navigation fetches currently in + flight. Deprecated in 02/2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The Blacklist was not loaded from disk when the page load committed and + prevented the page capping InfoBar. + + + The per-session policy prevented showing the page capping InfoBar. + + + The general persistent policy prevented showing the page capping InfoBar. + + + The per-host policy prevented showing the page capping InfoBar. + + + The per-type policy prevented showing the page capping InfoBar. + + + The page capping InfoBar was allowed to be shown. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Obsolete as of M54 and replaced by OriginTrialTokenStatus. + + + + + + + + + + + + + + + + + Obsolete as of Chrome 54. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed as of 12/2022. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Extracted from home/unknown editions in M93. + + + + + + Object does not support accessibility attributes + + + Forced crash due to menu item bounds checking failure + + + Forced crash due to view not in a window requiring a window + + + Whitelisted exception for bug 85463. Suspect ImageKit conversions for media + browser in open or save panel. + + + Whitelisted exception for bug 316759. Suspect background address detection, + field unknown. + + + Whitelisted exception for bug 466076. Suspect background address detection, + field unknown. + + + + + + Removed 2020 January. + + + + + + + + Removed 2020 January. + + + + + + + + ! + + + + + An HFS read-only disk image, likely the original Chromium distribution disk + image. + + + + + + + + + + + + INVALID + INVALID + + Immersive Mechanism + Primary Screen + Shared Spaces + Single Screen + + + AppKit Mechanism + Primary Screen + Shared Spaces + Single Screen + + INVALID + INVALID + + Immersive Mechanism + Primary Screen + Separate Spaces + Single Screen + + + AppKit Mechanism + Primary Screen + Separate Spaces + Single Screen + + + Immersive Mechanism + Secondary Screen + Shared Spaces + Multiple Screens + + + AppKit Mechanism + Secondary Screen + Shared Spaces + Multiple Screens + + + Immersive Mechanism + Primary Screen + Shared Spaces + Multiple Screens + + + AppKit Mechanism + Primary Screen + Shared Spaces + Multiple Screens + + + Immersive Mechanism + Secondary Screen + Separate Spaces + Multiple Screens + + + AppKit Mechanism + Secondary Screen + Separate Spaces + Multiple Screens + + + Immersive Mechanism + Primary Screen + Separate Spaces + Multiple Screens + + + AppKit Mechanism + Primary Screen + Separate Spaces + Multiple Screens + + + + + + The window entered fullscreen for the browser. + + + The window entered fullscreen for the tab contents. + + + The window entered fullscreen for an extension. + + + + + + The window was fullscreened using the immersive mechanism. + + + The window was fullscreened using the AppKit mechanism, in Presentation + Mode. + + + The window was fullscreened using the AppKit mechanism, in Canonical + Fullscreen. + + + + + The fullscreen toolbar is always shown. + + The fullscreen toolbar only appears when the menubar drops down. + + The fullscreen toolbar is not visible. + + + + + The window was located on the primary screen, and there is only a single + screen available. + + + The window was located on the primary screen, and there are multiple screens + available. + + + The window was located on a secondary screen, and there are multiple screens + available. + + + + + + + + + + + + + + + + + + + + + + + + Removed 2020 January. + + + + + + + + + + + + + + + + + + + The "Screens Have Separate Spaces" option is unavailable. + + + The "Screens Have Separate Spaces" option is on. + + + The "Screens Have Separate Spaces" option is off. + + + + + + The shared memory region is backed by a POSIX fd. + + + The shared memory region is backed by a Mach memory object. + + + + + + Removed 2020 January. + + + + + + + + + + + + + Removed 2020 January. + + + + + + + + + Obsolete since M90. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Direction of the overscroll gesture. + Scrolled from bottom towards top + Scrolled from top towards the bottom + Scrolled from right towards left + Scrolled from left towards right + + + + + Type of the overscroll gesture based on direction and source (i.e. touchpad + vs. touch screen). + + Did not scroll + Scrolled forward using touchpad + Scrolled back using touchpad + + Scrolled forward using touch screen + + + Scrolled back using touch screen + + + Reloaded using touchpad pull-to-refresh + + + Reloaded using touch screen pull-to-refresh + + + + + + The words clamshell and tablet here refer to the mode at the end of the drag + (as you can switch between those modes while dragging). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DeviceSettingsService was null, owner key was not loaded. + + + Managed device successfully loaded the public owner key. + + + Managed device failed to load the public owner key. + + + Consumer owner user successfully loaded both public and private keys. + + + Consumer owner received both public and private keys, but at least one of + them wasn't actually loaded. + + + ChromeOS decided to establish consumer ownership when there was no existing + public key. + + + ChromeOS decided to establish consumer ownership when there was an existing + public key. + + + ChromeOS decided to re-generate the lost owner key based on the data from + device policies after the public key was found (the private part is what was + lost). + + + ChromeOS decided to re-generate the lost owner key based on the data from + device policies and the public key was also not found. (Strictly speaking + not a failure, but still an unusual situation). + + + A user was categorized as not an owner based on the data from device + policies, the public key was successfully loaded. + + + A user was categorized as not an owner based on the data from device + policies, the public key failed to load. + + + ChromeOS decided to re-generate the lost owner key based on the data from + local state and the public key was not present. + + + ChromeOS decided to re-generate the lost owner key based on the data from + local state after the public key was found (in such a case device policies + should be used, relying on local state is unexpected). + + + A user was categorized as not an owner based on the data from local state, + the public key was successfully loaded. + + + A user was categorized as not an owner based on the data from local state, + the public key failed to load. + + + ChromeOS assumed that a user is not an owner based on the lack of data, the + public key was successfully loaded. + + + ChromeOS assumed that a user is not an owner based on the lack of data, the + public key failed to load. + + + New owner key was generated on the first attempt. + + + New owner key was generated after 1+ failures. + + + Failed to generate new owner key, at least the old public key was returned. + + + Failed to generate new owner key, the old public key also failed to load (or + was not present). + + + Successfully started signing policies. + + + Failed to start signing policies. + + + Successfully signed policies. + + Failed to sign policies. + + Successfully stored policies. + + Failed to store policies. + + + + + + + + + + + + + + + + + + + + + Deprecated 4/27/2016. No longer tracked. + + + Result for PAC script experiment as defined in + net/proxy_resolution/proxy_resolver_v8_tracing.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page lifetime has not yet ended (page is still active) + + Page was reloaded + + Page was navigated away from, via a back or forward navigation + + + Page was redirected via Javascript or the meta refresh tag + + + Page load was replaced by a new navigation + + Page load was stopped + + Page load ended due to closing the tab or browser + + + Provisional load for this page load failed before comitting + + + Render process hosting the page terminated unexpectedly + + + Unknown reason; page load may have finished without comitting + + + Page became hidden, but is still active. + + + The metrics were flushed because the app entered the background. + + + + + + Indicates that the page flip was committed successfully. + + + Indicates that the page flip failed because we could not assign planes. + + + Indicates that we assigned planes but the DRM commit failed. + + + + + + + + + + + + + The entire Decision for Images is missing. + + + No image was available for the requested Page URL. + + + The response was malformed in some unexpected way. + + + + + + + + + + + + + + + + + + Snapshot was not attempted because the page load failed and would result in + a stale snapshot. + + + + + + + + Deprecated in favor of {Committed|Provisional|InternalError}LoadEvent + + + + + + + + + + + + Deprecated 5/2019 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Status of PageLoadTimings received from the render process + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated April 2018 + + + + + + + + + + + Deprecated April 2018 + + + The version of PageSpeed. Values up to 1.6.29.x are in use as of 2013-10-01 + while later values may adjust 'a' and/or 'b' arbitrarily. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 10/2020 + + + + + + + + + + + + + + + + Action resulting from parent access code dialog + + + + + + + + Context in which parent access code was used + + + + + + + + + + Result of the parent access code validation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 9/2013. Experiment to measure control characters in cookies + is finished. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Success - favicon found in local cache or fetched from server. + + + Received a server error fetching the favicon. + + + The icon service was unavailable. + + + There was nothing in the cache, but we opted out of retrieving from server. + + + Request sent out and a connection error occurred (no valid HTTP response + received). + + + Success fetching the favicon from the cache without reaching out to the + server. + + + Success fetching the favicon from server. + + + Failed to write the favicon to cache, likely from attempting to add a + duplicate. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Whether user has enrolled in password auto fill from Chrome on their device. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 2020-04. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The loading dialog was requested but the loading finished before it got + shown. + + + The loading dialog was shown, loading finished and dialog was automatically + dismissed. + + + The loading dialog was shown and cancelled by user before the loading + finished. + + + The loading dialog was shown and timed out before the loading finished. + + + + + + Triggers that will cause Chrome to offer to move a password from the profile + store to the account store. + + + The user successfully logged in with a password from the profile store. + + + The user explicitly asked to move a password listed in Settings. + + + The user explicitly asked to move multiple passwords at once in Settings. + + + After saving a password locally, the user opted in to saving this and future + passwords in the account. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of Chrome 32. See PasswordManagerActionsTakenWithPsl + + + The value is a combination of three different options - what did the + password manager do, what did the user do, and was the form submitted (and + submitted successfully or not). The meaning of each value can be determined + from the values in chrome/browser/password_manager/password_form_manager.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 12/11/2019. + + + The value is a combination of three different options - what did the + password manager do, what did the user do, and was the form submitted (and + submitted successfully or not). The meaning of each value can be determined + from the values in chrome/browser/password_manager/password_form_manager.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 3/18/2014. See PasswordManagerActionsTakenV3. + + + The value is a combination of three different options - what did the + password manager do, what did the user do, and was the form submitted (and + submitted successfully or not). The meaning of each value can be determined + from the values in chrome/browser/password_manager/password_form_manager.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The bubble isn't shown anymore. Become obsolete in Feb. 2015. + + + + + + + + + No longer recorded as of June 2019. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + For example, it might be because of 3rd party password managers. + + + + + + + + + + + + + + + + The password element to be filled has not been found. + + + Filling only happens in iframes if all parent frames PSL-match the security + origin of the iframe containing the password field. + + + Passwords are not filled into fields that are not editable. + + + The username field contains a string that does not match the username of any + available credential. This typically indicates placeholder values. + + + No credential was filled due to mismatches with the username. This can + happen in a number of cases: In case the username field is empty and + readonly. In case of a username-first-flow where a user's credentials do + contain a username but the form contains only a password field and no + username field. In case of change password forms that contain no username + field. In case the user name is given on a page but only PSL matched + credentials exist for this username. There may be further cases. + + + Renderer was instructed to wait until user has manually picked a credential. + This happens for example if the session is an incognito session, the + credendial's URL matches the mainframe only via the PSL, the site is on + HTTP, or the form has no current password field. + PasswordManager.FirstWaitForUsernameReason records the root causes. + + + No fillable elements were found, only possible for the old form parser. + + + + + + + User is browsing in incognito mode. + + + A credential exists for a PSL matched site but not for the current security + origin. + + + Form is suspected to be a password change form. (Only recorded for old form + parser) + + + User is on a site with an insecure main frame origin. + + + User is browsing with the Touch To Fill feature enabled. + + + User is browsing with the Fill On Select feature enabled. + + + Re-authenticaion for filling passwords is required. + + + Password field is already filled in and it doesn't look like a placeholder. + + + A credential exists for an affiliated matched site but not for the current + security origin. + + + The form acccepts WebAuthn credentials from an active WebAuthn request. + + + User needs to reauthenticate using biometric. + + + The form is in a cross origin iframe. + + + + + + This enum records the type of a given HTTP credential. Depending on its + username and the password, an HTTP credential can have no matching, an + equivalent or a conflicting HTTPS credentials. Also the corresponding + website can be served with or without HSTS enabled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A credential exists for a PSL matched site but not for the current security + origin. + + + A credential exists for an affiliated android app but not for the current + security origin. + + + A credential exists for an affiliated site but not for the current security + origin. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 09/2021. + + + + + + + + + + + The pair of initial values and the pair of final values for the legacy + preference for controlling the Chrome Password Manager and new preference + for controlling Smart Lock on Android. In the values label N means new pref + value, L meand legacy pref value. + + + + + + + + + + + + + + + + + + + + + + The pair of initial values for the legacy preference for controlling the + Chrome Password Manager and new preference for controlling Smart Lock on + Android. + + + + + + + + + + + + + + + + + The value indicates whether an entry returned by password autofill contains + a value that was found by matching against the public suffix list. + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 03/2019. + + + The value is a mixed-base encoding of the combination of four attributes: + whether there were suppressed stored credentials (and the kind if there + were); whether the form got ultimately submitted; what action the password + manager performed; and what action the user performed; in this order. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The value is a combination of the current sync state and if the user has + their sync password saved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The origin is an IP address, not HTTP/HTTPS, or not a valid URL. + + + Server responded with an empty document or an error code. + + Server timed out. + + Server responded with a document but it could not be parsed. + + No URL loader configured. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed as of 2021-07-30. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of June 2019. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Track whether the permission has been automatically revoked in the past at + least once. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Breaks down reasons for permission requests being categorized as ignored. + Reasons captured are 0. window containing the tab with the pending + permission request being closed 1. Tab containing the pending permission + request being closed 2. Navigation 3. Other: catches all other cases. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M82 as the experiment has been stopped. + + + + + + + + + + Removed in M92. + + + + + + + + + + + + Removed in M92. + + + + + + + + + + Removed in M92. + + + + + + + + + Removed in M92. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Obsolete as of November 2017. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copy to either a BGRA8 or FP16 texture using the video processor. + + + Copy to another NV12 texture that can be used in ANGLE. + + + Bind the resulting GLImage to the NV12 texture. If the texture's used in a + an overlay than use it directly, otherwise copy it to another NV12 texture + when necessary. This enum is deprecated. See crbug.com/1401462. + + + Bind the NV12 decoder texture directly to the texture used in ANGLE. + + + + + + Piet Error Code as defined in + com.google.search.now.ui.piet.ErrorsProto.ErrorCode, which located in + /third_party/feed_library/src/main/proto/search/now/ui/piet/errors.proto. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Personally identifiable information (PII) types declared in + components/feedback/redaction_tool/pii_types.h + + + + + + + + + + + + + + + + + + + + + The event generated when backfilling the user preferences for PIN auto + submit. + + + + + + + + + + + + + + + + + Actions which happen on the screen. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The return status as a result of a call to connect to a cellular device at + the shill layer. + + + + + + + + + + + + + + + + Errors from base::File::Error + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Platform data cleared for new profile. + + + Empty platform data cleared for new profile. + + + Failed to clear data for new profile. + + Failed to open data store. + Failed to read from data store. + Data could not be parsed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 10/2019. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M91 since the data is not monitored. + + + + + + + + + Removed in M91 since the data is not monitored. + + + + + + + + + + + + + + + + + + Popular errno values. See the descriptions on "*/*/*" labels for + the applicable OS, usually Linux/Mac/Windows. See + http://www.ioplex.com/~miallen/errcmp.html and + http://www.ioplex.com/~miallen/errcmpp.html for more info. + + No error + Operation not permitted + No such file or directory + No such process + Interrupted function call + Input/output error + No such device or address + Arg list too long + Exec format error + Bad file descriptor + No child processes + + Try again on Linux. Resource deadlock avoided on Mac. Resource temporarily + unavailable on Windows. + + Cannot allocate memory + Permission denied + Bad address + Not a block device + Resource busy + File exists + Improper link + Operation not supported by device + Not a directory + Is a directory + Invalid argument + Too many open files in system + Too many open files + Inappropriate ioctl for device + Text file busy + File too large + Device out of space + Illegal seek + Read-only file system + Too many links + Broken pipe + Numerical argument out of domain + Numerical result out of range + + Resource deadlock would occur on Linux. Resource temporarily unavailable on + Mac. Unknown error on Windows. + + + File name too long on Linux. Operation now in progress on Mac. Resource + deadlock avoided on Windows. + + + Level 2 not synchronized on Linux. Operation not supported on Mac. Resource + deadlock avoided on Windows. + + Timer expired on Linux + + Out of streams resources on Linux. File name too long on Mac. + + + Srmount error on Linux. Disk quota exceeded on Mac. + + Bad message + + Protocol not supported on Linux. Illegal byte sequence on Mac. + + + Operation not supported on transport endpoint on Linux. + + Stale file handle + Structure needs cleaning + Quota exceeeded on Linux. + No medium found + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M95. + + The operation succeeded + + The operation failed and the file operated on is not found. + + + The operation failed and the path to the file operated on is not found. + + + The operation failed and the process does not have permission to read the + attributes of the path. + + + The operation failed as did a subsequent call to GetFileAttributes. + + + The operation failed leaving behind an empty directory. + + + The operation failed leaving behind a non-empty directory. + + + The operation failed leaving behind something other than a directory + (perhaps a simple file). + + + + + + Deprecated 06/2019. + + + + + + + + Unspecified power type, shouldn't be used. + + Mock power type, used for testing. + + Note power type, used to take notes on webpages. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 11/2014 in issue 427057. + + + + + + + + + + + Connected charging ports on Chrome OS, as reported by the kernel. + + + + + + + + + + + The type of dimming/undimming events in powerd, as reported by the kernel. + + + + + + + + + + + The type of lock events in powerd, as reported by the kernel. + + + + + + + + Dim occurred naturally following a screen dim imminent. + + + Dim occurred following model instruction. + + + Dim deferred following model instruction. + + + + + User reactivated after dim. + System was suspended after dim. + + + + Previous event was logged successfully. + Previous event was not logged successfully. + + Previous event was not logged successfully because model was enabled but + there was no prediction for the previous event. + + + Previous event was not logged successfully because model was disabled. + + + Previous event was not logged successfully because of multiple previous + events. + + + Previous event was not logged successfully because previous idle event had + no event start time. + + + + + + Smart dim component is loaded successfully. + + + Failed to read component files to strings. + + + Failed to load preprocessor from proto. + + + Failed to load meta data from JSON. + + Failed to load tflite model. + + Failed to create graph executor. + + + + + + Use default component version, or experimental component version (specified + in Finch config) that is equal to the default. + + + Use experimental component version specified in Finch config. + + + Expected version is empty. This should never happen. + + + + + + Use built-in worker (initialized from built-in model and preprocessor config + files). + + + Use downloaded worker (initialized from downloaded smart dim component). + + + + + + Inactivity score was calculated successfully. + + + The ExamplePreprocessorConfig could not be loaded or parsed. + + + The ExamplePreprocessor returned an error other than, or in addition to, the + kNoFeatureIndexFound error. + + + Other error unrelated to preprocessor. This signals a bug in the feature + generation process. + + + The ExampleProprocessor returned a feature vector with an incorrect size. + + + The ML Service connection had not been initialized at the time it was + needed. + + + + + + Threshold parameter was defined and parsed correctly. + + + Threshold parameter was undefined. + + + Threshold parameter was not parsed correctly from string to double. + + + Threshold parameter was not supplied or same as the default value. In either + case, the default value was used. + + + + + Web page info comes from ash chrome. + Web page info comes from lacros chrome. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The type of power supply connected to a Chrome OS system, as reported by the + kernel. + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated Q2 2019 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The interceptor used a prefetch. + + + The interceptor used a prefetch after successfully probing the origin. + + + The interceptor was not able to use an available prefetch because the origin + probe failed. + + + The url was eligible to be prefetched, but the network request was never + made. + + + The url was not eligible to be prefetched because it is a Google-owned + domain. + + + The url was not eligible to be prefetched because the user had cookies for + that origin. + + + The url was not eligible to be prefetched because there was a registered + service worker for that origin. + + + The url was not eligible to be prefetched because its scheme was not + https://. + + + The url was not eligible to be prefetched because its host was an IP + address. (Deprecated M100) + + + The url was not eligible to be prefetched because it uses a non-default + storage partition. + + + The network request was cancelled before it finished. This happens when + there is a new navigation. + + + The prefetch failed because of a net error. + + + The prefetch failed with a non-2XX HTTP response code. + + + The prefetch's Content-Type header was not html. + + + The prefetch finished successfully but was never used. + + + The navigation off of the Google SRP was to a url that was not on the SRP. + + + The url was prefetched and No State Prerendered and committed without a + probe to the origin. + + + The url was prefetched and No State Prerendered and committed with a + successful probe to the origin. + + + The url was prefetched and No State Prerendered but the origin probe failed + and the prefetch was not used. + + + The url was prefetched but was not No State Prerendered despite attempting + to do so and committed without a probe to the origin. + + + The url was prefetched but was not No State Prerendered despite attempting + to do so and committed with a successful probe to the origin. + + + The url was prefetched but was not No State Prerendered despite attempting + to do so, and the origin probe failed and the prefetch was not used. + + + The url was prefetched and eligible for NoStatePrerender but wasn't started + and committed without a probe to the origin. + + + The url was prefetched and eligible for NoStatePrerender but wasn't started + and committed with a successful probe to the origin. + + + The url was prefetched and eligible for NoStatePrerender but wasn't started + and the origin probe failed and the prefetch was not used. + + + + + + + + + + + + The url was prefetched but not used, because cookies were added to the URL + at some point after the initial eligibility check. + + + The url was prefetched and was redirected; however, redirects were disabled, + so the prefetch failed. (Deprecated M113) + + + The url was not eligible to be prefetched because its host was not unique + (e.g., a non publicly routable IP address or a hostname which is not + registry-controlled) but the prefetch was to be proxied. + + + The url was not eligible to be prefected because the user requested that the + browser use less data. + + + The URL is not eligible to be prefetched, because in the default network + context it is configured to use a proxy server. + + + The URL is not eligible to be prefetched because in the browser is in + Incognito or Guest mode. + + + The URL is eligible but heldback because it belongs to the Holdback group. + + + The URL is eligible and not in the Holdback group (allowed to prefetch). + + + The URL is prefetched successfully and the repsonse is used for the next + navigation. + + + The prefetch was redirected and failed, because the redirect was invalid. + + + The prefetch was redirect and failed, because the redirect URL was not + eligible to be prefetched. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Reused fresh cache: outside time window and already reused + + Reused fresh cache: outside time window + Reused fresh cache: already reused + + Reused: first reuse within time window, cache entry is fresh + + + Not reused: outside time window and already reused, cache always validates + due to headers + + + Not reused: outside time window and cache always validates due to headers + + + Not reused: already reused and cache always validates due to headers + + + Reused: cache headers are set to always validate, overriding since it's the + first reuse within time window + + + Not reused: outside time window and already reused, cache entry expired + + + Not reused: outside time window and cache entry expired + + + Not reused: already reused and cache entry expired + + + Reused: cache age expired, overriding since it's the first reuse within time + window + + + Reused while revalidating: outside time window and already reused + + + Reused while revalidating: outside time window + + Reused while revalidating: already reused + + Reused, skipped revalidation: first reuse within time window + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1) the page has a username input element whose value was prefilled by the + website itself. 2) the prefilled value was found in a list of known + placeholder values (e.g. "username or email"). 3) the user had a + credential stored and the field content was overridden with the username of + this credential due to 2). + + + 1) the page has a username input element whose value was prefilled by the + website itself. 2) the prefilled value was NOT found in a list of known + placeholder values (e.g. "username or email"). 3) the user had a + credential stored and the field content was NOT overridden with the username + of this credential due to 2). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enumerates names of Mojo interfaces. Work as supplementary information for + PrerenderCancelledInterface.kUnknown. See comments in + InterfaceNameHasher(content/browser/prerender/prerender_metrics.cc) for how + to update the enums. + + + + + + + + + + + + + Deprecated March 13 2015. + + + + + + + + + + Deprecated March 13 2015. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated Dec 12 2014. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + deprecated May 10 2012 + + + + + + + + + + Deprecated April 2015 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated Nov 16 2012 + + + + + + + + + + + + + + + + + + + + + + + deprecated Nov 16 2012 + + + + + + + + + + + + + + + + + + + + + + + + + + + + deprecated Nov 16 2012 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated April 2015 + + + + + + + + + + + + + + + + + Defines the result of Add Passes dialog presentation. The presentation can + be successful or unsuccessful if another view controller is currently + presented. Unsuccessful presentation is a bug and if the number of + unsuccessful presentations is high, it means that Chrome has to queue the + dialogs to present those dialogs for every downloaded pkpass (PassKit file). + Currently Chrome simply ignores the download if the dialog is already + presented. + + + + The dialog cannot be presented, because another PKAddPassesViewController is + already presented. + + + The dialog cannot be presented, because another view controller is already + presented. Does not include items already counted in the more specific + bucket (Another Add Passes View Controller Is Presented). + + + + + + + + + + + + + + + + + + + + + + + + + + The AR model was sucessesfully presented. + + + The AR model cannot be presented, because the file is invalid. + + + The AR model cannot be presented, because another QLPreviewController is + already presented. + + + The AR model cannot be presented, because another view controller is already + presented. Does not include items already counted in the more specific + bucket (Another QLPreviewController Is Presented). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Replaced by OptimizationGuideHintCacheLevelDBStoreLoadMetadataResult in + 07/19. + + + + + + + + + + + + + Replaced by OptimizationGuideHintCacheLevelDBStoreStatus in 07/19. + + + + + + + + + + Removed in M76. + + + + + + + + + + + + Replaced by PreviewsStalePreviewTimestamp. + + + + + + + + + + + + + + + + + Replaced by OptimizationGuideOptimizationFilterStatus in 07/2019. + + + Found configuration data for a server blacklist. + + + Successfully created a server blacklist. + + + Failed to create a server blacklist per bad configuration. + + + Failed to create a server blacklist because it would use too much RAM. + + + Failed to create a server blacklist because it has more than one + configuration. + + + + + + Merged into OptimizationGuideProcessHintsResult as of 07/2019. + + + Previews processed but no Previews hints found. + + + Previews processed and Previews hints found. + + + Failed to finish processing same version previously so skipping to avoid + potential crash loop. + + + Skipped processing the previews hints, likely because the hint cache already + contains the same version. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2020-04. + + + + + + + + + + All other query failures. + Printer returned a valid printer status. + + Device could not connect to the printer. + + + Unable to resolve IP address from printer hostname. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Data no longer needed 2021-02. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 07/2019. + + + + + + + + + + Deprecated 2022-06. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated since June 2021 and replaced with PsmResult. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The hash of a lower case process name generated using metrics::HashName. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 3/2013. No longer generated. + + + The value for type comes from the ProcessType enum in + content/public/common/process_type.h. + + + + + + + + + + + + + + + + + + + The value for type comes from the ProcessType enum in + content/public/common/process_type.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The different possible states of product image availability for the product + info API in the shopping service. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + User arrived at the Account management screen. + + + User arrived at the Account management screen, and clicked Add account. + + + User arrived at the Account management screen, and clicked Go incognito. + + + User arrived at the Account management screen, and clicked on primary. + + + User arrived at the Account management screen, and clicked on secondary. + + + User arrived at the Account management screen, toggled Chrome signout. + + + User toggled Chrome signout, and clicked Signout. + + + User toggled Chrome signout, and clicked Cancel. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated. Code was deleted in M87. + + + + + + + + + + + + + + + + + + + Removed M90. + + + + + + + + + + + The user confirmed deletion of a profile from the settings page. This metric + is recorded even if profile deletion is cancelled after the confirmation. + + + The user confirmed deletion of a profile from the User Manager. This metric + is recorded even if profile deletion is cancelled after the confirmation. + + + The user clicked 'Remove this person' in the user manager and was shown the + profile deletion warning. No profile deletion action has been started yet. + + + The user clicked 'Remove...' or the 'X' in the settings page and was shown + the profile deletion warning. No profile deletion action has been started + yet. + + + The user confirmed the deletion of a profile in either the settings page or + the User Manager, but clicked 'Stay' in an OnBeforeUnload dialog. Since the + browsing window of the profile was still open, profile deletion was + cancelled. + + + Deprecated. The user signed out on the web, and Chrome signout was + prohibited. + + + The primary account is a managed account and is no longer allowed by policy. + + + The primary account was removed from the device on Lacros. + + + The profile is not signed in, which is unsupported on Lacros. + + + + + + The deletion happened from the profile picker when no browser window is + shown (which is a good proxy for happening on startup). It is the last + remaining profile. + + + The deletion happened from the profile picker when no browser window is + shown (which is a good proxy for happening on startup). It is not the last + remaining profile. + + + The deletion happened with at least one browser window open. It is the last + remaining profile. + + + The deletion happened with at least one browser window open. It is not the + last remaining profile. + + + + + + Deprecated. Code was deleted in M81. + + + User opened the user menu, and clicked lock. + + + User opened the user menu, and removed an account. + + + User opened the user menu, and started adding an account. + + + User opened the user menu, and changed the profile name. + + + User opened the user menu, and started selecting a new profile image. + + + User opened the user menu, and opened the User Manager. + + + User opened the user menu, and selected Go Incognito. + + + + + + + + + + + + + + + + + + + + + + + + + + + Reported when image download succeeds and the image is newer than what we + already have so we update it. + + + Reported anytime we download profile image successfully. + + + Download failed because of network errors. + + + We didn't download the image because it's the default one. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + User views the 'Not You?' bubble. + + + User selects back from within the 'Not You?' bubble. + + + User adds a person from within the 'Not You?' bubble. + + + User chooses to disconnect (sign out) from within the 'Not You?' bubble. + + + + + + User viewed the signin bubble after successfully using the inline signin. + + + User selected ok to dismiss the signin bubble. + + + User opened the settings from the signin bubble. + + + + + + User views the upgrade bubble. + + User dismissed the upgrade bubble. + + User selects 'What's New' in the upgrade bubble. + + + User selects 'Not You?' in the upgrade bubble. + + + + + + + + + + + + + + + + + Deprecated 03/2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This includes the case that the account is already syncing in another + profile. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed May 2022. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 8/2013. No longer generated. + + + Codes for errors Protector detects about settings it protects. See + chrome/browser/protector/histograms.h for the corresponding enum. + + + + + + + + + + + + + + + + + + + Track the failure and success states of proto database migration. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This should represent the provisional load being stopped by the user, but + should not occur pre-PlzNavigate. + + + The provisional load failed with net::ERR_ABORTED. Note that ERR_ABORTED + includes downloads, 204s, and other non user-initiated abort conditions + (crbug.com/542369) + + + The provisional load failed with an error other than net::ERR_ABORTED + + + + + + + Reason why a provisional save failed. Note that the labeling is off for data + recorded before Nov 4, 2014 due to a re-assignment of enum values to + different meanings. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The type of action performed on the overscroll UI. + The user selected the new tab action. + The user selected the refresh action. + The user selected the close tab action. + + The user canceled the action by scrolling back up. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The path taken by the user to reach install point for PWAs. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed March 2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from code July 2018. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hardcoded in rar2fs + Hardcoded in rar2fs + ERAR_BAD_DATA from libunrar + ERAR_BAD_ARCHIVE from libunrar + ERAR_UNKNOWN_FORMAT from libunrar + ERAR_EOPEN from libunrar + ERAR_EREAD from libunrar + + ERAR_MISSING_PASSWORD from libunrar + + ERAR_BAD_PASSWORD from libunrar + + MINIJAIL_ERR_SIG_BASE (128) + SIGILL (4) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGABRT (6) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGKILL (9) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGSEGV (11) from libminijail + + + MINIJAIL_ERR_SIG_BASE (128) + SIGTERM (15) from libminijail + + + MINIJAIL_ERR_MOUNT from libminijail + + + MINIJAIL_ERR_JAIL from libminijail + + + + + + Not used after M77. No longer tuning this code. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The result of the cryptohome recovery opt-in. For managed users the policy + value is used, for unmanaged users the user selection is used. + + + + + + + + + + + Replaced by RecurrenceRankerInitializationStatus + + + + + + + + + + + + + + + + + + + Replaced by RecurrenceRankerSerializationStatus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 07/2019. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M90. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dprecated as of 2021/01. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Superseded by RendererSchedulerFrameType2 as of 11/2017. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 4/2019. + + + + + + + + Deprecated 3/2017. + + + + + + + + + + + + + + + + + + + + + + + Open Link in Incognito Window is being counted as shown even when the menu + item is displayed but not enabled/clickable. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + When Open Link as Profile is a submenu (more than one extra profile), it is + not counted as shown if the submenu is not open. When the submenu is opened, + it is counted as shown one time per profile displayed in the submenu. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Moved to NetReportingHeaderEndpointGroupOutcome. + + + + + + + + + + + + + + Moved to NetReportingHeaderEndpointOutcome. + + + + + + + + + + + + + + + + + + + + + + + + + Moved to NetReportingHeaderOutcome. + + + + + + + + + + + + Moved to NetReportingReportOutcome. + + + + + + + + + + + + + + + + A report was created and uploaded + + A report was not uploaded because the CSD Whitelist killswitch was present + + + A report was not uploaded because it could not be serialized + + + A report upload was cancelled due to service shutdown + + A report upload failed + + The response from a report upload was invalid + + + A report was not uploaded because no binary download was found to report + + + + + + + The scheduler's periodic timer expired + + An update was detected + A new version is running + + A new extension request is added + + + A new extension request is added and uploaded with ERP. + + User upload report manually + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Request came from a browser process and so the + |request_initiator_origin_lock| doesn't apply. + + + |request_initiator_origin_lock| is missing - see https://crbug.com/1098938. + + |request_initiator| is missing. + + |request.request_initiator| is compatible with + |factory_params_.request_initiator_origin_lock| - either + |request.request_initiator| is opaque or it is equal to + |request_initiator_origin_lock|. + + + |request.request_initiator| is non-opaque/unique and differs from + |factory_params_.request_initiator_origin_lock|. + + + Scheme excluded from request_initiator_origin_lock checks. Since ~M80 this + value can only be recorded during tests. + + + Requests from a renderer process that embeds a plugin (e.g. Flash) that + needs to disable CORB and request_initiator_origin_lock enforcement. + + Obsolete - this enum value was removed in Nov 2020 (M89). + + + Requests from a renderer process that embeds a plugin (e.g. PDF) that needs + to poke small, targeted holes in request_initiator_origin_lock enforcement. + + Obsolete - this enum value was removed in Mar 2022 (M101). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Running in a IPv4-only configuration. No waste. + + + Cache contained an UNSPEC result for this IPv4 lookup. Waste. + + + Cache contained an IPv4 result for this UNSPEC lookup. Waste. + + + Job pool contained an UNSPEC job for this IPv4 lookup. Waste. + + + Job pool contained an IPv4 job for this UNSPEC lookup. Waste. + + + A new job was needed for this IPv4 lookup. No waste. + + + A new job was needed for this UNSPEC lookup. No waste. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 10/2017. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M88. + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in 2020-08 (M86). + + + An unexpected error occurred during processing. + + + Roaming User Data dir does not exist. + + Roaming User Data dir was deleted. + + Roaming User Data dir could not be deleted. + + + Roaming User Data dir is not within the AppData dir. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 9/2016. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The relevant code was deleted in December 2019. + + + + + + + + + + + + Removed from the code May 2021. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in June 2019. + + + + + + + + + + + Removed from code 2023/01, in crbug.com/1407233 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The SameSiteCookieContext of a request describes the relation between the + cookie request and the navigational environment. + + + + + + + + + + + + + + + + Used to track the type of same-site context downgrade as well as the + secureness of the origin that caused it. + + "No breaking downgrade" is a catch-all bucket for any cases which + don't fit into the other buckets. + + + + + + + + + + + + + + + + + + The possible values of SameSite a cookie's SameSite attribute. + + + + + + + + + + Track how often we try to guide users through the in-session flow to change + their SAML password, and how often they complete the flow. + + + + + + + + + + + + + + + + + + + + Track how often we call password sync token API and records its result. + + + + + + + + + + + + + + Track reason for unwind failures in sampling profiler. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Bloom filter support deleted in October 2012. + + + + + + + + + + + + + + Bloom filter support deleted in October 2012. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Track information for various error cases in the safe-browsing store. + + Store corruption detected + + SQLite store orruption detected (obsolete) + + SQLite store found (obsolete) + Store format unknown at open + + Deleted SQLite-format store (obsolete) + + + Deletion of SQLite-format store failed (obsolete) + + + Deleted pre-release SQLite store (obsolete) + + + Deletion of pre-release SQLite store failed (obsolete) + + + Failed explicit checksum check on failed update from server + + + Failed checksum check while merging new data into store + + + Failed header checksum check when opening store + + + Store with valid magic number has deprecated version number + + + + + + + + + + + + + + + + + + Deprecated 9/2014. + + + + + + + + + + + + + + + + + + + + + Deprecated 9/2014. + + + + + + + + + + + + + + Deprecated 9/2012. No longer generated. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Data no longer needed 2021-02. + + + + + + + + + + + + + + Shows which function caused a failure while scanning. These functions + correspond to function found in chromos's lorgnette.c + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated August 2018 + + + + + + + + + + + + + + + + + + Deprecated in M97. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Succeeded on first try + Succeeded after retrying + Failed after exhausting retries + + + + + Deprecated after 2019-04. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fate of an Sdch dictionary, on load and eviction. See + net/sdch/sdch_owner.cc. + + + + + + + + + + + + + + + + Errors that can occur when reading in or writing out persisted dictionary + information. See enum in net/sdch/sdch_owner.h for more information. + + + + + + + + + + SDCH problem codes, listed in net/base/sdch_problem_code_list.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Recorded in separate histogram; see Sdch3.DictionaryFate. + + + Recorded in separate histogram; see Sdch3.DictionaryFate. + + + DICTIONARY_PREVIOUSLY_SCHEDULED_TO_DOWNLOAD used instead + + + DICTIONARY_PREVIOUSLY_SCHEDULED_TO_DOWNLOAD used instead + + + Used to indicate a broken false return from URLRequest::Read(); no longer + checking that return value. + + + + + + + + + + + + Almost the same as META_REFRESH_UNSUPPORTED + + + Almost the same as CACHED_META_REFRESH_UNSUPPORTED + + + PASSING_THROUGH_NON_SDCH plus DISCARD_TENTATIVE_SDCH + + + + + + + + + + Now tracked by ResponseCorruptionDetection.* histograms. + + + + + + + + + + + No longer centrally tracked, since SDCH is enabled or disabled per + URLRequestContext. + + + SDCH support is now always enabled for secure schemes. + + + + + + + SDCH decode corruption detection cases, listed in net/filter/sdch_filter.cc. + See also comments in SdchFilter::ReadFilteredData in the same file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 8/2013. No longer generated. + + + Indices of most popular prepopulated search engines as defined in + components/search_engines/search_engine_type.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Events within the TemplateURL system we log, i.e. edge cases. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in M91 after v2 EduCoexistence. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Expired Oct 2020 + + + + + + + + + + + + + + + Removed from code March 2019. + + + + + + + + + + + + Removed 05/2020. + + + + + + + + + + + Removed on 06/2020 and brought back 09/2022. + + + + + + + + Removed 05/2020. + + + + + + + + + + + + + + + + + + + Removed 05/2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No longer recorded since NetS13nSW shipped on Dec 2018. + + + The result of ServiceWorkerContextHandler handling a request for a service + worker script. From ServiceWorkerContextHandler::CreateJobStatus. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated because the migrator was removed as of 12/2015. + + + + + + + + + + Deprecated because the migrator was removed as of 12/2015. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2021-08-03. + + + + + + + + Not used since November 2018 + + + Describes whether a main resource request went to service worker or network + or errored. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed on June 2019 + + + The type of preparation that was required for the browser to find and + possibly start up a service worker to dispatch a fetch event to. From + ServiceWorkerMetrics::WorkerPreparationType. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No longer recorded since NetS13nSW shipped on Dec 2018. + + + + + + + + + + + + + + + + + + + + + + + + Removed in November 2021. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated Oct 2015. No longer generated in the code. + + + + + + + + + + No longer recorded since NetS13nSW shipped on Dec 2018. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 8/2013. No longer generated. + + + + + + + + + Succesfully opened the database. + + Failed to open the existing db, deleted it, and created a new empty db. + + + Failed to open the database and also failed to delete and start over. + + + Reopen attempt failed with (not found) after successful database delete. + + + Reopen attempt failed with (not supported) after successful database delete. + + + Reopen attempt failed with (corruption) after successful database delete. + + + Reopen attempt failed with (invalid argument) after successful database + delete. + + + Reopen attempt failed with (I/O error) after successful database delete. + + + + + + + + + + + + + + + + + + + Deprecated 2016/03. Replaced by DefaultWebClientState. + + Chrome was set as the default web client. + + Chrome was already the default web client. This counts as a successful + attempt. + + + Chrome was not set as the default web client. + + + The attempt was abandoned because the observer was destroyed. + + + Failed to launch the process to set Chrome as the default web client + asynchronously. + + + Another worker is already in progress to make Chrome the default web client. + + + The user initiated another attempt while the asynchronous operation was + already in progress. + + + No errors were encountered yet Chrome is still not the default web client. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A change to the protocol registry key was detected. + + + The timer fired before a change to the protocol registry key was detected. + + + + + + Deprecated as of M88, as the languages browser settings page has been + replaced with the languages OS settings page. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 03/2020 because the only associated histogram was deprecated due to + too much overlap with WebUI.Settings.PathVisited. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A collection of sections from chrome://settings. Used for metrics about + searching within the settings options. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Return status of the Windows installer. The values in this enum must be kept + in sync with the InstallStatus enum in + //chrome/installer/util/util_constants.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Whether or not SHA-1 was present in a certificate chain and, if it was, when + the leaf certificate expired. + + + + + + + + + + The GPU's Direct3D shader model version. + + + + + + + + + + Finding a fallback font failed. + No fallback font was required. + + Call to GetFallbackFont(...) was required to find the appropriate font. + + + Call to GetFallbackFonts(...) was required find the appropriate font. + + + + + Corresponds to SharedImageBacking implementations. + + + + + + + + + + + + + + + + + + + + + + + The shared memory region was successfully created. + + Failure because the size was zero. + + Failure because the size was too large. + + + Failure to initialize an ACL. + + + Failure to initialize the security descriptor. + + + Failure to set the security descriptor. + + + Failure to create the file mapping. + + + Failure to reduce the permissions on the file mapping. + + + The shared memory region already exists. + + + Failure to allocate disk space for the file. + + + Failure to fstat the file descriptor. + + + Writable and read-only inodes don't match. + + + Failure to get a temporary directory for shared memory. + + + + + + + + + Keep alive entered but reason for termination not given. + + + + + + Errors in `addModule()` visible to the document. + + + Errors in `addModule()` not visible to the document. + + + Errors in `run()` visible to the document. + + + Errors in `run()` not visible to the document. + + + Errors in `selectURL()` visible to the document. + + + Errors in `selectURL()` not visible to the document. + + + + + + Share option chosen to be shown in the menu. + + Share option shown in the menu because the toolbar is full. + + + No share option shown despite share being enabled. This is due to the + existence of custom buttons and menu items, which take precedence. + + + + + + + + + + + Shared from text selection menu. + + + Shared from share button shown when editing the URL in the omnibox. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 07 October 2021. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index of a third party app in the bottom row of the sharing hub on Android. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The alignment of the shelf area (see ash/launcher/launcher_view.cc). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The termination/suspend/dark resume action result types come from + SuspendActionResult in shill/metrics.h + + + + + + + + The different kinds of fallback data used by the ShoppingDataProvider. + + + + + + + + + + The different states a page can be in as a product description page. + + + + + + + + The different statuses of a shopping subscriptions request. + + + + + + + + + + + + Result of creating shortcuts for PWA. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Specifies the reason why the web-accessible resource check in + ShouldAllowOpenURL fails. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 08/2018 because the only associated histogram was deprecated. + + + The results of the new and the old algorithm for detecting whether to show a + password prompt for the user. + + + + + + + + + + Deprecated 08/2020. + + + + + + + + + + This enum describes the reason that a crashed subframe became visible. + + + The crashed subframe became visible because the user switched to a tab that + contains it. + + + The crashed subframe became visible because its viewport intersection became + non-empty. For example, this can happens when the subframe was scrolled into + view. + + + The crashed subframe became visible because its visibility was updated, for + example if the parent frame changed the iframe element's visibility through + CSS. + + + The crashed subframe became visible after (1) a tab that contains it became + visible, and then (2) its viewport intersection became non-empty, for + example if the subframe was scrolled into view. + + + The crashed subframe became visible after (1) a tab that contains it became + visible, and then (2) its visibility was updated, for example if the parent + frame changed the iframe element's visibility through CSS. + + + + + + + + + + + + + + + + + + + + Removed 2019-01. + + + Snapshot was not attempted because the page is still loading and would + result in a stale snapshot. + + + + + + + + + + + + + + + The reason that the Chrome OS power manager shut down or rebooted the + system. This corresponds to the ShutdownReason enum from + power_manager/common/power_constants.h in the platform2 repository. + + + + + + + + + + + + + Invalid value. + The last browser window was closed. + User clicked on the Exit menu item. + OS is logging off or shutting down. + + Exit without onbeforeunload or in-progress download prompts. + + + The process is cleanly exiting without any user actions. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The account reconcilor has finished running and is up-to-date. + + + The account reconcilor is running and gathering informations. + + + The account reconcilor has encountered an error and stopped. + + + The account reconcilor is scheduled for running soon. + + + The account reconcilor is inactive (uninitialized or disabled). + + + + + + + + + + + + + + + + + + + + Removed in M91 since the data is not monitored. + + + + + + + + + Removed 03/2020. + + + + + + + + + + + Signout including the Chrome primary account. + + + Signout not including the Chrome primary accounts. + + Enable Sync after signin. + + + + + + Failed with Gaia error. + + + + + + + + + + + + + + + + + + + + The signin flow was shown to the user. + The user pressed accept to sign in. + The user pressed the reject to sign in. + + The user pressed the X button to dismiss the signin promo. + + + The user completely ignored the signin promo. Either they navigated away, or + they used the page as is. + + + The user clicked on the learn more link in the signin promo. + + + The sync was started with default settings. + + + The sync was started with advanced settings. + + + The sync was started through auto-accept with default settings. + + + The sync was started through auto-accept with advanced settings. + + The sync was aborted with an undo button. + + + + + + + + + + + + + + + + Removed 2021-05. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2021-07. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2021-07. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in M92. + + + + + + + + + + Removed 2021-10 + + + + Not removed because the account list was stale. + + + Not removed because the account was not in the list of signed out accounts. + + + + + + Removed 2019-07 + + + + + + + + The preference or policy controlling if signin is valid has changed. + + + The valid username pattern for signing in to the Google service changed. + + + The preference or policy controlling if signin is valid changed during the + signin process. + + + User clicked to signout from the settings screen. + + + The signin process was aborted, but signin had succeeded, so signout. This + may be due to a server response, policy definition or user action. + + + The sync server caused the profile to be signed out. + + + The credentials are being transfered to a new profile, so the old one is + signed out. + + + Signed out because credentials are invalid and force-sign-in is enabled. + + + + Signout forced because account was removed from device. With M98, on iOS, + this value is split with "Signed out forced by iOS device + restore". + + + Signout forced when profile is loaded as browser sign-in is no longer + allowed. + + + Signout is forced. Used only for tests. + + + User cleared account cookies when there's no sync consent, which has caused + sign out. + + + Signout was forced because MobileIdentityConsistency feature is disabled + when there's a primary account without sync consent. + + + Signout was forced because account ID migration from email to Gaia ID was + forced. + + + Sign-out forced because the account was removed from the device after a + device restore. iOS only. + + + User clicked the 'Turn off sync' option within settings. Android only. + + + User Clicked Signout in the profile menu. + + + User retriggered signin from the Android web sign-in bottomsheet. + + + User clicked on sign-out from the notification dialog for User Policy. The + notification informs the user that from now on user policies may be + effective on their browser if they Sync with their managed account. The user + has the option to sign out to avoid user policies. + + + The email of the primary account on the device was renamed (from a non-gmail + to gmail address), triggering an automatic signout followed by signin. + Android only. + + + User clicked sign-out in the clear browsing data page. + + + The reconcilor cleared the signin primary account on a Gaia cookie update. + + + The reconcilor cleared the signin primary account during reconcilation. + + + SigninManager decides to clear the prrimary (includes web sign out). + + + User cleared account cookies when there's no sync consent, which has caused + sign out. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 09/2019. + + + + + + + + + + + + + + + + + + + + + The user is eligible for the promo. + + The profile has previously opted out of the promo. + + The profile is already signed in. + + The profile does not have a single, peristent GAIA cookie. + + + Yet to determine how many devices the user has. + + + An error was returned trying to determine the account's devices. + + + The call to get device activity was throttled, and never executed. + + The user has no devices. + + The user has no device that was recently active. + + + + + + The promo was initialized successfully. + + + The profile is opted out, so the promo didn't initialize. + + + Unable to read the variations configuration. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2018-06-05 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Available in code cache + Not available in cache + + Clear a cache entry. Typically used when there is a stale entry + + Update an existing entry + Create a new entry + + Error in handling the request because either opening backend failed or URL + should not be cached + + + Entries that are read before a write to that entry has finished when read + and write request interleave. + + + Entries that could not be written, usually because they're too big. + + + + + Available in code cache + Not available in cache + + Clear a cache entry. Typically used when there is a stale entry + + Update an existing entry + Create a new entry + + Error in handling the request because either opening backend failed or URL + should not be cached + + + Entries that are read before a write to that entry has finished when read + and write request interleave. + + + Entries that could not be written, usually because they're too big. + + + + + + + + + + + + + + + + + + + + + + + + + + + See Android.RequestDesktopSite.Changed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed June 2021. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Operation succeeded + Operation suceeded partially + Operation failed + + Operation failed because the snapshot directory could not be created + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated on 2019-05-29. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Used for force migration to DICE. Removed in M96. + + + + + + + + + + Refused via BrowserContentClient::ShouldUseSpareRenderProcessHost (typically + because of incompatible renderer flavour like NTP or extension - see + https://crbug.com/834324). + + + + Refused via SiteInstanceImpl::CanAssociateWithAlreadyInitializedProcessHost + (typically because of tab discarding or session restore which may desire to + have WebContents without an associated renderer process - see + https://crbug.com/840409). + + + + + + + + + + + + + + + Superseded by SpareWebContentsStatus2 as of 03/2019. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SPDY protocol version identifier, including major and minor protocol + numbers, and draft versions where appropriate. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Legacy error codes still returned by |ShFileOperation()| + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Error codes returned by SQLite - see sqlite3.h + Successful result + SQL error or missing database + + NOT USED. Internal logic error in SQLite + + Access permission denied + Callback routine requested an abort + The database file is locked + A table in the database is locked + A malloc() failed + + Attempt to write a readonly database + + + Operation terminated by sqlite3_interrupt() + + + Some kind of disk I/O error occurred + + + The database disk image is malformed + + + NOT USED. Table or record not found + + + Insertion failed because database is full + + Unable to open the database file + + NOT USED. Database lock protocol error + + Database is empty + The database schema changed + String or BLOB exceeds size limit + + Abort due to contraint violation + + Data type mismatch + Library used incorrectly + + Uses OS features not supported on host + + Authorization denied + Auxiliary database format error + + 2nd parameter to sqlite3_bind() out of range + + + File opened that is not a database file + + Notifications from sqlite3_log() + Warnings from sqlite3_log() + sqlite3_step() has another row ready + + sqlite3_step() has finished executing + + TBD + TBD + TBD + Error reading from file + TBD + TBD + TBD + TBD + TBD + TBD + TBD + TBD + TBD + Short read from file + + Database file is directory + + TBD + TBD + + Cannot rollback due to readonly file + + + Error writing to file (other than SQLITE_FULL) + + TBD + + Constraint failure due to foreign key violation + + + Readonly because database file was moved or unlinked while open + + Error syncing to disk + TBD + TBD + + Error syncing directory changes to disk + + + NOTNULL constraint violated + + Error truncating file + + Primary key not unique + + Error reading file metadata + + Constraint failed due to trigger raise + + Error unlocking file + + Unique constraint failed + + + Error getting read lock - should not be possible + + TBD + Error deleting file + Rowid not unique + + Deadlock due to other process access to SQLite files + + Error mapping shared memory + + Error getting file attributes (other than not found) + + + Error while querying lock status + + Error acquiring lock + Error closing file + Unused + Error mmapping file + + Error in stat while mmapping file + + Unused + TBD + TBD + TBD + TBD + TBD + TBD + + + + + Replaced 5/14/2013 by expanded Sqlite.Error histogram. + + Extended error codes returned by SQLite - see sqlite3.h + No extended code given + Error reading from file + Short read from file + + Error writing to file (other than SQLITE_FULL) + + Error syncing to disk + + Error syncing directory changes to disk + + Error truncating file + Error reading file metadata + Error unlocking file + + Error getting read lock - should not be possible + + Error deleting file + + Deadlock due to other process access to SQLite files + + Error mapping shared memory + + Error getting file attributes (other than not found) + + + Error while querying lock status + + Error acquiring lock + Error closing file + Unused + Error mmapping file + + Error in stat while mmapping file + + Unused + + + + SQLite result codes mapped to logging-friendly values. + Success result codes: OK, DONE, ROW + + Codes that SQLite should never return, like SQLITE_INTERNAL + + + Codes that SQLite should never return, given Chrome's usage pattern + + SQLITE_ERROR + SQLITE_PERM + SQLITE_ABORT + SQLITE_BUSY + SQLITE_READONLY + SQLITE_IOERR + SQLITE_CORRUPT + SQLITE_FULL + SQLITE_CANTOPEN + SQLITE_PROTOCOL + SQLITE_SCHEMA + SQLITE_TOOBIG + SQLITE_CONSTRAINT + SQLITE_MISMATCH + SQLITE_NOLFS + SQLITE_NOTADB + SQLITE_BUSY_RECOVERY + SQLITE_READONLY_RECOVERY + SQLITE_IOERR_READ + SQLITE_CONSTRAINT_CHECK + SQLITE_ABORT_ROLLBACK + SQLITE_BUSY_SNAPSHOT + SQLITE_READONLY_CANTLOCK + SQLITE_IOERR_SHORT_READ + SQLITE_CORRUPT_SEQUENCE + SQLITE_CANTOPEN_ISDIR + SQLITE_READONLY_ROLLBACK + SQLITE_IOERR_WRITE + SQLITE_CORRUPT_INDEX + + SQLITE_CONSTRAINT_FOREIGN_KEY + + SQLITE_READONLY_DBMOVED + SQLITE_IOERR_FSYNC + SQLITE_IOERR_DIR_FSYNC + SQLITE_CONSTRAINT_NOTNULL + SQLITE_READONLY_DIRECTORY + SQLITE_IOERR_TRUNCATE + + SQLITE_CONSTRAINT_PRIMARYKEY + + SQLITE_IOERR_FSTAT + SQLITE_IOERR_UNLOCK + SQLITE_CONSTRAINT_UNIQUE + SQLITE_IOERR_RDLOCK + SQLITE_IOERR_DELETE + SQLITE_CONSTRAINT_ROWID + SQLITE_CONSTRAINT_DATATYPE + SQLITE_IOERR_ACCESS + + SQLITE_IOERR_CHECKRESERVEDLOCK + + SQLITE_IOERR_LOCK + SQLITE_IOERR_CLOSE + SQLITE_IOERR_SEEK + SQLITE_IOERR_DELETE_NOENT + SQLITE_IOERR_MMAP + SQLITE_IOERR_GETTEMPPATH + SQLITE_IOERR_BEGIN_ATOMIC + SQLITE_IOERR_COMMIT_ATOMIC + SQLITE_IOERR_ROLLBACK_ATOMIC + SQLITE_IOERR_CORRUPTFS + + + + + Track successful completion or failure of sql::Recovery implementation. + + + sql::Recovery::Init() (helper for Begin()) completely successfully. + + + Failed to open temporary database to recover into. + + + Failed to initialize recover vtable subsystem for connection. + + + Deprecated: USE_SYSTEM_SQLITE is no longer supported. + + + Failed to enable writable_schema. + + + Failed to attach corrupt database to recovery database. + + + sql::Recovery::Backup() (helper for Recovered()) completely successfully. + + + Failed sqlite3_backup_init(). Error code in Sqlite.RecoveryHandle. + + + Failed sqlite3_backup_step(). Error code in Sqlite.RecoveryStep. + + + sql::Recovery::AutoRecoverTable() completed successfully. + + + Failed sqlite3_backup_step(). Error code in Sqlite.RecoveryStep. + + + AutoRecoverTable() could not find the target table. + + + AutoRecoverTable() failed creating recovery vtable. + + + AutoRecoverTable() failed copying data from recovery to target table. + + + AutoRecoverTable() failed to drop recovery table. + + + sql::Recovery::SetupMeta() completed successfully. + + + SetupMeta() failed to create meta recovery table. + + + GetMetaVersionNumber() found no version row in meta table. + + + GetMetaVersionNumber() failed querying recovery meta table. + + + GetMetaVersionNumber() found no version row in meta table. + + + sql::Recovery::RecoverDatabaseOrRaze() completed successfully. + + + Autorecover could not setup the database for recovery attempt. + + + Autorecover could not read corrupt db schema. + + + Autorecover could not create new db schema. + + + Autorecover could not read table names from corrupt db. + + + Autorecover failed when recovering a table. + + + Autorecover failed when recovering sequence table. + + + Autorecover failed when recovering triggers, views, or virtual tables. + + + Autorecover failed setup with NOTADB, then failed deleting the db. + + + Autorecover failed setup with NOTADB, then failed to re-open the db after + deleting it. + + + Autorecover failed setup with NOTADB, then failed to query the db after + deleting it. + + + Autorecover failed setup with NOTADB, then successfully deleted the + unrecoverable db and verified that it now works. + + + Autorecover failed because required version information was missing from the + [meta] table. + + + + + + + Count statements initiated by Step(), Run(), or Execute*(). + + + Count steps which returned SQLITE_ROW. + + + Count statements which ran to completion with no errors. + + + Count calls to Execute*(). + + + Count rows changed without an explicit transaction. + + + Count rows changed in an explicit transaction. + + + Explicit transactions begun. + + + Explicit transactions committed. + + + Explicit transactions rolled back. + + + No meta table in mmap probe. + + + Failed to read meta table in mmap probe. + + + Failed to update meta table in mmap probe. + + + Failed to access SQLite vfs in mmap probe. + + + Found cached failure status in mmap probe. + + + Error while reading database in mmap probe. + + + Successfully read to end of database in mmap probe. + + + Successfully read some of database in mmap probe. + + + Exhausted read quota in mmap probe. + + + Failed to read status view in mmap probe. + + + Failed to update status view in mmap probe. + + + + + + Deprecated in favor of SqliteStats2Enum + + + + Count statements initiated by Step(), Run(), or Execute*(). + + + Count steps which returned SQLITE_ROW. + + + Count statements which ran to completion with no errors. + + Count calls to Execute*(). + + Count rows changed without an explicit transaction. + + + Count rows changed in an explicit transaction. + + Explicit transactions begun. + Explicit transactions committed. + Explicit transactions rolled back. + + No meta table in mmap probe. + + + Failed to read meta table in mmap probe. + + + Failed to update meta table in mmap probe. + + + Failed to access SQLite vfs in mmap probe. + + + Found cached failure status in mmap probe. + + + Error while reading database in mmap probe. + + + Successfully read to end of database in mmap probe. + + + Successfully read some of database in mmap probe. + + + Exhausted read quota in mmap probe. + + + Failed to read status view in mmap probe. + + + Failed to update status view in mmap probe. + + + + + Sqlite database version deprecation status + + Database has tables, but no meta table. + + + Failure figuring out if database has tables. + + + Failed querying meta table. + + + No version row in meta table. + + Raze succeeded. + Raze failed. + + + + + Removed 2018/02/06. + + I/O events from browser-process SQLite VFS wrapper. + Calls to xOpen(). + Calls to xDelete(). + Calls to xAccess(). + Calls to xFullPath(). + Calls to xClose(). + Calls to xRead(). + Calls to xWrite(). + Calls to xTruncate(). + Calls to xSync(). + Calls to xFileSize(). + Calls to xFetch(). + + + + + + + + + + + + + + + + Error codes reported by libsrtp (defined in + third_party/libsrtp/include/srtp.h). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 2017-11-01. Replaced with + SoftwareReporterPromptDialogResponse. + + + + + + + + + + + + + Deprecated as of 2018-01. + + + The results of comparing the built-in list of known Windows roots against + programatically detecting the built-in status. + + + Not detected as from AuthRoot, nor built-in + (BUILT_IN_PROPERTY_NOT_FOUND_BUILTIN_NOT_SET) + + + Not detected as from AuthRoot, but built-in + (BUILT_IN_PROPERTY_NOT_FOUND_BUILTIN_SET) + + + Detected as from AuthRoot, but not built-in + (BUILT_IN_PROPERTY_FOUND_BUILTIN_NOT_SET) + + + Detected as from AuthRoot and also built-in + (BUILT_IN_PROPERTY_FOUND_BUILTIN_SET) + + + + + + + + This is a subset of CAPTIVE_PORTAL_DETECTION_ENABLED (bucket 1), the only + difference is that it is for overridable errors. + + + Was the captive portal probe completed before the interstitial was closed? + Captive Portal won't be detected unless ::Observe is triggered which might + be a few seconds later. + + + This is a subset of CAPTIVE_PORTAL_PROBE_COMPLETED (bucket 3), the only + difference is that it is for overridable errors. + + + + + + This is a subset of CAPTIVE_PORTAL_DETECTED (bucket 7), the only difference + is that it is for overridable errors. + + + + + SSL/TLS cipher suites from the IANA registry + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The result of a TLS connection that offered ECH + + + + + + + + + + + This cause is recorded if the SSL error is CERT_DATE_INVALID and Chrome had + reason to believe that the system clock was behind. Methods of detecting + clock inaccuracy have changed over time. + + + This cause is recorded if the SSL error is CERT_DATE_INVALID and Chrome had + reason to believe that the system clock was behind. Methods of detecting + clock inaccuracy have changed over time. + + + (Deprecated in favor of WWW_SUBDOMAIN_MATCH2) + + + (Deprecated in favor of SUBDOMAIN_MATCH2) + + + (Deprecated in favor of SUBDOMAIN_INVERSE_MATCH2) + + + (Deprecated in favor of SUBDOMAIN_OUTSIDE_WILDCARD2) + + + This cause is recorded only for CERT_COMMON_NAME_INVALID errors. + + + (Deprecated in favor of LIKELY_MULTI_TENANT_HOSTING2) + + + This cause is recorded only for CERT_AUTHORITY_INVALID errors. + + + This cause is recorded only for CERT_AUTHORITY_INVALID errors. The user did + not receive a certificate signed by a valid CA. + + + This cause is recorded only for CERT_AUTHORITY_INVALID errors. (Deprecated + in M47.) + + + This cause is recorded only for CERT_AUTHORITY_INVALID errors. + + + + (Deprecated in favor of LIKELY_SAME_DOMAIN2) + + + This case is recorded if the SSL error is CERT_COMMON_NAME_INVALID error and + the certificate does not specify any DNS names in a SubjectAltName + extension. (Chrome 58 deprecated matching hostnames to the SubjectCN Field.) + + + This cause is recorded if the SSL error is CERT_COMMON_NAME_INVALID and the + hostname differs from one of the DNS names in the certificate (SANs) only by + the presence or absence of the single-label prefix "www". This + case is not recorded if the host name is not a known TLD. + + + This cause is recorded if the SSL error is CERT_COMMON_NAME_INVALID, the URL + hostname is a subdomain of a DNS name in the certificate, and the difference + between the URL and the DNS name is not "www". This case is not + recorded if the host name is not a known TLD. + + + This cause is recorded if the SSL error is CERT_COMMON_NAME_INVALID, a DNS + name in the certificate is a subdomain of the URL hostname, and the + difference between the DNS name and the URL is not "www". This + case is not recorded if the host name is not a known TLD. + + + This cause is recorded only if the SSL error is CERT_COMMON_NAME_INVALID, we + have received a wildcard certificate and the scope of a wildcard certificate + is too narrow for the hostname. This case is not recorded if the host name + is not a known TLD. + + + This cause is recorded only for CERT_COMMON_NAME_INVALID errors where the + certificate contains numerous unrelated DNS names. This case is not recorded + if the host name is not a known TLD. + + + This case is recorded if the SSL error is CERT_COMMON_NAME_INVALID error and + the hostname in request URL has the same domain (effective TLD + 1 label) as + a SubjectAltName in the certificate. This case is not recorded if the host + name is not a known TLD. + + + + + + + + + + + + + + + + + + + + + + + + Removed March 2020. See crbug.com/1059826 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed June 2016. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed June 2016. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + As of M40, this now also includes dotless domains. + + + As of M40, this now also includes dotless domains. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed April 2018. + + + + + + + + + + + + + + + + + + + + One of several separate stability metrics. The values are non-contiguous as + they are a subset of values matching fields of the Stability proto (from the + SystemProfile). + + + + + + + + + + + + + + + + + + + + + + Load types included in the "Total pageloads" shown on the + stability dashboard. + + + + + + + + + + + + + + + + + + + + + + + + The scenarios of stacking animation when it is posisble to have 3 messages + on the screen. + + + + + + + + The type of stacking animation when it is triggered. The type indicates the + relation between current displayed messages and incoming messages. + + + + + + + + + + + + + + Standard Activity Actions, as defined by + https://developer.android.com/reference/android/content/Intent.html#standard-activity-actions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 01/2020 as we no longer record this metric. + + + + + + + + + + + + + The promo panel has been presented to the user. + + The user selected the not now button. + The user selected the sign-in button. + + + + The Start surface isn't shown. + + The Start surface homepage is visible. + + + The grid Tab switcher is visible. + + The Start surface is disabled. + + The Tab switcher is shown when the Tab switcher button on the toolbar is + clicked. + + + The Start surface is shown when users are back to Chrome. It includes cold + or warm startup, or users bringing Chrome from background to foreground. + + + The Start surface is shown via back operations from a restored Tab, or a + background Tab created from Start surface, or tapping the home button on the + toolbar (deprecated). + + + The Start surface is shown via back operations from a foreground Tab created + from the Start surface, with tab launch type "FROM_START_SURFACE". + However, when "Previous" is used, either Grid tab switcher or + Start surface can be shown, i.e., the Tab returns to the last overview page. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ChromeOS Stateful Partition Format + + + + + + + + + + + + + + + + + + + + + Removed 2020 November. + + + + + + + + Possible outcomes of a Storage Access API permission request. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MSE parsing of WebM buffers may require estimating the duration. "Known + duration" indicates no estimation was needed. "Constant + estimate" indicates the estimate uses the constant duration observed + from other buffers in the track. "Rough estimate" indicates the + track's durations vary and estimation is performed using a min or max of + observed durations. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 03/2019. + + + For a download that occurs in subframe, record whether the frame is + sandboxed, whether the origin is same to the top frame, whether it's an ad + subframe, and whether the download involves a transient user gesture. It is + only recorded for downloads originated from navigations or from HTML anchor + download attributes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated July 2018 in favor of SubresourceFilterActions2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M90. Files.app no longer displays CWS dialog. + + + + + + + + + + Removed in M90. Files.app no longer displays CWS dialog. + + + + + + + + + Removed in M90. Files.app no longer displays CWS dialog. + + + + + + + + + Removed in M90. Files.app no longer displays CWS dialog. + + + + + + + + + + Type of Answer in omnibox suggestion list or No Answer, if not an answer. + + + + + + + + + + + + + + + + + + Type of Answer shown in omnibox suggestion list. + + + + + + + + + + + + + + + + + Type of decoration beside entity suggestion. + + + + + + + + Suggestion group IDs toggled visible or hidden in the omnibox result list. + Based on the SuggestionGroupIds enum in suggestion_config.proto, contains + values currently known to Chrome. + + + + + + + Type of icon shown beside omnibox suggestion. + + + + + + + + + + + + + + Type of pedal shown or selected in the omnibox suggestion list. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Renamed to SupervisedUserExtension2. + + + Tracks the state of a supervised user trying to install an extension. + + + + + + + + + Tracks the state of a supervised user trying to install an extension. + + + + + + + + + Removed in April 2020 (M84). + + + Tracks the state of a supervised user trying to install an extension during + the COVID-19 crisis. + + + + + + + + Tracks supervised user actions to enable or disable extensions. + + + + + + + + + Tracks the actions of a supervised user on the Extension Install Dialog. + + + + + + + + + + + + + + Tracks the actions of a parent on the Parent Permission Dialog. + + + + + + + + + + Link; Allowed as safe + Typed URL; Allowed as safe + Bookmark; Allowed as safe + + Subframe navigation; Allowed as safe + + + Manual subframe navigation; Allowed as safe + + + Generated from Omnibox; Allowed as safe + + + Automatic toplevel navigation; Allowed as safe + + + Form submission; Allowed as safe + + Reload; Allowed as safe + + Omnibox keyword; Allowed as safe + + + URL generated from Omnibox keyword; Allowed as safe + + Other navigation; Allowed as safe + + Link; Allowed by default (safety state unknown) + + + Typed URL; Allowed by default (safety state unknown) + + + Bookmark; Allowed by default (safety state unknown) + + + Subframe navigation; Allowed by default (safety state unknown) + + + Manual subframe navigation; Allowed by default (safety state unknown) + + + Generated from Omnibox; Allowed by default (safety state unknown) + + + Automatic toplevel navigation; Allowed by default (safety state unknown) + + + Form submission; Allowed by default (safety state unknown) + + + Reload; Allowed by default (safety state unknown) + + + Omnibox keyword; Allowed by default (safety state unknown) + + + URL generated from Omnibox keyword; Allowed by default (safety state + unknown) + + + Other navigation; Allowed by default (safety state unknown) + + + Link; Blocked by static denylist + + + Typed URL; Blocked by static denylist + + + Bookmark; Blocked by static denylist + + + Subframe navigation; Blocked by static denylist + + + Manual subframe navigation; Blocked by static denylist + + + Generated from Omnibox; Blocked by static denylist + + + Automatic toplevel navigation; Blocked by static denylist + + + Form submission; Blocked by static denylist + + + Reload; Blocked by static denylist + + + Omnibox keyword; Blocked by static denylist + + + URL generated from Omnibox keyword; Blocked by static denylist + + + Other navigation; Blocked by static denylist + + + Link; Blocked by SafeSites + + + Typed URL; Blocked by SafeSites + + + Bookmark; Blocked by SafeSites + + + Subframe navigation; Blocked by SafeSites + + + Manual subframe navigation; Blocked by SafeSites + + + Generated from Omnibox; Blocked by SafeSites + + + Automatic toplevel navigation; Blocked by SafeSites + + + Form submission; Blocked by SafeSites + + + Reload; Blocked by SafeSites + + + Omnibox keyword; Blocked by SafeSites + + + URL generated from Omnibox keyword; Blocked by SafeSites + + + Other navigation; Blocked by SafeSites + + + Link; Blocked by manual exception + + + Typed URL; Blocked by manual exception + + + Bookmark; Blocked by manual exception + + + Subframe navigation; Blocked by manual exception + + + Manual subframe navigation; Blocked by manual exception + + + Generated from Omnibox; Blocked by manual exception + + + Automatic toplevel navigation; Blocked by manual exception + + + Form submission; Blocked by manual exception + + + Reload; Blocked by manual exception + + + Omnibox keyword; Blocked by manual exception + + + URL generated from Omnibox keyword; Blocked by manual exception + + + Other navigation; Blocked by manual exception + + + Link; Blocked by global settings + + + Typed URL; Blocked by global settings + + + Bookmark; Blocked by global settings + + + Subframe navigation; Blocked by global settings + + + Manual subframe navigation; Blocked by global settings + + + Generated from Omnibox; Blocked by global settings + + + Automatic toplevel navigation; Blocked by global settings + + + Form submission; Blocked by global settings + + + Reload; Blocked by global settings + + + Omnibox keyword; Blocked by global settings + + + URL generated from Omnibox keyword; Blocked by global settings + + + Other navigation; Blocked by global settings + + + Link; Allowed by allowlist + + + Typed URL; Allowed by allowlist + + + Bookmark; Allowed by allowlist + + + Subframe navigation; Allowed by allowlist + + + Manual subframe navigation; Allowed by allowlist + + + Generated from Omnibox; Allowed by allowlist + + + Automatic toplevel navigation; Allowed by allowlist + + + Form submission; Allowed by allowlist + + + Reload; Allowed by allowlist + + + Omnibox keyword; Allowed by allowlist + + + URL generated from Omnibox keyword; Allowed by allowlist + + + Other navigation; Allowed by allowlist + + + + + Events that trigger status report for supervised accounts + + + + + + + + + + + + Removed as of 05/2021. + + + + + + + + + + + + + Results when download survey response is available. Used by + Android.Survey.SurveyDownloadResponseCodes2. + + + + + + + + + + + + + + + + + + + + + + + + Results when survey has been download and requested to be shown. Used by + Android.Survey.ShowSurveyStatus. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Obsolete as of 07/2020. + + + + + + + + + Obsolete as of 07/2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 2021-02. + + + + + + + + + + + + + + + + + + + + + + + + + + Removed as of M80. + + + The state of the local bookmark model version compared to Sync. Corresponds + to NativeModelSyncState in bookmark_model_associator.h. + + + + + + + + + + Type of a network message sent from the client to the sync server. + + + + + + + + + + + Sync data type configure results. The codes are listed in + data_type_controller.h with more details. + + + + + + + + + + + + + Deprecated 2020-02. + + + Sync conflict resolutions. The codes are listed in conflict_resolution.h, + and correspond to all the different ways a sync conflict can be resolved. + + + + + + + + + + Behavior of the out-of-box experience (OOBE) sync consent screen. + + + + + + + + + + + + + + Which button the user clicked in the out-of-box experience (OOBE) sync + consent screen. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Possible outcomes of an attempt to load the sync directory. + + + + + + + + Possible outcomes of comparing cache GUID and birthday fields across sync + directory and prefs. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Possible events that delete a synced search engine. + + + + + + + + Type of change of a sync entity. Recorded once for every sync entity + whenever it is commited to the server or updated from the server. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Possible errors that can trigger a sync error infobar. + + + + + + + + + + + + + + + + + + + Possible errors that can be returned by the sync server. + + + + You might want to look at Sync.ThrottledSomeModelTypes to correlate this + with throttling of a specific data type, or Sync.ThrottledAllModelTypes for + throttling of the whole client. + + + + + + + + + + + You might want to look at Sync.BackedOffModelType to see the per-type effect + of this. + + + + + + + + Removed 2020-10. + + + Sync UI events. The codes are listed in profile_syncer_service.h with more + details. + + + + + + + + + + + + + + + + + + + + + + + + Possible flows where the FirstSetupComplete bit was set. + + + + + + + + + + + Removed in M37. + + + + + + + + + Removed in M93. + + + + + + + + + + Equivalent to proto SyncEnums.GetUpdatesOrigin: represents a reason for a + client to issue a GetUpdates request to the sync server. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Possible outcomes of handling incoming sync invalidations. + + + + + + + + + + + + + + + + + + + + + + + Removed 2020-10. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 2020-01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maps to values in sync_pb::ClientToServerMessage_Contents. + + + + + + + + + + + + + + + + + + + + + Removed March 2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sync simple conflict resolutions. The codes are listed in + conflict_resolver.h, and correspond to the different methods we have for + resolving simple sync conflicts. + + + + + + + + + + + + Sync data type start results. The codes are listed in data_type_controller.h + with more details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Reasons for sync unrecoverable errors. + + + + + + + + + + + + + + + + + + + + + + + + System Features to be disabled by a policy. + + + + + + + + + + + + + + Deprecated and removed from code as of 01/2016. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tab score was calculated successfully. + + The ExamplePreprocessorConfig could not be loaded or parsed. + + + The ExamplePreprocessor returned an error other than, or in addition to, the + kNoFeatureIndexFound error. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + User made a screenshot, but did not take any actions with it before + navigating away or closing the tab. + + + User took a screenshot then tried to share. + + + User was provided in product help for Downloads after taking a screenshot. + + + + + + The UI was dismissed via interactions outside what is offered by the Tab + Search UI. + + + The Tab Search UI was dismissed as a result of the user opting to switch to + a currently open tab. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 01/2023. + + The reason why conditional tab strip is showing. + + + + + + + + + + + + + + + + Deprecated as of 01/2023. + + + The user status of conditional tab strip in a feature-specific session. + + + + + + + + + + + Deprecated as of 04/2014. + + + + + + + + Deprecated as of 04/2014. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Used to record selector logic trigerred when servicing a task queue. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M95. + + + + + + + + + + + + + + + + + + + + Deprecated April 2018. Replaced by GpuTerminationStatus. + + + Return status values from GetTerminationStatus as defined in + base/process/kill.h enum TerminationStatus. The last couple enums are + different depending on the platform. + + TERMINATION_STATUS_NORMAL_TERMINATION + TERMINATION_STATUS_ABNORMAL_TERMINATION + TERMINATION_STATUS_PROCESS_WAS_KILLED + TERMINATION_STATUS_PROCESS_CRASHED + TERMINATION_STATUS_STILL_RUNNING + + TERMINATION_STATUS_PROCESS_WAS_KILLED_BY_OOM on ChromeOS, + TERMINATION_STATUS_OOM_PROTECTED on Android, + TERMINATION_STATUS_LAUNCH_FAILED everywhere else + + + TERMINATION_STATUS_LAUNCH_FAILED on ChromeOS and Android, + TERMINATION_STATUS_OOM everywhere else + + + TERMINATION_STATUS_OOM on ChromeOS and Android + + + + + + Indicates which parameters were specified in a text fragment anchor. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 3/2019 in crbug.com/856433. + + + + + + + + + + + + Deprecated 3/2019 in crbug.com/856433. + + + This value has been deprecated and replaced by EPHEMERAL_MATCH and + EPHEMERAL_MISMATCH. + + + + + This value has been deprecated and replaced by PERSISTENT_MATCH and + PERSISTENT_MISMATCH. + + + + + + + + + + + + + + + Deprecated 3/2019 in crbug.com/856433. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This value will not be reported, only other actaul differences will be + reported. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No touchpad detected on a device without built-in touchpad + + + External touchpad detected on a device without built-in touchpad + + + Built-in touchpad not detected at boot time on a device with built-in + touchpad (touchpad failure at boot time) + + + Built-in touchpad detected at boot time on a device with built-in touchpad + + + Built-in touchpad not detected at resume time on a device with built-in + touchpad (touchpad failure at resume time) + + + Built-in touchpad detected at resume time on a device with built-in touchpad + + + + + + All observed input events from touchpad. Serves as a reference. + + + The touchpad noise events (e.g. abrupt cursor jumps) caused by the noisy + ground. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The TPM 1.2 command ordinals. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The first two bytes of value are the command code. The last two bytes are + the response code. The label is the what the command and response code + represent. The command and response code are defined in the + src/include/tcsd_wrap.h and third_party/trousers/src/include/tss/*_error.h. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The first two bytes of value are the command code. The last two bytes are + the response code. The label is the what the command and response code + represent. The command and response code are defined in the + platform2/trunks/tpm_generated.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The status of the sercrets that tpm manager hold. Each bit field presents + the meanings listed below: 1. (0bX0000000): when the flag is set, the device + uses TPM2. 2. (0b0XX00000): reserved. 3. (0b000X0000): has owner password. + 4. (0b0000X000): has endorsement password (TPM2.0 only). 5. (0b00000X00): + has lockout password (TPM2.0 only). 6. (0b000000X0): has owner delegate + (TPM1.2 only). 7. (0b0000000X): has reset DA premissions. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If the model predicts a language in 'kWellKnownCodesOnWrongConfiguration' + but the Content-Language is 'en' we use the model language. + + + A country code is required for zh, use the model version if the page + language does not include one. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index of a trending query view on the new tab page. This is only an enum so + that the dashboard won't produce misleading statistics like averages. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The level provided by Android's ComponentCallbacks2.onTrimMemory(). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 2022/10. + + + + Error when getting location from client app. + + + + No Trusted Web Activity service, or the service does not handle the command. + Note: this is included in the "Location Error" bracket. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in Chrome 76. + + + + + + + + + + + + + + + + + + + This enum denotes the type of app on the deleted ntp_tile as part of bug fix + for crbug.com/1250463 + + + + + + + + + + + + This enum corresponds to ui::SystemTheme. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Placeholder enum. The values are UKM event name hashes truncated to 31 bits. + This gets populated by the GetEnumsNodes function in merge_xml.py when + producing the merged XML file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 07/2021 in favor of UmaCleanExitConsistency2. Version 2 re-orders + and adds new buckets to support measuring the frequency with which the Local + State data is missing. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 06/2019 in issue 975278. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 01/2020 because only make searches and browsing better is + recorded as a Boolean. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M88 as it's no longer needed. + + The result from updating App Badge on macOS. + + + + + + + + + + + + + + + Deprecated 09/2020 because the corresponding histogram is deprecated. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The certificate is valid and the same as seen before or the first time we + see a certificate. + + + The certificate is valid, but is different than a previously seen + certificate for the selected server. + + + The certificate validation failed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tracks the Action exit codes of Update Engine. + + Enum values need to ALWAYS be same as ErrorCode: + chromeos_public/src/aosp/system/update_engine/common/error_code.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M100. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 02/2017 in Issue 675840. + + + + + + + + Reports the default MIME type handler that is being used to display a file. + + + + + + + + + + + This was added to assess possible impact of UserActivationV2, by comparing + pre- and post-launch stats. + + + + + + + + + + + + + + + + + + The user activation trigger types as defined in + blink.mojom.UserActivationNotificationType. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No downgrade detected + + Administrative downgrade detected + + + Unsupported downgrade detected + + + Downgrade with snapshot restoration detected + + Minor version downgrade + + + + + Removed from code in M96. + + + Failed to create a temporary directory within User Data into which the + contents are to be moved for subsequent deletion. + + + The contents of User Data were moved as expected. + + + Some items in User Data could not be moved; see + Downgrade.UserDataDirMove.FailureCount. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 10/2018; use SyncModelTypes instead. Note that this does NOT + correspond to the UserSelectableType enum in C++! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The hash of a utility process name generated using `variations::HashName()`. + Update these using sheet available at http://bit.ly/2sKxPdR. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The compilation produced a code cache + + + The compilation hit V8's isolate's compilation cache when Blink did not + request a code cache + + + The compilation consumed a code cache + + + The compilation tried to consume a code cache, but failed (see + V8.CodeCacheRejectReason) + + + Blink did not request a code cache because this is an inline script + + + Blink did not request a code cache because this script is too small + + + Blink did not request a code cache because the cached resource is too cold + + + Blink did not request a code cache but gave no reason + + + Blink did not request a code cache because there is no resource + + + Blink did not request a code cache because the script came from the + inspector + + + Blink did not request a code cache because caching is disabled + + + Blink did not request a code cache because the script is a module + + + Blink did not request a code cache because this is a streaming source + + + Blink did not request a code cache because it is compiling a V8 extension + + + The compilation hit V8's isolate's compilation cache and produced a code + cache + + + The compilation hit V8's isolate's compilation cache instead of consuming a + code cache + + + Blink did not request a code cache because it is compiling a module for an + extension + + + Blink did not request a code cache because it is compiling a PAC script + + + Blink did not request a code cache because it is compiling a script created + by document.write + + + Blink did not request a code cache because it has a script resource without + a cache handler + + + Blink parsed and compiled the script as it was streamed, but we then hit + V8's isolate's compilation cache and did not require the streamed result. + + + + + + Reject due to magic number mismatch + + + Reject due to version hash mismatch + + + Reject due to source hash mismatch + + + Reject due to CPU features mismatch + + Reject due to flags hash mismatch + Reject due to checksum mismatch + Invalid header + + + + Debugger has been active + + Debugger has been used to set break points + + + Debugger has been used to step through Javascript code + + + Heap profiler has been used to take heap snapshots + + + Heap profiler has been used to track allocations + + + Cpu profiler has been used to profile execution + + + LiveEdit has been used to replace Javascript code on-the-fly + + + + + + + + + + + Table compaction was successful. + + Table compaction was partially successful: marking finished successfully, + and so the table was successfully compacted, but some of the entries in the + evacuated area were already in use again during sweeping, preventing the + underlying OS pages from being deallocated. + + + Table compaction was aborted during marking because not enough evacuation + entries (the new entries into which evacuated entries are moved) could be + allocated. + + + + + Load succeeded + Failure to open snapshot file + Failed to map snapshot + Failed to verify snapshot + + + + Opened without issue + Opened after one or more retries + Failed because file in use + Failed for other reason + + + + + Using a default, securely-configured sandbox + + + Using a fallback, insecurely-configured sandbox + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 8/2020. + + + + + + + Deprecated as of 8/2020, superseded by VaapiFunctions. + + + + + + + Deprecated as of 8/2020, superseded by VaapiFunctions. + + + + + + + + + + + + Deprecated as of 2021/01. + + + + + + + + + + + Removed in M91 since the data is not monitored. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No seed used + No seed used + + No seed used + No seed used + + No seed used + No seed used + No seed used + No seed used + No seed used + No seed used + + + + + + + + + + + Deprecated as of 8/2020, superseded by VaapiFunctions. + + + + + + + + Deprecated as of 4/2015, partially replaced by VAVDADecoderFailure. + + + + + + + + + + + Deprecated as of 8/2020, superseded by VaapiFunctions. + + + + + + + The params that differ when comparing browser- and renderer-calculated + DidCommitProvisionalLoadParams. + + + + + + + + + + + + + + The result of NIC wake on WiFi settings verification. Corresponds to + VerifyWakeOnWiFiSettingsResult in shill/metrics.h + + + + + + + The difference between two compared versions. + No version between versions. + A difference in minor versions. + A difference in major versions. + + + + UNKNOWN + LINUX_V4L2_SINGLE_PLANE + WIN_MEDIA_FOUNDATION + + WIN_MEDIA_FOUNDATION_SENSOR + + WIN_DIRECT_SHOW + MACOSX_AVFOUNDATION + MACOSX_DECKLINK + ANDROID_API1 + ANDROID_API2_LEGACY + ANDROID_API2_FULL + ANDROID_API2_LIMITED + FUCHSIA_CAMERA3 + VIRTUAL_DEVICE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Expired in M82; removed in M90. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An operation was attempted during an incompatible decoder state. + + + Invalid argument was passed to an API method. + + Encoded input is unreadable. + + A failure occurred at the browser layer or lower. Examples of such failures + include GPU hardware failures, GPU driver failures, GPU library failures, + browser programming errors, and so on. + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 05/2015. Substituted by VideoFramePixelFormat. + + + + + + + + + + + + + + + + Deprecated as of 10/2018. + + + + + + + + + + Removed 03/2020 in https://crbug.com/1053032. + + + + + + + + + + + + + + + Deprecated as of 08/2015. Substituted by VideoPixelFormatUnion. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 05/2015. Substituted by VideoFormat. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A form had a non-empty list of determined field types. + + + The form of the first bucket had more field types classified due to the + AutofillVoteForSelectOptionValues experiment. + + + The form of the first bucket had at least one country field (as in + "country name", not as in a "phone country code field"). + + + A form in the "ClassifiedFieldAsCountryField" bucket hat at least + one country field flipped to a "phone country code field" due to + the AutofillVoteForSelectOptionValues experiment. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 06/2020. + + + + + + + + + + + Removed 06/2020. + + + + + + + + + + Removed 06/2020. + + + + + + + + As of 5/18/2020 this enum is no longer in code. + + + + + + + + + + + + + + + + + + + + Removed as of 06/2020. + + + A catch all for presentation sources that are unknown or cannot be specified + for other reasons. + + + The user triggered a presentation request on a page in VR browsing, probably + by clicking an enter VR button. + + + The user triggered a presentation request on a page in 2D browsing, probably + by clicking an enter VR button. + + + The user activated a headset while viewing a page that listens for headset + activations and requests presentation in consequence. For example, inserted + phone in Daydream, or put on an Occulus or Vive. + + + The user launched a deep linked app, probably from Daydream home. + + + + + + Removed as of 06/2020. + + + The user activated a headset. For example, inserted phone in Daydream, or + put on an Occulus or Vive. + + + The user triggered a presentation request on a page, probably by clicking an + enter VR button. + + + The user launched a deep linked app, probably from Daydream home. + + + Chrome VR was started by an intent from another app. Most likely the user + clicked the icon in Daydream home. + + + + + + Removed as of 06/2020. + + + + + + + + + + Removed 06/2020. + + + + + + + + + + + + + + + + + + + + + + Removed 06/2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 06/2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The wake on WiFi features enabled in shill, which come from + WakeOnWiFiFeaturesEnabledState in shill/metrics.h + + + + + + + + + + Whether or not wake on WiFi was disabled during suspend because of excessive + dark resume wakes. Corresponds to WakeOnWiFiThrottled in shill/metrics.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enumeration for online wallpaper images. The label has the format of + {collection name} - {asset id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Surprise wallpaper from the user selected collection. + + + Selected by user from their local disk. + + + + + Wallpaper chosen by the user from the list of IMAX wallpapers. + + + Controlled by domain policy. Cannot be changed by user. + + Set by third party app or extension. + + Device controlled wallpaper shown on the login screen if the device is + enterprise managed. + + + Wallpaper shown one-time only. It does not belong to a particular user and + is not saved. This is used to show a white background during OOBE. + + + Wallpaper chosen by the user from their Google Photos collection. Replaced + by Once-Google-Photos. + + + Surprise wallpaper from one of the user's Google Photos albums. + + + Wallpaper chosen by the user from their Google Photos collection. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 8/2017 + + + + + + + + + + + + + + + + + + + + Installed successfully. + + Installation failed because the app was in an invalid state (e.g., it had no + suitable icon). + + + Installation failed because the ARC system was not available. + + + Update was cancelled because the existing WebAPK was found to be up-to-date. + + + Updating failed because there was an error while fetching information about + the existing WebAPK from ARC. + + + The network request to the WebAPK server failed with an error. + + + The network request to the WebAPK server timed out. + + + Installing the WebAPK through Google Play failed with an error. + + + + + + Deprecated as of 3/2018 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 8/2017. + + + + + + + + + Result for creating shortcut icon on Linux + + + + + + + + + + Result of creating shortcut for web app on MacOS. + + + + + + + + + + + + + + + Result of creating shortcut for web app on MacOS. + + + + + + + + + + + + + + + + + + + + The display mode of a web app (as defined in the Web App Manifest spec). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from code Jan 2018. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Terminated unexpectedly after starting launch. + + Launching the Chrome process failed. + + + + + The manifest launch_handler.client_mode of a web app as defined in: + https://wicg.github.io/web-app-launch/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Result of executing the WebAppMover on Chrome startup. + + + + + + + + + + + + Launched installed web app in standalone window by any method other than + command line or a platform shortcut. + + + Launched as an installed web application in a browser tab + + + The requested web application was not installed + + + Launched installed web app in standalone window from command line, using + --app flag. + + + Launched installed web app in standalone window from command line, using + --app-id flag. + + + + + Result of web app origin association file fetch. + + + + + + + Result of web app origin association file fetch. + + + + + + + + User group for an experiment on opening preinstalled apps in windows vs + tabs. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + State of the URL Handling intent picker dialog. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Outcome of a DBus method call to u2fd. + + + Method call failed, e.g. because the service was unavailable or the request + timed out. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unknown change reason + + The user tapped the Follow/Unfollow option from the three dot menu while on + a web page. + + + The user tapped the Follow accelerator while visiting a site. + + + The user tapped to Follow/Unfollow on the Follow Management page. + + + The user tapped to Follow/Unfollow a recommendation embedded in feed + content. + + + The user tapped 'Unfollow' on the back of card menu. + + + The user tapped a web page on a recommendation card. + + + + + + The user requested to Follow the current web page. + + + A Follow recommendation is being considered the current web page. + + + The Follow menu item state needs to reflect the current web page. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed Jan 2020. + + + + + + + + + + + + + + + + + + + + + + + + Failed + Succeeded + Timed out + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 09/2021. We have learned about the pattern of the destruction. + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M89. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The types of WebRequestConditionAttribute in the DeclarativeWebRequest API. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Failure reason can be either a response code (except 200 OK) for the upload + HTTP request, or another reason prior to uploading (values less than 100). + HTTP response codes copied from enum "HttpResponseCode". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + These values are integers representing a set of flags indicating how the + PeerConnection is used. For flag values, see header file + webrtc/pc/peerconnection.h, enum class UsageEvent. Only interesting values + (exceeding 1% usage at last probe) are called out with labels. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Records the outcome of a STUN integrity check - succeeds, fails, or "no + integrity attribute present". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1000 + 1001 + 1002 + 1003 + 1004 + 1005 + 1006 + 1007 + 1008 + 1009 + 1010 + 1011 + 1012 + 1013 + + 1014. "The server was acting as a gateway or proxy and received an + invalid response from the upstream server. This is similar to 502 HTTP + Status Code." + + 1015 + 1016-1999 + 2000-2999 + 3000-3999 + 4000-4999 + 0-999 + 5000-65535 + + + + + + + + + + + + Handshake not completed via Upgrade over HTTP/1 connection. + + + Server responded to Upgrade request with invalid status. + + + Server responded to Upgrade request with empty response. + + + Server responded to Upgrade request with 101 status but there was some other + network error. + + + Server responded to Upgrade request with invalid Upgrade header. + + + Server responded to Upgrade request with invalid Sec-WebSocket-Accept + header. + + + Server responded to Upgrade request with invalid Connection header. + + + Server responded to Upgrade request with invalid Sec-WebSocket-Protocol + header. + + + Server responded to Upgrade request with invalid Sec-WebSocket-Extensions + header. + + + Upgrade request failed due to other network error. + + + Connected via Upgrade over HTTP/1 connection. + + + Handshake not completed over an HTTP/2 connection. + + + Server responded to WebSocket request over an HTTP/2 connection with invalid + status code. + + + Server responded to WebSocket request over an HTTP/2 connection with invalid + sec-websocket-protocol header. + + + Server responded to WebSocket request over an HTTP/2 connection with invalid + sec-websocket-extensions header. + + + WebSocket request over an HTTP/2 connection failed with some other error. + + + Connected over an HTTP/2 connection. + + + Handshake not completed over an HTTP/3 connection. + + + Server responded to WebSocket request over an HTTP/3 connection with invalid + status code. + + + Server responded to WebSocket request over an HTTP/3 connection with invalid + sec-websocket-protocol header. + + + Server responded to WebSocket request over an HTTP/3 connection with invalid + sec-websocket-extensions header. + + + WebSocket request over an HTTP/3 connection failed with some other error. + + + Connected over an HTTP/3 connection. + + + + + Incomplete + Connected + Failed + + + + + Removed in July 2019. + + + + + + + + Deprecated 2014-06. + + + + + + + + Deprecated as of 2020-02. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Replaced by WebViewExtraHeadersRedirect 2020-07 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in March 2022. + + + + + + + + + + + + + + + + + + Deprecated in December 2021. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from code May 2018. Replaced with + WindowsNotificationSetReadyCallbackStatus2. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated 06/2018. Replaced with WindowsNotificationStartMenuShortcutStatus + where typo is fixed. + + + + + + + + + + Deprecated 05/2018 as this is no longer needed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M96. + + + + + + + + + Deprecated 12/2018 as this is no longer needed. + + + + + + + + + + + + + + + + + + Removed from code Oct 2020. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The user password has changed since the private keys were encrypted. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from code 08/2019. + + + + + + + + + + + Removed from code 08/2019. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed from the code in July 2021. + + + A frame is loaded without any X-Frame-Options header. + + X-Frame-Options: DENY. + + X-Frame-Options: SAMEORIGIN. The navigation proceeds and every ancestor has + the same origin. + + + X-Frame-Options: SAMEORIGIN. The navigation is blocked because the top-frame + doesn't have the same origin. + + + X-Frame-Options: SAMEORIGIN. The navigation proceeds despite the fact that + there is an ancestor that doesn't have the same origin. + + X-Frame-Options: ALLOWALL. + + Invalid "X-Frame-Options" directive encountered. + + + The frame sets multiple "X-Frame-Options" header with conflicting + values. + + + The "frame-ancestors" CSP directive should take effect instead. + + + A redirect response specified an "X-Frame-Options" header that + would block the response. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed 03/2020 + + + + + + + + + + + + + + + Removed as of 06/2020. + + + + + + + + + + + + + + + + + + + + Removed from code 07/2019. + + Embed was properly rewritten. + + Embed was rewritten but the params had to be fixed. + + + Embed was rewritten even though JS API was enabled (Android only). + + + Embed was not rewritten because JS API was enabled. + + + + + + + + + + + + + + + + + + + + Zero-prefix suggestions are eligible. + + + Suggest request without sending the current page URL cannot be made. E.g., + the user is in incognito mode or Google is not set as the default search + provider. + + + Suggest request with sending the current page URL cannot be made. E.g., the + user has not consented and the page is not the SRP associated with the + default search provider. + + + Zero-prefix suggestions are not eligible in the given context. E.g., due to + the page classification, focus type, input type, or an invalid page URL. + + + + + + Obsolete as of M106. + + + URL can be currently sent to the suggest server. + + + URL cannot be sent to the suggest server but another URL would be eligible + at this time. + + + No URL can be sent to the suggest server at this time. + + + + + + Removed from code as of M87 / September 2020. This is no longer useful. + + + + The user is in incognito mode. + + + Suggestion mechanism is disabled by user. + + + User is not signed in. + + + User is using an unsupported search engine. + + + User is not participating in an experiment that enables RemoteNoURL + suggestions on the NTP. + + + + + + Cached response was synchronously converted to displayed matches. + + Remote request was sent. + + Remote request was invalidated (due to user starting to type or another + zero-suggest request). + + + Remote response was received asynchronously. + + Remote response was cached. + + Remote response ended up being converted to displayed matches. This may + happen due to an empty displayed result set or an empty remote result set. + + + + + + + + + + + + + + + + + + + diff --git a/histograms/expand_owners.py b/histograms/expand_owners.py new file mode 100644 index 000000000000..2e82e8e7d928 --- /dev/null +++ b/histograms/expand_owners.py @@ -0,0 +1,409 @@ +# Copyright 2019 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Functions for extracting emails and components from OWNERS files.""" + +import extract_histograms +import json +import os +import subprocess +import sys +import re + +_EMAIL_PATTERN = r'^[\w\-\+\%\.]+\@[\w\-\+\%\.]+$' +_OWNERS = 'OWNERS' +# Three '..' are used because calling dirname() yields the path to this +# module's directory, histograms, and the directory above tools, which may or +# may not be src depending on the machine running the code, is up three +# directory levels from the histograms directory. +DIR_ABOVE_TOOLS = [os.path.dirname(__file__), '..', '..', '..'] +SRC = 'src/' + + +class Error(Exception): + pass + + +def _AddTextNodeWithNewLineAndIndent(histogram, node_to_insert_before): + """Creates and adds a DOM Text Node before the given node in the histogram. + + Args: + histogram: The histogram node in which to insert a text node. + node_to_insert_before: A node before which to add the text node. + """ + histogram.insertBefore( + histogram.ownerDocument.createTextNode('\n '), + node_to_insert_before) + + +def _IsValidPrimaryOwnerEmail(owner_tag_text): + """Returns true if |owner_tag_text| is a valid primary owner. + + A valid primary owner is an individual (not a team) with a Chromium or Google + email address. + + Args: + owner_tag_text: The text in an owner tag + """ + if '-' in owner_tag_text: # Check whether it's a team email address. + return False + + return (owner_tag_text.endswith('@chromium.org') + or owner_tag_text.endswith('@google.com')) + + +def _IsEmailOrPlaceholder(is_first_owner, owner_tag_text, histogram_name, + is_obsolete): + """Returns true if owner_tag_text is an email or the placeholder text. + + Also, for histograms that are not obsolete, verifies that a histogram's first + owner tag contains a valid primary owner. + + Args: + is_first_owner: True if a histogram's first owner tag is being checked. + owner_tag_text: The text of the owner tag being checked, e.g. + 'julie@google.com' or 'src/ios/net/cookies/OWNERS'. + histogram_name: The string name of the histogram. + is_obsolete: True if the histogram is obsolete. + + Raises: + Error: Raised if (A) the text is from the first owner tag, (B) the histogram + is not obsolete, and (C) the text is not a valid primary owner. + """ + is_email = re.match(_EMAIL_PATTERN, owner_tag_text) + is_placeholder = owner_tag_text == extract_histograms.OWNER_PLACEHOLDER + should_check_owner_email = (is_first_owner and not is_obsolete + and not is_placeholder) + + if should_check_owner_email and not _IsValidPrimaryOwnerEmail(owner_tag_text): + raise Error( + 'The histogram {} must have a valid primary owner, i.e. a Googler ' + 'with an @google.com or @chromium.org email address. Please ' + 'manually update the histogram with a valid primary owner.'.format( + histogram_name)) + + return is_email or is_placeholder + + +def _IsWellFormattedFilePath(path): + """Returns True if the given path begins with 'src/' and ends with 'OWNERS'. + + Args: + path: The path to an OWNERS file, e.g. 'src/gin/OWNERS'. + """ + return path.startswith(SRC) and path.endswith(_OWNERS) + + +def _GetHigherLevelOwnersFilePath(path): + """Returns a path to an OWNERS file at a higher level than the given path. + + Returns an empty string if an OWNERS file path in a higher level directory + cannot be found. + + Suppose the given path is //stuff/chromium/src/jam/tea/milk/OWNERS. The + path //stuff/chromium/src/jam/tea/OWNERS will then be generated, and if it + exists, it will be returned. If not, the path //stuff/chromium/src/jam/OWNERS + will be generated, and if it exists, it will be returned. + + Args: + path: The path to an OWNERS file. + """ + # The highest directory that is searched for component information is one + # directory lower than the directory above tools. Depending on the machine + # running this code, the directory above tools may or may not be src. + path_to_limiting_dir = os.path.abspath(os.path.join(*DIR_ABOVE_TOOLS)) + limiting_dir = path_to_limiting_dir.split(os.sep)[-1] + owners_file_limit = (os.sep).join([limiting_dir, _OWNERS]) + if path.endswith(owners_file_limit): + return '' + + parent_directory = os.path.dirname(os.path.dirname(path)) + parent_owners_file_path = os.path.join(parent_directory, _OWNERS) + + if (os.path.exists(parent_owners_file_path) and + os.path.isfile(parent_owners_file_path)): + return parent_owners_file_path + return _GetHigherLevelOwnersFilePath(parent_owners_file_path) + + +def _GetOwnersFilePath(path): + """Returns an absolute path that can be opened. + + Args: + path: A well-formatted path to an OWNERS file, e.g. 'src/courgette/OWNERS'. + + Raises: + Error: Raised if the given path is not well-formatted. + """ + if _IsWellFormattedFilePath(path): + # _SRC is removed because the file system on the machine running the code + # may not have a(n) src directory. + path_without_src = path[len(SRC):] + + return os.path.abspath( + os.path.join(*(DIR_ABOVE_TOOLS + path_without_src.split(os.sep)))) + + raise Error( + 'The given path {} is not well-formatted. Well-formatted paths begin ' + 'with "src/" and end with "OWNERS"'.format(path)) + + +def _ExtractEmailAddressesFromOWNERS(path, depth=0): + """Returns a list of email addresses in the given file. + + Args: + path: The path to an OWNERS file. + depth: The depth of the recursion, which is used to fail fast in the rare + case that the OWNERS file path results in a loop. + + Raises: + Error: Raised in two situations. First, raised if (A) the OWNERS file with + the given path has a file directive and (B) the OWNERS file indicated by + the directive does not exist. Second, raised if the depth reaches a + certain limit. + """ + # It is unlikely that any chain of OWNERS files will exceed 10 redirections + # via file:// directives. + limit = 10 + if (depth > limit): + raise Error('_ExtractEmailAddressesFromOWNERS has been called {} times. The' + ' path {} may be part of an OWNERS loop.'.format(limit, path)) + + directive = 'file://' + email_pattern = re.compile(_EMAIL_PATTERN) + extracted_emails = [] + + with open(path, 'r') as owners_file: + for line in [line.lstrip() + for line in owners_file.read().splitlines() if line]: + index = line.find(' ') + first_word = line[:index] if index != -1 else line + + if email_pattern.match(first_word): + extracted_emails.append(first_word) + + elif first_word.startswith(directive): + next_path = _GetOwnersFilePath( + os.path.join(SRC, first_word[len(directive):])) + + if os.path.exists(next_path) and os.path.isfile(next_path): + extracted_emails.extend( + _ExtractEmailAddressesFromOWNERS(next_path, depth + 1)) + else: + raise Error('The path derived from {} does not exist. ' + 'Derived path: {}'.format(first_word, next_path)) + + return extracted_emails + + +def _ComponentFromDirmd(json_data, subpath): + """Returns the component for a subpath based on dirmd output. + + Returns an empty string if no component can be extracted + + Args: + json_data: json object output from dirmd. + subpath: The subpath for the directory being queried, e.g. src/storage'. + """ + # If no component exists for the directory, or if METADATA migration is + # incomplete there will be no component information. + return json_data.get('dirs', {}).get(subpath, + {}).get('monorail', + {}).get('component', '') + + +# Memoize decorator from: https://stackoverflow.com/a/1988826 +# TODO(asvitkine): Replace with @functools.cache once we're on Python 3.9+. +class Memoize: + def __init__(self, f): + self.f = f + self.memo = {} + + def __call__(self, *args): + if not args in self.memo: + self.memo[args] = self.f(*args) + return self.memo[args] + + +@Memoize +def _ExtractComponentViaDirmd(path): + """Returns the component for monorail issues at the given path. + + Examples are 'Blink>Storage>FileAPI' and 'UI'. + + Uses dirmd in third_party/depot_tools to parse metadata and walk parent + directories up to the top level of the repo. + + Returns an empty string if no component can be extracted. + + Args: + path: The path to a directory to query, e.g. 'src/storage'. + """ + # Verify that the paths are absolute and the root is a parent of the + # passed in path. + root_path = os.path.abspath(os.path.join(*DIR_ABOVE_TOOLS)) + path = os.path.abspath(path) + if not path.startswith(root_path): + raise Error('Path {} is not a subpath of the root path {}.'.format( + path, root_path)) + subpath = path[len(root_path) + 1:] or '.' # E.g. content/public. + dirmd_exe = 'dirmd' + if sys.platform == 'win32': + dirmd_exe = 'dirmd.bat' + dirmd_path = os.path.join(*(DIR_ABOVE_TOOLS + + ['third_party', 'depot_tools', dirmd_exe])) + dirmd_command = [dirmd_path, 'read', '-form', 'sparse', root_path, path] + dirmd = subprocess.Popen( + dirmd_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + if dirmd.wait() != 0: + raise Error('dirmd failed: "' + ' '.join(dirmd_command) + '": ' + + dirmd.stderr.read().decode('utf-8')) + json_out = json.load(dirmd.stdout) + # On Windows, dirmd output still uses Unix path separators. + if sys.platform == 'win32': + subpath = subpath.replace('\\', '/') + return _ComponentFromDirmd(json_out, subpath) + + +def _MakeOwners(document, path, emails_with_dom_elements): + """Makes DOM Elements for owners and returns the elements. + + The owners are extracted from the OWNERS file with the given path and + deduped using the given set emails_with_dom_elements. This set has email + addresses that were explicitly listed as histogram owners, e.g. + liz@chromium.org. If a histogram has multiple OWNERS file + paths, e.g. src/cc/OWNERS and src/ui/OWNERS, + then the given set also contains any email addresses that have already been + extracted from OWNERS files. + + New owners that are extracted from the given file are also added to + emails_with_dom_elements. + + Args: + document: The Document to which the new owners elements will belong. + path: The absolute path to an OWNERS file. + emails_with_dom_elements: The set of email addresses that already have + corresponding DOM Elements. + + Returns: + A collection of DOM Elements made from owners in the given OWNERS file. + """ + owner_elements = [] + # TODO(crbug.com/987709): An OWNERS file API would be ideal. + emails_from_owners_file = _ExtractEmailAddressesFromOWNERS(path) + if not emails_from_owners_file: + raise Error('No emails could be derived from {}.'.format(path)) + + # A list is used to respect the order of email addresses in the OWNERS file. + deduped_emails_from_owners_file = [] + for email in emails_from_owners_file: + if email not in emails_with_dom_elements: + deduped_emails_from_owners_file.append(email) + emails_with_dom_elements.add(email) + + for email in deduped_emails_from_owners_file: + owner_element = document.createElement('owner') + owner_element.appendChild(document.createTextNode(email)) + owner_elements.append(owner_element) + return owner_elements + + +def _UpdateHistogramOwners(histogram, owner_to_replace, owners_to_add): + """Replaces |owner_to_replace| with |owners_to_add| for the given histogram. + + Args: + histogram: The DOM Element to update. + owner: The DOM Element to be replaced. This is a child node of histogram, + and its text is a file path to an OWNERS file, e.g. 'src/mojo/OWNERS' + owners_to_add: A collection of DOM Elements with which to replace + owner_to_replace. + """ + node_after_owners_file = owner_to_replace.nextSibling + replacement_done = False + + for owner_to_add in owners_to_add: + if not replacement_done: + histogram.replaceChild(owner_to_add, owner_to_replace) + replacement_done = True + else: + _AddTextNodeWithNewLineAndIndent(histogram, node_after_owners_file) + histogram.insertBefore(owner_to_add, node_after_owners_file) + + +def AddHistogramComponent(histogram, component): + """Makes a DOM Element for the component and adds it to the given histogram. + + Args: + histogram: The DOM Element to update. + component: A string component to add, e.g. 'Internals>Network' or 'Build'. + """ + node_to_insert_before = histogram.lastChild + _AddTextNodeWithNewLineAndIndent(histogram, node_to_insert_before) + + document = histogram.ownerDocument + component_element = document.createElement('component') + component_element.appendChild(document.createTextNode(component)) + histogram.insertBefore(component_element, node_to_insert_before) + + +def ExpandHistogramsOWNERS(histograms): + """Updates the given DOM Element's descendants, if necessary. + + When a histogram has an owner node whose text is an OWNERS file path rather + than an email address, e.g. src/base/android/OWNERS instead of + joy@chromium.org, then (A) the histogram's owners need to be + updated and (B) a component may be added. + + If the text of an owner node is an OWNERS file path, then this node is + replaced by owner nodes for the emails derived from the OWNERS file. If a + component, e.g. UI>GFX, can be derived from the OWNERS file or an OWNERS file + in a higher-level directory, then a component tag will be added to the + histogram, e.g. UI>GFX. + + Args: + histograms: The DOM Element whose descendants may be updated. + + Raises: + Error: Raised if the OWNERS file with the given path does not exist. + """ + email_pattern = re.compile(_EMAIL_PATTERN) + iter_matches = extract_histograms.IterElementsWithTag + + for histogram in iter_matches(histograms, 'histogram'): + owners = [owner for owner in iter_matches(histogram, 'owner', 1)] + + # owner is a DOM Element with a single child, which is a DOM Text Node. + emails_with_dom_elements = set([ + owner.childNodes[0].data + for owner in owners + if email_pattern.match(owner.childNodes[0].data)]) + + # component is a DOM Element with a single child, which is a DOM Text Node. + components_with_dom_elements = set([ + extract_histograms.NormalizeString(component.childNodes[0].data) + for component in iter_matches(histogram, 'component', 1)]) + + for index, owner in enumerate(owners): + owner_text = owner.childNodes[0].data.strip() + name = histogram.getAttribute('name') + obsolete_tags = [tag for tag in iter_matches(histogram, 'obsolete', 1)] + is_obsolete = len(obsolete_tags) > 0 + if _IsEmailOrPlaceholder(index == 0, owner_text, name, is_obsolete): + continue + + path = _GetOwnersFilePath(owner_text) + if not os.path.exists(path) or not os.path.isfile(path): + raise Error('The file at {} does not exist.'.format(path)) + + owners_to_add = _MakeOwners( + owner.ownerDocument, path, emails_with_dom_elements) + if not owners_to_add: + continue + + _UpdateHistogramOwners(histogram, owner, owners_to_add) + + component = _ExtractComponentViaDirmd(os.path.dirname(path)) + if component and component not in components_with_dom_elements: + components_with_dom_elements.add(component) + AddHistogramComponent(histogram, component) diff --git a/histograms/expand_owners_unittest.py b/histograms/expand_owners_unittest.py new file mode 100644 index 000000000000..632842b6fa32 --- /dev/null +++ b/histograms/expand_owners_unittest.py @@ -0,0 +1,619 @@ +# Copyright 2019 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest + +import expand_owners +import mock +import os +import shutil +import tempfile +import xml.dom.minidom + + +def _GetToolsParentDir(): + """Returns an absolute path to the the tools directory's parent directory. + + Example: 'C:\a\n\ff\' or '/opt/n/ff/'. + """ + return os.path.abspath(os.path.join(*expand_owners.DIR_ABOVE_TOOLS)) + + +def _GetFileDirective(path): + """Returns a file directive line. + + Args: + path: An absolute path, e.g. '/some/directory/subdirectory/tools/OWNERS'. + + Returns: + A file directive that can be used in an OWNERS file, e.g. + file://tools/OWNERS. + """ + return ''.join(['file://', path[len(_GetToolsParentDir()) + 1:]]) + + +def _GetSrcRelativePath(path): + """Returns a(n) src-relative path for the given file path. + + Args: + path: An absolute path, e.g. '/some/directory/subdirectory/tools/OWNERS'. + + Returns: + A src-relative path, e.g.'src/tools/OWNERS'. + """ + assert path.startswith(_GetToolsParentDir()) + return expand_owners.SRC + path[len(_GetToolsParentDir()) + 1:] + + +def _MakeOwnersFile(filename, directory): + """Makes a temporary file in this directory and returns its absolute path. + + Args: + filename: A string filename, e.g. 'OWNERS'. + directory: A string directory under which to make the new file. + + Returns: + The temporary file's absolute path. + """ + if not directory: + directory = os.path.abspath(os.path.join(os.path.dirname(__file__))) + owners_file = tempfile.NamedTemporaryFile(suffix=filename, dir=directory) + return os.path.abspath(owners_file.name) + + +class ExpandOwnersTest(unittest.TestCase): + + def setUp(self): + super(ExpandOwnersTest, self).setUp() + self.temp_dir = tempfile.mkdtemp( + dir=os.path.abspath(os.path.join(os.path.dirname(__file__)))) + + # The below construction is used rather than __file__.endswith() because + # the file extension could be .py or .pyc. + assert os.sep.join( + ['tools', 'metrics', 'histograms', + 'expand_owners_unittest.py']) in __file__ + + def tearDown(self): + super(ExpandOwnersTest, self).tearDown() + shutil.rmtree(self.temp_dir) + + def testExpandOwnersUsesMetadataOverOwners(self): + """Checks that DIR_METADATA is used if available""" + with open(os.path.join(self.temp_dir, 'DIR_METADATA'), "w+") as md: + md.write("\n".join(['monorail {', 'component: "Bees"', '}'])) + absolute_path = _MakeOwnersFile('simple_OWNERS', self.temp_dir) + with open(absolute_path, 'w') as owners_file: + owners_file.write('\n'.join(['amy@chromium.org', 'rae@chromium.org'])) + self.maxDiff = None + src_relative_path = _GetSrcRelativePath(absolute_path) + histograms = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + {path} + I like coffee. + + + + joe@chromium.org + {path} + kim@chromium.org + I like maple syrup, too. + + + +""".format(path=src_relative_path)) + + expected_histograms = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + amy@chromium.org + rae@chromium.org + I like coffee. + Bees + + + + joe@chromium.org + amy@chromium.org + rae@chromium.org + kim@chromium.org + I like maple syrup, too. + Bees + + + +""") + + expand_owners.ExpandHistogramsOWNERS(histograms) + self.assertMultiLineEqual(histograms.toxml(), expected_histograms.toxml()) + + @mock.patch('expand_owners._ExtractComponentViaDirmd') + def testExpandOwnersWithSimpleOWNERSFilePath(self, mock_dirmd_extract): + """Checks that OWNERS files are expanded.""" + mock_dirmd_extract.return_value = None + absolute_path = _MakeOwnersFile('simple_OWNERS', self.temp_dir) + src_relative_path = _GetSrcRelativePath(absolute_path) + + with open(absolute_path, 'w') as owners_file: + owners_file.write('\n'.join( + ['amy@chromium.org', 'rae@chromium.org'])) + + histograms = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + {path} + I like coffee. + + + + joe@chromium.org + {path} + kim@chromium.org + I like maple syrup, too. + + + +""".format(path=src_relative_path)) + + expected_histograms = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + amy@chromium.org + rae@chromium.org + I like coffee. + + + + joe@chromium.org + amy@chromium.org + rae@chromium.org + kim@chromium.org + I like maple syrup, too. + + + +""") + + expand_owners.ExpandHistogramsOWNERS(histograms) + self.assertMultiLineEqual(histograms.toxml(), expected_histograms.toxml()) + + @mock.patch('expand_owners._ExtractComponentViaDirmd') + def testExpandOwnersWithLongFilePath(self, mock_dirmd_extract): + """Checks that long OWNERS file paths are supported. + + Most OWNERS file paths appear between owners tags on the same line, e.g. + src/chrome/browser. However, especially long paths may appear + on their own line between the tags. + """ + mock_dirmd_extract.return_value = None + absolute_path = _MakeOwnersFile('simple_OWNERS', self.temp_dir) + src_relative_path = _GetSrcRelativePath(absolute_path) + + with open(absolute_path, 'w') as owners_file: + owners_file.write('\n'.join(['amy@chromium.org'])) + + histograms = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + + {path} + + I like coffee. + + + +""".format(path=src_relative_path)) + + expected_histograms = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + amy@chromium.org + I like coffee. + + + +""") + + expand_owners.ExpandHistogramsOWNERS(histograms) + self.assertMultiLineEqual(histograms.toxml(), expected_histograms.toxml()) + + @mock.patch('expand_owners._ExtractComponentViaDirmd') + def testExpandOwnersWithDuplicateOwners(self, mock_dirmd_extract): + """Checks that owners are unique.""" + mock_dirmd_extract.return_value = None + absolute_path = _MakeOwnersFile('simple_OWNERS', self.temp_dir) + src_relative_path = _GetSrcRelativePath(absolute_path) + + with open(absolute_path, 'w') as owners_file: + owners_file.write('\n'.join( + ['amy@chromium.org', 'rae@chromium.org'])) + + histograms = xml.dom.minidom.parseString(""" + + + + rae@chromium.org + {} + I like coffee. + + + +""".format(src_relative_path)) + + expected_histograms = xml.dom.minidom.parseString(""" + + + + rae@chromium.org + amy@chromium.org + I like coffee. + + + +""") + + expand_owners.ExpandHistogramsOWNERS(histograms) + self.assertMultiLineEqual(histograms.toxml(), expected_histograms.toxml()) + + @mock.patch('expand_owners._ExtractComponentViaDirmd') + def testExpandOwnersWithFileDirectiveOWNERSFilePath(self, mock_dirmd_extract): + """Checks that OWNERS files with file directives are expanded.""" + mock_dirmd_extract.return_value = None + simple_absolute_path = _MakeOwnersFile('simple_OWNERS', self.temp_dir) + + with open(simple_absolute_path, 'w') as owners_file: + owners_file.write('naz@chromium.org') + + file_directive_absolute_path = ( + _MakeOwnersFile('file_directive_OWNERS', self.temp_dir)) + file_directive_src_relative_path = ( + _GetSrcRelativePath(file_directive_absolute_path)) + + directive = _GetFileDirective(simple_absolute_path) + with open(file_directive_absolute_path, 'w') as owners_file: + owners_file.write('\n'.join([ + 'amy@chromium.org', directive, 'rae@chromium.org', + ])) + + histograms = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + {} + I like coffee. + + + +""".format(file_directive_src_relative_path)) + + expected_histograms = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + amy@chromium.org + naz@chromium.org + rae@chromium.org + I like coffee. + + + +""") + + expand_owners.ExpandHistogramsOWNERS(histograms) + self.assertEqual(histograms.toxml(), expected_histograms.toxml()) + + @mock.patch('expand_owners._ExtractComponentViaDirmd') + def testExpandOwnersForOWNERSFileWithDuplicateComponents( + self, mock_dirmd_extract): + """Checks that only one component tag is added if there are duplicates.""" + mock_dirmd_extract.return_value = None + absolute_path = _MakeOwnersFile('OWNERS', self.temp_dir) + src_relative_path = _GetSrcRelativePath(absolute_path) + + with open(absolute_path, 'w') as owners_file: + owners_file.write('\n'.join(['amy@chromium.org'])) + + duplicate_owner_absolute_path = ( + _MakeOwnersFile('duplicate_owner_OWNERS', self.temp_dir)) + duplicate_owner_src_relative_path = ( + _GetSrcRelativePath(duplicate_owner_absolute_path)) + + with open(duplicate_owner_absolute_path, 'w') as owners_file: + owners_file.write('\n'.join(['rae@chromium.org'])) + + histograms = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + {} + {} + I like coffee. + + + +""".format(src_relative_path, duplicate_owner_src_relative_path)) + + expected_histograms = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + amy@chromium.org + rae@chromium.org + I like coffee. + + + +""") + + expand_owners.ExpandHistogramsOWNERS(histograms) + self.assertEqual(histograms.toxml(), expected_histograms.toxml()) + + def testExpandOwnersWithoutOWNERSFilePath(self): + """Checks that histograms without OWNERS file paths are unchanged.""" + histograms_without_file_paths = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + I like coffee. + + + + +""") + + expected_histograms = histograms_without_file_paths + expand_owners.ExpandHistogramsOWNERS(histograms_without_file_paths) + self.assertEqual(histograms_without_file_paths, expected_histograms) + + def testExpandOwnersWithoutValidPrimaryOwner_OwnersPath(self): + """Checks that an error is raised when the primary owner is a file path. + + A valid primary owner is an individual's email address, e.g. rae@google.com, + sam@chromium.org, or the owner placeholder. + """ + histograms_without_valid_first_owner = xml.dom.minidom.parseString(""" + + + + src/OWNERS + I like coffee. + + + +""") + + with self.assertRaisesRegexp( + expand_owners.Error, + 'The histogram Caffeination must have a valid primary owner, i.e. a ' + 'Googler with an @google.com or @chromium.org email address.'): + expand_owners.ExpandHistogramsOWNERS(histograms_without_valid_first_owner) + + def testExpandOwnersWithoutValidPrimaryOwner_TeamEmail(self): + """Checks that an error is raised when the primary owner is a team. + + A valid primary owner is an individual's email address, e.g. rae@google.com, + sam@chromium.org, or the owner placeholder. + """ + histograms_without_valid_first_owner = xml.dom.minidom.parseString(""" + + + + coffee-team@google.com + I like coffee. + + + +""") + + with self.assertRaisesRegexp( + expand_owners.Error, + 'The histogram Caffeination must have a valid primary owner, i.e. a ' + 'Googler with an @google.com or @chromium.org email address.'): + expand_owners.ExpandHistogramsOWNERS(histograms_without_valid_first_owner) + + def testExpandOwnersWithoutValidPrimaryOwner_InvalidEmail(self): + """Checks that an error is raised when the primary owner's email is invalid. + + A valid primary owner is an individual's email address, e.g. rae@google.com, + sam@chromium.org, or the owner placeholder. + """ + histograms_without_valid_first_owner = xml.dom.minidom.parseString(""" + + + + alex@coffee.com + I like coffee. + + + +""") + + with self.assertRaisesRegexp( + expand_owners.Error, + 'The histogram Caffeination must have a valid primary owner, i.e. a ' + 'Googler with an @google.com or @chromium.org email address.'): + expand_owners.ExpandHistogramsOWNERS(histograms_without_valid_first_owner) + + def testExpandOwnersWithFakeFilePath(self): + """Checks that an error is raised with a fake OWNERS file path.""" + histograms_with_fake_file_path = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + src/medium/medium/roast/OWNERS + I like coffee. + + + +""") + + with self.assertRaisesRegexp( + expand_owners.Error, r'The file at .*medium.*OWNERS does not exist\.'): + expand_owners.ExpandHistogramsOWNERS(histograms_with_fake_file_path) + + def testExpandOwnersWithoutOwnersFromFile(self): + """Checks that an error is raised when no owners can be derived.""" + absolute_path = _MakeOwnersFile('empty_OWNERS', self.temp_dir) + src_relative_path = _GetSrcRelativePath(absolute_path) + + with open(absolute_path, 'w') as owners_file: + owners_file.write('') # Write to the file so that it exists. + + histograms_without_owners_from_file = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + {} + I like coffee. + + + +""".format(src_relative_path)) + + with self.assertRaisesRegexp( + expand_owners.Error, + r'No emails could be derived from .*empty_OWNERS\.'): + expand_owners.ExpandHistogramsOWNERS(histograms_without_owners_from_file) + + def testExpandOwnersWithSameOwners(self): + """ + Checks that no error is raised when all owners in a file are already in + elements. + """ + absolute_path = _MakeOwnersFile('same_OWNERS', self.temp_dir) + src_relative_path = _GetSrcRelativePath(absolute_path) + + with open(absolute_path, 'w') as owners_file: + owners_file.write( + 'joe@chromium.org') # Write to the file so that it exists. + + histograms_string = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + {} + I like coffee. + + + +""".format(src_relative_path)) + + self.assertIsNone(expand_owners.ExpandHistogramsOWNERS(histograms_string)) + + def testExpandOwnersWithoutOWNERSPathPrefix(self): + """Checks that an error is raised when the path is not well-formatted.""" + histograms_without_src_prefix = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + latte/OWNERS + I like coffee. + + + +""") + + with self.assertRaisesRegexp( + expand_owners.Error, + r'The given path latte/OWNERS is not well-formatted.*\.'): + expand_owners.ExpandHistogramsOWNERS(histograms_without_src_prefix) + + def testExpandOwnersWithoutOWNERSPathSuffix(self): + """Checks that an error is raised when the path is not well-formatted.""" + histograms_without_owners_suffix = xml.dom.minidom.parseString(""" + + + + joe@chromium.org + src/latte/file + I like coffee. + + + +""") + + with self.assertRaisesRegexp( + expand_owners.Error, + r'The given path src/latte/file is not well-formatted.*\.'): + expand_owners.ExpandHistogramsOWNERS(histograms_without_owners_suffix) + + def testExtractEmailAddressesUnsupportedSymbolsIgnored(self): + """Checks that unsupported OWNERS files symbols are ignored. + + The unsupported symbols that may appear at the beginning of a line are as + follows: + (i) per-file + (ii) * + (iii) # + (iv) set noparent + (v) white space, e.g. a space or a blank line + """ + absolute_path = _MakeOwnersFile('OWNERS', self.temp_dir) + + joe = 'joe@chromium.org' + unsupported_symbols = [ + '# Words.', ' # Words.', '*', 'per-file *OWNERS=*', 'set noparent' + ] + + with open(absolute_path, 'w') as owners_file: + owners_file.write('\n'.join([joe + ' # Words.'] + unsupported_symbols)) + + self.assertEqual( + expand_owners._ExtractEmailAddressesFromOWNERS(absolute_path), [joe]) + + def testExtractEmailAddressesLoopRaisesError(self): + """Checks that an error is raised if OWNERS file path results in a loop.""" + file_directive_absolute_path = _MakeOwnersFile('loop_OWNERS', self.temp_dir) + + directive = _GetFileDirective(file_directive_absolute_path) + with open(file_directive_absolute_path, 'w') as owners_file: + owners_file.write(directive) + + with self.assertRaisesRegexp( + expand_owners.Error, + r'.*The path.*loop_OWNERS may be part of an OWNERS loop\.'): + expand_owners._ExtractEmailAddressesFromOWNERS( + file_directive_absolute_path) + + def testGetHigherLevelPath(self): + """Checks that higher directories are recursively checked for OWNERS. + + Also, checks that there isn't a recursive loop. + """ + path = expand_owners._GetOwnersFilePath('src/banana/chocolate/OWNERS') + result = expand_owners._GetHigherLevelOwnersFilePath(path) + + # The condition is true when the tools directory's parent directory is src, + # which is generally the case locally. However, the parent directory is not + # always src, e.g. on various testing bots. + if os.path.basename(_GetToolsParentDir()) == 'src': + self.assertRegexpMatches(result, r'.*OWNERS') + else: + self.assertEqual(result, '') + + +if __name__ == '__main__': + unittest.main() diff --git a/histograms/extract_histograms.py b/histograms/extract_histograms.py new file mode 100644 index 000000000000..ae0408e6946a --- /dev/null +++ b/histograms/extract_histograms.py @@ -0,0 +1,1097 @@ +# Copyright 2013 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Extract histogram names from the description XML file. + +For more information on the format of the XML file, which is self-documenting, +see histograms.xml; however, here is a simple example to get you started. The +XML below will generate the following five histograms: + + HistogramTime + HistogramEnum + HistogramEnum_Chrome + HistogramEnum_IE + HistogramEnum_Firefox + + + + + + + person@chromium.org + some-team@chromium.org + A brief description. + + + + person@chromium.org + This histogram sports an enum value type. + + + + + + + + This is an example enum type, where the values mean little. + This is the first value. + This is the second value. + + + + + + + + + + + + + + + + +""" + +import bisect +import copy +import datetime +import itertools + +try: + import HTMLParser + html = HTMLParser.HTMLParser() +except ImportError: # For Py3 compatibility + import html + +import logging +import re +import xml.dom.minidom + +import histogram_configuration_model + +BASIC_EMAIL_REGEXP = r'^[\w\-\+\%\.]+\@[\w\-\+\%\.]+$' + +OWNER_PLACEHOLDER = ( + 'Please list the metric\'s owners. Add more owner tags as needed.') + +MAX_HISTOGRAM_SUFFIX_DEPENDENCY_DEPTH = 5 + +DEFAULT_BASE_HISTOGRAM_OBSOLETE_REASON = ( + 'Base histogram. Use suffixes of this histogram instead.') + +EXPIRY_DATE_PATTERN = "%Y-%m-%d" +EXPIRY_MILESTONE_RE = re.compile(r'M[0-9]{2,3}\Z') + + +_ELEMENT_NODE = xml.dom.minidom.Node.ELEMENT_NODE + + +class Error(Exception): + pass + + +def IterElementsWithTag(root, tag, depth=-1): + """Iterates over DOM tree and yields elements matching tag name. + + It's meant to be replacement for `getElementsByTagName`, + (which does recursive search) but without recursive search + (nested tags are not supported in histograms files). + + Note: This generator stops going deeper in the tree when it detects + that there are elements with given tag. + + Args: + root: XML dom tree. + tag: Element's tag name. + depth: Defines how deep in the tree function should search for a match. + + Yields: + xml.dom.minidom.Node: Element matching criteria. + """ + if depth == 0 and root.nodeType == _ELEMENT_NODE and root.tagName == tag: + yield root + return + + had_tag = False + + skipped = 0 + + for child in root.childNodes: + if child.nodeType == _ELEMENT_NODE and child.tagName == tag: + had_tag = True + yield child + else: + skipped += 1 + + depth -= 1 + + if not had_tag and depth != 0: + for child in root.childNodes: + for match in IterElementsWithTag(child, tag, depth): + yield match + + +def _GetTextFromChildNodes(node): + """Returns a string concatenation of the text of the given node's children. + + Comments are ignored, consecutive lines of text are joined with a single + space, and paragraphs are maintained so that long text is more readable on + dashboards. + + Args: + node: The DOM Element whose children's text is to be extracted, processed, + and returned. + """ + paragraph_break = '\n\n' + text_parts = [] + + for child in node.childNodes: + if child.nodeType != xml.dom.minidom.Node.COMMENT_NODE: + child_text = child.toxml() + if not child_text: + continue + + # If the given node has the below XML representation, then the text + # added to the list is 'Some words.\n\nWords.' + # + # Some + # words. + # + # + # + # Words. + # + + # In the case of the first child text node, raw_paragraphs would store + # ['\n Some\n words.', ' '], and in the case of the second, + # raw_paragraphs would store ['', ' Words.\n']. + raw_paragraphs = child_text.split(paragraph_break) + + # In the case of the first child text node, processed_paragraphs would + # store ['Some words.', ''], and in the case of the second, + # processed_paragraphs would store ['Words.']. + processed_paragraphs = [NormalizeString(text) + for text in raw_paragraphs + if text] + text_parts.append(paragraph_break.join(processed_paragraphs)) + + return ''.join(text_parts).strip() + + +def NormalizeString(text): + r"""Replaces all white space sequences with a single space. + + Also, unescapes any HTML escaped characters, e.g. " or >. + + Args: + text: The string to normalize, '\n\n a \n b>c '. + + Returns: + The normalized string 'a b>c'. + """ + line = ' '.join(text.split()) + + # Unescape using default ASCII encoding. Unescapes any HTML escaped character + # like " etc. + return html.unescape(line) + + +def _NormalizeAllAttributeValues(node): + """Recursively normalizes all tag attribute values in the given tree. + + Args: + node: The minidom node to be normalized. + + Returns: + The normalized minidom node. + """ + if node.nodeType == _ELEMENT_NODE: + for a in node.attributes.keys(): + node.attributes[a].value = NormalizeString(node.attributes[a].value) + + for c in node.childNodes: + _NormalizeAllAttributeValues(c) + return node + + +def _ExpandHistogramNameWithSuffixes(suffix_name, histogram_name, + histogram_suffixes_node): + """Creates a new histogram name based on a histogram suffix. + + Args: + suffix_name: The suffix string to apply to the histogram name. May be empty. + histogram_name: The name of the histogram. May be of the form + Group.BaseName or BaseName. + histogram_suffixes_node: The histogram_suffixes XML node. + + Returns: + A string with the expanded histogram name. + + Raises: + Error: if the expansion can't be done. + """ + if histogram_suffixes_node.hasAttribute('separator'): + separator = histogram_suffixes_node.getAttribute('separator') + else: + separator = '_' + + if histogram_suffixes_node.hasAttribute('ordering'): + ordering = histogram_suffixes_node.getAttribute('ordering') + else: + ordering = 'suffix' + parts = ordering.split(',') + ordering = parts[0] + if len(parts) > 1: + placement = int(parts[1]) + else: + placement = 1 + if ordering not in ['prefix', 'suffix']: + logging.error('ordering needs to be prefix or suffix, value is %s', + ordering) + raise Error() + + if not suffix_name: + return histogram_name + + if ordering == 'suffix': + return histogram_name + separator + suffix_name + + # For prefixes, the suffix_name is inserted between the "cluster" and the + # "remainder", e.g. Foo.BarHist expanded with gamma becomes Foo.gamma_BarHist. + sections = histogram_name.split('.') + if len(sections) <= placement: + logging.error( + 'Prefix histogram_suffixes expansions require histogram names which ' + 'include a dot separator. Histogram name is %s, histogram_suffixes is ' + '%s, and placment is %d', histogram_name, + histogram_suffixes_node.getAttribute('name'), placement) + raise Error() + + cluster = '.'.join(sections[0:placement]) + '.' + remainder = '.'.join(sections[placement:]) + return cluster + suffix_name + separator + remainder + + +def ExtractEnumsFromXmlTree(tree): + """Extracts all nodes in the tree into a dictionary.""" + + enums = {} + have_errors = False + + last_name = None + for enum in IterElementsWithTag(tree, 'enum'): + name = enum.getAttribute('name') + if last_name is not None and name.lower() < last_name.lower(): + logging.error('Enums %s and %s are not in alphabetical order', last_name, + name) + have_errors = True + last_name = name + + if name in enums: + logging.error('Duplicate enum %s', name) + have_errors = True + continue + + enum_dict = {} + enum_dict['name'] = name + enum_dict['values'] = {} + labels = set() + + nodes = list(IterElementsWithTag(enum, 'int')) + + obsolete_nodes = list(IterElementsWithTag(enum, 'obsolete', 1)) + if not nodes and not obsolete_nodes: + logging.error('Non-obsolete enum %s should have at least one ', name) + have_errors = True + continue + + for int_tag in nodes: + value_dict = {} + int_value = int(int_tag.getAttribute('value')) + if int_value in enum_dict['values']: + logging.error('Duplicate enum value %d for enum %s', int_value, name) + have_errors = True + continue + label = int_tag.getAttribute('label') + if label in labels: + logging.error('Duplicate enum label "%s" for enum %s', label, name) + have_errors = True + continue + labels.add(label) + value_dict['label'] = label + value_dict['summary'] = _GetTextFromChildNodes(int_tag) + enum_dict['values'][int_value] = value_dict + + enum_int_values = sorted(enum_dict['values'].keys()) + + last_int_value = None + for int_tag in nodes: + int_value = int(int_tag.getAttribute('value')) + if last_int_value is not None and int_value < last_int_value: + logging.error('Enum %s int values %d and %d are not in numerical order', + name, last_int_value, int_value) + have_errors = True + left_item_index = bisect.bisect_left(enum_int_values, int_value) + if left_item_index == 0: + logging.warning('Insert value %d at the beginning', int_value) + else: + left_int_value = enum_int_values[left_item_index - 1] + left_label = enum_dict['values'][left_int_value]['label'] + logging.warning('Insert value %d after %d ("%s")', int_value, + left_int_value, left_label) + else: + last_int_value = int_value + + for summary in IterElementsWithTag(enum, 'summary'): + enum_dict['summary'] = _GetTextFromChildNodes(summary) + break + + enums[name] = enum_dict + + return enums, have_errors + + +def _ExtractOwners(node): + """Extracts owners information from the given node, if exists. + + Args: + node: A DOM Element. + + Returns: + A tuple of owner-related info, e.g. (['alice@chromium.org'], True) + + The first element is a list of the owners' email addresses, excluding the + owner placeholder string. The second element is a boolean indicating + whether the node has an owner. A histogram whose owner is the owner + placeholder string has an owner. + """ + email_pattern = re.compile(BASIC_EMAIL_REGEXP) + owners = [] + has_owner = False + + for owner_node in IterElementsWithTag(node, 'owner', 1): + child = owner_node.firstChild + owner_text = (child and child.nodeValue) or '' + is_email = email_pattern.match(owner_text) + + if owner_text and (is_email or OWNER_PLACEHOLDER in owner_text): + has_owner = True + if is_email: + owners.append(owner_text) + + return owners, has_owner + + +def _ExtractImprovementDirection(histogram_node): + """Extracts improvement direction from the given histogram element, if any. + + Args: + histogram_node: A DOM Element corresponding to a histogram. + + Returns: + A tuple, where the first element is the improvement direction, if any; + the second element is an error message if the given direction is invalid. + """ + direction = None + error = None + improvement_nodes = histogram_node.getElementsByTagName('improvement') + if not improvement_nodes: + return None, None + if len(improvement_nodes) > 1: + histogram_name = histogram_node.getAttribute('name') + error = f'Histogram "{histogram_name}" has multiple tags.' + return None, error + + improvement_node = improvement_nodes[0] + direction = improvement_node.getAttribute('direction') + if (direction not in + histogram_configuration_model.IMPROVEMENT_DIRECTION_VALID_VALUES): + histogram_name = histogram_node.getAttribute('name') + error = ( + f'Histogram "{histogram_name}" has an invalid direction "{direction}" ' + f'in its tag.') + return None, error + + return direction, None + + +def _ExtractComponents(histogram): + """Extracts component information from the given histogram element. + + Components are present when a histogram has a component tag, e.g. + UI>Browser. Components may also be present when an + OWNERS file is given as a histogram owner, e.g. src/dir/OWNERS; + in this case the component is extracted from adjacent DIR_METADATA files. + See _ExtractComponentViaDirmd() in the following file for details: + chromium/src/tools/metrics/histograms/expand_owners.py. + + Args: + histogram: A DOM Element corresponding to a histogram. + + Returns: + A list of the components associated with the histogram, e.g. + ['UI>Browser>Spellcheck']. + """ + component_nodes = histogram.getElementsByTagName('component') + return [ + _GetTextFromChildNodes(component_node) + for component_node in component_nodes + ] + + +def _ValidateDateString(date_str): + """Checks if |date_str| matches 'YYYY-MM-DD'. + + Args: + date_str: string + + Returns: + True iff |date_str| matches 'YYYY-MM-DD' format. + """ + try: + _ = datetime.datetime.strptime(date_str, EXPIRY_DATE_PATTERN).date() + except ValueError: + return False + return True + +def _ValidateMilestoneString(milestone_str): + """Check if |milestone_str| matches 'M*'.""" + return EXPIRY_MILESTONE_RE.match(milestone_str) is not None + +def _ProcessBaseHistogramAttribute(node, histogram_entry): + if node.hasAttribute('base'): + is_base = node.getAttribute('base').lower() == 'true' + histogram_entry['base'] = is_base + if is_base and 'obsolete' not in histogram_entry: + histogram_entry['obsolete'] = DEFAULT_BASE_HISTOGRAM_OBSOLETE_REASON + +# The following code represents several concepts as JSON objects +# +# Token: an analog of tag, represented as a JSON object like: +# { +# 'key': 'token_key', +# 'variants': [a list of Variant objects] +# } +# +# Variant: an analog of tag, represented as a JSON object like: +# { +# 'name': 'variant_name', +# 'summary': 'variant_summary', +# 'obsolete': 'Obsolete text.', +# 'owners': ['me@chromium.org', 'you@chromium.org'] +# } +# +# Variants: an analog of tag, represented as a JSON object like: +# { +# 'name: 'variants_name', +# 'variants': [a list of Variant objects] +# } + + +def _ExtractTokens(histogram, variants_dict): + """Extracts tokens and variants from the given histogram element. + + Args: + histogram: A DOM Element corresponding to a histogram. + variants_dict: A dictionary of variants extracted from the tree. + + Returns: + A tuple where the first element is a list of extracted Tokens, and the + second indicates if any errors were detected while extracting them. + """ + tokens = [] + have_error = False + histogram_name = histogram.getAttribute('name') + + for token_node in IterElementsWithTag(histogram, 'token', 1): + token_key = token_node.getAttribute('key') + if token_key in tokens: + logging.error( + "Histogram %s contains duplicate token key %s, please ensure token " + "keys are unique." % (histogram_name, token_key)) + have_error = True + continue + + token_key_format = '{' + token_key + '}' + if token_key_format not in histogram_name: + logging.error( + "Histogram %s includes a token tag but the token key is not present " + "in histogram name. Please insert the token key into the histogram " + "name in order for the token to be added." % histogram_name) + have_error = True + continue + + token = dict(key=token_key) + token['variants'] = [] + + # If 'variants' attribute is set for the , get the list of Variant + # objects from from the |variants_dict|. Else, extract the + # children nodes of the |token_node| as a list of Variant objects. + if token_node.hasAttribute('variants'): + variants_name = token_node.getAttribute('variants') + variant_list = variants_dict.get(variants_name) + if variant_list: + token['variants'] = variant_list[:] + else: + logging.error( + "The variants attribute %s of token key %s of histogram %s does " + "not have a corresponding tag." % + (variants_name, token_key, histogram_name)) + token['variants'] = [] + have_error = True + # Inline and out-of-line variants can be combined. + token['variants'].extend(_ExtractVariantNodes(token_node)) + + tokens.append(token) + + return tokens, have_error + + +def _ExtractVariantNodes(node): + """Extracts the variants of a given node into a list of variant dictionaries. + + Args: + node: A DOM element corresponding to node + + Returns: + A list of Variants. + """ + variant_list = [] + for variant_node in IterElementsWithTag(node, 'variant', 1): + name = variant_node.getAttribute('name') + summary = variant_node.getAttribute('summary') if variant_node.hasAttribute( + 'summary') else name + variant = dict(name=name, summary=summary) + + obsolete_text = _GetObsoleteReason(variant_node) + if obsolete_text: + variant['obsolete'] = obsolete_text + + owners, variant_has_owners = _ExtractOwners(variant_node) + if variant_has_owners: + variant['owners'] = owners + + variant_list.append(variant) + + return variant_list + + +def _ExtractHistogramsFromXmlTree(tree, enums): + """Extracts all nodes in the tree into a dictionary.""" + + # Process the histograms. The descriptions can include HTML tags. + histograms = {} + have_errors = False + variants_dict, variants_errors = _ExtractVariantsFromXmlTree(tree) + have_errors = have_errors or variants_errors + + last_name = None + for histogram in IterElementsWithTag(tree, 'histogram'): + name = histogram.getAttribute('name') + if last_name is not None and name.lower() < last_name.lower(): + logging.error('Histograms %s and %s are not in alphabetical order', + last_name, name) + have_errors = True + last_name = name + if name in histograms: + logging.error('Duplicate histogram definition %s', name) + have_errors = True + continue + histograms[name] = histogram_entry = {} + + # Handle expiry attribute. + if histogram.hasAttribute('expires_after'): + expiry_str = histogram.getAttribute('expires_after') + if (expiry_str == "never" or _ValidateMilestoneString(expiry_str) or + _ValidateDateString(expiry_str)): + histogram_entry['expires_after'] = expiry_str + else: + logging.error( + 'Expiry of histogram %s does not match expected date format ("%s"),' + ' milestone format (M*), or "never": found %s.', name, + EXPIRY_DATE_PATTERN, expiry_str) + have_errors = True + else: + logging.error( + 'Your histogram %s must have an expiry date. If you are marking a ' + 'histogram as obsolete, please set the expiry date to the current ' + 'date.', name) + have_errors = True + + # Find tag. + owners, has_owner = _ExtractOwners(histogram) + if owners: + histogram_entry['owners'] = owners + + # Find the tag, if any. + improvement_direction, improvement_error = _ExtractImprovementDirection( + histogram) + if improvement_direction: + histogram_entry['improvement'] = improvement_direction + if improvement_error: + logging.error(improvement_error) + have_errors = True + + # Find tag. + components = _ExtractComponents(histogram) + if components: + histogram_entry['components'] = components + + # Find tag. + summary_nodes = list(IterElementsWithTag(histogram, 'summary')) + + if summary_nodes: + histogram_entry['summary'] = _GetTextFromChildNodes(summary_nodes[0]) + else: + histogram_entry['summary'] = 'TBD' + + # Find tag. + obsolete_nodes = list(IterElementsWithTag(histogram, 'obsolete', 1)) + if obsolete_nodes: + reason = _GetTextFromChildNodes(obsolete_nodes[0]) + histogram_entry['obsolete'] = reason + + # Non-obsolete histograms should provide a non-empty . + if not obsolete_nodes and (not summary_nodes or + not histogram_entry['summary']): + logging.error('histogram %s should provide a ', name) + have_errors = True + + # Non-obsolete histograms should specify s. + if not obsolete_nodes and not has_owner: + logging.error('histogram %s should specify s', name) + have_errors = True + + # Histograms should have either units or enum. + if (not histogram.hasAttribute('units') and + not histogram.hasAttribute('enum')): + logging.error('histogram %s should have either units or enum', name) + have_errors = True + + # Histograms should not have both units and enum. + if (histogram.hasAttribute('units') and + histogram.hasAttribute('enum')): + logging.error('histogram %s should not have both units and enum', name) + have_errors = True + + # Handle units. + if histogram.hasAttribute('units'): + histogram_entry['units'] = histogram.getAttribute('units') + + # Handle enum types. + if histogram.hasAttribute('enum'): + enum_name = histogram.getAttribute('enum') + if enum_name not in enums: + logging.error('Unknown enum %s in histogram %s', enum_name, name) + have_errors = True + else: + histogram_entry['enum'] = enums[enum_name] + + # Find tag. + tokens, have_token_errors = _ExtractTokens(histogram, variants_dict) + have_errors = have_errors or have_token_errors + if tokens: + histogram_entry['tokens'] = tokens + + _ProcessBaseHistogramAttribute(histogram, histogram_entry) + + return histograms, have_errors + + +def _ExtractVariantsFromXmlTree(tree): + """Extracts all nodes in the tree into a dictionary. + + Args: + tree: A DOM Element containing histograms and variants nodes. + + Returns: + A tuple where the first element is a dictionary of extracted Variants, where + the key is the variants name and the value is a list of Variant objects. + The second element indicates if any errors were detected while + extracting them. + """ + variants_dict = {} + have_errors = False + for variants_node in IterElementsWithTag(tree, 'variants'): + variants_name = variants_node.getAttribute('name') + if variants_name in variants_dict: + logging.error('Duplicate variants definition %s', variants_name) + have_errors = True + continue + + variants_dict[variants_name] = _ExtractVariantNodes(variants_node) + + return variants_dict, have_errors + + +def _GetObsoleteReason(node): + """If the node's histogram is obsolete, returns a string explanation. + + Otherwise, returns None. + + Args: + node: A DOM Element associated with a histogram. + """ + for child in node.childNodes: + if child.localName == 'obsolete': + # There can be at most 1 obsolete element per node. + return _GetTextFromChildNodes(child) + return None + + +def _UpdateHistogramsWithSuffixes(tree, histograms): + """Processes tags and combines with affected histograms. + + The histograms dictionary will be updated in-place by adding new histograms + created by combining histograms themselves with histogram_suffixes targeting + these histograms. + + Args: + tree: XML dom tree. + histograms: a dictionary of histograms previously extracted from the tree; + + Returns: + True if any errors were found. + """ + have_errors = False + + histogram_suffix_tag = 'histogram_suffixes' + suffix_tag = 'suffix' + with_tag = 'with-suffix' + + # Verify order of histogram_suffixes fields first. + last_name = None + + for histogram_suffixes in IterElementsWithTag( + tree, histogram_suffix_tag, depth=1): + name = histogram_suffixes.getAttribute('name') + if last_name is not None and name.lower() < last_name.lower(): + logging.error('histogram_suffixes %s and %s are not in alphabetical ' + 'order', last_name, name) + have_errors = True + last_name = name + + # histogram_suffixes can depend on other histogram_suffixes, so we need to be + # careful. Make a temporary copy of the list of histogram_suffixes to use as a + # queue. histogram_suffixes whose dependencies have not yet been processed + # will get relegated to the back of the queue to be processed later. + reprocess_queue = [] + + def GenerateHistogramSuffixes(): + for f in IterElementsWithTag(tree, histogram_suffix_tag): + yield 0, f + for r, f in reprocess_queue: + yield r, f + + for reprocess_count, histogram_suffixes in GenerateHistogramSuffixes(): + # Check dependencies first. + dependencies_valid = True + affected_histograms = list(IterElementsWithTag( + histogram_suffixes, 'affected-histogram', 1)) + for affected_histogram in affected_histograms: + histogram_name = affected_histogram.getAttribute('name') + if histogram_name not in histograms: + # Base histogram is missing. + dependencies_valid = False + missing_dependency = histogram_name + break + if not dependencies_valid: + if reprocess_count < MAX_HISTOGRAM_SUFFIX_DEPENDENCY_DEPTH: + reprocess_queue.append((reprocess_count + 1, histogram_suffixes)) + continue + else: + logging.error('histogram_suffixes %s is missing its dependency %s', + histogram_suffixes.getAttribute('name'), + missing_dependency) + have_errors = True + continue + + # If the suffix group has an obsolete tag, all suffixes it generates inherit + # its reason. + group_obsolete_reason = _GetObsoleteReason(histogram_suffixes) + + name = histogram_suffixes.getAttribute('name') + suffix_nodes = list(IterElementsWithTag(histogram_suffixes, suffix_tag, 1)) + suffix_labels = {} + for suffix in suffix_nodes: + suffix_name = suffix.getAttribute('name') + if not suffix.hasAttribute('label'): + logging.error('suffix %s in histogram_suffixes %s should have a label', + suffix_name, name) + have_errors = True + suffix_labels[suffix_name] = suffix.getAttribute('label') + # Find owners list under current histogram_suffixes tag. + owners, _ = _ExtractOwners(histogram_suffixes) + + last_histogram_name = None + for affected_histogram in affected_histograms: + histogram_name = affected_histogram.getAttribute('name') + if (last_histogram_name is not None and + histogram_name.lower() < last_histogram_name.lower()): + logging.error('Affected histograms %s and %s of histogram_suffixes %s ' + 'are not in alphabetical order', last_histogram_name, + histogram_name, name) + have_errors = True + last_histogram_name = histogram_name + with_suffixes = list(IterElementsWithTag(affected_histogram, with_tag, 1)) + if with_suffixes: + suffixes_to_add = with_suffixes + else: + suffixes_to_add = suffix_nodes + for suffix in suffixes_to_add: + suffix_name = suffix.getAttribute('name') + try: + new_histogram_name = _ExpandHistogramNameWithSuffixes( + suffix_name, histogram_name, histogram_suffixes) + if new_histogram_name != histogram_name: + new_histogram = copy.deepcopy(histograms[histogram_name]) + # Do not copy forward base histogram state to suffixed + # histograms. Any suffixed histograms that wish to remain base + # histograms must explicitly re-declare themselves as base + # histograms. + if new_histogram.get('base', False): + del new_histogram['base'] + if (new_histogram.get( + 'obsolete', '') == DEFAULT_BASE_HISTOGRAM_OBSOLETE_REASON): + del new_histogram['obsolete'] + histograms[new_histogram_name] = new_histogram + + suffix_label = suffix_labels.get(suffix_name, '') + + histogram_entry = histograms[new_histogram_name] + + # If no owners are added for this histogram-suffixes, it inherits the + # owners of its parents. + if owners: + histogram_entry['owners'] = owners + + # If a suffix has an obsolete node, it's marked as obsolete for the + # specified reason, overwriting its group's obsoletion reason if the + # group itself was obsolete as well. + obsolete_reason = _GetObsoleteReason(suffix) + if not obsolete_reason: + obsolete_reason = _GetObsoleteReason(affected_histogram) + if not obsolete_reason: + obsolete_reason = group_obsolete_reason + + # If the suffix has an obsolete tag, all histograms it generates + # inherit it. + if obsolete_reason: + histogram_entry['obsolete'] = obsolete_reason + + _ProcessBaseHistogramAttribute(suffix, histogram_entry) + + except Error: + have_errors = True + + return have_errors + + +class TokenAssignment(object): + """Assignment of a Variant for each Token of histogram pattern. + + Attributes: + pairings: A token_name to Variant map. + """ + + def __init__(self, pairings): + self.pairings = pairings + + +def _GetTokenAssignments(tokens): + """Get all possible TokenAssignments for the listed tokens. + + Args: + tokens: The list of Tokens to create assignments for. + + Returns: + A list of TokenAssignments. + """ + token_keys = [token['key'] for token in tokens] + token_variants = [token['variants'] for token in tokens] + + return [ + TokenAssignment(pairings=dict(zip(token_keys, selected_variants))) + for selected_variants in itertools.product(*token_variants) + ] + + +def _GenerateNewHistogramsFromTokens(histogram_name, histograms_dict, + new_histograms_dict): + """For a histogram with tokens, generates new histograms and adds to dict. + + Args: + histogram_name: The name of the histogram. + histograms_dict: The dictionary of all histograms extracted from the tree. + new_histograms_dict: The dictionary of histograms to add newly generated + histograms to. + + Returns: + A boolean that is True if a generated histogram name already exists in the + |new_histograms_dict|. + """ + have_error = False + histogram_node = histograms_dict[histogram_name] + summary_text = histogram_node['summary'] + + # |token_assignments| contains all the cross-product combinations of token + # variants, representing all the possible histogram names that could be + # generated. + token_assignments = _GetTokenAssignments(histogram_node['tokens']) + + # Each |token_assignment| contains one of the cross-product combinations and + # corresponds to one new generated histogram. + for token_assignment in token_assignments: + new_obsolete_reason = '' + new_owners = [] + # Dictionaries of pairings used for string formatting of histogram name and + # summary. + token_name_pairings = {} + token_summary_pairings = {} + + for token_key, variant in token_assignment.pairings.items(): + token_name_pairings[token_key] = variant['name'] + token_summary_pairings[token_key] = variant['summary'] + + # If a variant has an obsolete reason, the new reason overwrites the + # obsolete reason of the original histogram. + if 'obsolete' in variant: + new_obsolete_reason = variant['obsolete'] + + # If a variant has owner(s), append to |new_owners|, overwriting the + # owners of the original histogram. + if 'owners' in variant: + new_owners += variant['owners'] + + # Replace token in histogram name with variant name. + new_histogram_name = histogram_name.format(**token_name_pairings) + # Replace token in summary with variant summary. + new_summary_text = summary_text.format(**token_summary_pairings) + + if new_histogram_name in new_histograms_dict: + logging.error( + "Duplicate histogram name %s generated. Please remove identical " + "variants in different tokens in %s." % + (new_histogram_name, histogram_name)) + have_error = True + continue + + new_histogram_node = dict(histogram_node, summary=new_summary_text) + # Do not copy the nodes to the generated histograms. + del new_histogram_node['tokens'] + + if new_obsolete_reason: + new_histogram_node['obsolete'] = new_obsolete_reason + + if new_owners: + new_histogram_node['owners'] = new_owners + + new_histograms_dict[new_histogram_name] = new_histogram_node + + return have_error + + +def _UpdateHistogramsWithTokens(histograms_dict): + """Processes histograms and combines with variants of tokens. + + Args: + histograms_dict: A dictionary of all the histograms extracted from the tree. + + Returns: + A tuple where the first element is the replacement histograms dictionary, + containing the original histograms without tokens and histograms + whose tokens are replaced by newly variant combinations. + The second element is a boolean is there is error. + """ + have_error = False + # Create new dict instead of modify in place because newly generated + # histograms will be added when iterating through |histograms_dict|. + new_histograms_dict = {} + for histogram_name, histogram_node in histograms_dict.items(): + if 'tokens' in histogram_node: + have_error = have_error or _GenerateNewHistogramsFromTokens( + histogram_name, histograms_dict, new_histograms_dict) + # For histograms without tokens, copy to new histograms dict. + else: + new_histograms_dict[histogram_name] = histogram_node + + return new_histograms_dict, have_error + + +def _GetTagSubTree(tree, tag, depth): + """Returns sub tree with tag element as a root. + + When no element with tag name is found or there are many of them + original tree is returned. + + Args: + tree: XML dom tree. + tag: Element's tag name. + depth: Defines how deep in the tree function should search for a match. + + Returns: + xml.dom.minidom.Node: Sub tree (matching criteria) or original one. + """ + entries = list(IterElementsWithTag(tree, tag, depth)) + if len(entries) == 1: + tree = entries[0] + return tree + + +def ExtractHistogramsFromDom(tree): + """Computes the histogram names and descriptions from the XML representation. + + Args: + tree: A DOM tree of XML content. + + Returns: + a tuple of (histograms, status) where histograms is a dictionary mapping + histogram names to dictionaries containing histogram descriptions and status + is a boolean indicating if errros were encountered in processing. + """ + _NormalizeAllAttributeValues(tree) + + enums_tree = _GetTagSubTree(tree, 'enums', 2) + histograms_tree = _GetTagSubTree(tree, 'histograms', 2) + histogram_suffixes_tree = _GetTagSubTree(tree, 'histogram_suffixes_list', 2) + enums, enum_errors = ExtractEnumsFromXmlTree(enums_tree) + histograms, histogram_errors = _ExtractHistogramsFromXmlTree( + histograms_tree, enums) + histograms, update_token_errors = _UpdateHistogramsWithTokens(histograms) + update_suffix_errors = _UpdateHistogramsWithSuffixes(histogram_suffixes_tree, + histograms) + + return histograms, (enum_errors or histogram_errors or update_suffix_errors + or update_token_errors) + + +def ExtractHistograms(filename): + """Loads histogram definitions from a disk file. + + Args: + filename: a file path to load data from. + + Returns: + a dictionary of histogram descriptions. + + Raises: + Error: if the file is not well-formatted. + """ + with open(filename, 'r') as f: + tree = xml.dom.minidom.parse(f) + histograms, had_errors = ExtractHistogramsFromDom(tree) + if had_errors: + logging.error('Error parsing %s', filename) + raise Error() + return histograms + + +def ExtractNames(histograms): + return sorted(histograms.keys()) + + +def ExtractObsoleteNames(histograms): + return sorted( + filter(lambda name: histograms[name].get("obsolete"), histograms.keys())) diff --git a/histograms/extract_histograms_test.py b/histograms/extract_histograms_test.py new file mode 100644 index 000000000000..4ce9dfc02353 --- /dev/null +++ b/histograms/extract_histograms_test.py @@ -0,0 +1,1012 @@ +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import logging +from parameterized import parameterized +import unittest +import xml.dom.minidom + +import extract_histograms +import histogram_configuration_model + +TEST_SUFFIX_OBSOLETION_XML_CONTENT = """ + + + + chrome-metrics-team@google.com + + Sample description. + + + + chrome-metrics-team@google.com + + Sample description. + + + + + + + + + + + + + This suffix group is obsolete + + + + + + + + This suffix is obsolete + + + + + + + This suffix group is obsolete + + This suffix is obsolete + + + + + + +""" + +TEST_BASE_HISTOGRAM_XML_CONTENT = """ + + + + chrome-metrics-team@google.com + + Base histogram. + + + + chrome-metrics-team@google.com + + Obsolete base histogram. + + + The whole related set of histograms is obsolete! + + + + chrome-metrics-team@google.com + + Not a base histogram: base attribute explicitly set to "false". + + + + chrome-metrics-team@google.com + + Not a base histogram: no base attribute specified. + + + + + + + + + This suffix is obsolete! + + + + + + + + + + + + + +""" + +TEST_HISTOGRAM_WITH_TOKENS = """ + + + + me@chromium.org + + This is a histogram for button of {Color} color and {Size} size. + + + + + Obsolete red + + + + green@chromium.org + + + + + + small@chromium.org + + Obsolete small + + + + + + + + +""" + +TEST_HISTOGRAM_WITH_VARIANTS = """ + + + + + + small@chromium.org + + Obsolete small + + + + + + + + me@chromium.org + + This is a histogram for button of {Color} color and {Size} size. + + + + + Obsolete red + + + + green@chromium.org + + + + + + +""" + +TEST_HISTOGRAM_TOKENS_DUPLICATE = """ + + + + me@chromium.org + + This is a histogram for button of {Color} color and {Size} size. + + + + + + + + + + + + + + + + +""" + +TEST_HISTOGRAM_VARIANTS_DUPLICATE = """ + + + + + + + + + + + + me@chromium.org + + This is a histogram for button of {Color} color and {Size} size. + + + + + + + + + + +""" + + +TEST_HISTOGRAM_WITH_MIXED_VARIANTS = """ + + + + + + + + + me@chromium.org + + This is a histogram for button of {Color} color and {Size} size. + + + + + Obsolete red + + + + green@chromium.org + + + + + + small@chromium.org + + Obsolete small + + + + + + +""" + +class ExtractHistogramsTest(unittest.TestCase): + + def testSuffixObsoletion(self): + histograms, had_errors = extract_histograms.ExtractHistogramsFromDom( + xml.dom.minidom.parseString(TEST_SUFFIX_OBSOLETION_XML_CONTENT)) + self.assertFalse(had_errors) + # Obsolete on suffixes doesn't affect the source histogram + self.assertNotIn('obsolete', histograms['Test.Test1']) + self.assertNotIn('obsolete', histograms['Test.Test2']) + + self.assertNotIn('obsolete', histograms['Test.Test1_NonObsolete1']) + self.assertNotIn('obsolete', histograms['Test.Test1_NonObsolete2']) + self.assertNotIn('obsolete', histograms['Test.Test2_NonObsolete1']) + self.assertNotIn('obsolete', histograms['Test.Test2_NonObsolete2']) + + self.assertIn('obsolete', histograms['Test.Test1_ObsoleteSuffixGroup1']) + self.assertIn('obsolete', histograms['Test.Test1_ObsoleteSuffixGroup2']) + + # Obsolete suffixes should apply to individual suffixes and not their group. + self.assertIn('obsolete', + histograms['Test.Test2_ObsoleteSuffixNonObsoleteGroup1']) + self.assertNotIn( + 'obsolete', histograms['Test.Test2_NonObsoleteSuffixNonObsoleteGroup2']) + self.assertEqual( + 'This suffix is obsolete', + histograms['Test.Test2_ObsoleteSuffixNonObsoleteGroup1']['obsolete']) + + # Obsolete suffix reasons should overwrite the suffix group's obsoletion + # reason. + self.assertIn('obsolete', + histograms['Test.Test2_ObsoleteSuffixObsoleteGroup1']) + self.assertIn('obsolete', + histograms['Test.Test2_NonObsoleteSuffixObsoleteGroup2']) + self.assertEqual( + 'This suffix is obsolete', + histograms['Test.Test2_ObsoleteSuffixObsoleteGroup1']['obsolete']) + self.assertEqual( + 'This suffix group is obsolete', + histograms['Test.Test2_NonObsoleteSuffixObsoleteGroup2']['obsolete']) + + def testBaseHistograms(self): + histograms, had_errors = extract_histograms.ExtractHistogramsFromDom( + xml.dom.minidom.parseString(TEST_BASE_HISTOGRAM_XML_CONTENT)) + self.assertFalse(had_errors) + # Base histograms are implicitly marked as obsolete. + self.assertIn('obsolete', histograms['Test.Base']) + self.assertIn('obsolete', histograms['Test.Base.Obsolete']) + + # Other histograms shouldn't be implicitly marked as obsolete. + self.assertNotIn('obsolete', histograms['Test.NotBase.Explicit']) + self.assertNotIn('obsolete', histograms['Test.NotBase.Implicit']) + + # Suffixes applied to base histograms shouldn't be marked as obsolete... + self.assertNotIn('obsolete', histograms['Test.Base.NonBaseSuffix']) + # ... unless the suffix is marked as obsolete, + self.assertIn('obsolete', histograms['Test.Base.ObsoleteSuffix']) + # ... or the suffix is a base suffix, + self.assertIn('obsolete', histograms['Test.Base.BaseSuffix']) + # ... or the base histogram is marked as obsolete, + self.assertIn('obsolete', histograms['Test.Base.Obsolete.BaseSuffix']) + self.assertIn('obsolete', histograms['Test.Base.Obsolete.NonBaseSuffix']) + self.assertIn('obsolete', histograms['Test.Base.Obsolete.ObsoleteSuffix']) + + # It should be possible to have multiple levels of suffixes for base + # histograms. + self.assertNotIn('obsolete', histograms['Test.Base.BaseSuffix.One']) + self.assertNotIn('obsolete', histograms['Test.Base.BaseSuffix.Two']) + self.assertNotIn('obsolete', histograms['Test.Base.NonBaseSuffix.One']) + self.assertNotIn('obsolete', histograms['Test.Base.NonBaseSuffix.Two']) + + def testExpiryFormat(self): + chrome_histogram_pattern = """ + + + + + SomeOne@google.com + Summary + + + + + +""" + chrome_histogram_correct_expiry_date = chrome_histogram_pattern.format( + 'expires_after="2211-11-22"') + _, had_errors = extract_histograms.ExtractHistogramsFromDom( + xml.dom.minidom.parseString(chrome_histogram_correct_expiry_date)) + self.assertFalse(had_errors) + + chrome_histogram_wrong_expiry_date_format = chrome_histogram_pattern.format( + 'expires_after="2211/11/22"') + _, had_errors = extract_histograms.ExtractHistogramsFromDom( + xml.dom.minidom.parseString(chrome_histogram_wrong_expiry_date_format)) + self.assertTrue(had_errors) + + chrome_histogram_wrong_expiry_date_value = chrome_histogram_pattern.format( + 'expires_after="2211-22-11"') + _, had_errors = extract_histograms.ExtractHistogramsFromDom( + xml.dom.minidom.parseString(chrome_histogram_wrong_expiry_date_value)) + self.assertTrue(had_errors) + + chrome_histogram_correct_expiry_milestone = chrome_histogram_pattern.format( + 'expires_after="M22"') + _, had_errors = extract_histograms.ExtractHistogramsFromDom( + xml.dom.minidom.parseString(chrome_histogram_correct_expiry_milestone)) + self.assertFalse(had_errors) + + chrome_histogram_wrong_expiry_milestone = chrome_histogram_pattern.format( + 'expires_after="22"') + _, had_errors = extract_histograms.ExtractHistogramsFromDom( + xml.dom.minidom.parseString(chrome_histogram_wrong_expiry_milestone)) + self.assertTrue(had_errors) + + chrome_histogram_wrong_expiry_milestone = chrome_histogram_pattern.format( + 'expires_after="MM22"') + _, had_errors = extract_histograms.ExtractHistogramsFromDom( + xml.dom.minidom.parseString(chrome_histogram_wrong_expiry_milestone)) + self.assertTrue(had_errors) + + chrome_histogram_no_expiry = chrome_histogram_pattern.format('') + _, had_errors = extract_histograms.ExtractHistogramsFromDom( + xml.dom.minidom.parseString(chrome_histogram_no_expiry)) + self.assertTrue(had_errors) + + def testExpiryDateExtraction(self): + chrome_histogram_pattern = """ + + + + + SomeOne@google.com + Summary + + + + + +""" + date_str = '2211-11-22' + chrome_histogram_correct_expiry_date = chrome_histogram_pattern.format( + 'expires_after="{}"'.format(date_str)) + histograms, _ = extract_histograms.ExtractHistogramsFromDom( + xml.dom.minidom.parseString(chrome_histogram_correct_expiry_date)) + histogram_content = histograms['Histogram.Name'] + self.assertIn('expires_after', histogram_content) + self.assertEqual(date_str, histogram_content['expires_after']) + + milestone_str = 'M22' + chrome_histogram_correct_expiry_milestone = chrome_histogram_pattern.format( + 'expires_after="{}"'.format(milestone_str)) + histograms, _ = extract_histograms.ExtractHistogramsFromDom( + xml.dom.minidom.parseString(chrome_histogram_correct_expiry_milestone)) + histogram_content = histograms['Histogram.Name'] + self.assertIn('expires_after', histogram_content) + self.assertEqual(milestone_str, histogram_content['expires_after']) + + chrome_histogram_no_expiry = chrome_histogram_pattern.format('') + histograms, _ = extract_histograms.ExtractHistogramsFromDom( + xml.dom.minidom.parseString(chrome_histogram_no_expiry)) + histogram_content = histograms['Histogram.Name'] + self.assertNotIn('expires_after', histogram_content) + + def testMultiParagraphSummary(self): + multiple_paragraph_pattern = xml.dom.minidom.parseString(""" + + + + chrome-metrics-team@google.com + + Sample description + Sample description. + + + + + chrome-metrics-team@google.com + + Multi-paragraph sample description UI>Browser. + Words. + + Still multi-paragraph sample description. + + + + Here. + + + + +""") + histograms, _ = extract_histograms._ExtractHistogramsFromXmlTree( + multiple_paragraph_pattern, {}) + self.assertEqual(histograms['MultiParagraphTest.Test1']['summary'], + 'Sample description Sample description.') + self.assertEqual( + histograms['MultiParagraphTest.Test2']['summary'], + 'Multi-paragraph sample description UI>Browser. Words.\n\n' + 'Still multi-paragraph sample description.\n\nHere.') + + def testComponentExtraction(self): + """Checks that components are successfully extracted from histograms.""" + histogram = xml.dom.minidom.parseString(""" + + + + histogram_owner@google.com + An ode to coffee. + Liquid>Hot + Caffeine + + + + + + + + + + +""") + histograms, _ = extract_histograms.ExtractHistogramsFromDom(histogram) + self.assertEqual(histograms['Coffee']['components'], + ['Liquid>Hot', 'Caffeine']) + self.assertEqual(histograms['Coffee.Dunkies']['components'], + ['Liquid>Hot', 'Caffeine']) + + def testNewHistogramWithoutSummary(self): + histogram_without_summary = xml.dom.minidom.parseString(""" + + + + person@chromium.org + + + +""") + _, have_errors = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_without_summary, {}) + self.assertTrue(have_errors) + + def testNewHistogramWithEmptySummary(self): + histogram_with_empty_summary = xml.dom.minidom.parseString(""" + + + + person@chromium.org + + + + +""") + _, have_errors = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_with_empty_summary, {}) + self.assertTrue(have_errors) + + def testNewHistogramWithoutEnumOrUnit(self): + histogram_without_enum_or_unit = xml.dom.minidom.parseString(""" + + + + chrome-metrics-team@google.com + This is a summary + + + +""") + _, have_errors = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_without_enum_or_unit, {}) + self.assertTrue(have_errors) + + def testNewHistogramWithEnumAndUnit(self): + histogram_with_enum_and_unit = xml.dom.minidom.parseString(""" + + + + chrome-metrics-team@google.com + This is a summary + + + +""") + _, have_errors = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_with_enum_and_unit, {}) + self.assertTrue(have_errors) + + def testEmptyEnum(self): + empty_enum = xml.dom.minidom.parseString(""" + + + + This is an empty enum + + + +""") + _, have_errors = extract_histograms.ExtractEnumsFromXmlTree(empty_enum) + self.assertTrue(have_errors) + + def testNewHistogramWithEnum(self): + histogram_with_enum = xml.dom.minidom.parseString(""" + + + + This is an example enum type + This is the first value. + This is the second value. + + + + + + chrome-metrics-team@google.com + This is a summary + + + +""") + _, have_errors = extract_histograms.ExtractHistogramsFromDom( + histogram_with_enum) + self.assertFalse(have_errors) + + def testEnumWithDuplicateValues(self): + bad_enum = xml.dom.minidom.parseString(""" + + + + This is the first value. + This is the second value. + + + +""") + _, have_errors = extract_histograms.ExtractEnumsFromXmlTree(bad_enum) + self.assertTrue(have_errors) + + def testEnumWithDuplicateLabels(self): + bad_enum = xml.dom.minidom.parseString(""" + + + + This is the first value. + This is the second value. + + + +""") + _, have_errors = extract_histograms.ExtractEnumsFromXmlTree(bad_enum) + self.assertTrue(have_errors) + + def testNewHistogramWithUnits(self): + histogram_with_units = xml.dom.minidom.parseString(""" + + + + chrome-metrics-team@google.com + This is a summary + + + +""") + _, have_errors = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_with_units, {}) + self.assertFalse(have_errors) + + def testNewHistogramWithEmptyOwnerTag(self): + histogram_with_empty_owner_tag = xml.dom.minidom.parseString(""" + + + + + This is a summary + + + +""") + _, have_errors = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_with_empty_owner_tag, {}) + self.assertTrue(have_errors) + + def testNewHistogramWithoutOwnerTag(self): + histogram_without_owner_tag = xml.dom.minidom.parseString(""" + + + + This is a summary + + + +""") + _, have_errors = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_without_owner_tag, {}) + self.assertTrue(have_errors) + + def testNewHistogramWithCommaSeparatedOwners(self): + histogram_with_comma_separated_owners = xml.dom.minidom.parseString(""" + + + + cait@chromium.org, paul@chromium.org + This is a summary + + + +""") + _, have_errors = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_with_comma_separated_owners, {}) + self.assertTrue(have_errors) + + def testNewHistogramWithInvalidOwner(self): + histogram_with_invalid_owner = xml.dom.minidom.parseString(""" + + + + sarah + This is a summary + + + +""") + _, have_errors = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_with_invalid_owner, {}) + self.assertTrue(have_errors) + + def testNewHistogramWithOwnerPlaceHolder(self): + histogram_with_owner_placeholder = xml.dom.minidom.parseString(""" + + + + Please list the metric's owners. Add more owner tags as needed. + + + + This is a summary + + + + + +""") + _, have_errors = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_with_owner_placeholder, {}) + self.assertFalse(have_errors) + + def testHistogramWithEscapeCharacters(self): + histogram_with_owner_placeholder = xml.dom.minidom.parseString(""" + + + + Please list the metric's owners. Add more owner tags as needed. + + This is a summary with & and " and ' + + + +""") + hists, have_errors = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_with_owner_placeholder, {}) + self.assertFalse(have_errors) + self.assertIn('Test.Histogram', hists) + self.assertIn('summary', hists['Test.Histogram']) + self.assertEqual('This is a summary with & and " and \'', + hists['Test.Histogram']['summary']) + + def testNewSuffixWithoutLabel(self): + suffix_without_label = xml.dom.minidom.parseString(""" + + + + + + + +""") + _, have_errors = extract_histograms.ExtractHistogramsFromDom( + suffix_without_label) + self.assertTrue(have_errors) + + def testNewSuffixWithLabel(self): + suffix_with_label = xml.dom.minidom.parseString(""" + + + + + + + +""") + have_errors = extract_histograms._UpdateHistogramsWithSuffixes( + suffix_with_label, {}) + self.assertFalse(have_errors) + + @parameterized.expand([ + ('InlineTokens', TEST_HISTOGRAM_WITH_TOKENS), + ('InlineTokenAndOutOfLineVariants', TEST_HISTOGRAM_WITH_VARIANTS), + ('MixedVariants', TEST_HISTOGRAM_WITH_MIXED_VARIANTS), + ]) + def testUpdateNameWithTokens(self, _, input_xml): + histogram_with_token = xml.dom.minidom.parseString(input_xml) + histograms_dict, _ = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_with_token, {}) + histograms_dict, _ = extract_histograms._UpdateHistogramsWithTokens( + histograms_dict) + self.assertIn('HistogramName.red.small', histograms_dict) + self.assertIn('HistogramName.green.small', histograms_dict) + self.assertIn('HistogramName.red.medium', histograms_dict) + self.assertIn('HistogramName.green.medium', histograms_dict) + self.assertIn('HistogramName.red.large', histograms_dict) + self.assertIn('HistogramName.green.large', histograms_dict) + self.assertIn('HistogramName.red', histograms_dict) + self.assertIn('HistogramName.green', histograms_dict) + self.assertNotIn('HistogramName{Color}{Size}', histograms_dict) + + # Make sure generated histograms do not have tokens. + self.assertNotIn('tokens', histograms_dict['HistogramName.red.small']) + self.assertNotIn('tokens', histograms_dict['HistogramName.green.large']) + + @parameterized.expand([ + ('InlineTokens', TEST_HISTOGRAM_WITH_TOKENS), + ('InlineTokenAndOutOfLineVariants', TEST_HISTOGRAM_WITH_VARIANTS), + ('MixedVariants', TEST_HISTOGRAM_WITH_MIXED_VARIANTS), + ]) + def testUpdateSummaryWithTokens(self, _, input_xml): + histogram_with_token = xml.dom.minidom.parseString(input_xml) + histograms_dict, _ = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_with_token, {}) + histograms_dict, _ = extract_histograms._UpdateHistogramsWithTokens( + histograms_dict) + # Use the variant's name to format the summary when the variant's summary + # attribute is omitted. + self.assertEqual( + 'This is a histogram for button of red color and small size.', + histograms_dict['HistogramName.red.small']['summary']) + self.assertEqual( + 'This is a histogram for button of green color and small size.', + histograms_dict['HistogramName.green.small']['summary']) + self.assertEqual( + 'This is a histogram for button of red color and medium size.', + histograms_dict['HistogramName.red.medium']['summary']) + self.assertEqual( + 'This is a histogram for button of green color and medium size.', + histograms_dict['HistogramName.green.medium']['summary']) + self.assertEqual( + 'This is a histogram for button of red color and large size.', + histograms_dict['HistogramName.red.large']['summary']) + self.assertEqual( + 'This is a histogram for button of green color and large size.', + histograms_dict['HistogramName.green.large']['summary']) + self.assertEqual( + 'This is a histogram for button of red color and all size.', + histograms_dict['HistogramName.red']['summary']) + self.assertEqual( + 'This is a histogram for button of green color and all size.', + histograms_dict['HistogramName.green']['summary']) + + @parameterized.expand([ + ('InlineTokens', TEST_HISTOGRAM_WITH_TOKENS), + ('InlineTokenAndOutOfLineVariants', TEST_HISTOGRAM_WITH_VARIANTS), + ('MixedVariants', TEST_HISTOGRAM_WITH_MIXED_VARIANTS), + ]) + def testUpdateWithTokenOwner(self, _, input_xml): + histogram_with_token = xml.dom.minidom.parseString(input_xml) + histograms_dict, _ = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_with_token, {}) + histograms_dict, _ = extract_histograms._UpdateHistogramsWithTokens( + histograms_dict) + + self.assertEqual(['small@chromium.org'], + histograms_dict['HistogramName.red.small']['owners']) + self.assertEqual(['me@chromium.org'], + histograms_dict['HistogramName.red.medium']['owners']) + self.assertEqual(['me@chromium.org'], + histograms_dict['HistogramName.red.large']['owners']) + self.assertEqual(['me@chromium.org'], + histograms_dict['HistogramName.red']['owners']) + self.assertEqual(['green@chromium.org', 'small@chromium.org'], + histograms_dict['HistogramName.green.small']['owners']) + self.assertEqual(['green@chromium.org'], + histograms_dict['HistogramName.green.medium']['owners']) + self.assertEqual(['green@chromium.org'], + histograms_dict['HistogramName.green.large']['owners']) + self.assertEqual(['green@chromium.org'], + histograms_dict['HistogramName.green']['owners']) + + @parameterized.expand([ + ('InlineTokens', TEST_HISTOGRAM_WITH_TOKENS), + ('InlineTokenAndOutOfLineVariants', TEST_HISTOGRAM_WITH_VARIANTS), + ('MixedVariants', TEST_HISTOGRAM_WITH_MIXED_VARIANTS), + ]) + def testUpdateWithTokenObsolete(self, _, input_xml): + histogram_with_token = xml.dom.minidom.parseString(input_xml) + histograms_dict, _ = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_with_token, {}) + histograms_dict, _ = extract_histograms._UpdateHistogramsWithTokens( + histograms_dict) + + # New histograms should inherit the obsolete reason of the last + # obsolete token by order of appearance. + self.assertEqual('Obsolete small', + histograms_dict['HistogramName.red.small']['obsolete']) + self.assertEqual('Obsolete red', + histograms_dict['HistogramName.red.medium']['obsolete']) + self.assertEqual('Obsolete red', + histograms_dict['HistogramName.red.large']['obsolete']) + self.assertEqual('Obsolete red', + histograms_dict['HistogramName.red']['obsolete']) + self.assertEqual('Obsolete small', + histograms_dict['HistogramName.green.small']['obsolete']) + self.assertNotIn('obsolete', histograms_dict['HistogramName.green.medium']) + self.assertNotIn('obsolete', histograms_dict['HistogramName.green.large']) + self.assertNotIn('obsolete', histograms_dict['HistogramName.green']) + + @parameterized.expand([ + ('InlineTokens', TEST_HISTOGRAM_TOKENS_DUPLICATE), + ('InlineTokenAndOutOfLineVariants', TEST_HISTOGRAM_VARIANTS_DUPLICATE), + ]) + def testUpdateNameDuplicateVariant(self, _, input_xml): + """Tests that if duplicate names are generated due to multiple tokens + having the same variant and empty string variant, an error is reported.""" + histogram_with_duplicate_variant = xml.dom.minidom.parseString(input_xml) + histograms_dict, _ = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_with_duplicate_variant, {}) + _, have_errors = extract_histograms._UpdateHistogramsWithTokens( + histograms_dict) + self.assertTrue(have_errors) + + def testVariantsNotExists(self): + histogram_without_corresponding_variants = xml.dom.minidom.parseString(""" + + + + me@chromium.org + + This is a histogram for button of {Color} color and {SizeNone} size. + + + + + + + + + + +""") + _, have_errors = extract_histograms._ExtractHistogramsFromXmlTree( + histogram_without_corresponding_variants, {}) + self.assertTrue(have_errors) + + def testSuffixCanExtendPatternedHistograms(self): + patterned_suffix = (""" + + + + chrome-metrics-team@google.com + + Sample description. + + + + + + + + + + + + + + + """) + # Only when the histogram is first extended by the token, can the + # histogram_suffixes find those affected histograms. + histograms_dict, had_errors = extract_histograms.ExtractHistogramsFromDom( + xml.dom.minidom.parseString(patterned_suffix)) + self.assertFalse(had_errors) + self.assertIn('Test.First.Found', histograms_dict) + self.assertIn('Test.Last.Found', histograms_dict) + + def testExtractImprovementDirection(self): + histogram_name = 'Histogram.With.InterpretationTag' + config = """ + + + + + + owner@chromium.org + {improvement_tag} + The improvement tag says a higher value is good! + + + + +""" + + improvement_tag_good = '' + improvement_tag_bad = 'HIGHER_IS_BETTER' + + config_good = config.format(histogram_name=histogram_name, + improvement_tag=improvement_tag_good) + config_bad = config.format(histogram_name=histogram_name, + improvement_tag=improvement_tag_bad) + + histograms_dict, had_errors = extract_histograms.ExtractHistogramsFromDom( + xml.dom.minidom.parseString(config_good)) + self.assertFalse(had_errors) + self.assertIn(histogram_name, histograms_dict) + self.assertIn('improvement', histograms_dict[histogram_name]) + self.assertEqual( + histogram_configuration_model.IMPROVEMENT_DIRECTION_HIGHER_IS_BETTER, + histograms_dict[histogram_name]['improvement']) + + histograms_dict, had_errors = extract_histograms.ExtractHistogramsFromDom( + xml.dom.minidom.parseString(config_bad)) + self.assertTrue(had_errors) + self.assertNotIn('improvement', histograms_dict[histogram_name]) + + +if __name__ == "__main__": + logging.basicConfig(level=logging.ERROR + 1) + unittest.main() diff --git a/histograms/find_unmapped_histograms.py b/histograms/find_unmapped_histograms.py new file mode 100755 index 000000000000..e687590e64d7 --- /dev/null +++ b/histograms/find_unmapped_histograms.py @@ -0,0 +1,448 @@ +#!/usr/bin/env python3 +# Copyright 2013 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Scans the Chromium source for histograms that are absent from histograms.xml. + +This is a heuristic scan, so a clean run of this script does not guarantee that +all histograms in the Chromium source are properly mapped. Notably, field +trials are entirely ignored by this script. + +""" + +from __future__ import print_function + +import hashlib +import logging +import optparse +import os +import re +import subprocess +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import path_util + +import extract_histograms +import histogram_paths +import merge_xml + + +C_FILENAME = re.compile(r""" + .* # Anything + \.(cc|cpp|h|mm) # Ending in these extensions + $ # End of string + """, re.VERBOSE) +TEST_FILENAME = re.compile(r""" + .* # Anything + test # The word test + \. # A literal '.' + """, re.VERBOSE) +NON_NEWLINE = re.compile(r'.+') +CPP_COMMENT = re.compile(r""" + \s* # Optional whitespace + (?: # Non-capturing group + //.* # C++-style comment + \n # Newline + | # or + /\* # Start C-style comment + (?: # Non-capturing group + (?!\*/) # Negative lookahead for comment end + [\s\S] # Any character including newline + )* # Repeated zero or more times + \*/ # End C-style comment + ) # End group + \s* # Optional whitespace + """, re.VERBOSE); +ADJACENT_C_STRING_REGEX = re.compile(r""" + (" # Opening quotation mark + [^"]*) # Literal string contents + " # Closing quotation mark + \s* # Any number of spaces + " # Another opening quotation mark + """, re.VERBOSE) +CONSTANT_REGEX = re.compile(r""" + (\w*::)* # Optional namespace(s) + k[A-Z] # Match a constant identifier: 'k' followed by an uppercase letter + \w* # Match the rest of the constant identifier + $ # Make sure there's only the identifier, nothing else + """, re.VERBOSE) +MACRO_STRING_CONCATENATION_REGEX = re.compile(r""" + \s* # Optional whitespace + ( # Group + ( # Nested group + "[^"]*" # Literal string + | # or + [a-zA-Z][a-zA-Z0-9_]+ # Macro constant name + ) # End of alternation + \s* # Optional whitespace + ){2,} # Group repeated 2 or more times + $ # End of string + """, re.VERBOSE) +HISTOGRAM_REGEX = re.compile(r""" + (\w* # Capture the whole macro name + UMA_HISTOGRAM_ # Match the shared prefix for standard UMA histogram macros + (\w*)) # Match the rest of the macro name, e.g. '_ENUMERATION' + \( # Match the opening parenthesis for the macro + \s* # Match any whitespace -- especially, any newlines + ([^,)]*) # Capture the first parameter to the macro + [,)] # Match the comma/paren that delineates the first parameter + """, re.VERBOSE) +# Note: Order matches histogram_macros.h. +STANDARD_HISTOGRAM_SUFFIXES = frozenset([ + 'ENUMERATION', + 'SCALED_ENUMERATION', + 'BOOLEAN', + 'EXACT_LINEAR', + 'PERCENTAGE', + 'SCALED_EXACT_LINEAR', + 'COUNTS_100', + 'COUNTS_1000', + 'COUNTS_10000', + 'COUNTS_100000', + 'COUNTS_1M', + 'COUNTS_10M', + 'CUSTOM_COUNTS', + 'TIMES', + 'MEDIUM_TIMES', + 'LONG_TIMES', + 'LONG_TIMES_100', + 'CUSTOM_TIMES', + 'CUSTOM_MICROSECONDS_TIMES', + 'MEMORY_KB', + 'MEMORY_MEDIUM_MB', + 'MEMORY_LARGE_MB', + 'SPARSE', + 'COUNTS', + 'MEMORY_MB', +]) +OTHER_STANDARD_HISTOGRAMS = frozenset([ + 'SCOPED_UMA_HISTOGRAM_TIMER', + 'SCOPED_UMA_HISTOGRAM_LONG_TIMER', + 'SCOPED_UMA_HISTOGRAM_TIMER_MICROS', +]) +# The following suffixes are not defined in //base/metrics but the first +# argument to the macro is the full name of the histogram as a literal string. +STANDARD_LIKE_SUFFIXES = frozenset([ + 'SCROLL_LATENCY_SHORT', + 'SCROLL_LATENCY_LONG', + 'TOUCH_TO_SCROLL_LATENCY', + 'LARGE_MEMORY_MB', + 'MEGABYTES_LINEAR', + 'LINEAR', + 'ALLOCATED_MEGABYTES', + 'CUSTOM_TIMES_MICROS', + 'TIME_IN_MINUTES_MONTH_RANGE', + 'TIMES_16H', + 'MINUTES', + 'MBYTES', + 'ASPECT_RATIO', + 'LOCATION_RESPONSE_TIMES', + 'LOCK_TIMES', + 'OOM_KILL_TIME_INTERVAL', +]) +OTHER_STANDARD_LIKE_HISTOGRAMS = frozenset(['SCOPED_BLINK_UMA_HISTOGRAM_TIMER']) + + +def RunGit(command): + """Run a git subcommand, returning its output.""" + # On Windows, use shell=True to get PATH interpretation. + command = ['git'] + command + logging.info(' '.join(command)) + shell = (os.name == 'nt') + proc = subprocess.Popen(command, shell=shell, stdout=subprocess.PIPE) + out = proc.communicate()[0].strip().decode('utf-8') + return out + + +class DirectoryNotFoundException(Exception): + """Base class to distinguish locally defined exceptions from standard ones.""" + def __init__(self, msg): + self.msg = msg + + def __str__(self): + return self.msg + + +def keepOnlyNewlines(match_object): + """Remove everything from a matched string except for the newline characters. + Takes a MatchObject argument so that it can be used directly as the repl + argument to re.sub(). + + Args: + match_object: A MatchObject referencing the string to be substituted, e.g. + ' // My histogram\n ' + + Returns: + The string with non-newlines removed, eg. + '\n' + """ + return NON_NEWLINE.sub('', match_object.group(0)) + + +def removeComments(string): + """Remove any comments from an expression, including leading and trailing + whitespace. This does not correctly ignore comments embedded in strings, but + that shouldn't matter for this script. Newlines in the removed text are + preserved so that line numbers don't change. + + Args: + string: The string to remove comments from, e.g. + ' // My histogram\n "My.Important.Counts" ' + + Returns: + The string with comments removed, e.g. '"\nMy.Important.Counts" ' + + """ + return CPP_COMMENT.sub(keepOnlyNewlines, string) + + +def collapseAdjacentCStrings(string): + """Collapses any adjacent C strings into a single string. + + Useful to re-combine strings that were split across multiple lines to satisfy + the 80-col restriction. + + Args: + string: The string to recombine, e.g. '"Foo"\n "bar"' + + Returns: + The collapsed string, e.g. "Foobar" for an input of '"Foo"\n "bar"' + """ + while True: + collapsed = ADJACENT_C_STRING_REGEX.sub(r'\1', string, count=1) + if collapsed == string: + return collapsed + + string = collapsed + + +def logNonLiteralHistogram(filename, histogram): + """Logs a statement warning about a non-literal histogram name found in the + Chromium source. + + Filters out known acceptable exceptions. + + Args: + filename: The filename for the file containing the histogram, e.g. + 'chrome/browser/memory_details.cc' + histogram: The expression that evaluates to the name of the histogram, e.g. + '"FakeHistogram" + variant' + + Returns: + None + """ + # Ignore histogram macros, which typically contain backslashes so that they + # can be formatted across lines. + if '\\' in histogram: + return + + # Ignore histogram names that have been pulled out into C++ constants. + if CONSTANT_REGEX.match(histogram): + return + + # A blank value wouldn't compile unless it was in a comment. + if histogram == '': + return + + # String concatenations involving macros are always constant. + if MACRO_STRING_CONCATENATION_REGEX.match(histogram): + return + + # TODO(isherman): This is still a little noisy... needs further filtering to + # reduce the noise. + logging.warning('%s contains non-literal histogram name <%s>', filename, + histogram) + + +def readChromiumHistograms(): + """Searches the Chromium source for all histogram names. + + Also prints warnings for any invocations of the UMA_HISTOGRAM_* macros with + names that might vary during a single run of the app. + + Returns: + A tuple of + a set containing any found literal histogram names, and + a set mapping histogram name to first filename:line where it was found + """ + logging.info('Scanning Chromium source for histograms...') + + # Use git grep to find all invocations of the UMA_HISTOGRAM_* macros. + # Examples: + # 'path/to/foo.cc:420: UMA_HISTOGRAM_COUNTS_100("FooGroup.FooName",' + # 'path/to/bar.cc:632: UMA_HISTOGRAM_ENUMERATION(' + locations = RunGit(['gs', 'UMA_HISTOGRAM']).split('\n') + all_filenames = set(location.split(':')[0] for location in locations); + filenames = [f for f in all_filenames + if C_FILENAME.match(f) and not TEST_FILENAME.match(f)] + + histograms = set() + location_map = dict() + unknown_macros = set() + all_suffixes = STANDARD_HISTOGRAM_SUFFIXES | STANDARD_LIKE_SUFFIXES + all_others = OTHER_STANDARD_HISTOGRAMS | OTHER_STANDARD_LIKE_HISTOGRAMS + for filename in filenames: + contents = '' + with open(filename, 'r') as f: + contents = removeComments(f.read()) + + # TODO(isherman): Look for histogram function calls like + # base::UmaHistogramSparse() in addition to macro invocations. + for match in HISTOGRAM_REGEX.finditer(contents): + line_number = contents[:match.start()].count('\n') + 1 + if (match.group(2) not in all_suffixes and + match.group(1) not in all_others): + full_macro_name = match.group(1) + if (full_macro_name not in unknown_macros): + logging.warning('%s:%d: Unknown macro name: <%s>' % + (filename, line_number, match.group(1))) + unknown_macros.add(full_macro_name) + + continue + + histogram = match.group(3).strip() + histogram = collapseAdjacentCStrings(histogram) + + # Must begin and end with a quotation mark. + if not histogram or histogram[0] != '"' or histogram[-1] != '"': + logNonLiteralHistogram(filename, histogram) + continue + + # Must not include any quotation marks other than at the beginning or end. + histogram_stripped = histogram.strip('"') + if '"' in histogram_stripped: + logNonLiteralHistogram(filename, histogram) + continue + + if histogram_stripped not in histograms: + histograms.add(histogram_stripped) + location_map[histogram_stripped] = '%s:%d' % (filename, line_number) + + return histograms, location_map + + +def readAllXmlHistograms(): + """Parses all histogram names defined in |histogram_paths.ALL_XMLS|. + + Returns: + A set containing the parsed histogram names. + """ + merged = merge_xml.MergeFiles(histogram_paths.ALL_XMLS) + histograms, _ = extract_histograms.ExtractHistogramsFromDom(merged) + return set(extract_histograms.ExtractNames(histograms)) + + +def readXmlHistograms(histograms_file_location): + """Parses all histogram names from |histograms_file_location|. + + Args: + histograms_file_location: The given histograms.xml file path. + + Returns: + A set containing the parsed histogram names. + """ + logging.info('Reading histograms from %s...' % histograms_file_location) + histograms = extract_histograms.ExtractHistograms(histograms_file_location) + return set(extract_histograms.ExtractNames(histograms)) + + +def hashHistogramName(name): + """Computes the hash of a histogram name. + + Args: + name: The string to hash (a histogram name). + + Returns: + Histogram hash as a string representing a hex number (with leading 0x). + """ + return '0x' + hashlib.md5(name.encode('utf-8')).hexdigest()[:16] + + +def output_csv(unmapped_histograms, location_map): + for histogram in sorted(unmapped_histograms): + parts = location_map[histogram].split(':') + assert len(parts) == 2 + (filename, line_number) = parts + print('%s,%s,%s,%s' % (filename, line_number, histogram, + hashHistogramName(histogram))) + + +def output_log(unmapped_histograms, location_map, verbose): + if len(unmapped_histograms): + logging.info('') + logging.info('') + logging.info('Histograms in Chromium but not in XML files:') + logging.info('-------------------------------------------------') + for histogram in sorted(unmapped_histograms): + if verbose: + logging.info('%s: %s - %s', location_map[histogram], histogram, + hashHistogramName(histogram)) + else: + logging.info(' %s - %s', histogram, hashHistogramName(histogram)) + else: + logging.info('Success! No unmapped histograms found.') + + +def main(): + # Find default paths. + default_root = path_util.GetInputFile('/') + default_extra_histograms_path = path_util.GetInputFile( + 'tools/metrics/histograms/histograms.xml') + + # Parse command line options + parser = optparse.OptionParser() + parser.add_option( + '--root-directory', dest='root_directory', default=default_root, + help='scan within DIRECTORY for histograms [optional, defaults to "%s"]' % + default_root, + metavar='DIRECTORY') + parser.add_option( + '--extra_histograms-file', dest='extra_histograms_file_location', + default=default_extra_histograms_path, + help='read additional histogram definitions from FILE (relative to ' + '--root-directory) [optional, defaults to "%s"]' % + default_extra_histograms_path, + metavar='FILE') + parser.add_option( + '--csv', action='store_true', dest='output_as_csv', default=False, + help=( + 'output as csv for ease of parsing ' + + '[optional, defaults to %default]')) + parser.add_option( + '--verbose', action='store_true', dest='verbose', default=False, + help=( + 'print file position information with histograms ' + + '[optional, defaults to %default]')) + + (options, args) = parser.parse_args() + if args: + parser.print_help() + sys.exit(1) + + logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO) + + try: + os.chdir(options.root_directory) + except EnvironmentError as e: + logging.error("Could not change to root directory: %s", e) + sys.exit(1) + chromium_histograms, location_map = readChromiumHistograms() + xml_histograms = readAllXmlHistograms() + unmapped_histograms = chromium_histograms - xml_histograms + + if os.path.isfile(options.extra_histograms_file_location): + xml_histograms2 = readXmlHistograms(options.extra_histograms_file_location) + unmapped_histograms -= xml_histograms2 + else: + logging.warning('No such file: %s', options.extra_histograms_file_location) + + if options.output_as_csv: + output_csv(unmapped_histograms, location_map) + else: + output_log(unmapped_histograms, location_map, options.verbose) + + +if __name__ == '__main__': + main() diff --git a/histograms/generate_expired_histograms_array.py b/histograms/generate_expired_histograms_array.py new file mode 100755 index 000000000000..ec5a5c591c4c --- /dev/null +++ b/histograms/generate_expired_histograms_array.py @@ -0,0 +1,313 @@ +#!/usr/bin/env python +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import argparse +import datetime +import hashlib +import logging +import os +import re +import sys + +import extract_histograms +import merge_xml +import histogram_paths + +_DATE_FILE_RE = re.compile(r".*MAJOR_BRANCH_DATE=(.+).*") +_CURRENT_MILESTONE_RE = re.compile(r"MAJOR=([0-9]{2,3})\n") +_MILESTONE_EXPIRY_RE = re.compile(r"\AM([0-9]{2,3})") + +_SCRIPT_NAME = "generate_expired_histograms_array.py" +_HASH_DATATYPE = "uint32_t" +_HEADER = """// Generated from {script_name}. Do not edit! + +#ifndef {include_guard} +#define {include_guard} + +#include + +namespace {namespace} {{ + +// Contains hashes of expired histograms. +const {hash_datatype} kExpiredHistogramsHashes[] = {{ +{hashes} +}}; + +const size_t kNumExpiredHistograms = {hashes_size}; + +}} // namespace {namespace} + +#endif // {include_guard} +""" + +_DATE_FORMAT_ERROR = "Unable to parse expiry {date} in histogram {name}." + +# Some extra "grace" time is given to expired histograms during which they +# will contintue to be collected and reported. The dashboard should ignore +# data from this period making the expiry noticeable and giving time for +# owners to re-enable them without any discontinuity of data. Releases are +# geneally 6 weeks apart but sometimes 7 so +2 to be safe. +_EXPIRE_GRACE_MSTONES = 2 +_EXPIRE_GRACE_WEEKS = _EXPIRE_GRACE_MSTONES * 6 + 2 + + +class Error(Exception): + pass + + +def _GetExpiredHistograms(histograms, base_date, current_milestone): + """Filters histograms to find expired ones if date format is used. + + Args: + histograms(Dict[str, Dict]): Histogram descriptions in the form + {name: content}. + base_date(datetime.date): A date to check expiry dates against. + + Returns: + List of strings with names of expired histograms. + + Raises: + Error if there is an expiry date that doesn't match expected format. + """ + expired_histograms_names = [] + for name, content in histograms.items(): + if "obsolete" in content or "expires_after" not in content: + continue + expiry_str = content["expires_after"] + if expiry_str == "never": + continue + + match = _MILESTONE_EXPIRY_RE.search(expiry_str) + if match: + # if there is match then expiry is in Chrome milsetone format. + if int(match.group(1)) < current_milestone: + expired_histograms_names.append(name) + else: + # if no match then we try the date format. + try: + expiry_date = datetime.datetime.strptime( + expiry_str, extract_histograms.EXPIRY_DATE_PATTERN).date() + except ValueError: + raise Error(_DATE_FORMAT_ERROR. + format(date=expiry_str, name=name)) + if expiry_date < base_date: + expired_histograms_names.append(name) + return expired_histograms_names + + +def _FindMatch(content, regex, group_num): + match_result = regex.search(content) + if not match_result: + raise Error("Unable to match {pattern} with provided content: {content}". + format(pattern=regex.pattern, content=content)) + return match_result.group(group_num) + + +def _GetBaseDate(content, regex): + """Fetches base date from |content| to compare expiry dates with. + + Args: + content: A string with the base date. + regex: A regular expression object that matches the base date. + + Returns: + A base date as datetime.date object. + + Raises: + Error if |content| doesn't match |regex| or the matched date has invalid + format. + """ + base_date_str = _FindMatch(content, regex, 1) + if not base_date_str: + return None + try: + base_date = datetime.datetime.strptime( + base_date_str, extract_histograms.EXPIRY_DATE_PATTERN).date() + return base_date + except ValueError: + raise Error("Unable to parse base date {date} from {content}.". + format(date=base_date_str, content=content)) + + +def _GetCurrentMilestone(content, regex): + """Extracts current milestone from |content|. + + Args: + content: A string with the version information. + regex: A regular expression object that matches milestone. + + Returns: + A milestone as int. + + Raises: + Error if |content| doesn't match |regex|. + """ + return int(_FindMatch(content, regex, 1)) + + +def _HashName(name): + """Returns hash for the given histogram |name|.""" + # This corresponds to HashMetricNameAs32Bits() in C++ + return "0x" + hashlib.md5(name.encode()).hexdigest()[:8] + + +def _GetHashToNameMap(histograms_names): + """Returns dictionary {hash: histogram_name}.""" + hash_to_name_map = dict() + for name in histograms_names: + hash_to_name_map[_HashName(name)] = name + return hash_to_name_map + + +def _GenerateHeaderFileContent(header_filename, namespace, + histograms_map): + """Generates header file content. + + Args: + header_filename: A filename of the generated header file. + namespace: A namespace to contain generated array. + histograms_map(Dict[str, str]): A dictionary {hash: histogram_name}. + + Returns: + String with the generated content. + """ + include_guard = re.sub("[^A-Z]", "_", header_filename.upper()) + "_" + if not histograms_map: + # Some platforms don't allow creating empty arrays. + histograms_map["0x00000000"] = "Dummy.Histogram" + hashes = "\n".join([ + " {hash}, // {name}".format(hash=value, name=histograms_map[value]) + for value in sorted(histograms_map.keys()) + ]) + return _HEADER.format( + script_name=_SCRIPT_NAME, + include_guard=include_guard, + namespace=namespace, + hash_datatype=_HASH_DATATYPE, + hashes=hashes, + hashes_size=len(histograms_map)) + + +def _GenerateFileContent(descriptions, branch_file_content, + mstone_file_content, header_filename, namespace): + """Generates header file containing array with hashes of expired histograms. + + Args: + descriptions: Combined histogram descriptions. + branch_file_content: Content of file with base date. + mstone_file_content: Content of file with milestone information. + header_filename: A filename of the generated header file. + namespace: A namespace to contain generated array. + + Raises: + Error if there is an error in input xml files. + """ + histograms, had_errors = ( + extract_histograms.ExtractHistogramsFromDom(descriptions)) + if had_errors: + raise Error("Error parsing inputs.") + base_date = _GetBaseDate(branch_file_content, _DATE_FILE_RE) + base_date -= datetime.timedelta(weeks=_EXPIRE_GRACE_WEEKS) + current_milestone = _GetCurrentMilestone( + mstone_file_content, _CURRENT_MILESTONE_RE) + current_milestone -= _EXPIRE_GRACE_MSTONES + + expired_histograms_names = _GetExpiredHistograms( + histograms, base_date, current_milestone) + expired_histograms_map = _GetHashToNameMap(expired_histograms_names) + header_file_content = _GenerateHeaderFileContent( + header_filename, namespace, expired_histograms_map) + return header_file_content + + +def CheckUnsyncedHistograms(inputs): + """Checks whether --inputs is in sync with |histogram_paths.ALL_XMLS|.""" + all_xmls_set = set(histogram_paths.ALL_XMLS) + inputs_set = set(os.path.abspath(input) for input in inputs) + to_add, to_remove = all_xmls_set - inputs_set, inputs_set - all_xmls_set + return to_add, to_remove + + +def _GenerateFile(arguments): + """Generates header file containing array with hashes of expired histograms. + + Args: + arguments: An object with the following attributes: + arguments.inputs: A list of xml files with histogram descriptions. + arguments.header_filename: A filename of the generated header file. + arguments.namespace: A namespace to contain generated array. + arguments.output_dir: A directory to put the generated file. + arguments.major_branch_date_filepath: File path for base date. + arguments.milestone_filepath: File path for milestone information. + """ + # Assert that the |--inputs| is the same as |histogram_paths.ALL_XMLS| to make + # sure we have the most updated list of histogram descriptions. Otherwise, + # inform the cl owner to update the --inputs. + to_add, to_remove = CheckUnsyncedHistograms(arguments.inputs) + assert len(to_add) == 0 and len(to_remove) == 0, ( + "The --inputs is not in sync with the most updated list of xmls. Please " + "update the inputs in " + "components/metrics/generate_expired_histograms_array.gni.\n" + " add: %s\n remove: %s" % (', '.join(to_add), ', '.join(to_remove))) + + descriptions = merge_xml.MergeFiles(arguments.inputs) + with open(arguments.major_branch_date_filepath, "r") as date_file: + branch_file_content = date_file.read() + with open(arguments.milestone_filepath, "r") as milestone_file: + mstone_file_content = milestone_file.read() + + header_file_content = _GenerateFileContent( + descriptions, branch_file_content, mstone_file_content, + arguments.header_filename, arguments.namespace) + + with open(os.path.join(arguments.output_dir, arguments.header_filename), + "w") as generated_file: + generated_file.write(header_file_content) + + +def _ParseArguments(): + """Defines and parses arguments from the command line.""" + arg_parser = argparse.ArgumentParser( + description="Generate array of expired histograms' hashes.") + arg_parser.add_argument( + "--output_dir", + "-o", + required=True, + help="Base directory to for generated files.") + arg_parser.add_argument( + "--header_filename", + "-H", + required=True, + help="File name of the generated header file.") + arg_parser.add_argument( + "--namespace", + "-n", + default="", + help="Namespace of the generated factory function (code will be in " + "the global namespace if this is omitted).") + arg_parser.add_argument( + "--major_branch_date_filepath", + "-d", + required=True, + help="A path to the file with the base date.") + arg_parser.add_argument( + "--milestone_filepath", + "-m", + required=True, + help="A path to the file with the milestone information.") + arg_parser.add_argument( + "inputs", + nargs="+", + help="Paths to .xml files with histogram descriptions.") + return arg_parser.parse_args() + + +def main(): + arguments = _ParseArguments() + _GenerateFile(arguments) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/histograms/generate_expired_histograms_array_unittest.py b/histograms/generate_expired_histograms_array_unittest.py new file mode 100755 index 000000000000..68375c278e4a --- /dev/null +++ b/histograms/generate_expired_histograms_array_unittest.py @@ -0,0 +1,207 @@ +#!/usr/bin/env python +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import datetime +import unittest +import xml.dom.minidom + +import generate_expired_histograms_array + +_EXPECTED_HEADER_FILE_CONTENT = ( +"""// Generated from generate_expired_histograms_array.py. Do not edit! + +#ifndef TEST_TEST_H_ +#define TEST_TEST_H_ + +#include + +namespace some_namespace {{ + +// Contains hashes of expired histograms. +{array_definition} + +}} // namespace some_namespace + +#endif // TEST_TEST_H_ +""") + +_EXPECTED_NON_EMPTY_ARRAY_DEFINITION = ( + """const uint32_t kExpiredHistogramsHashes[] = { + 0x0557fa92, // Back + 0x290eb683, // NewTab + 0x67d2f674, // Forward +}; + +const size_t kNumExpiredHistograms = 3;""") + +_EXPECTED_EMPTY_ARRAY_DEFINITION = ( + """const uint32_t kExpiredHistogramsHashes[] = { + 0x00000000, // Dummy.Histogram +}; + +const size_t kNumExpiredHistograms = 1;""") + + +class ExpiredHistogramsTest(unittest.TestCase): + + def testGetExpiredHistograms(self): + histograms = { + "FirstHistogram": { + "expires_after": "2000-10-01" + }, + "SecondHistogram": { + "expires_after": "2002-10-01" + }, + "ThirdHistogram": { + "expires_after": "2001-10-01" + }, + "FourthHistogram": {}, + "FifthHistogram": { + "obsolete": "Has expired.", + "expires_after": "2000-10-01" + }, + "SixthHistogram": { + "expires_after": "M22" + }, + "SeventhHistogram": { + "expires_after": "M60" + }, + "EigthHistogram": { + "expires_after": "M65" + }, + } + + base_date = datetime.date(2001, 10, 1) + current_milestone = 60 + + expired_histograms_names = ( + generate_expired_histograms_array._GetExpiredHistograms( + histograms, base_date, current_milestone)) + + self.assertEqual(2, len(expired_histograms_names)) + self.assertIn("FirstHistogram", expired_histograms_names) + self.assertIn("SixthHistogram", expired_histograms_names) + + def testBadExpiryDate(self): + histograms = { + "FirstHistogram": { + "expires_after": "2000-10-01" + }, + "SecondHistogram": { + "expires_after": "2000/10/01" + } + } + base_date = datetime.date(2000, 10, 1) + current_milestone = 60 + + with self.assertRaises(generate_expired_histograms_array.Error) as error: + generate_expired_histograms_array._GetExpiredHistograms( + histograms, base_date, current_milestone) + + self.assertEqual( + generate_expired_histograms_array._DATE_FORMAT_ERROR.format( + date="2000/10/01", name="SecondHistogram"), str(error.exception)) + + def testGetBaseDate(self): + regex = generate_expired_histograms_array._DATE_FILE_RE + + # Does not match the pattern. + content = "MAJOR_BRANCH__FAKE_DATE=2017-09-09" + with self.assertRaises(generate_expired_histograms_array.Error): + generate_expired_histograms_array._GetBaseDate(content, regex) + + # Has invalid format. + content = "MAJOR_BRANCH_DATE=2010/01/01" + with self.assertRaises(generate_expired_histograms_array.Error): + generate_expired_histograms_array._GetBaseDate(content, regex) + + # Has invalid format. + content = "MAJOR_BRANCH_DATE=2010-20-02" + with self.assertRaises(generate_expired_histograms_array.Error): + generate_expired_histograms_array._GetBaseDate(content, regex) + + # Has invalid date. + content = "MAJOR_BRANCH_DATE=2017-02-29" + with self.assertRaises(generate_expired_histograms_array.Error): + generate_expired_histograms_array._GetBaseDate(content, regex) + + content = "!!FOO!\nMAJOR_BRANCH_DATE=2010-01-01\n!FOO!!" + base_date = generate_expired_histograms_array._GetBaseDate(content, regex) + self.assertEqual(base_date, datetime.date(2010, 1, 1)) + + def testGenerateHeaderFileContent(self): + header_filename = "test/test.h" + namespace = "some_namespace" + + histogram_map = generate_expired_histograms_array._GetHashToNameMap( + ["Back", "NewTab", "Forward"]) + expected_histogram_map = { + "0x0557fa92": "Back", + "0x290eb683": "NewTab", + "0x67d2f674": "Forward", + } + self.assertEqual(expected_histogram_map, histogram_map) + + content = generate_expired_histograms_array._GenerateHeaderFileContent( + header_filename, namespace, histogram_map) + + self.assertEqual(_EXPECTED_HEADER_FILE_CONTENT.format( + array_definition=_EXPECTED_NON_EMPTY_ARRAY_DEFINITION), content) + + def testGenerateFileHistogramExpiryWithGrace(self): + histograms = xml.dom.minidom.parseString(""" + + + + me@chromium.org + + This is a summary. + + + + me@chromium.org + + This is a summary. + + + + me@chromium.org + + This is a summary. + + + + me@chromium.org + + This is a summary. + + + + +""") + + branch_data = "MAJOR_BRANCH_DATE=2011-01-01\n" + mstone_data = "MAJOR=63\n" + + content = generate_expired_histograms_array._GenerateFileContent( + histograms, branch_data, mstone_data, "header.h", "uma") + # These have expired but are within the 14-week/2-milestone grace period. + self.assertNotIn("FirstHistogram", content); + self.assertNotIn("FourthHistogram", content); + # These have expired and are outside of the grace period. + self.assertIn("SecondHistogram", content); + self.assertIn("ThirdHistogram", content); + + def testGenerateHeaderFileContentEmptyArray(self): + header_filename = "test/test.h" + namespace = "some_namespace" + content = generate_expired_histograms_array._GenerateHeaderFileContent( + header_filename, namespace, dict()) + self.assertEqual(_EXPECTED_HEADER_FILE_CONTENT.format( + array_definition=_EXPECTED_EMPTY_ARRAY_DEFINITION), content) + + +if __name__ == "__main__": + unittest.main() diff --git a/histograms/generate_flag_enums.py b/histograms/generate_flag_enums.py new file mode 100755 index 000000000000..b2d60d1c8d56 --- /dev/null +++ b/histograms/generate_flag_enums.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python3 +# Copyright 2022 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import argparse +import ctypes +import os +import re +import subprocess +import sys + +# Import the UKM codegen library for its hashing function, which is the same +# hashing function as used for flag names. +# TODO(crbug.com/1371214) Move `codegen.HashName()` somewhere common so we don't +# depend on 'ukm'. +sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, 'ukm')) +import codegen + +sys.path.append( + os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir, + os.pardir, 'python', 'google')) +import path_utils + +import pretty_print + + +def get_entries_from_unit_test(outdir: str) -> list[str]: + """Returns `` entries reported missing by the 'CheckHistograms' unittest. + """ + subprocess.run(['autoninja', '-C', outdir, 'unit_tests']) + run_test_command = subprocess.run([ + os.path.join(outdir, 'unit_tests'), + '--gtest_filter=AboutFlagsHistogramTest.CheckHistograms' + ], + capture_output=True, + text=True) + return re.findall(']*>', run_test_command.stdout) + + +def get_entries_from_feature_string(feature: str) -> list[str]: + """Generates entries for `feature`.""" + entries = [] + for suffix in ['disabled', 'enabled']: + label = f'{feature}:{suffix}' + value_64 = codegen.HashName(label) + value_32 = ctypes.c_int32(value_64).value + entries.append(f'') + return entries + + +def add_entries_to_xml(enums_xml: str, entries: list[str]) -> str: + """Adds each of `entries` to `enums_xml` and pretty prints it.""" + # Only add entries not already present. + entries = [entry for entry in entries if enums_xml.find(entry) == -1] + if entries: + find_text = '' + find_index = enums_xml.find(find_text) + if find_index == -1: + raise Exception(f'Missing {find_text} in enums.xml.') + find_index += len(find_text) + enums_xml = (enums_xml[:find_index] + ' '.join(entries) + + enums_xml[find_index:]) + return pretty_print.PrettyPrintEnums(enums_xml) + + +def main(): + """Generates and formats flag enums. + + Args: + outdir: (Optional) The build output directory, defaults to out/Default. + feature: (Optional) The feature associated with the flag added. If omitted, + will determine it by building and running `unit_tests + AboutFlagsHistogramTest.CheckHistograms`. If provided, there's no use also + providing `outdir`, as nothing needs to be built. + Example usage: + generate_flag_enums.py + generate_flag_enums.py out/Default + generate_flag_enums.py --feature MyFeatureString + """ + + parser = argparse.ArgumentParser() + parser.add_argument( + 'outdir', + nargs='?', + default='out/Default', + help='(Optional) The build output directory, defaults to out/Default.') + parser.add_argument( + '--feature', + help="(Optional) The feature associated with the flag added. If omitted, " + "will determine it by building and running `unit_tests " + "AboutFlagsHistogramTest.CheckHistograms`. If provided, there's no use " + "also providing `outdir`, as nothing needs to be built.") + args = parser.parse_args() + + entries = get_entries_from_feature_string(args.feature) \ + if args.feature else get_entries_from_unit_test(args.outdir) + + if not entries: + print("No missing enum entries found.") + return + + xml_dir = path_utils.ScriptDir() + xml_path = os.path.join(xml_dir, 'enums.xml') + + # Add any missing flag entries to enums.xml. + with open(xml_path, 'r+') as fd: + enums_xml = fd.read() + enums_xml = add_entries_to_xml(enums_xml, entries) + # Write back the entries to enums.xml. + fd.seek(0) + fd.write(enums_xml) + + # Print any changes. + subprocess.run(['git', 'diff', xml_path]) + + +if __name__ == '__main__': + main() diff --git a/histograms/generate_flag_enums_test.py b/histograms/generate_flag_enums_test.py new file mode 100755 index 000000000000..95e235c78376 --- /dev/null +++ b/histograms/generate_flag_enums_test.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python3 +# Copyright 2022 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest + +import generate_flag_enums + +ENUMS_XML_CONTAINING_XY = """ + + + + + + + + + + + + + + +""".strip() + +ENUMS_XML_CONTAINING_XYZ = """ + + + + + + + + + + + + + + + + +""".strip() + +ENTRIES_Z = [ + '', + '', +] +ENTRIES_X = [ + '', + '', +] + + +class GenerateFlagEnumsTest(unittest.TestCase): + def test_get_entries_from_feature_string(self): + entries = generate_flag_enums.get_entries_from_feature_string('x') + self.assertListEqual(entries, ENTRIES_X) + + def test_add_entries_to_xml(self): + # Should not add entries already in the enums xml. + output_xml = generate_flag_enums.add_entries_to_xml(ENUMS_XML_CONTAINING_XY, + ENTRIES_X) + self.assertMultiLineEqual(output_xml.strip(), ENUMS_XML_CONTAINING_XY) + + # Should add entries not in the enums xml and order them. + output_xml = generate_flag_enums.add_entries_to_xml(ENUMS_XML_CONTAINING_XY, + ENTRIES_Z) + self.assertMultiLineEqual(output_xml.strip(), ENUMS_XML_CONTAINING_XYZ) + + +if __name__ == '__main__': + unittest.main() diff --git a/histograms/histogram_configuration_model.py b/histograms/histogram_configuration_model.py new file mode 100644 index 000000000000..f5c0e662f64e --- /dev/null +++ b/histograms/histogram_configuration_model.py @@ -0,0 +1,301 @@ +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Model objects for histograms.xml contents.""" + +import os +import sys +import re + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import models + +_OBSOLETE_TYPE = models.TextNodeType('obsolete') +_OWNER_TYPE = models.TextNodeType('owner', single_line=True) +# If present, it's intentional that the histogram is currently expired and +# automation should not suggest for its implementation to be cleaned up. +_EXPIRED_INTENTIONALLY_TYPE = models.TextNodeType('expired_intentionally') +_COMPONENT_TYPE = models.TextNodeType('component', single_line=True) +_SUMMARY_TYPE = models.TextNodeType('summary', single_line=True) + +# A key for sorting XML nodes by the lower case of the value of |attribute|. +_LOWERCASE_FN = lambda attribute: (lambda node: node.get(attribute).lower()) + +# A key for sorting XML nodes by the value of |attribute|, cast as integer. +_INTEGER_FN = lambda attribute: (lambda node: int(node.get(attribute))) + +# A constant function as the sorting key for nodes whose orderings should be +# kept as given in the XML file within their parent node. +_KEEP_ORDER = lambda node: 1 + + +# A function for natural-sorting XML nodes, used for sorting by their +# name attribute in a way that humans understand. +# i.e. "suffix11" should come after "suffix2" +def _NaturalSortByName(node): + """Sort by name, ordering numbers in the way humans expect.""" + # See: https://blog.codinghorror.com/sorting-for-humans-natural-sort-order/ + name = node.get('name').lower() + convert = lambda text: int(text) if text.isdigit() else text + return [convert(c) for c in re.split('([0-9]+)', name)] + +# The following types are used for enums.xml. +_INT_TYPE = models.ObjectNodeType( + 'int', + attributes=[ + ('value', str, r'^[-1]|[0-9]+$'), + ('label', str, None), + ], + required_attributes=['value'], + text_attribute=True, + single_line=True, +) + +_ENUM_TYPE = models.ObjectNodeType( + 'enum', + attributes=[ + ('name', str, r'^[A-Za-z0-9_.]+$'), + ], + required_attributes=['name'], + alphabetization=[ + (_OBSOLETE_TYPE.tag, _KEEP_ORDER), + (_SUMMARY_TYPE.tag, _KEEP_ORDER), + (_INT_TYPE.tag, _INTEGER_FN('value')), + ], + extra_newlines=(1, 1, 1), + children=[ + models.ChildType(_OBSOLETE_TYPE.tag, _OBSOLETE_TYPE, multiple=False), + models.ChildType(_SUMMARY_TYPE.tag, _SUMMARY_TYPE, multiple=False), + models.ChildType(_INT_TYPE.tag, _INT_TYPE, multiple=True), + ]) + +_ENUMS_TYPE = models.ObjectNodeType( + 'enums', + alphabetization=[ + (_ENUM_TYPE.tag, _LOWERCASE_FN('name')), + ], + extra_newlines=(2, 1, 1), + indent=False, + children=[ + models.ChildType(_ENUM_TYPE.tag, _ENUM_TYPE, multiple=True), + ]) + +# The following types are used for histograms.xml. +IMPROVEMENT_DIRECTION_HIGHER_IS_BETTER = 'HIGHER_IS_BETTER' +IMPROVEMENT_DIRECTION_LOWER_IS_BETTER = 'LOWER_IS_BETTER' +IMPROVEMENT_DIRECTION_NEITHER_IS_BETTER = 'NEITHER_IS_BETTER' + +IMPROVEMENT_DIRECTION_VALID_VALUES = ( + IMPROVEMENT_DIRECTION_HIGHER_IS_BETTER, + IMPROVEMENT_DIRECTION_LOWER_IS_BETTER, + IMPROVEMENT_DIRECTION_NEITHER_IS_BETTER, +) + +_IMPROVEMENT_TYPE = models.ObjectNodeType( + 'improvement', + attributes=[ + ( + 'direction', + str, + r'^(' + '|'.join(IMPROVEMENT_DIRECTION_VALID_VALUES) + ')$', + ), + ], + required_attributes=['direction'], + text_attribute=False, + single_line=True, +) + +_VARIANT_TYPE = models.ObjectNodeType( + 'variant', + attributes=[ + ('name', str, None), + ('summary', str, None), + ], + required_attributes=['name'], + alphabetization=[ + (_OBSOLETE_TYPE.tag, _KEEP_ORDER), + (_OWNER_TYPE.tag, _KEEP_ORDER), + ], + children=[ + models.ChildType(_OBSOLETE_TYPE.tag, _OBSOLETE_TYPE, multiple=False), + models.ChildType(_OWNER_TYPE.tag, _OWNER_TYPE, multiple=True), + ], +) + +_VARIANTS_TYPE = models.ObjectNodeType( + 'variants', + attributes=[ + ('name', str, None), + ], + required_attributes=['name'], + alphabetization=[ + (_VARIANT_TYPE.tag, _NaturalSortByName) + ], + extra_newlines=(1, 1, 1), + children=[ + models.ChildType(_VARIANT_TYPE.tag, _VARIANT_TYPE, multiple=True), + ]) + +_TOKEN_TYPE = models.ObjectNodeType( + 'token', + attributes=[ + ('key', str, None), + ('variants', str, None) + ], + required_attributes=['key'], + alphabetization=[ + (_VARIANT_TYPE.tag, _NaturalSortByName) + ], + children=[ + models.ChildType(_VARIANT_TYPE.tag, _VARIANT_TYPE, multiple=True), + ]) + +_EXPIRED_AFTER_RE = ( + r'^$|^\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$|^M[0-9]+$|^never$' +) + +_HISTOGRAM_TYPE = models.ObjectNodeType( + 'histogram', + attributes=[ + ('base', str, r'^$|^true|false$'), + ('name', str, None), + ('enum', str, r'^[A-Za-z0-9._]*$'), + ('units', str, None), + ('expires_after', str, _EXPIRED_AFTER_RE), + ], + required_attributes=['name'], + alphabetization=[ + (_EXPIRED_INTENTIONALLY_TYPE.tag, _KEEP_ORDER), + (_OBSOLETE_TYPE.tag, _KEEP_ORDER), + (_OWNER_TYPE.tag, _KEEP_ORDER), + (_COMPONENT_TYPE.tag, _KEEP_ORDER), + (_IMPROVEMENT_TYPE.tag, _KEEP_ORDER), + (_SUMMARY_TYPE.tag, _KEEP_ORDER), + (_TOKEN_TYPE.tag, _KEEP_ORDER), + ], + extra_newlines=(1, 1, 1), + children=[ + models.ChildType(_EXPIRED_INTENTIONALLY_TYPE.tag, + _EXPIRED_INTENTIONALLY_TYPE, + multiple=False), + models.ChildType(_OBSOLETE_TYPE.tag, _OBSOLETE_TYPE, multiple=False), + models.ChildType(_OWNER_TYPE.tag, _OWNER_TYPE, multiple=True), + models.ChildType(_COMPONENT_TYPE.tag, _COMPONENT_TYPE, multiple=True), + models.ChildType(_SUMMARY_TYPE.tag, _SUMMARY_TYPE, multiple=False), + models.ChildType(_TOKEN_TYPE.tag, _TOKEN_TYPE, multiple=True), + models.ChildType(_IMPROVEMENT_TYPE.tag, + _IMPROVEMENT_TYPE, + multiple=False), + ]) + +_HISTOGRAMS_TYPE = models.ObjectNodeType( + 'histograms', + alphabetization=[ + (_VARIANTS_TYPE.tag, _LOWERCASE_FN('name')), + (_HISTOGRAM_TYPE.tag, _LOWERCASE_FN('name')), + ], + extra_newlines=(2, 1, 1), + indent=False, + children=[ + models.ChildType(_VARIANTS_TYPE.tag, _VARIANTS_TYPE, multiple=True), + models.ChildType(_HISTOGRAM_TYPE.tag, _HISTOGRAM_TYPE, multiple=True), + ]) + +_SUFFIX_TYPE = models.ObjectNodeType('suffix', + attributes=[ + ('base', str, r'^$|^true|false$'), + ('name', str, None), + ('label', str, None), + ], + required_attributes=['name'], + children=[ + models.ChildType(_OBSOLETE_TYPE.tag, + _OBSOLETE_TYPE, + multiple=False), + ]) + +_WITH_SUFFIX_TYPE = models.ObjectNodeType( + 'with-suffix', + attributes=[ + ('name', str, None), + ], + required_attributes=['name']) + +_AFFECTED_HISTOGRAM_TYPE = models.ObjectNodeType( + 'affected-histogram', + attributes=[ + ('name', str, None), + ], + required_attributes=['name'], + children=[ + models.ChildType(_OBSOLETE_TYPE.tag, _OBSOLETE_TYPE, multiple=False), + models.ChildType(_WITH_SUFFIX_TYPE.tag, + _WITH_SUFFIX_TYPE, multiple=True), + ]) + +_HISTOGRAM_SUFFIXES_TYPE = models.ObjectNodeType( + 'histogram_suffixes', + attributes=[ + ('name', str, r'^$|^[A-Za-z0-9_.]+$'), + ('separator', str, r'^$|^[\._]+$'), + ('ordering', str, r'^$|suffix|^prefix(,[0-9]+)?$'), + ], + required_attributes=['name', 'separator'], + alphabetization=[(_OBSOLETE_TYPE.tag, _KEEP_ORDER), + (_SUFFIX_TYPE.tag, _NaturalSortByName), + (_AFFECTED_HISTOGRAM_TYPE.tag, _LOWERCASE_FN('name'))], + extra_newlines=(1, 1, 1), + children=[ + models.ChildType(_OBSOLETE_TYPE.tag, _OBSOLETE_TYPE, multiple=False), + models.ChildType(_OWNER_TYPE.tag, _OWNER_TYPE, multiple=True), + models.ChildType(_SUFFIX_TYPE.tag, _SUFFIX_TYPE, multiple=True), + models.ChildType(_AFFECTED_HISTOGRAM_TYPE.tag, + _AFFECTED_HISTOGRAM_TYPE, multiple=True), + ]) + +_HISTOGRAM_SUFFIXES_LIST_TYPE = models.ObjectNodeType( + 'histogram_suffixes_list', + alphabetization=[(_HISTOGRAM_SUFFIXES_TYPE.tag, _LOWERCASE_FN('name'))], + extra_newlines=(2, 1, 1), + indent=False, + children=[ + models.ChildType(_HISTOGRAM_SUFFIXES_TYPE.tag, + _HISTOGRAM_SUFFIXES_TYPE, + multiple=True), + ]) + +_HISTOGRAM_CONFIGURATION_TYPE = models.ObjectNodeType( + 'histogram-configuration', + alphabetization=[ + (_ENUMS_TYPE.tag, _KEEP_ORDER), + (_HISTOGRAMS_TYPE.tag, _KEEP_ORDER), + (_HISTOGRAM_SUFFIXES_LIST_TYPE.tag, _KEEP_ORDER), + ], + extra_newlines=(2, 1, 1), + indent=False, + children=[ + models.ChildType(_ENUMS_TYPE.tag, _ENUMS_TYPE, multiple=False), + models.ChildType(_HISTOGRAMS_TYPE.tag, _HISTOGRAMS_TYPE, + multiple=False), + models.ChildType(_HISTOGRAM_SUFFIXES_LIST_TYPE.tag, + _HISTOGRAM_SUFFIXES_LIST_TYPE, + multiple=False), + ]) + +HISTOGRAM_CONFIGURATION_XML_TYPE = models.DocumentType( + _HISTOGRAM_CONFIGURATION_TYPE) + + +def PrettifyTree(input_tree): + """Parses the tree representation of the XML and return a + pretty-printed version. + + Args: + input_tree: A tree representation of the XML, which might take the + form of an ET tree or minidom doc. + + Returns: + A pretty-printed xml string, or None if the config contains errors. + """ + histograms = HISTOGRAM_CONFIGURATION_XML_TYPE.Parse(input_tree) + return HISTOGRAM_CONFIGURATION_XML_TYPE.PrettyPrint(histograms) diff --git a/histograms/histogram_configuration_model_test_enums.py b/histograms/histogram_configuration_model_test_enums.py new file mode 100644 index 000000000000..d57bb4c6b526 --- /dev/null +++ b/histograms/histogram_configuration_model_test_enums.py @@ -0,0 +1,309 @@ +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +from parameterized import parameterized +import sys +import unittest + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import etree_util + +import histogram_configuration_model + +PRETTY_XML_RIGHT_ENUM_ORDER = """ + + + + + + + + + + + Summary text + + + + + + + Obsolete text + + Summary text + Int text + + + + + + +""".strip() + +PRETTY_XML = """ + + + + + + + Obsolete text + + Summary text + Int text + + + + + + +""".strip() + +XML_WRONG_ATTRIBUTE_ORDER = """ + + + + + + + Obsolete text + + Summary text + Int text + + + + + + +""".strip() + +XML_WRONG_INDENT = """ + + + + + + + Obsolete text + + Summary text + Int text + + + + + + +""".strip() + +XML_WRONG_SINGLELINE = """ + + + + + + Obsolete text + + Summary text + + Int text + + + + + + +""".strip() + +XML_WRONG_LINEBREAK = """ + + + + + Obsolete text + + Summary text + + Int text + + + + + + + +""".strip() + +XML_WRONG_ENUM_ORDER = """ + + + + + + Summary text + + + + + + + Obsolete text + + Summary text + Int text + + + + + + + + + + + +""".strip() + +XML_WRONG_INT_ORDER = """ + + + + + + + Obsolete text + + Summary text + + Int text + + + + + +""".strip() + +XML_WRONG_CHILDREN_ORDER = """ + + + + + + Int text + + Summary text + + Obsolete text + + + + + + +""".strip() + +PRETTY_XML_WITH_COMMENTS = """ + + + + + + + + + + Summary text + + + + + + + + + + + + +""".strip() + +XML_WITH_COMMENTS_WRONG_INDENT_LINEBREAK = """ + + + + + + + + Summary text + + + + + + + + + + + + +""".strip() + + +class EnumXmlTest(unittest.TestCase): + @parameterized.expand([ + # Test prettify already pretty XML to verify the pretty-printed version + # is the same. + ('AlreadyPrettyXml', PRETTY_XML, PRETTY_XML), + ('AttributeOrder', XML_WRONG_ATTRIBUTE_ORDER, PRETTY_XML), + ('Indent', XML_WRONG_INDENT, PRETTY_XML), + ('SingleLine', XML_WRONG_SINGLELINE, PRETTY_XML), + ('LineBreak', XML_WRONG_LINEBREAK, PRETTY_XML), + # tags of enums should be sorted by the integer value + ('IntOrder', XML_WRONG_INT_ORDER, PRETTY_XML), + # The children of enums should be sorted in the order of , + # and + ('ChildrenOrder', XML_WRONG_CHILDREN_ORDER, PRETTY_XML), + + # Test prettify already pretty XML with right enum order to verify the + # pretty-printed version is the same. + ('AlreadyRightOrder', PRETTY_XML_RIGHT_ENUM_ORDER, + PRETTY_XML_RIGHT_ENUM_ORDER), + # Enums should be sorted in the order of their name attribute + ('EnumOrder', XML_WRONG_ENUM_ORDER, PRETTY_XML_RIGHT_ENUM_ORDER), + + # Test prettify already pretty XML with comments to verify the + # pretty-printed version is the same. + ('AlreadyPrettyWithComments', PRETTY_XML_WITH_COMMENTS, + PRETTY_XML_WITH_COMMENTS), + ('CommentsIndentsLineBreak', XML_WITH_COMMENTS_WRONG_INDENT_LINEBREAK, + PRETTY_XML_WITH_COMMENTS), + ]) + def testPrettify(self, _, input_xml, expected_xml): + result = histogram_configuration_model.PrettifyTree( + etree_util.ParseXMLString(input_xml)) + self.assertMultiLineEqual(result.strip(), expected_xml) + + @parameterized.expand([ + # The "name" attribute of only allows alphanumeric characters + # and punctuations "." and "_". It does not allow space. + ('BadEnumNameIllegalPunctuation', PRETTY_XML, 'Enum1', 'Enum:1'), + ('BadEnumNameWithSpace', PRETTY_XML, 'Enum1', 'Enum 1'), + ('BadIntValueNegative', PRETTY_XML, '1', '-5'), + ('BadIntValueNonNumeric', PRETTY_XML, '1', 'hello') + ]) + def testRegex(self, _, pretty_input_xml, original_string, bad_string): + BAD_XML = pretty_input_xml.replace(original_string, bad_string) + with self.assertRaises(ValueError) as context: + histogram_configuration_model.PrettifyTree( + etree_util.ParseXMLString(BAD_XML)) + self.assertIn(bad_string, str(context.exception)) + self.assertIn('does not match regex', str(context.exception)) + + +if __name__ == '__main__': + unittest.main() diff --git a/histograms/histogram_configuration_model_test_histograms.py b/histograms/histogram_configuration_model_test_histograms.py new file mode 100644 index 000000000000..43d79611d499 --- /dev/null +++ b/histograms/histogram_configuration_model_test_histograms.py @@ -0,0 +1,673 @@ +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +from parameterized import parameterized +import sys +import unittest + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import etree_util + +import histogram_configuration_model + +XML_RIGHT_ORDER = """ + + + + + + + + + Obsolete text + + owner1@chromium.org + owner2@chromium.org + Summary text + + + + + Obsolete text + + owner1@chromium.org + owner2@chromium.org + Summary text + + + + + Obsolete text + + owner1@chromium.org + owner2@chromium.org + Summary text + + + + + + + + + + + + + + + + + + + + + + + +""".strip() + +PRETTY_XML = """ + + + + + + + + + + + Obsolete text + + owner1@chromium.org + owner2@chromium.org + Component>Subcomponent + Summary text + + + + + + + + + + + + + + + + + +""".strip() + +XML_WRONG_ATTRIBUTE_ORDER = """ + + + + + + + + + + + Obsolete text + + owner1@chromium.org + owner2@chromium.org + Component>Subcomponent + Summary text + + + + + + + + + + + + + + + + + +""".strip() + +XML_MISSING_SEPARATOR = """ + + + + + + + + + + + Obsolete text + + owner1@chromium.org + owner2@chromium.org + Summary text + + + + + + + + + + + + + + + + + +""".strip() + +XML_WRONG_INDENT = """ + + + + + + + + + + + Obsolete text + + owner1@chromium.org + owner2@chromium.org + Component>Subcomponent + Summary text + + + + + + + + + + + + + + + + + +""".strip() + +XML_WRONG_SINGLELINE = """ + + + + + + + + + + Obsolete text + + owner1@chromium.org + + owner2@chromium.org + + Component>Subcomponent + + + Summary text + + + + + + + + + + + + + + + + + + +""".strip() + +XML_WRONG_LINEBREAK = """ + + + + + + + + + Obsolete text + + owner1@chromium.org + owner2@chromium.org + Component>Subcomponent + Summary text + + + + + + + + + + + + + + + +""".strip() + +XML_WRONG_CHILDREN_ORDER = """ + + + + + + + + + + + Obsolete text + + Summary text + owner1@chromium.org + Component>Subcomponent + owner2@chromium.org + + + + + + + + + + + + + + + + + +""".strip() + +XML_WRONG_ORDER = """ + + + + + + + + + Obsolete text + + owner1@chromium.org + owner2@chromium.org + Summary text + + + + + Obsolete text + + owner1@chromium.org + owner2@chromium.org + Summary text + + + + + Obsolete text + + owner1@chromium.org + owner2@chromium.org + Summary text + + + + + + + + + + + + + + + + + + + + + + + +""".strip() + +PRETTY_XML_WITH_TOKEN = """ + + + + + + + + + + + Deprecated. Replaced by Provider2. + + + + + + + + Obsolete text + + me@google.com + + The length of time taken by {version} of {content} provider's synchronous + pass. + + + + + + Obsolete variant + + you@google.com + + + + + + + + + +""".strip() + +XML_WRONG_VARIANT_CHILDREN_ORDER = """ + + + + + + + + + + + Deprecated. Replaced by Provider2. + + + + + + + + Obsolete text + + me@google.com + + The length of time taken by {version} of {content} provider's synchronous + pass. + + + + + you@google.com + + Obsolete variant + + + + + + + + + + +""".strip() + +XML_WRONG_VARIANT_ORDER = """ + + + + + + + + + + + + Deprecated. Replaced by Provider2. + + + + + + + Obsolete text + + me@google.com + + The length of time taken by {version} of {content} provider's synchronous + pass. + + + + + + Obsolete variant + + you@google.com + + + + + + + + + +""".strip() + +XML_WRONG_HISTOGRAM_VARIANTS_ORDER = """ + + + + + + + + + Obsolete text + + me@google.com + + The length of time taken by {version} of {content} provider's synchronous + pass. + + + + + + Obsolete variant + + you@google.com + + + + + + + + + + + Deprecated. Replaced by Provider2. + + + + + + + + +""".strip() + + +class HistogramXmlTest(unittest.TestCase): + @parameterized.expand([ + # Test prettify already pretty XML to verify the pretty-printed version + # is the same. + ('AlreadyPrettyXml', PRETTY_XML, PRETTY_XML), + ('AttributeOrder', XML_WRONG_ATTRIBUTE_ORDER, PRETTY_XML), + ('Indent', XML_WRONG_INDENT, PRETTY_XML), + ('SingleLine', XML_WRONG_SINGLELINE, PRETTY_XML), + ('LineBreak', XML_WRONG_LINEBREAK, PRETTY_XML), + + # Test prettify already pretty XML with right order to verify the + # pretty-printed version is the same. + ('AlreadyPrettyXmlRightOrder', XML_RIGHT_ORDER, XML_RIGHT_ORDER), + ('HistogramAndSuffixOrder', XML_WRONG_ORDER, XML_RIGHT_ORDER), + ('ChildrenOrder', XML_WRONG_CHILDREN_ORDER, PRETTY_XML), + ]) + def testPrettify(self, _, input_xml, expected_xml): + result = histogram_configuration_model.PrettifyTree( + etree_util.ParseXMLString(input_xml)) + self.assertMultiLineEqual(result.strip(), expected_xml) + + def testMissingRequiredAttribute(self): + with self.assertRaises(Exception) as context: + histogram_configuration_model.PrettifyTree( + etree_util.ParseXMLString(XML_MISSING_SEPARATOR)) + self.assertIn('separator', str(context.exception)) + self.assertIn('Missing attribute', str(context.exception)) + + @parameterized.expand([ + # The "base" attribute of only allows + # "true", "True", "false" or "False" + ('BadSuffixBaseBoolean', XML_RIGHT_ORDER, 'true', 'yes'), + + # The "expires-after" attribute of only allows: + # Date given in the format YYYY-{M, MM}-{D, DD}, + # Milestone given in the format e.g. M81 + # or "never" or "Never" + ('BadExpiresAfterDate', PRETTY_XML, '2019-11-02', 'Nov 2019'), + ('BadExpiresAfterDateSeparator', PRETTY_XML, '2019-11-02', '2019/11/02'), + ('BadExpiresAfterMilestone', XML_RIGHT_ORDER, 'M85', 'Milestone 85'), + ('BadExpiresAfterNever', XML_RIGHT_ORDER, 'never', 'NEVER'), + ('BadExpiresAfterOtherIllegalWords', XML_RIGHT_ORDER, 'never', 'hello'), + + # The "enum" attribute of only allows alphanumeric characters + # and punctuations "." and "_". It does not allow space. + ('BadEnumNameIllegalPunctuation', XML_RIGHT_ORDER, 'enum1', 'enum:1'), + ('BadEnumNameWithSpace', XML_RIGHT_ORDER, 'enum1', 'enum 1'), + + # The "ordering" attribute of only allow + # "suffix", "prefix" or "prefix," followed by a non-negative integer + ('BadOrderingIllegalPunctuation', XML_RIGHT_ORDER, 'prefix,2', 'prefix-2' + ), + ('BadOrderingNonNumber', XML_RIGHT_ORDER, 'prefix,2', 'prefix,two'), + ]) + def testRegex(self, _, pretty_input_xml, original_string, bad_string): + BAD_XML = pretty_input_xml.replace(original_string, bad_string) + with self.assertRaises(ValueError) as context: + histogram_configuration_model.PrettifyTree( + etree_util.ParseXMLString(BAD_XML)) + self.assertIn(bad_string, str(context.exception)) + self.assertIn('does not match regex', str(context.exception)) + + @parameterized.expand([ + # Test prettify already pretty XML to verify the pretty-printed version + # is the same. + ('AlreadyPrettyXml', PRETTY_XML_WITH_TOKEN, PRETTY_XML_WITH_TOKEN), + ('ChildrenOrder', XML_WRONG_VARIANT_CHILDREN_ORDER, + PRETTY_XML_WITH_TOKEN), + ('VariantOrder', XML_WRONG_VARIANT_ORDER, PRETTY_XML_WITH_TOKEN), + ('HistogramVariantsOrder', XML_WRONG_HISTOGRAM_VARIANTS_ORDER, + PRETTY_XML_WITH_TOKEN), + ]) + def testTokenPrettify(self, _, input_xml, expected_xml): + self.maxDiff = None + result = histogram_configuration_model.PrettifyTree( + etree_util.ParseXMLString(input_xml)) + self.assertMultiLineEqual(result.strip(), expected_xml) + + def testIndividualTagParsing_improvement(self): + """Tests that has the right format and can be parsed.""" + + improvement_tag_good = '' + improvement_tag_bad = ' HIGHER_IS_BETTER' + config = """ + + + + + + owner1@chromium.org + {improvement_tag} + The improvement tag says higher value is good! + + + + +""" + + config_good = config.format(improvement_tag=improvement_tag_good) + config_bad = config.format(improvement_tag=improvement_tag_bad) + + result = histogram_configuration_model.PrettifyTree( + etree_util.ParseXMLString(config_good)) + self.assertMultiLineEqual(result.strip(), config_good.strip()) + + with self.assertRaisesRegex(ValueError, + 'direction "" does not match regex'): + histogram_configuration_model.PrettifyTree( + etree_util.ParseXMLString(config_bad)) + + +if __name__ == '__main__': + unittest.main() diff --git a/histograms/histogram_ownership.py b/histograms/histogram_ownership.py new file mode 100755 index 000000000000..f3755a51ad1a --- /dev/null +++ b/histograms/histogram_ownership.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python +# Copyright 2014 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""A simple tool to go through histograms.xml and print out the owners for +histograms. +""" + +from __future__ import print_function + +import os +import sys +from xml.etree import ElementTree as ET + +import extract_histograms +import histogram_paths +import merge_xml + +sys.path.append(os.path.join(os.path.dirname(__file__), 'common')) +import path_util + + +def PrintOwners(root): + assert root.tag == 'histogram-configuration' + root_children = root.getchildren() + histograms = None + for node in root_children: + if node.tag == 'histograms': + histograms = node + break + assert histograms != None + + for histogram in histograms.getchildren(): + if histogram.tag != 'histogram': + continue + + name = histogram.attrib['name'] + owners = [] + obsolete = False + for node in histogram.getchildren(): + if node.tag == 'obsolete': + obsolete = True + continue + if node.tag != 'owner': + continue + if node.text == extract_histograms.OWNER_PLACEHOLDER: + continue + owners.append(node.text) + + if not obsolete: + if owners: + print(name, ' '.join(owners)) + else: + print(name, 'NO_OWNER') + + +def main(): + """Prints the owners of histograms in a specific file or of all histograms. + + Args: + argv[1]: Optional argument that is the relative path to a specific + histograms.xml. + + Example usage to print owners of metadata/Accessibility/histograms.xml: + python histogram_ownership.py metadata/Accessibility/histograms.xml + + Example usage to print owners of all histograms: + python histogram_ownership.py + """ + if len(sys.argv) == 1: + merged_xml_string = merge_xml.MergeFiles( + histogram_paths.ALL_XMLS, should_expand_owners=True).toxml() + root = ET.fromstring(merged_xml_string) + else: + rel_path = path_util.GetInputFile( + os.path.join('tools', 'metrics', 'histograms', sys.argv[1])) + if not os.path.exists(rel_path): + raise ValueError("A histograms.xml file does not exist in %s" % rel_path) + + tree = ET.parse(rel_path) + root = tree.getroot() + + PrintOwners(root) + + +if __name__ == '__main__': + main() diff --git a/histograms/histogram_paths.py b/histograms/histogram_paths.py new file mode 100755 index 000000000000..dd5d399577a9 --- /dev/null +++ b/histograms/histogram_paths.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Paths to description XML files in this directory.""" + +import os +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import path_util + + +def _FindHistogramsXmlFiles(): + """Gets a list relative path to all histograms xmls under metadata/.""" + files = [] + for dir_name, _, file_list in os.walk(PATH_TO_METADATA_DIR): + for filename in file_list: + if (filename == 'histograms.xml' + or filename == 'histogram_suffixes_list.xml'): + # Compute the relative path of the histograms xml file. + file_path = os.path.relpath(os.path.join(dir_name, filename), + PATH_TO_METADATA_DIR) + files.append( + os.path.join('tools/metrics/histograms/metadata', + file_path).replace(os.sep, '/').lower()) + return sorted(files) + + +ENUMS_XML_RELATIVE = 'tools/metrics/histograms/enums.xml' +# The absolute path to the metadata folder. +PATH_TO_METADATA_DIR = path_util.GetInputFile( + 'tools/metrics/histograms/metadata') +# In the middle state, histogram paths include both the large histograms.xml +# file as well as the split up files. +# TODO: Improve on the current design to avoid calling `os.walk()` at the time +# of module import. +HISTOGRAMS_XMLS_RELATIVE = (['tools/metrics/histograms/histograms.xml'] + + _FindHistogramsXmlFiles()) +ALL_XMLS_RELATIVE = [ENUMS_XML_RELATIVE] + HISTOGRAMS_XMLS_RELATIVE + +HISTOGRAMS_PREFIX_LIST = [ + os.path.basename(os.path.dirname(f)) for f in HISTOGRAMS_XMLS_RELATIVE +] + +ENUMS_XML = path_util.GetInputFile(ENUMS_XML_RELATIVE) +UKM_XML = path_util.GetInputFile('tools/metrics/ukm/ukm.xml') +HISTOGRAMS_XMLS = [path_util.GetInputFile(f) for f in HISTOGRAMS_XMLS_RELATIVE] +ALL_XMLS = [path_util.GetInputFile(f) for f in ALL_XMLS_RELATIVE] + +ALL_TEST_XMLS_RELATIVE = [ + 'tools/metrics/histograms/test_data/enums.xml', + 'tools/metrics/histograms/test_data/histograms.xml', + 'tools/metrics/histograms/test_data/histogram_suffixes_list.xml', + 'tools/metrics/histograms/test_data/ukm.xml', +] +ALL_TEST_XMLS = [path_util.GetInputFile(f) for f in ALL_TEST_XMLS_RELATIVE] +(TEST_ENUMS_XML, TEST_HISTOGRAMS_XML, TEST_SUFFIXES_XML, + TEST_UKM_XML) = ALL_TEST_XMLS + +TEST_XML_WITH_COMPONENTS_RELATIVE = ( + 'tools/metrics/histograms/test_data/components/histograms.xml') +TEST_XML_WITH_COMPONENTS = path_util.GetInputFile( + TEST_XML_WITH_COMPONENTS_RELATIVE) + +# The path to the `histogram_index` file. +HISTOGRAMS_INDEX = path_util.GetInputFile( + 'tools/metrics/histograms/histograms_index.txt') + + +def main(): + with open(HISTOGRAMS_INDEX, 'w+') as f: + # Force all OSes to use '/' as the separator. + f.write(''.join([ + path.replace(os.sep, '/') + '\n' for path in HISTOGRAMS_XMLS_RELATIVE + ])) + + +if __name__ == '__main__': + # Update the `histograms_index` file whenever histograms paths are updated. + # This file records all currently existing histograms.xml paths. + main() diff --git a/histograms/histograms.xml b/histograms/histograms.xml new file mode 100644 index 000000000000..062b6a84d20a --- /dev/null +++ b/histograms/histograms.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/histograms/histograms_index.txt b/histograms/histograms_index.txt new file mode 100644 index 000000000000..e11b40209763 --- /dev/null +++ b/histograms/histograms_index.txt @@ -0,0 +1,154 @@ +tools/metrics/histograms/histograms.xml +tools/metrics/histograms/metadata/accessibility/histograms.xml +tools/metrics/histograms/metadata/account_manager/histograms.xml +tools/metrics/histograms/metadata/android/histograms.xml +tools/metrics/histograms/metadata/apps/histograms.xml +tools/metrics/histograms/metadata/arc/histograms.xml +tools/metrics/histograms/metadata/ash/histograms.xml +tools/metrics/histograms/metadata/ash_clipboard/histograms.xml +tools/metrics/histograms/metadata/assistant/histograms.xml +tools/metrics/histograms/metadata/auth/histograms.xml +tools/metrics/histograms/metadata/auto/histograms.xml +tools/metrics/histograms/metadata/autofill/histograms.xml +tools/metrics/histograms/metadata/background/histograms.xml +tools/metrics/histograms/metadata/blink/histograms.xml +tools/metrics/histograms/metadata/bluetooth/histograms.xml +tools/metrics/histograms/metadata/bookmarks/histograms.xml +tools/metrics/histograms/metadata/borealis/histograms.xml +tools/metrics/histograms/metadata/browser/histograms.xml +tools/metrics/histograms/metadata/browsing_topics/histograms.xml +tools/metrics/histograms/metadata/bruschetta/histograms.xml +tools/metrics/histograms/metadata/chrome/histograms.xml +tools/metrics/histograms/metadata/chromeos/histograms.xml +tools/metrics/histograms/metadata/chromeos_hps/histograms.xml +tools/metrics/histograms/metadata/chromeos_settings/histograms.xml +tools/metrics/histograms/metadata/commerce/histograms.xml +tools/metrics/histograms/metadata/companion/histograms.xml +tools/metrics/histograms/metadata/compositing/histograms.xml +tools/metrics/histograms/metadata/content/histograms.xml +tools/metrics/histograms/metadata/content_creation/histograms.xml +tools/metrics/histograms/metadata/cookie/histograms.xml +tools/metrics/histograms/metadata/cras/histograms.xml +tools/metrics/histograms/metadata/cros/histograms.xml +tools/metrics/histograms/metadata/cros_audio/histograms.xml +tools/metrics/histograms/metadata/cros_ml/histograms.xml +tools/metrics/histograms/metadata/cross_device/histograms.xml +tools/metrics/histograms/metadata/crostini/histograms.xml +tools/metrics/histograms/metadata/cryptohome/histograms.xml +tools/metrics/histograms/metadata/custom_tabs/histograms.xml +tools/metrics/histograms/metadata/data/histograms.xml +tools/metrics/histograms/metadata/dev/histograms.xml +tools/metrics/histograms/metadata/diagnostics/histograms.xml +tools/metrics/histograms/metadata/direct/histograms.xml +tools/metrics/histograms/metadata/disk/histograms.xml +tools/metrics/histograms/metadata/download/histograms.xml +tools/metrics/histograms/metadata/enterprise/histograms.xml +tools/metrics/histograms/metadata/event/histograms.xml +tools/metrics/histograms/metadata/extensions/histograms.xml +tools/metrics/histograms/metadata/families/histograms.xml +tools/metrics/histograms/metadata/fastpair/histograms.xml +tools/metrics/histograms/metadata/feature_engagement/histograms.xml +tools/metrics/histograms/metadata/file/histograms.xml +tools/metrics/histograms/metadata/fingerprint/histograms.xml +tools/metrics/histograms/metadata/game_mode/histograms.xml +tools/metrics/histograms/metadata/gcm/histograms.xml +tools/metrics/histograms/metadata/geolocation/histograms.xml +tools/metrics/histograms/metadata/google/histograms.xml +tools/metrics/histograms/metadata/gpu/histograms.xml +tools/metrics/histograms/metadata/hang_watcher/histograms.xml +tools/metrics/histograms/metadata/help_app/histograms.xml +tools/metrics/histograms/metadata/histogram_suffixes_list.xml +tools/metrics/histograms/metadata/history/histograms.xml +tools/metrics/histograms/metadata/holding_space/histograms.xml +tools/metrics/histograms/metadata/image/histograms.xml +tools/metrics/histograms/metadata/input/histograms.xml +tools/metrics/histograms/metadata/installer/histograms.xml +tools/metrics/histograms/metadata/interstitial/histograms.xml +tools/metrics/histograms/metadata/invalidation/histograms.xml +tools/metrics/histograms/metadata/ios/histograms.xml +tools/metrics/histograms/metadata/kerberos/histograms.xml +tools/metrics/histograms/metadata/kiosk/histograms.xml +tools/metrics/histograms/metadata/language/histograms.xml +tools/metrics/histograms/metadata/leveldb_proto/histograms.xml +tools/metrics/histograms/metadata/local/histograms.xml +tools/metrics/histograms/metadata/login/histograms.xml +tools/metrics/histograms/metadata/media/histograms.xml +tools/metrics/histograms/metadata/memory/histograms.xml +tools/metrics/histograms/metadata/mobile/histograms.xml +tools/metrics/histograms/metadata/na_cl/histograms.xml +tools/metrics/histograms/metadata/navigation/histograms.xml +tools/metrics/histograms/metadata/nearby/histograms.xml +tools/metrics/histograms/metadata/net/histograms.xml +tools/metrics/histograms/metadata/network/histograms.xml +tools/metrics/histograms/metadata/new_tab_page/histograms.xml +tools/metrics/histograms/metadata/notifications/histograms.xml +tools/metrics/histograms/metadata/offline/histograms.xml +tools/metrics/histograms/metadata/omnibox/histograms.xml +tools/metrics/histograms/metadata/oobe/histograms.xml +tools/metrics/histograms/metadata/optimization/histograms.xml +tools/metrics/histograms/metadata/others/histograms.xml +tools/metrics/histograms/metadata/page/histograms.xml +tools/metrics/histograms/metadata/password/histograms.xml +tools/metrics/histograms/metadata/payment/histograms.xml +tools/metrics/histograms/metadata/pcscan/histograms.xml +tools/metrics/histograms/metadata/pdf/histograms.xml +tools/metrics/histograms/metadata/performance_controls/histograms.xml +tools/metrics/histograms/metadata/performance_manager/histograms.xml +tools/metrics/histograms/metadata/permissions/histograms.xml +tools/metrics/histograms/metadata/phonehub/histograms.xml +tools/metrics/histograms/metadata/platform/histograms.xml +tools/metrics/histograms/metadata/plugin/histograms.xml +tools/metrics/histograms/metadata/plugin_vm/histograms.xml +tools/metrics/histograms/metadata/power/histograms.xml +tools/metrics/histograms/metadata/prefetch/histograms.xml +tools/metrics/histograms/metadata/preloading/histograms.xml +tools/metrics/histograms/metadata/print/histograms.xml +tools/metrics/histograms/metadata/printing/histograms.xml +tools/metrics/histograms/metadata/privacy/histograms.xml +tools/metrics/histograms/metadata/privacy_budget/histograms.xml +tools/metrics/histograms/metadata/profile/histograms.xml +tools/metrics/histograms/metadata/quick_answers/histograms.xml +tools/metrics/histograms/metadata/quickoffice/histograms.xml +tools/metrics/histograms/metadata/quota/histograms.xml +tools/metrics/histograms/metadata/renderer/histograms.xml +tools/metrics/histograms/metadata/renderer4/histograms.xml +tools/metrics/histograms/metadata/safe_browsing/histograms.xml +tools/metrics/histograms/metadata/sb_client/histograms.xml +tools/metrics/histograms/metadata/scanning/histograms.xml +tools/metrics/histograms/metadata/scheduler/histograms.xml +tools/metrics/histograms/metadata/search/histograms.xml +tools/metrics/histograms/metadata/security/histograms.xml +tools/metrics/histograms/metadata/segmentation_platform/histograms.xml +tools/metrics/histograms/metadata/service/histograms.xml +tools/metrics/histograms/metadata/session/histograms.xml +tools/metrics/histograms/metadata/settings/histograms.xml +tools/metrics/histograms/metadata/sharing/histograms.xml +tools/metrics/histograms/metadata/side_search/histograms.xml +tools/metrics/histograms/metadata/signin/histograms.xml +tools/metrics/histograms/metadata/simple/histograms.xml +tools/metrics/histograms/metadata/software/histograms.xml +tools/metrics/histograms/metadata/stability/histograms.xml +tools/metrics/histograms/metadata/start_surface/histograms.xml +tools/metrics/histograms/metadata/startup/histograms.xml +tools/metrics/histograms/metadata/storage/histograms.xml +tools/metrics/histograms/metadata/subresource/histograms.xml +tools/metrics/histograms/metadata/sync/histograms.xml +tools/metrics/histograms/metadata/system/histograms.xml +tools/metrics/histograms/metadata/tab/histograms.xml +tools/metrics/histograms/metadata/translate/histograms.xml +tools/metrics/histograms/metadata/ukm/histograms.xml +tools/metrics/histograms/metadata/uma/histograms.xml +tools/metrics/histograms/metadata/update_engine/histograms.xml +tools/metrics/histograms/metadata/v8/histograms.xml +tools/metrics/histograms/metadata/variations/histograms.xml +tools/metrics/histograms/metadata/video_tutorials/histograms.xml +tools/metrics/histograms/metadata/views/histograms.xml +tools/metrics/histograms/metadata/web_apk/histograms.xml +tools/metrics/histograms/metadata/web_audio/histograms.xml +tools/metrics/histograms/metadata/web_core/histograms.xml +tools/metrics/histograms/metadata/web_rtc/histograms.xml +tools/metrics/histograms/metadata/webapps/histograms.xml +tools/metrics/histograms/metadata/webauthn/histograms.xml +tools/metrics/histograms/metadata/weblayer/histograms.xml +tools/metrics/histograms/metadata/windows/histograms.xml +tools/metrics/histograms/metadata/xr/histograms.xml diff --git a/histograms/merge_xml.py b/histograms/merge_xml.py new file mode 100755 index 000000000000..ccba445508e9 --- /dev/null +++ b/histograms/merge_xml.py @@ -0,0 +1,271 @@ +#!/usr/bin/env python +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""A script to merge multiple source xml files into a single histograms.xml.""" + +import argparse +import os +import sys +import xml.dom.minidom + +import expand_owners +import extract_histograms +import histogram_configuration_model +import histogram_paths +import populate_enums + + +def GetElementsByTagName(trees, tag, depth=2): + """Gets all elements with the specified tag from a set of DOM trees. + + Args: + trees: A list of DOM trees. + tag: The tag of the elements to find. + depth: The depth in the trees by which a match should be found. + + Returns: + A list of DOM nodes with the specified tag. + """ + iterator = extract_histograms.IterElementsWithTag + return list(e for t in trees for e in iterator(t, tag, depth)) + + +def GetEnumsNodes(doc, trees): + """Gets all enums from a set of DOM trees. + + If trees contain ukm events, populates a list of ints to the + "UkmEventNameHash" enum where each value is a ukm event name hash truncated + to 31 bits and each label is the corresponding event name. + + Args: + doc: The document to create the node in. + trees: A list of DOM trees. + + Returns: + A list of enums DOM nodes. + """ + enums_list = GetElementsByTagName(trees, 'enums') + ukm_events = GetElementsByTagName( + GetElementsByTagName(trees, 'ukm-configuration'), 'event') + # Early return if there are no ukm events provided. MergeFiles have callers + # that do not pass ukm events so, in that case, we don't need to iterate + # through the enum list. + if not ukm_events: + return enums_list + for enums in enums_list: + populate_enums.PopulateEnumsWithUkmEvents(doc, enums, ukm_events) + return enums_list + + +def CombineHistogramsSorted(doc, trees): + """Sorts histograms related nodes by name and returns the combined nodes. + + This function sorts nodes including , and + . Then it returns one that contains the + sorted and nodes and the other + node containing all nodes. + + Args: + doc: The document to create the node in. + trees: A list of DOM trees. + + Returns: + A list containing the combined node and the combined + node. + """ + # Create the combined tag. + combined_histograms = doc.createElement('histograms') + + def SortByLowerCaseName(node): + return node.getAttribute('name').lower() + + variants_nodes = GetElementsByTagName(trees, 'variants', depth=3) + sorted_variants = sorted(variants_nodes, key=SortByLowerCaseName) + + histogram_nodes = GetElementsByTagName(trees, 'histogram', depth=3) + sorted_histograms = sorted(histogram_nodes, key=SortByLowerCaseName) + + for variants in sorted_variants: + # Use unsafe version of `appendChild` function here because the safe one + # takes a lot longer (10000x) to append all children. The unsafe version + # is ok here because: + # 1. the node to be appended is a clean node. + # 2. The unsafe version only does fewer checks but not changing any + # behavior and it's documented to be usable if performance matters. + # See https://github.com/python/cpython/blob/2.7/Lib/xml/dom/minidom.py#L276. + xml.dom.minidom._append_child(combined_histograms, variants) + + for histogram in sorted_histograms: + xml.dom.minidom._append_child(combined_histograms, histogram) + + # Create the combined tag. + combined_histogram_suffixes_list = doc.createElement( + 'histogram_suffixes_list') + + histogram_suffixes_nodes = GetElementsByTagName(trees, + 'histogram_suffixes', + depth=3) + sorted_histogram_suffixes = sorted(histogram_suffixes_nodes, + key=SortByLowerCaseName) + + for histogram_suffixes in sorted_histogram_suffixes: + xml.dom.minidom._append_child(combined_histogram_suffixes_list, + histogram_suffixes) + + return [combined_histograms, combined_histogram_suffixes_list] + + +def MakeNodeWithChildren(doc, tag, children): + """Creates a DOM node with specified tag and child nodes. + + Args: + doc: The document to create the node in. + tag: The tag to create the node with. + children: A list of DOM nodes to add as children. + + Returns: + A DOM node. + """ + node = doc.createElement(tag) + for child in children: + node.appendChild(child) + return node + + +def MergeTrees(trees, should_expand_owners): + """Merges a list of histograms.xml DOM trees. + + Args: + trees: A list of histograms.xml DOM trees. + should_expand_owners: Whether we want to expand owners for histograms. + + Returns: + A merged DOM tree. + """ + doc = xml.dom.minidom.Document() + doc.appendChild( + MakeNodeWithChildren( + doc, + 'histogram-configuration', + # This can result in the merged document having multiple and + # similar sections, but scripts ignore these anyway. + GetEnumsNodes(doc, trees) + + # Sort the and nodes by name and + # return the combined nodes. + CombineHistogramsSorted(doc, trees))) + # After using the unsafe version of appendChild, we see a regression when + # pretty-printing the merged |doc|. This might because the unsafe appendChild + # doesn't build indexes for later lookup. And thus, we need to convert the + # merged |doc| to a xml string and convert it back to force it to build + # indexes for the merged |doc|. + doc = xml.dom.minidom.parseString(doc.toxml().encode('utf-8')) + # Only perform fancy operations after |doc| becomes stable. This helps improve + # the runtime performance. + if should_expand_owners: + for histograms in doc.getElementsByTagName('histograms'): + expand_owners.ExpandHistogramsOWNERS(histograms) + return doc + + +def _GetComponentFromMetadataFile(filename): + """Extracts a component string from the metadata file. + + Args: + filename: The filename for the metadata file. + + Returns: + The component name as a string. + """ + with open(filename, 'r') as f: + for line in f.read().splitlines(): + # component line looks like '[\s+]component: "name"[\s+]'. + line = line.strip() + if line.startswith('component:'): + component = line[line.find('"') + 1:-1] + if component: + return component + return None + + +def _AddComponentFromMetadataFile(tree, filename): + """Adds the component from the metadata file to the DOM tree. + + Args: + tree: A histogram.xml DOM tree. + filename: The name of the metadata file. + + Returns: + The updated tree with the component (optionally) added. + """ + component = _GetComponentFromMetadataFile(filename) + if component: + histograms = tree.getElementsByTagName('histograms') + if histograms: + iter_matches = extract_histograms.IterElementsWithTag + for histogram in iter_matches(histograms[0], 'histogram'): + expand_owners.AddHistogramComponent(histogram, component) + return tree + + +def _BuildDOMTreeWithComponentMetadata(filename_or_file): + """Builds the DOM tree for the given file. + + Args: + filename_or_file: The string filename or the file handle for histograms.xml. + + Returns: + The histograms.xml DOM tree with (optional) component metadata. + """ + tree = xml.dom.minidom.parse(filename_or_file) + if isinstance(filename_or_file, str): + # If we can find a metadata file in the same directory, we try to extract + # a component from it. + metadata_filename = os.path.join(os.path.dirname(filename_or_file), + 'DIR_METADATA') + if os.path.exists(metadata_filename): + return _AddComponentFromMetadataFile(tree, metadata_filename) + return tree + + +def MergeFiles(filenames=[], files=[], should_expand_owners=False): + """Merges a list of histograms.xml files. + + Args: + filenames: A list of histograms.xml filenames. + files: A list of histograms.xml file-like objects. + should_expand_owners: Whether we want to expand owners. By default, it's + false because most of the callers don't care about the owners for each + metadata. + + Returns: + A merged DOM tree. + """ + # minidom.parse() takes both files and filenames: + all_files = files + filenames + trees = [_BuildDOMTreeWithComponentMetadata(f) for f in all_files] + return MergeTrees(trees, should_expand_owners) + + +def PrettyPrintMergedFiles(filenames=[], files=[]): + return histogram_configuration_model.PrettifyTree( + MergeFiles(filenames=filenames, files=files, should_expand_owners=True)) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--output', required=True) + args = parser.parse_args() + with open(args.output, 'w', encoding='utf-8', newline='\n') as f: + # This is run by + # https://source.chromium.org/chromium/chromium/src/+/main:tools/metrics/BUILD.gn;drc=573e48309695102dec2da1e8f806c18c3200d414;l=5 + # to send the merged histograms.xml to the server side. Providing |UKM_XML| + # here is not to merge ukm.xml but to populate `UkmEventNameHash` enum + # values. + f.write(PrettyPrintMergedFiles( + histogram_paths.ALL_XMLS + [histogram_paths.UKM_XML])) + + +if __name__ == '__main__': + main() diff --git a/histograms/merge_xml_test.py b/histograms/merge_xml_test.py new file mode 100644 index 000000000000..3dab9df3b524 --- /dev/null +++ b/histograms/merge_xml_test.py @@ -0,0 +1,267 @@ +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest +import xml.dom.minidom + +import expand_owners +import histogram_paths +import merge_xml + + +class MergeXmlTest(unittest.TestCase): + + def testMergeFiles(self): + """Checks that enums.xml and histograms.xml can merge successfully.""" + merged = merge_xml.PrettyPrintMergedFiles([ + histogram_paths.TEST_ENUMS_XML, histogram_paths.TEST_HISTOGRAMS_XML, + histogram_paths.TEST_SUFFIXES_XML + ]) + # If ukm.xml is not provided, there is no need to populate the + # UkmEventNameHash enum. + expected_merged_xml = """ + + + + + + + + + + + + + + + + + Placeholder enum. The values are UKM event name hashes truncated to 31 bits. + This gets populated by the GetEnumsNodes function in merge_xml.py when + producing the merged XML file. + + + + + + + + + + + + + + person@chromium.org + Component + Foo + + + + + Obsolete message + + uma@chromium.org + A enum histogram. + + + + + Removed 6/2020. + + person@chromium.org + Summary 2 + + + + + Removed 6/2020. + + person@chromium.org + Summary 2 + + + + + + + + + + + + + + + + + + + + +""" + self.maxDiff = None + self.assertMultiLineEqual(expected_merged_xml.strip(), merged.strip()) + + def testMergeFiles_WithXmlEvents(self): + """Checks that the UkmEventNameHash enum is populated correctly. + + If ukm.xml is provided, populate a list of ints to the UkmEventNameHash enum + where each value is a truncated hash of the event name and each label is the + corresponding event name, with obsolete label when applicable. + """ + merged = merge_xml.PrettyPrintMergedFiles(histogram_paths.ALL_TEST_XMLS) + expected_merged_xml = """ + + + + + + + + + + + + + + + + + Placeholder enum. The values are UKM event name hashes truncated to 31 bits. + This gets populated by the GetEnumsNodes function in merge_xml.py when + producing the merged XML file. + + + + + + + + + + + + + + + + + + person@chromium.org + Component + Foo + + + + + Obsolete message + + uma@chromium.org + A enum histogram. + + + + + Removed 6/2020. + + person@chromium.org + Summary 2 + + + + + Removed 6/2020. + + person@chromium.org + Summary 2 + + + + + + + + + + + + + + + + + + + + +""" + self.maxDiff = None + self.assertMultiLineEqual(expected_merged_xml.strip(), merged.strip()) + + + def testMergeFiles_InvalidPrimaryOwner(self): + histograms_without_valid_first_owner = xml.dom.minidom.parseString(""" + + + + + culprit@evil.com + I like coffee. + + + + +""") + + with self.assertRaisesRegex( + expand_owners.Error, + 'The histogram Caffeination must have a valid primary owner, i.e. a ' + 'Googler with an @google.com or @chromium.org email address. Please ' + 'manually update the histogram with a valid primary owner.'): + merge_xml.MergeTrees([histograms_without_valid_first_owner], + should_expand_owners=True) + + def testMergeFiles_WithComponentMetadata(self): + merged = merge_xml.PrettyPrintMergedFiles( + [histogram_paths.TEST_XML_WITH_COMPONENTS_RELATIVE]) + expected_merged_xml = """ + + + + + + person@chromium.org + team-alias@chromium.org + Test>Component + Summary 2 + + + + uma@chromium.org + team-alias@chromium.org + First>Component + Test>Component + A enum histogram. + + + + + + + +""" + self.assertMultiLineEqual(expected_merged_xml.strip(), merged.strip()) + + +if __name__ == '__main__': + unittest.main() diff --git a/histograms/metadata/METRIC_REVIEWER_OWNERS b/histograms/metadata/METRIC_REVIEWER_OWNERS new file mode 100644 index 000000000000..0ad29ae7e30f --- /dev/null +++ b/histograms/metadata/METRIC_REVIEWER_OWNERS @@ -0,0 +1,423 @@ +# accessibility +evliu@google.com +# account_manager +sinhak@chromium.org +# android +ender@google.com +mthiesse@chromium.org +andzaytsev@google.com +ckitagawa@chromium.org +sinansahin@google.com +mvanouwerkerk@chromium.org +jinsukkim@chromium.org +# apps +nancylingwang@chromium.org +tby@chromium.org +yulunwu@chromium.org +# arc +mhasank@chromium.org +batoon@google.com +# ash_clipboard +ckincaid@chromium.org +dmblack@google.com +# ash +tby@chromium.org +jimmyxgong@chromium.org +zentaro@chromium.org +yulunwu@chromium.org +# assistant +xiaohuic@chromium.org +# autofill +jsaul@google.com +vidhanj@google.com +vsemeniuk@google.com +# auto +tby@chromium.org +# background +rayankans@chromium.org +# blink +iclelland@chromium.org +schenney@chromium.org +mlippautz@chromium.org +toyoshim@chromium.org +yigu@chromium.org +# bluetooth +chadduffin@chromium.org +crisrael@google.com +julietlevesque@google.com +khorimoto@chromium.org +reillyg@chromium.org +# borealis +# see crostini +# browser +ckitagawa@chromium.org +joenotcharles@google.com +# browsing_topics +# chromeos_hps +azeemarshad@chromium.org +chadduffin@chromium.org +crisrael@google.com +jorgelo@chromium.org +julietlevesque@google.com +khorimoto@chromium.org +tby@chromium.org +tsergeant@chromium.org +jimmyxgong@chromium.org +gavinwill@chromium.org +zentaro@chromium.org +# chromeos +azeemarshad@chromium.org +chadduffin@chromium.org +crisrael@google.com +enlightened@chromium.org +jorgelo@chromium.org +julietlevesque@google.com +khorimoto@chromium.org +tsergeant@chromium.org +zentaro@chromium.org +# chromeos_settings +xiaohuic@chromium.org +# chrome +tbansal@chromium.org +# commerce +ayman@chromium.org +# companion +mcrouse@chromium.org +shaktisahu@chromium.org +tbansal@chromium.org +# compositing +schenney@chromium.org +jonross@chromium.org +# content_creation +sebsg@chromium.org +# content +dewittj@chromium.org +harrisonsean@chromium.org +tbansal@chromium.org +# cookie +bingler@chromium.org +cfredric@chromium.org +# cras +yuhsuan@chromium.org +# cros_ml +tby@chromium.org +# cros +nigeltao@chromium.org +# cross_device +crisrael@google.com +hansberry@chromium.org +julietlevesque@google.com +# crostini +davidmunro@google.com +hollingum@google.com +danielng@google.com +# cryptohome +emaxx@chromium.org +jorgelo@chromium.org +# custom_tabs +eirage@chromium.org +lizeb@chromium.org +# data +tbansal@chromium.org +# dev +changhaohan@chromium.org +# diagnostics +jimmyxgong@chromium.org +zentaro@chromium.org +# direct +schenney@chromium.org +# download +qinmin@chromium.org +shaktisahu@chromium.org +# enterprise +poromov@chromium.org +zmin@chromium.org +seblalancette@chromium.org +igorruvinov@chromium.org +# event +jonross@chromium.org +# extensions +kelvinjiang@chromium.org +# families +courtneywong@chromium.org +# fastpair +jackshira@google.com +julietlevesque@google.com +dclasson@google.com +# feature_engagement +nyquist@chromium.org +shaktisahu@chromium.org +dfried@chromium.org +# file +nigeltao@chromium.org +# gcm +peter@chromium.org +# geolocation +reillyg@chromium.org +# gpu +jonross@chromium.org +# hang_watcher +olivierli@chromium.org +# history +dullweber@chromium.org +mcrouse@chromium.org +tbansal@chromium.org +sophiechang@chromium.org +# holding_space +ckincaid@chromium.org +dmblack@google.com +# image +schenney@chromium.org +# input +shend@chromium.org +# interstitial +cthomp@chromium.org +# ios +ajuma@chromium.org +olivierrobin@chromium.org +sebsg@chromium.org +# language +perrier@chromium.org +curranmax@chromium.org +mcrouse@chromium.org +# leveldb_proto +nyquist@chromium.org +# local +tby@chromium.org +# login +jorgelo@chromium.org +rsorokin@google.com +alemate@chromium.org +# media +evliu@google.com +kron@chromium.org +toyoshim@chromium.org +# memory +lizeb@chromium.org +joenotcharles@google.com +# mobile +ender@google.com +mthiesse@chromium.org +andzaytsev@google.com +# na_cl +dschuff@chromium.org +fabiansommer@chromium.org +# navigation +altimin@chromium.org +cthomp@chromium.org +tbansal@chromium.org +toyoshim@chromium.org +wanderview@chromium.org +# nearby +crisrael@google.com +hansberry@chromium.org +julietlevesque@google.com +# net +csharrison@chromium.org +dschinazi@chromium.org +nidhijaju@chromium.org +toyoshim@chromium.org +# network +azeemarshad@chromium.org +chadduffin@chromium.org +khorimoto@chromium.org +nidhijaju@chromium.org +toyoshim@chromium.org +# new_tab_page +dewittj@chromium.org +tiborg@chromium.org +# notifications +peter@chromium.org +rayankans@chromium.org +# offline +curranmax@chromium.org +tbansal@chromium.org +# omnibox +ender@google.com +manukh@chromium.org +toyoshim@chromium.org +# oobe +rsorokin@google.com +alemate@chromium.org +# optimization +mcrouse@chromium.org +sophiechang@chromium.org +tbansal@chromium.org +# others +jimmyxgong@chromium.org +zentaro@chromium.org +johnidel@chromium.org +jonross@chromium.org +dullweber@chromium.org +olivierli@chromium.org +alemate@chromium.org +bzielinski@google.com +# page +csharrison@chromium.org +iclelland@chromium.org +johnidel@chromium.org +toyoshim@chromium.org +# password +ioanap@chromium.org +mamir@chromium.org +vasilii@chromium.org +vsemeniuk@google.com +drubery@chromium.org +thefrog@chromium.org +xinghuilu@chromium.org +# payment +rouslan@chromium.org +smcgruer@chromium.org +# pcscan +mlippautz@chromium.org +# pdf +awscreen@chromium.org +# performance_manager +chrisha@chromium.org +fdoray@chromium.org +# permissions +andypaicu@chromium.org +ravjit@chromium.org +# phonehub +crisrael@google.com +hansberry@chromium.org +julietlevesque@google.com +# platform +iby@chromium.org +mutexlox@chromium.org +xuhong@chromium.org +# plugin_vm +# see crostini +# power +olivierli@chromium.org +tby@chromium.org +# prefetch +curranmax@chromium.org +spelchat@chromium.org +tbansal@chromium.org +toyoshim@chromium.org +# preloading +curranmax@chromium.org +spelchat@chromium.org +# printing +awscreen@chromium.org +jimmyxgong@chromium.org +zentaro@chromium.org +# print +awscreen@chromium.org +jimmyxgong@chromium.org +zentaro@chromium.org +# privacy_budget +antoniosartori@chromium.org +# privacy +andzaytsev@google.com +dullweber@chromium.org +harrisonsean@chromium.org +csharrison@chromium.org +johnidel@chromium.org +# profile +alexilin@chromium.org +# quick_answers +xiaohuic@chromium.org +# quota +ayui@chromium.org +# renderer4 +schenney@chromium.org +# renderer +schenney@chromium.org +# safe_browsing +drubery@chromium.org +thefrog@chromium.org +xinghuilu@chromium.org +# sb_client +drubery@chromium.org +thefrog@chromium.org +xinghuilu@chromium.org +# scanning +jimmyxgong@chromium.org +zentaro@chromium.org +# scheduler +altimin@chromium.org +# search +ender@google.com +# security +cthomp@chromium.org +dullweber@chromium.org +# segmentation_platform +nyquist@chromium.org +shaktisahu@chromium.org +# service +wanderview@chromium.org +ayui@chromium.org +yyanagisawa@chromium.org +# session +alexilin@chromium.org +dullweber@chromium.org +# settings +harrisonsean@chromium.org +khorimoto@chromium.org +# sharing +ellyjones@chromium.org +knollr@chromium.org +# signin +alexilin@chromium.org +# simple +wanderview@chromium.org +# software +drubery@chromium.org +thefrog@chromium.org +xinghuilu@chromium.org +# storage +ayui@chromium.org +wanderview@chromium.org +# subresource +csharrison@chromium.org +johnidel@chromium.org +tbansal@chromium.org +# sync +rushans@google.com +# tab +ckitagawa@chromium.org +joenotcharles@google.com +olivierli@chromium.org +dfried@chromium.org +# translate +perrier@chromium.org +curranmax@chromium.org +tbansal@chromium.org +toyoshim@chromium.org +# update_engine +poromov@chromium.org +# v8 +mlippautz@chromium.org +# video_tutorials +qinmin@chromium.org +shaktisahu@chromium.org +# web_apk +eirage@chromium.org +hartmanng@chromium.org +rayankans@chromium.org +# webapps +alancutter@chromium.org +dmurph@chromium.org +eirage@chromium.org +glenrob@chromium.org +hartmanng@chromium.org +# web_audio +hongchan@chromium.org +mjwilson@chromium.org +# webauthn +kenrb@chromium.org +# web_core +schenney@chromium.org +# weblayer +cduvall@chromium.org +# web_rtc +kron@chromium.org +# xr +alcooper@chromium.org +# Custom: not in any subdirectory +hujame@google.com +jihanli@chromium.org +lyf@chromium.org +pwnall@chromium.org diff --git a/histograms/metadata/OWNERS b/histograms/metadata/OWNERS new file mode 100644 index 000000000000..a8429a05583b --- /dev/null +++ b/histograms/metadata/OWNERS @@ -0,0 +1,15 @@ +# If a histogram subdirectory has individually listed owners in their OWNERS +# file, they should be prioritized. Otherwise, CLs can be sent to +# chromium-metrics-reviews@google.com. Googlers can read more about +# chromium-metrics-reviews@google.com at go/gwsq-gerrit. +# +# Becoming a subdirectory owner and being added to METRIC_REVIEWER_OWNERS +# requires completing a training (currently Google-only): go/reviewing-metrics +file://base/metrics/OWNERS + +chrome-metrics-team+robot@google.com # For bot updates to expiry. + +per-file histogram_suffixes_list.xml=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# All metrics changes should be reviewed by metrics reviewers. +set noparent diff --git a/histograms/metadata/accessibility/OWNERS b/histograms/metadata/accessibility/OWNERS new file mode 100644 index 000000000000..c7055a114404 --- /dev/null +++ b/histograms/metadata/accessibility/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +evliu@google.com diff --git a/histograms/metadata/accessibility/histograms.xml b/histograms/metadata/accessibility/histograms.xml new file mode 100644 index 000000000000..dbb13d4090a7 --- /dev/null +++ b/histograms/metadata/accessibility/histograms.xml @@ -0,0 +1,2392 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + aleventhal@chromium.org + janewman@microsoft.com + chrome-a11y-core@google.com + + The amount of time accessibility was enabled and actively used. Reported + when we switch states from active to inactive. + + + + + mschillaci@google.com + chrome-a11y-core@google.com + + Tracks the maximum number of AccessibilityNodeInfo objects that were stored + in the Java-side cache during a single session. + + + + + mschillaci@google.com + chrome-a11y-core@google.com + + Tracks the percentage of calls from the Android framework to create a new + AccessibilityNodeInfo object that were serviced from the cache rather than + constructing the object from scratch during a single session. + + + + + mschillaci@google.com + abigailbklein@google.com + chrome-a11y-core@google.com + + Tracks the number of AccessibilityEvents dropped when the OnDemand + accessibility services feature is enabled. Recorded at the end of a session. + + + + + mschillaci@google.com + abigailbklein@google.com + chrome-a11y-core@google.com + + Tracks the number of AccessibilityEvents dropped when the OnDemand + accessibility services feature is enabled, and when the total percentage of + dropped events is 100%. Recorded at the end of a session. + + + + + mschillaci@google.com + abigailbklein@google.com + chrome-a11y-core@google.com + + Tracks the number of AccessibilityEvents dropped when the OnDemand + accessibility services feature is enabled, and the AccessibilityAXModes + feature is enabled, and the number of events dropped is 100%. Tracks for + when the AXMode is set to {AXMode}. Recorded at the end of a session. + Updated in M114 to add FormControls variant. + + + + + + + + + + mschillaci@google.com + abigailbklein@google.com + chrome-a11y-core@google.com + + Tracks the percentage of AccessibilityEvents dropped when the OnDemand + accessibility services feature is enabled. Recorded at the end of a session. + + + + + mschillaci@google.com + abigailbklein@google.com + chrome-a11y-core@google.com + + Tracks the percentage of AccessibilityEvents dropped when the OnDemand + accessibility services feature is enabled, and the AccessibilityAXModes + feature is enabled. Tracks for when the AXMode is set to {AXMode}. Recorded + at the end of a session. Updated in M114 to add FormControls variant. + + + + + + + + + + mschillaci@google.com + aldietz@google.com + chrome-a11y-core@google.com + + Tracks the enabled state for the Page Zoom option on the main app menu. The + state will be one of the following enumerated states: 0) not enabled, 1) + enabled explicitly by the user on the Accessibility Page Zoom setting, 2) + enabled automatically if the user has an Android OS-wide default font size, + 3) disabled explicitly by the user on the Accessibility Page Zoom setting. + Recorded each time the app menu is opened. + + + + + mschillaci@google.com + aldietz@google.com + chrome-a11y-core@google.com + + Tracks whether the user opened the Page Zoom slider from the app menu + option. Recorded each time the slider is opened from the app menu. + + + + + mschillaci@google.com + aldietz@google.com + chrome-a11y-core@google.com + + Tracks whether the user changed the individual page zoom level on at least + one webpage from the app menu slider view. Recorded each time the slider is + dismissed if the user changed the zoom level before dismissal. + + + + + mschillaci@google.com + aldietz@google.com + chrome-a11y-core@google.com + + For users who changed the individual page zoom level on at least one webpage + from the app menu slider view, tracks what zoom level has been set on the + page. Recorded each time the slider is dismissed if the user changed the + zoom level before dismissal. + + + + + mschillaci@google.com + aldietz@google.com + chrome-a11y-core@google.com + + Tracks whether the user changed the default page zoom level from the + Accessibility Page Zoom settings page. Recorded each time the user closes + the Accessibility Page Zoom settings page if the user changed the zoom level + while the settings page was showing. + + + + + mschillaci@google.com + aldietz@google.com + chrome-a11y-core@google.com + + For users who changed the default page zoom level from the Accessibility + Page Zoom settings page, tracks what default zoom level has been set in the + settings. Recorded each time the user closes the Accessibility Page Zoom + settings page if the user changed the zoom level while the settings page was + showing. + + + + + + + aleventhal@chromium.org + chrome-a11y-core@google.com + + Tracks whether a screen reader is enabled on Android (e.g. Talkback). This + is checked once, 45 seconds after startup. Note: prefer + Accessibility.Android.ScreenReader.EveryReport when querying for unique + users, as it is logged more frequently. {AccessibilityEveryReport} + + + + + + + + twellington@chromium.org + skym@chromium.org + + Records the current user font size pref when exiting accessibility settings + if the preference was changed. The font size ranges from 50% to 200% and can + be set in increments of 5%; the default is 100%. + + + + + twellington@chromium.org + skym@chromium.org + + Records the current user font size pref during deferred startup for + ChromeActivity. The font size ranges from 50% to 200% and can be set in + increments of 5%; the default is 100%. + + + + + aleventhal@chromium.org + mschillaci@chromium.org + chrome-a11y-core@google.com + + Deprecated as of 10/2022, M109. Now using the per-variant enum (below). + Tracks flags and capabilities of enabled accessibility services. Recorded + every time an Android web content view first creates a virtual view + hierarchy, indicating that some accessibility service is running. The number + of emits of this histogram won't be as useful as the unique user counts. The + primary purpose of this is to guide optimization by determining what + capabilities of accessibility services are widespread and which ones are + relatively rare. + + + + + mschillaci@google.com + aldietz@google.com + dtseng@chromium.org + chrome-a11y-core@google.com + + Tracks events, flags, feedback and capabilities of enabled accessibility + services separated into variants based on the types of running accessibility + services. This information would be a subset of the (now deprecated) + Accessibility.AndroidServiceInfo histogram. It will allow us to look at the + same histograms but only for a subset of users (e.g. what are the requested + flags etc of enabled accessibility services for clients running only a + password manager). + + + + + + + + + + + + + + jdiggs@chromium.org + jkim@igalia.com + chrome-a11y-core@google.com + + Tracks usage of ATK APIs on Linux Desktop. Recorded when ATK APIs that are + supposed to trigger AX mode enabled is called. + + + + + abigailbklein@google.com + chrome-a11y-core@google.com + + The total amount of time accessibility was disabled due to being + auto-disabled, before being enabled again. + + + + + abigailbklein@google.com + chrome-a11y-core@google.com + + The total amount of time accessibility was enabled before being + auto-disabled. + + + + + abigailbklein@google.com + chrome-a11y-core@google.com + + The number of user input events that were received within one time window, + without any accompanying accessibility API usage, that triggered + accessibility to be auto-disabled. + + + + + evliu@google.com + chrome-media-ux@google.com + + Whether custom caption settings were loaded from the user preferences. + Recorded when WebKit preferences are overridden. + + + + + evliu@google.com + chrome-media-ux@google.com + + Whether custom caption settings were loaded from the system preferences. + Recorded when WebKit preferences are overridden. + + + + + dtseng@chromium.org + chrome-a11y-core@google.com + + A user can control ChromeVox via a variety of gestures on the touch screen. + For example, swiping right with one finger causes ChromeVox to navigate to + the next object. Track all possible gestures here. + + + + + dtseng@chromium.org + kenjibaheux@google.com + chrome-a11y-core@google.com + + Whether the Chrome OS Accessibility Menu is set to be shown regardless of + the state of a11y features.(logged once 45 secs after startup). + + + + + kenjibaheux@google.com + dtseng@chromium.org + chrome-a11y-core@google.com + + Whether the Chrome OS Autoclick feature is on (logged once 45 secs after + startup). Warning: this histogram was expired 2021-12-31 to 2022-07-07, data + might be missing. + + + + + katie@chromium.org + dtseng@chromium.org + chrome-a11y-core@google.com + + Recorded when a user has picked a new autoclick action type from the bubble + menu. + + + + + dtseng@chromium.org + chrome-a11y-core@google.com + + Whether the Chrome OS caret highlighting is on (logged once 45 secs after + startup). + + + + + dtseng@chromium.org + katie@chromium.org + chrome-a11y-core@google.com + + Whether the Chrome OS feature to colorize the cursor is enabled (logged once + 45 secs after startup). + + + + + dtseng@chromium.org + chrome-a11y-core@google.com + + Whether the Chrome OS cursor highlighting is on (logged once 45 secs after + startup). + + + + + anastasi@google.com + dtseng@chromium.org + chrome-a11y-core@google.com + + Whether the ChromeOS dictation feature is enabled (logged once 45 secs after + startup). + + + + + katie@chromium.org + dtseng@chromium.org + chrome-a11y-core@google.com + + The language used for speech recognition in dictation on ChromeOS. This is + logged each time Dictation is toggled on. From M99 to M104 this was logged + using base::PersistantHash instead of base::HashMetricName; data from that + period can be decoded using a map between the two hashing functions. See + crbug.com/1342966. + + + + + katie@chromium.org + chrome-a11y-core@google.com + + Duration that the network speech recognition service was listening for + dictation. Recorded each time a user toggles dictation on until dictation is + stopped, either by the user action, error, or timeout. + + + + + katie@chromium.org + chrome-a11y-core@google.com + + Duration that the on-device speech recognition service was listening for + dictation. Recorded each time a user toggles dictation on until dictation is + stopped, either by the user action, error, or timeout. + + + + + akihiroota@chromium.org + chrome-a11y-core@google.com + Recorded whenever Dictation fails to perform a macro. + + + + akihiroota@chromium.org + chrome-a11y-core@google.com + Recorded whenever Dictation recognizes a macro. + + + + akihiroota@chromium.org + chrome-a11y-core@google.com + Recorded whenever Dictation successfully performs a macro. + + + + anastasi@google.com + dtseng@chromium.org + chrome-a11y-core@google.com + Records how users invoke Dictation. + + + + katie@chromium.org + chrome-a11y-core@google.com + + When Dictation was toggled on, records whether on-device speech recognition + was used. If on-device recognition was not used, network speech was used. + + + + + akihiroota@chromium.org + chrome-a11y-core@google.com + + Records whether Pumpkin was used to parse a command. If Pumpkin was not + used, then regex parsing was used. This histogram is recorded each time + Dictation parses a command. + + + + + dtseng@chromium.org + katie@chromium.org + chrome-a11y-core@google.com + + Whether the Chrome OS Docked Magnifier feature is on (logged once 45 secs + after startup). + + + + + dtseng@chromium.org + chrome-a11y-core@google.com + + Whether the Chrome OS focus highlighting is on (logged once 45 secs after + startup). + + + + + dtseng@chromium.org + kenjibaheux@google.com + chrome-a11y-core@google.com + + Whether the Chrome OS High Contrast mode feature is on (logged once 45 secs + after startup). + + + + + dtseng@chromium.org + kenjibaheux@google.com + chrome-a11y-core@google.com + + Whether the Chrome OS Large Cursor feature is on (logged once 45 secs after + startup). + + + + + sarakato@chromium.org + dtseng@chromium.org + chrome-a11y-core@google.com + + Cursor size of the Chrome OS Large Cursor (logged once 45 secs after + startup). + + + + + dtseng@chromium.org + josiahk@google.com + kenjibaheux@google.com + chrome-a11y-core@google.com + + Whether the Chrome OS Screen Magnifier feature is on (logged once 45 secs + after startup). + + + + + dtseng@chromium.org + katie@chromium.org + chrome-a11y-core@google.com + + Whether the Chrome OS select-to-speak is on (logged once 45 secs after + startup). + + + + + katie@chromium.org + chrome-a11y-core@google.com + + Whether Select-to-Speak had background shading enabled when activated. + + + + + ajitnarayanan@google.com + chrome-a11y-core@google.com + + When Select-to-speak is active, the user can dismiss the bubble menu in + multiple ways: by clicking the cancel button on the Select-to-speak menu or + using keyboard shortcuts. Track the methods here. + + + + + ajitnarayanan@google.com + chrome-a11y-core@google.com + + Whether enhanced network TTS voices were enabled when Select-to-Speak was + activated. + + + + + ajitnarayanan@google.com + chrome-a11y-core@google.com + + Whether Select-to-Speak's navigation controls were on when activated. + + + + + ajitnarayanan@google.com + chrome-a11y-core@google.com + + The multiplier with which the user overrode the speech rate setting in + Select-to-Speak. By default, the global Text-to-Speech setting is used, + which the user can temporarily override. The override multiplier is stored + as a sparse histogram with values (100 * multiple). For example, a speech + rate multiplier of 1.0 (default) will be seen as 100. Emitted once every + time playback starts, including on resume after pause or change of + selection. + + + + + ajitnarayanan@google.com + chrome-a11y-core@google.com + + When Select-to-speak is active, the user can navigate between paragraphs in + multiple ways: by clicking the navigation buttons on the Select-to-speak + menu or using keyboard shortcuts. Track the methods here. + + + + + ajitnarayanan@google.com + chrome-a11y-core@google.com + + When Select-to-speak is active, the user can navigate between sentences in + multiple ways: by clicking the navigation buttons on the Select-to-speak + menu or using keyboard shortcuts. Track the methods here. + + + + + katie@chromium.org + chrome-a11y-core@google.com + + A user may activate Select-to-Speak by holding down 'search' and clicking or + dragging a region with the mouse, or by highlighting an area and using + search + s to read just the highlighted area. Track the methods here. + + + + + katie@chromium.org + chrome-a11y-core@google.com + + A user has tapped a button in the tray to change Select-to-Speak's state. + The tap was interpreted by Select-to-Speak as a request to start selection, + to cancel speech, or to cancel selection, depending on Select-to-Speak's + internal state when the tap occured. This tracks when the button was tapped + and the event that it generated. + + + + + ajitnarayanan@google.com + chrome-a11y-core@google.com + + Which TTS engine was used for making TTS requests from Select-to-speak. This + is recorded every time a new speech request is made in Select-to-speak. Note + that this is only recorded on the start of speech, so it is not recorded, + for example, when the user resumes speech after pausing it. + + + + + gzadina@google.com + tbarzic@chromium.org + + The value for shelf navigation buttons setting set by the user during OOBE. + The metric will be reported after the setting has been stable for 10 + seconds, or the OOBE screen in which the value can be set is closed (if the + setting changes multiple times in quick succession, only the final value + will be reported). + + + + + gzadina@google.com + tbarzic@chromium.org + + The value for shelf navigation buttons setting set by the user in Chrome OS + Settings page. The metric will be reported after the setting change has been + stable for 10 seconds, or the settings window in which the value is set gets + closed (if the setting changes multiple times in quick succession, only the + final value will be reported). + + + + + dtseng@chromium.org + kenjibaheux@google.com + aleventhal@google.com + chrome-a11y-core@google.com + + Whether the Chrome OS Spoken Feedback feature is on (logged once 45 secs + after startup). Note: prefer Accessibility.CrosSpokenFeedback.EveryReport + when querying for unique users, as it is logged more frequently. + {AccessibilityEveryReport} + + + + + + + + dtseng@chromium.org + kenjibaheux@google.com + tengs@chromium.org + chrome-a11y-core@google.com + + Whether the Chrome OS Sticky Keys feature is on (logged once 45 secs after + startup). + + + + + dtseng@chromium.org + anastasi@google.com + chrome-a11y-core@google.com + + Whether the Chrome OS switch access is on (logged once 45 secs after + startup). + + + + + dtseng@chromium.org + anastasi@google.com + chrome-a11y-core@google.com + + The value of the Switch Access "Auto Scan" setting, logged + immediately after toggling. This will show us how often users are turning + the feature on, and how often they are turning it back off again. + + + + + dtseng@chromium.org + anastasi@google.com + chrome-a11y-core@google.com + + Measures the user-set speed for scanning between keyboard keys in Switch + Access, logged immediately after changing the setting. Values range from 1ms + to 10000ms, in 100ms buckets. + + + + + dtseng@chromium.org + anastasi@google.com + chrome-a11y-core@google.com + + Measures the user-set speed for auto scanning between items in Switch + Access, logged immediately after changing the setting. Values range from 1ms + to 10000ms, in 100ms buckets. + + + + + dtseng@chromium.org + anastasi@google.com + chrome-a11y-core@google.com + + Switch Access error occurred. See CrosSwitchAccessError enum for error + types. + + + + + dtseng@chromium.org + anastasi@google.com + chrome-a11y-core@google.com + + Which key code user has assigned to the Next Action (e.g. 32 for the Space + key) + + + + + dtseng@chromium.org + anastasi@google.com + chrome-a11y-core@google.com + + Which key code user has assigned to the Previous Action (e.g. 32 for the + Space key) + + + + + dtseng@chromium.org + anastasi@google.com + chrome-a11y-core@google.com + + Which key code user has assigned to the Select Action (e.g. 32 for the Space + key) + + + + + dtseng@chromium.org + kenjibaheux@google.com + chrome-a11y-core@google.com + + Whether the Chrome OS Virtual Keyboard feature is on (logged once 45 secs + after startup). + + + + + aldietz@google.com + chrome-a11y-core@google.com + + Records whether the experimental form controls mode flag is set for the + AXMode. Tracked when the experimental form controls mode flag is flipped to + true. This flag is flipped automatically when software communicates with + Chrome via accessibility APIs. + + This is currently only used on Android OS. + + + + + aleventhal@chromium.org + chrome-a11y-core@google.com + + The value of the "show a quick focus highlight" setting, logged + immediately after toggling. This will show us how often users are turning + the feature on, and how often they are turning it back off again. + + + + + + Logged on profile open, including for profiles that do not show web content. + (For those profiles, this logged the value of disabled.) Replaced in M-107 + with Accessibility.ImageLabels2, which is similar but not logged for + unnecessary profiles. + + katie@chromium.org + chrome-a11y-core@google.com + + Whether the Chrome accessibility image label setting is on. Logged once 45 + secs after profile open. + + + + + dtseng@chromium.org + mschillaci@google.com + chrome-a11y-core@google.com + + Whether the Chrome accessibility image label setting is on for Android. + Logged once 45 secs after profile open, which always happens when the + browser starts. + + + + + dtseng@chromium.org + mschillaci@google.com + chrome-a11y-core@google.com + + When a user opens the accessibility image label dialog on Android, records + what option they select on user interaction. + + + + + dtseng@chromium.org + mschillaci@google.com + chrome-a11y-core@google.com + + Whether the Chrome accessibility image label setting for Android is set to + only be enabled on a Wi-Fi connection. Logged once 45 secs after profile + open, which always happens when the browser starts. + + + + + katie@chromium.org + dtseng@chromium.org + + Whether a user accepts or does not accept a modal dialog enabling the image + labels option. If the user does not accept it this does not track whether + they closed it with the negative button, the close button, or keyboard + escape. + + + + + katie@chromium.org + dtseng@chromium.org + chrome-a11y-core@google.com + + The language of a web page where image labels were requested, as detected by + Chrome (not necessarily what language the page claims to be in). + + + + + katie@chromium.org + dtseng@chromium.org + chrome-a11y-core@google.com + + The language that was requested for image descriptions, based on the page + language, the user's accept languages and top languages, and the server + languages. + + + + + dtseng@chromium.org + mschillaci@google.com + chrome-a11y-core@google.com + + Counts the number of images that got a certain result from automatic image + labeling (empty, error, or success), as a function of the function of one of + the image's dimensions - either the min or the max dimension. + + + + + + + + + + + + + + dtseng@chromium.org + mschillaci@google.com + chrome-a11y-core@google.com + + Counts the number of images that got a certain result from automatic image + labeling (empty, error, or success), as a function of the function of the + length of the characters in the image's name - either the original name, or + the name after removing stopwords. + + + + + + + + + + + + + + katie@chromium.org + chrome-a11y-core@google.com + + Whether the Chrome accessibility image label setting is on. Logged once 45 + secs after profile open. Only logged for regular profiles, Incognito + profiles, and guest off-the-record profiles, as these are the only profiles + that can display web content. + + + + + aleventhal@chromium.org + abigailbklein@chromium.org + janewman@microsoft.com + + The amount of time accessibility was enabled but not actively used. Reported + when we switch states from inactive to active. This histogram will not be + logged if the auto-disable accessibility feature is enabled. + + + + + gambard@chromium.org + rkgibson@google.com + + This metric is related to the Preferred Content Size chosen by the user. It + is only recorded once per session. This is hit if the chosen category is not + listed in the map defined in + /ios/chrome/browser/shared/ui/util/dynamic_type_util.mm. In that case, we + should update the code by adding an entry for the new category in that map. + This is logged when the helper to returning the multiplier associated with + the current preferred content size is called. + + + + + chrishall@chromium.org + dtseng@chromium.org + chrome-a11y-core@google.com + + The number of nodes on this page for which language detection was attempted. + + + + + chrishall@chromium.org + dtseng@chromium.org + chrome-a11y-core@google.com + + The number of nodes on this page for which a detected language was + successfully assigned. + + + + + chrishall@chromium.org + dtseng@chromium.org + chrome-a11y-core@google.com + + The number of unique languages which were detected to be the most probable + language for at least one node on the page, regardless of whether a detected + language was assigned for that node. + + + + + chrishall@chromium.org + dtseng@chromium.org + chrome-a11y-core@google.com + + Of the nodes which had a detected language assigned, the percentage for + which the assigned language was the language detected as having the highest + probability. + + + + + chrishall@chromium.org + dtseng@chromium.org + chrome-a11y-core@google.com + + Of the nodes for which language detection was attempted, the percentage for + which a language was successfully assigned. + + + + + chrishall@chromium.org + dtseng@chromium.org + chrome-a11y-core@google.com + + Of the nodes for which a detected language was successfully assigned, the + percentage where the assigned language differs from the author-provided + language. + + + + + + Replaced in M-109 with the histogram Accessibility.LiveCaption2, which is + similar but not logged for unnecessary profiles such as system profiles and + unusual ChromeOS profiles (sign-in profile, etc.) + + katie@chromium.org + abigailbklein@google.com + evliu@google.com + chrome-a11y-core@google.com + + Whether the Live Caption feature is enabled. This is logged once when the + Live Caption controller is initialized on platforms that support Live + Caption. + + + + + katie@chromium.org + abigailbklein@google.com + evliu@google.com + chrome-a11y-core@google.com + + Whether the sample rate or channel count of a Live Caption audio stream + changed midstream. This is logged once per audio stream on the destruction + of the Cloud speech recognition client. + + + + + abigailbklein@google.com + evliu@google.com + chrome-a11y-core@google.com + + Records when the caption bubble displays an error. This is logged once each + time the caption bubble model encounters an error. + + + + + + Deprecated as of 09/2022. Now using + Accessibility.LiveCaption.Duration.CaptionBubble{Visibility}3 This metric + measured the total speech recognition time not only for Live Caption but + also for other applications that use SODA. + + abigailbklein@google.com + evliu@google.com + chrome-a11y-core@google.com + + Measures how long SODA was running while the Live Caption UI was + {Visibility}. Logged once on the destruction of the + SpeechRecognitionRecognizerImpl. + + + + + + + + + abigailbklein@google.com + evliu@google.com + chrome-a11y-core@google.com + + Measures how long SODA was running while the Live Caption UI was + {Visibility}. Logged once on the destruction of the + SpeechRecognitionRecognizerImpl. + + + + + + + + + katie@chromium.org + abigailbklein@google.com + evliu@google.com + chrome-a11y-core@google.com + + Records when a user enables or disables the Live Caption feature from + {Entrypoint}. + + + + + + + + + katie@chromium.org + abigailbklein@google.com + evliu@google.com + chrome-a11y-core@google.com + + Records when a user expands or collapses the Live Caption bubble. + + + + + + Replaced in M-109 with the histogram + Accessibility.LiveCaption.FeatureEnabled2, which is similar but not logged + for unnecessary profiles such as system profiles and unusual ChromeOS + profiles (sign-in profile, etc.) + + katie@chromium.org + abigailbklein@google.com + evliu@google.com + chrome-a11y-core@google.com + + Whether the Live Caption feature flag is enabled. This is logged once at the + time of component registration. + + + + + katie@chromium.org + abigailbklein@google.com + evliu@google.com + chrome-a11y-core@google.com + + Whether the Live Caption feature flag is enabled. This is logged once when + the Live Caption controller is initialized. + + + + + abigailbklein@google.com + evliu@google.com + chrome-a11y-core@google.com + Records when a user pins or unpins the Live Caption bubble. + + + + abigailbklein@google.com + evliu@google.com + chrome-a11y-core@google.com + + The error code of a failed attempt to load the Speech On-Device API (SODA) + binary. This is logged once for each media stream if the SODA binary failed + to load on Windows. + + + + + abigailbklein@google.com + evliu@google.com + chrome-a11y-core@google.com + + The result of an attempt to load the Speech On-Device API (SODA) binary. + This is logged once for each media stream when the SODA binary is loaded. + + + + + katie@chromium.org + abigailbklein@google.com + evliu@google.com + chrome-a11y-core@google.com + + Logged when the Live Caption bubble appears and disappears. Stream start + indicates when the bubble appears due to an audio session starting. Stream + end indicates when the bubble disappears due to a tab change, a navigation, + or the audio session ending and the bubble fading out due to inactivity. + Close button clicked indicates when the bubble disappears due to a user + clicking the close button on the caption bubble. + + + + + abigailbklein@google.com + evliu@google.com + chrome-a11y-core@google.com + + Whether the verification of the Speech On-Device API (SODA) component failed + due to a mismatch of the component architecture. Logged once during the + verification step of the SODA component installation on Windows only. + + + + + evliu@google.com + chrome-media-ux@google.com + chrome-a11y-core@google.com + + The language code used to initialize the speech recognition service. Logged + once when getting the Speech On-Device API (SODA) config path to use with + the speech recognition service. + + + + + evliu@google.com + chrome-media-ux@google.com + chrome-a11y-core@google.com + + Whether the speech recognition session contains any recognized speech. This + is logged once per media stream upon the destruction of the + SpeechRecognitionRecognizerImpl. + + + + + + katie@chromium.org + abigailbklein@google.com + evliu@google.com + chrome-a11y-core@google.com + + Whether the Live Caption feature is enabled. This is logged once when the + Live Caption controller is initialized on platforms that support Live + Caption. + + + + + evliu@google.com + chrome-a11y-core@google.com + + Records when a user enables or disables the Live Translate feature from + {Entrypoint}. + + + + + + + + + + + aleventhal@chromium.org + chrome-a11y-core@google.com + + Tracks whether a screen reader is enabled on Mac (e.g. VoiceOver). This is + logged once, 45 seconds after startup. Note: prefer + Accessibility.Mac.ScreenReader.EveryReport when querying for unique users, + as it is logged more frequently. {AccessibilityEveryReport} + + + + + + + + aleventhal@chromium.org + kenjibaheux@google.com + chrome-a11y-core@google.com + + Whether Chrome has enabled accessibility support because the user passed the + --force-renderer-accessibility flag on the command-line (logged once 45 secs + after startup). + + + + + aleventhal@chromium.org + chrome-a11y-core@google.com + + Whether individual accessibility mode flags are set. Tracked when each mode + flag is flipped from false to true. These flags are flipped automatically + when software communicates with Chrome via accessibility APIs. Flags can + only be flipped off by advanced users or for debugging using + chrome://accessibility/ - and that isn't tracked in this histogram. + + + + + + + lpalmaro@chromium.org + jessejames@chromium.org + rsorokin@chromium.org + alemate@chromium.org + cros-oac@google.com + + Delay between login_prompt_visible and Chrome OS OOBE startup sound + playback. Depends on sound subsystem initialization time. + + + + + dtseng@chromium.org + nektar@chromium.org + chrome-a11y-core@google.com + + When a PDF is constructed for accessibility, true if any page of the PDF + contains any accessible text derived from a text run. Note that a PDF + containing a mix of images and text will record true even though the images + may themselves contain inaccessible text. + + + + + agarwaltushar@google.com + olivierli@chromium.org + + Tracks time spent in AXTree::Destroy. + + The primary use is to measure the impact of https://crrev.com/c/3937946, + which updates AXTree to internally use a std::map instead of a + base::flat_map. Please see the CL description for more context and a + performance profile. + + + + + aleventhal@chromium.org + chrome-a11y-core@google.com + + Tracks time spent on the browser main thread handling accessibility events + sent from the renderer process and processed by BrowserAccessibilityManager. + + Accessibility.Performance.HandleAXEvents can still often record values when + processing is relatively cheap because we exit before handing off the nodes + to BrowserAccessibilityManager for various reasons (e.g. BFCache). This + histogram only measures events which are processed by + BrowserAccessibilityManager and thus should have a better histogram to + understand the cost of doing so, and be used to meaure optimizations. + + + + + aleventhal@chromium.org + chrome-a11y-core@google.com + + Tracks time spent on the browser main thread handling accessibility events + sent from the renderer process. Logged each time the method is run without + returning early. + + + + + aleventhal@chromium.org + janewman@microsoft.com + chrome-a11y-core@google.com + + Tracks time spent on the render process processing deferred accessibility + events. Logged each time the method is run during the accessbility document + lifecycle. + + + + + aleventhal@chromium.org + janewman@microsoft.com + chrome-a11y-core@google.com + + Tracks time spent on the render process sending pending accessibility + events. Logged each time the method is run without returning early. + + + + + aleventhal@chromium.org + janewman@microsoft.com + chrome-a11y-core@google.com + + Tracks time spent on the browser process unserializing accessibility + updates. Logged each time the method is run without returning early. + + + + + aleventhal@chromium.org + kschmi@microsoft.com + janewman@microsoft.com + dlibby@microsoft.com + chrome-a11y-core@google.com + + Tracks time taken to execute the public Windows API that {API}. This is + recorded for all Windows users that call into our public APIs. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + + + + + + + + + + + + + + + + + + + + + abigailbklein@google.com + chrome-a11y-core@google.com + + Records the user-chosen color theme for the Read Anything panel. + + + + + abigailbklein@google.com + chrome-a11y-core@google.com + + Records the user-chosen font scale for the Read Anything panel. + + + + + abigailbklein@google.com + chrome-a11y-core@google.com + + Records the user-chosen letter spacing for the Read Anything panel. + + + + + abigailbklein@google.com + chrome-a11y-core@google.com + + Records the user-chosen line spacing for the Read Anything panel. + + + + + aleventhal@chromium.org + janewman@microsoft.com + chrome-a11y-core@google.com + + Tracks the type of failure that occured when unserializing the accessibility + tree. When an error in unserialization occurs, this is emitted and + unserialization aborts. In the case of a tree with multiple issues, only the + first error is recorded. Refer to AXTree::Unserialize for details. + + + + + kyungjunlee@google.com + chrome-a11y-core@google.com + + Records the time taken to get a screenshot for ScreenAI visual annotator for + cases where the action {Result}. It's being emitted each time whenever it + gets or fails to get a screenshot for ScreenAI visual annotator. Refer to + AXScreenAIAnnotator::OnScreenshotReceived for details. + + + + + + + + + rhalavati@chromium.org + chrome-a11y-core@google.com + + Records a Screen AI library load result on Windows. The result is recorded + after initialization of Screen AI service and loading chrome_screen_ai.dll. + + + + + kyungjunlee@google.com + chrome-a11y-core@google.com + + Records whether it loads or fails to load necessary Screen AI libraries. + It's being emitted when loading Screen AI libraries according to the + configuration. Refer to ScreenAIService::LoadLibrary for details. + + + + + abigailbklein@google.com + rhalavati@google.com + kyungjunlee@google.com + chrome-a11y-core@google.com + + Records the time taken to distill a web page for cases where the action + {Result}. It's being emitted each time whenever it distills or fails to + distill a page. for Screen2x. Refer to + ScreenAIService::ExtractMainContentInternal for details. + + + + + + + + + kyungjunlee@google.com + chrome-a11y-core@google.com + + Records the number of annotations produced by ScreenAI visual annotator. + It's being emitted whenever getting annotations from ScreenAI visual + annotator. + + + + + evliu@google.com + chrome-media-ux@google.com + + Whether a VTT file contains an embedded style block. Recorded when a VTT + file is parsed. + + + + + evliu@google.com + chrome-media-ux@google.com + + Measures the duration of a call to the WebSpeech API. Recorded once per call + to the Open Speech API that powers the WebSpeech API. + + + + + aleventhal@chromium.org + nektar@chromium.org + chrome-a11y-core@google.com + Tracks usage of all public Windows accessibility APIs. + + + + aleventhal@chromium.org + nektar@chromium.org + dlibby@microsoft.com + chrome-a11y-core@google.com + + Tracks properties requested via UI Automation GetPropertyValue(). + + + + + aleventhal@chromium.org + almaher@microsoft.com + weblayoutdev@microsoft.com + + Tracks which Windows high contrast theme is set in system settings (logged + once 45 secs after startup). AccessibilityHighContrastColorScheme::None + indicates that high contrast mode is not enabled. + + + + + + + kenjibaheux@google.com + aleventhal@chromium.org + chrome-a11y-core@google.com + + Whether the third-party JAWS screen reader is running (logged once 45 secs + after startup). Note: prefer Accessibility.WinJAWS.EveryReport when querying + for unique users, as it is logged more frequently. + {AccessibilityEveryReport} + + + + + + + + + + kenjibaheux@google.com + aleventhal@chromium.org + chrome-a11y-core@google.com + + Whether the third-party NVDA screen reader is running (logged once 45 secs + after startup). Note: prefer Accessibility.WinNVDA.EveryReport when querying + for unique users, as it is logged more frequently. + {AccessibilityEveryReport} + + + + + + + + + + aleventhal@chromium.org + chrome-a11y-core@google.com + + Whether the accessibility mode flag shows that a screen reader is running + (logged once 45 secs after startup). In this case, Chrome has detected + accessibility calls that would normally only occur from a screen reader. See + also the more specific metrics such as Accessibility.WinJAWS/WinNVDA. Note: + prefer Accessibility.WinScreenReader2.EveryReport when querying for unique + users, as it is logged more frequently. {AccessibilityEveryReport} + + + + + + + + + + kenjibaheux@google.com + aleventhal@chromium.org + chrome-a11y-core@google.com + + Whether Windows system settings show that Sticky Keys are enabled. + + + + + + + kenjibaheux@google.com + aleventhal@chromium.org + chrome-a11y-core@google.com + + Whether the third-party Supernova screen reader is running (logged once 45 + secs after startup). Note: prefer Accessibility.Supernova.EveryReport when + querying for unique users, as it is logged more frequently. + {AccessibilityEveryReport} + + + + + + + + + + kenjibaheux@google.com + aleventhal@chromium.org + chrome-a11y-core@google.com + + Whether the third-party ZoomText screen magnifier is running. Note: prefer + Accessibility.WinZoomText.EveryReport when querying for unique users, as it + is logged more frequently. {AccessibilityEveryReport} + + + + + + + + + Deprecated in January 2023 as part of message post-launch cleanup since the + messages system records dismissal reasons using + Android.Messages.Dismissed.ReaderMode. + + mdjones@chromium.org + + "Used" is recorded when the user clicks the infobar to enter + Reader Mode. "Not Used" is recorded when the user clicks the close + button. If there's no user action, nothing is recorded. + + + + + twellington@chromium.org + aishwaryarj@google.com + + Records whether the user accepted or ignored/dismissed the Reader Mode + message prompt in conjunction with the Reader Mode accessibility setting. + Recorded for Android only. + + + + + kuan@chromium.org + Records whether a page has distilled data. + + + + katie@chromium.org + gilmanmh@google.com + chrome-a11y-core@google.com + The method a user used to enter reader mode on an article. + + + + katie@chromium.org + gilmanmh@google.com + chrome-a11y-core@google.com + + The method a user used to exit reader mode and return to the original + article. + + + + + twellington@chromium.org + aishwaryarj@google.com + + Records when the Reader Mode accessibility setting is selected or + deselected. Recorded for Android only. + + + + + mdjones@chromium.org + + Records if the panel became visible at any point after a page was navigated. + + + + + mdjones@chromium.org + + Records the number of words in a distilled page. This only records the first + page of a multi-page article. + + + + + + Removed in April 2023. + + nyquist@chromium.org + + Records the number of words in a distilled page. For articles with multiple + pages, each page is counted separately. + + + + + katie@chromium.org + chrome-a11y-core@chromium.org + + Records the amount of active time a user spent on a distillable page before + switching that page to Reader Mode. Active time is time that the article was + visible, not total time the page was open: the timer is paused when the page + is not visible. This is not recorded when the user opens a distillable page + but does not switch to Reader Mode from that page (via the omnibox icon or + menu option). + + + + + katie@chromium.org + chrome-a11y-core@chromium.org + + Records the amount of active time a user spent on a Reader Mode page. Active + time is the time the Reader Mode page was visible, not the total time the + page was open: the timer is paused when the page is not visible. This is + recorded regardless of how a user enters the page: e.g. using the + forward/back buttons, entering the URL directly, or coming from a + distillable page all start the timer equally. + + + + + + Removed in April 2023. + + yfriedman@chromium.org + + Time spent in DomDistiller's identification of text content. + + + + + + Removed in April 2023. + + yfriedman@chromium.org + Complete time spent in DomDistiller's processing of a page. + + + + + Removed in April 2023. + + wychen@chromium.org + + Time spent in DistillPageImpl(), mostly ExecuteJavaScript(), including + compilation and execution. + + + + + + Removed in April 2023. + + yfriedman@chromium.org + + Time spent in creating DomDistiller's internal representation of the HTML + document. + + + + + + Removed in April 2023. + + yfriedman@chromium.org + + Time spent in DomDistiller's final processing of article content/formatting. + + + + + + Removed in April 2023. + + yfriedman@chromium.org + + Time spent in DomDistiller's processing of article metadata. + + + + + wychen@chromium.org + + Time spent in ExecuteJavaScript() in DomDistiller. It includes JavaScript + code transmission through IPC, parsing, compilation, execution, and + returning the JSON back through IPC. + + + + + wychen@chromium.org + + Records the time from the Reader Mode panel opening to the viewer loaded. + + + + + mdjones@chromium.org + + Records the amount of time a user spent on a Reader Mode Page. + + + + + akihiroota@chromium.org + chrome-a11y-core@google.com + + Pumpkin installation is triggered when one of the features using Pumpkin + (currently the only feature using Pumpkin is Dictation) are enabled. This + histogram is recorded once when Pumpkin installation finishes with either + success or failure. + + + + + abigailbklein@google.com + evliu@google.com + yilkal@chromium.org + + Soda Installation is triggered when one of the features using SODA (e.g. + Live Caption, Projector, Offline Dictation) are enabled. Records the time + taken to get to SODA binary installation error. This is recorded once when + SODA installation attempt fails. + + + + + abigailbklein@google.com + evliu@google.com + yilkal@chromium.org + + Soda Installation is triggered when one of the features using SODA (e.g. + Live Caption, Projector, Offline Dictation) are enabled. Records whether + SODA binary installation succeeded. This is recorded once when SODA + installation attempt finishes with either success or failure. + + + + + abigailbklein@google.com + evliu@google.com + yilkal@chromium.org + + Soda Installation is triggered when one of the features using SODA (e.g. + Live Caption, Projector, Offline Dictation) are enabled. Records the time + taken to successfully install SODA binary. This is recorded once when SODA + installation attempt succeedes. + + + + + abigailbklein@google.com + evliu@google.com + yilkal@chromium.org + + Soda Installation is triggered when one of the features using SODA (e.g. + Live Caption, Projector, Offline Dictation) are enabled. Records the time + taken to get to SODA language pack installation error. This is recorded once + when SODA language pack installation attempt fails. + + + + + + abigailbklein@google.com + evliu@google.com + yilkal@chromium.org + + Soda Installation is triggered when one of the features using SODA (e.g. + Live Caption, Projector, Offline Dictation) are enabled. Records whether + SODA language pack installation succeeded or not. This is recorded once when + SODA language pack installation attempt finishes with either success or + failure. + + + + + + abigailbklein@google.com + evliu@google.com + yilkal@chromium.org + + Soda Installation is triggered when one of the features using SODA (e.g. + Live Caption, Projector, Offline Dictation) are enabled. Records the time + taken to successfully install SODA language pack. This is recorded once when + SODA language pack installation succeedes. + + + + + + dtseng@chromium.org + katie@chromium.org + chrome-a11y-core@google.com + + Events fired by the text-to-speech engine when speaking an utterance. + + + + + josiahk@chromium.org + akihiroota@chromium.org + chrome-a11y-core@google.com + + When the user requests a download of a text-to-speech voice, records the + success/failure result, and service used to download it. + + + + + dtseng@chromium.org + katie@chromium.org + chrome-a11y-core@google.com + + Indicates if an utterance spoken via synthesized text-to-speech was + triggered by the Chrome TTS extension API or the web speech API. + + + + + katie@chromium.org + chrome-a11y-core@google.com + + True if an utterance spoken via synthesized text-to-speech requested a + specific voice by name. + + + + + katie@chromium.org + chrome-a11y-core@google.com + + True if an utterance is spoken with native speech provided by the operating + system, otherwise it's spoken via a Chrome extension that implements + text-to-speech support. + + + + + dtseng@chromium.org + chrome-a11y-core@google.com + + The rate of an utterance to be spoken via synthesized text-to-speech. + + + + + joelriley@google.com + katie@chromium.org + chrome-a11y-core@google.com + + ChromeOS source that triggered text-to-speech utterance via extension API, + from a few known accessibility clients (Select-to-speak, ChromeVox). + + + + + katie@chromium.org + chrome-a11y-core@google.com + + The length of an utterance to be spoken via synthesized text-to-speech. + + + + + + diff --git a/histograms/metadata/account_manager/OWNERS b/histograms/metadata/account_manager/OWNERS new file mode 100644 index 000000000000..fb16200d2621 --- /dev/null +++ b/histograms/metadata/account_manager/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +sinhak@chromium.org diff --git a/histograms/metadata/account_manager/histograms.xml b/histograms/metadata/account_manager/histograms.xml new file mode 100644 index 000000000000..6bb4e58b4e8f --- /dev/null +++ b/histograms/metadata/account_manager/histograms.xml @@ -0,0 +1,198 @@ + + + + + + + + + + sinhak@chromium.org + anastasiian@chromium.org + + Records the result of in-session account addition (or re-authentication) + triggers on Chrome OS. This is recorded whenever an in-session account + addition (or re-authentication) is triggered and user finishes or cancels + the flow. + + + + + sinhak@chromium.org + anastasiian@chromium.org + + Records the source of in-session account addition (or re-authentication) + triggers on Chrome OS. This is recorded whenever an in-session account + addition (or re-authentication) is triggered - either explicitely by the + user, or automatically by Gaia (for accounts requiring immediate + re-authentication). + + + + + agawronska@chromium.org + cros-families-eng@google.com + + The result of fetching an access token for the child with `accounts.reauth` + scope in secondary EDU account addition flow. Recorded after parent enters + their password. This metric covers both v1 and v2 of EduCoexistence. + + + + + agawronska@chromium.org + danan@chromium.org + yilkal@chromium.org + cros-families-eng@google.com + + Records the last completed step in the EDU account addition flow. Allows to + track the drop rate by important states during the in session flow. + + + + + agawronska@chromium.org + danan@chromium.org + yilkal@chromium.org + cros-families-eng@google.com + + Records the last completed step in the EDU account addition flow. Allows to + track the drop rate by important states during onboarding. + + + + + anastasiian@chromium.org + droger@chromium.org + chrome-signin-team@google.com + + Records the status of the mojo connection between the Ash account manager + and the Lacros account manager facade, when + `AccountManagerFacade::GetAccounts()` is called. See + https://crbug.com/1287297 + + + + + sinhak@chromium.org + anastasiian@chromium.org + + Measures the time taken to fully initialize Chrome OS Account Manager. This + is recorded once per user session, at login time. This metric only reports + from Chrome OS, which has a high resolution clock. + + + + + sinhak@chromium.org + anastasiian@chromium.org + + Tracks the service type received with the mirror response header. + + + + + sinhak@chromium.org + anastasiian@chromium.org + + Tracks the number of Mojo pipe disconnections observed by the access token + fetcher Mojo remote in `AccountManagerFacadeImpl`. This is logged at the end + of the destruction of `AccountManagerFacadeImpl::AccessTokenFetcher`. This + will correspond to the end of an access token fetch request. This is logged + for Ash - ChromeOS and Lacros - ChromeOS. + + + + + sinhak@chromium.org + anastasiian@chromium.org + + Tracks the number of Mojo pipe disconnections observed by the + `AccountManagerObserver` Mojo receiver in `AccountManagerFacadeImpl`. This + is logged at the end of the destruction of `AccountManagerFacadeImpl`. Since + `AccountManagerFacadeImpl` is a singleton, this is logged once per session + (Per browser session for Lacros and per user session for Ash). This is + logged for Ash - ChromeOS and Lacros - ChromeOS. + + + + + sinhak@chromium.org + anastasiian@chromium.org + + Tracks the number of Mojo pipe disconnections observed by the Account + Manager Mojo remote in `AccountManagerFacadeImpl`. This is logged at the end + of the destruction of `AccountManagerFacadeImpl`. Since + `AccountManagerFacadeImpl` is a singleton, this is logged once per session + (Per browser session for Lacros and per user session for Ash). This is + logged for Ash - ChromeOS and Lacros - ChromeOS. + + + + + sinhak@chromium.org + anastasiian@chromium.org + + Tracks the number of accounts stored in Chrome OS Account Manager by a given + user. This is recorded only once per session, at login time. + + + + + sinhak@chromium.org + anastasiian@chromium.org + + Indicates if the account whose authentication error is being reported to + AccountManagerMojoService has an empty account id. This is recorded whenever + AccountManagerMojoService receives a notification for an authentication + error for an account. + + This histogram will be used to decide the severity of + AccountManagerMojoService receiving malformed account ids. + + + + + sinhak@chromium.org + anastasiian@chromium.org + + Tracks the status of token loads from disk by Chrome OS Account Manager, for + a given user. This is recorded only once per session, at login time. + + + + + + diff --git a/histograms/metadata/android/OWNERS b/histograms/metadata/android/OWNERS new file mode 100644 index 000000000000..b63d2849e4f9 --- /dev/null +++ b/histograms/metadata/android/OWNERS @@ -0,0 +1,11 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +ender@google.com +mthiesse@chromium.org +andzaytsev@google.com +ckitagawa@chromium.org +mvanouwerkerk@chromium.org +sinansahin@google.com +jinsukkim@chromium.org \ No newline at end of file diff --git a/histograms/metadata/android/histograms.xml b/histograms/metadata/android/histograms.xml new file mode 100644 index 000000000000..009917fc917e --- /dev/null +++ b/histograms/metadata/android/histograms.xml @@ -0,0 +1,5107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gauravjj@google.com + skavuluru@google.com + clank-large-form-factors@google.com + + Captures the number of regular and incognito tabs used. Used tabs are + calculated by identifying the number of tabs that were selected between + ChromeTabbedActivity onResumeWithNative() and onStopWithNative(). This is + recorded when onStopWithNative() is called by backgrounding the app or by + opening another activity like SettingsActivity. If multiple instances are + running, each instance will only track and record usage of tabs that it + contains. + + + + + gauravjj@google.com + skavuluru@google.com + clank-large-form-factors@google.com + + Captures the percentage of regular and incognito tabs used. This is + calculated by finding the ratio of the number of tabs used to the total + number of tabs available between ChromeTabbedActivity onResumedWithNative + and onStopWithNative. Total number of tabs available is the sum of the tab + count when CTA is resumed and any new tabs that are opened before CTA is + stopped. This is recorded when ChromeTabbedActivity#onStopWithNative() is + called by backgrounding the app or by opening another activity like + SettingsActivity. If multiple instances are running, each instance will only + track and record usage of tabs that it contains. + + + + + bttk@chromium.org + chrome-segmentation-platform@google.com + + Reports the variant of the optional toolbar button that was clicked. Reports + only when the feature AdaptiveButtonInTopToolbar is active. + + + + + bttk@chromium.org + chrome-segmentation-platform@google.com + + Reports the variant of the optional toolbar button used during the session. + Reports only when the feature AdaptiveButtonInTopToolbar is active, the + button is placed in the toolbar, and is clickable. + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the newly selected radio button option for the adaptive toolbar + button on the toolbar shortcut settings page. Recorded only when the + selected radio button state is changed. + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the currently selected radio button option for the adaptive toolbar + button on the toolbar shortcut settings page. Recorded on startup, only if + AdaptiveButtonInTopToolbarCustomization feature is enabled. + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records whether the toolbar settings toggle button is on or off on the + toolbar shortcut settings page after the user manually changes it. Recorded + after the user explicitly taps on the toggle button. + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records whether the toolbar settings toggle button is on or off on the + toolbar shortcut settings page. Recorded on startup. + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Reports the variant of the optional toolbar button that was shown after a + page load. Reports only when a page is loaded or a tab is switched. Reports + only when the contextual page actions feature is enabled and after all the + action providers have responded or the request has timed out. Only reported + for pages in the regular profile. + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Reports the variant of the optional toolbar button being shown during the + start of a new navigation. Reports whenever + TabObserver.onDidStartNavigationInPrimaryMainFrame() is called which then + records the button variant currently being shown on the toolbar. Recorded + for both regular and incognito profiles. + + + + + sinansahin@google.com + twellington@chromium.org + skym@chromium.org + clank-app-team@google.com + + Records the accuracy of the logic used to decide whether to block the view + draw of the first tab, expressed as an enum. Recorded when the active tab is + restored or an initial tab is created in ChromeTabbedActivity. + + + + + + Removed 03/2022. Superseded by + Android.AppLaunch.DurationDrawWasBlocked.OnInitialTab + + sinansahin@google.com + twellington@chromium.org + skym@chromium.org + clank-app-team@google.com + + Records how long the initial tab's draw was blocked, if it was. Recorded + when the active tab is restored or an initial tab is created in + ChromeTabbedActivity. + + + + + roagarwal@chromium.org + chrome-incognito@google.com + + Records the time (ms) we blocked the draw of the Incognito tab (if any) + during the app restore phase to be sure the Incognito re-auth screen is + shown. This gets recorded only when both native and tab state have been + initialized as by then we would show the re-auth screen. + + Blocking draw on Incognito re-auth screen prevents accidental leakage of the + Incognito tab contents. Note that, the Incognito re-auth screen is an opt-in + feature controlled behind the Chrome Setting "Lock Incognito tabs when + you leave Chrome" under "Privacy and Security" So, if the + feature is turned off, we wouldn't block draw for this use-case and won't + record this metric. + + + + + sinansahin@google.com + twellington@chromium.org + skym@chromium.org + clank-app-team@google.com + + Records how long the initial tab's draw was blocked, if it was. Recorded no + more than once per cold start. Recorded when the active tab is restored or + an initial tab is created in ChromeTabbedActivity. Recorded always except + when the overview page is shown during startup. + + + + + sinansahin@google.com + twellington@chromium.org + skym@chromium.org + clank-app-team@google.com + + Records how long the overview page's draw was blocked, if it was. Recorded + no more than once per cold start. Recorded when the overview page state is + initialized in ChromeTabbedActivity and only when overview page was shown + during startup. + + + + + lizeb@google.com + clank-performance-team@google.com + + Record the time the application spent in the background in-between two + foregrounded periods, meaning that when the application is started in + background, then foregrounded, no data points are recorded. This is recorded + at the end of each such background interval. Saturates at 1h. + + + + + + + dtrainor@chromium.org + peter@chromium.org + + Records whether notifications are enabled for Chrome, as the Android app, + every time metrics are logged. + + + + + rsesek@chromium.org + clank-security@google.com + + Reports information about the ARM CPU of a device. This composes the 8-bit + ARM implementer identifier and the 12-bit part number into a single 20-bit + CPU identifier, ranging from [0x00000,0xFFFFF]. Depending on the CPU + package, processor configuration, and/or kernel version, this may only + report information about the processor on which the metric was collected. + This can happen on heterogeneous-processor SoCs. The metric is logged once + every startup. + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records whether user has enabled background restriction for chrome. Recorded + after native initialization in browser process. + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the standby bucket (UsageStatsManager.getAppStandbyBucket) in which + chrome is currently placed by android. Recorded after native initialization + in browser process. + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the standby bucket (UsageStatsManager.getAppStandbyBucket) in which + chrome is currently placed by android, when user hasn't explicitly enabled + background restrictions. Recorded after native initialization in browser + process. + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the standby bucket (UsageStatsManager.getAppStandbyBucket) in which + chrome is currently placed by android, when user has explicitly enabled + background restrictions. Recorded after native initialization in browser + process. + + + + + nator@chromium.org + knollr@chromium.org + shaktisahu@chromium.org + + Records that an exact task has been created. Recorded when the task is + scheduled. + + + + + nyquist@chromium.org + shaktisahu@chromium.org + Records that a specific background task has been canceled. + + + + nator@chromium.org + knollr@chromium.org + shaktisahu@chromium.org + + Records that a specific task has been created with an expiration deadline. + Recorded when the task is scheduled. + + + + + nator@chromium.org + knollr@chromium.org + shaktisahu@chromium.org + + Records that a specific task has been created without the expiration feature + activated. Recorded when the task is scheduled. + + + + + nator@chromium.org + knollr@chromium.org + shaktisahu@chromium.org + + Records that a specific background task has expired. Recorded before the + task is to be started. + + + + + nyquist@chromium.org + shaktisahu@chromium.org + + Records the time (uptimeMillis) taken by a background task of type + {TaskType}. Recorded when the task finished callback is invoked. + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + + Records that a task extending a NativeBackgroundTask started loading the + native portion of Chrome (either in Reduced Mode or Full Browser Mode). + + + + + mheikal@chromium.org + hanxi@chromium.org + hnakashima@chromium.org + + Records that a specific background task has loaded native in Full Browser + Mode. + + + + + mheikal@chromium.org + hanxi@chromium.org + hnakashima@chromium.org + + Records that a specific background task has loaded native in Reduced Mode. + + + + + nyquist@chromium.org + shaktisahu@chromium.org + + Records that a specific background task has failed to be scheduled. + + + + + nyquist@chromium.org + shaktisahu@chromium.org + + Records that a specific background task has been successfully scheduled. + + + + + nyquist@chromium.org + shaktisahu@chromium.org + Records that a specific background task has been started. + + + + nyquist@chromium.org + shaktisahu@chromium.org + + Records that a specific background task has been stopped by Background Task + Scheduler before it was able to complete itself. + + + + + lazzzis@chromium.org + src/chrome/browser/back_press/android/OWNERS + + Recorded when the user invokes a back navigation only if the handler failed + to operate as expected, (e.g. it does nothing). May be recorded multiple + times for a single back press event if there are multiple failed handlers. + Android only. + + + + + lazzzis@chromium.org + src/chrome/browser/back_press/android/OWNERS + + Records that a specific feature intercepted the system's back press gesture. + + + + + lazzzis@chromium.org + src/chrome/browser/back_press/android/OWNERS + + Records that the back press causes the app to be minimized or the current + tab to be closed. + + + + + ckitagawa@chromium.org + yfriedman@chromium.org + + Records the total number of BindingManager bindings to + ChildProcessConnections that were dropped due to the BindingManager reaching + the connection limit. This value accumulates while the app is running and is + emitted upong the app being backgrounded at which time the counter is reset. + + + + + ioanap@chromium.org + fhorschig@chromium.org + + Recorded when a UI surface/flow in Chrome on Android chooses to re-auth the + user via biometrics. It records that surface/flow which made the request. + + + + + + Replaced by Android.ChildMismatch.AppInfoError2; the previous implementation + did not record the metric correctly in all cases. + + torne@chromium.org + boliu@chromium.org + + Records what error (if any) was encountered verifying the child process's + app info each time a child process is started via ChildProcessConnection. + + + + + torne@chromium.org + boliu@chromium.org + + Records what error (if any) was encountered verifying the child process's + app info each time a child process is started via ChildProcessConnection. + + + + + + Replaced by Android.ChildMismatch.BrowserVersionChanged2; the previous + implementation did not record the metric correctly in all cases. + + torne@chromium.org + boliu@chromium.org + + Records if the installed browser version appears to have changed since the + browser process was launched. Recorded each time a child process is started + via ChildProcessConnection, but only if the child's ApplicationInfo did not + match (i.e. when Android.ChildMismatch.AppInfoError is recorded as something + other than no error). + + + + + torne@chromium.org + boliu@chromium.org + + Records if the installed browser version appears to have changed since the + browser process was launched. Recorded each time a child process is started + via ChildProcessConnection, but only if the child's ApplicationInfo did not + match (i.e. when Android.ChildMismatch.AppInfoError is recorded as something + other than no error). + + + + + ckitagawa@chromium.org + yfriedman@chromium.org + + Records the percentage of sandboxed ChildProcessConnections with a + {ChildProcessConnectionMetricsBindingState} out of the total number of + ChildProcessConnections where there are {TotalConnectionBucket}. This is not + emitted if there are no live connections. Emitted at a Poisson distributed + period with a mean of 5 minutes on Chrome on Android while in the + foreground. + + + + + + + + + + + + + + ckitagawa@chromium.org + yfriedman@chromium.org + + Records the total number of sandboxed ChildProcessConnections in existence. + This is emitted even if there are no live connections. Emitted at a Poisson + distributed period with a mean of 5 minutes on Chrome on Android while in + the foreground. + + + + + ckitagawa@chromium.org + yfriedman@chromium.org + + Records the number of sandboxed ChildProcessConnections with a + {ChildProcessConnectionMetricsBindingState}. This is emitted even if there + are no live connections. Emitted at a Poisson distributed period with a mean + of 5 minutes on Chrome on Android while in the foreground. + + + + + + cduvall@chromium.org + boliu@chromium.org + + Measures time from {type} child process starts to right before main. Only + recorded on Android N+. Zygote measurements are recorded on Q+. + + Zygote measurements capture the CPU time (thread time) spent to create the + app zygote process, before the zygote preload starts. For other processes it + measures the time (uptimeMillis) to create the child process service. + + + + + + + + + + + + + peconn@chromium.org + src/base/metrics/OWNERS + + Recorded at the same time as "CustomTabs.Visible", this metric + should eventually replace that one. This additionally distinguishes between + Trusted Web Activities, WebAPKs and Webapps. + + As of M87, this histogram is logged on a log start, rather than log end to + tag more logs. + + + + + gangwu@chromium.org + twellington@chromium.org + + Records the failure reason for ChromeStartupDelegate requests. Recorded at + most once on application startup. + + + + + gangwu@chromium.org + twellington@chromium.org + + Records the result for ChromeStartupDelegate. Recorded on application + startup. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the total number of contacts shown in the contacts picker. Measured + once when the Contacts Picker dialog is dismissed. + + + + + finnur@chromium.org + twellington@chromium.org + + Records which action the user takes in the ContactsPickerDialog. Measured + once when the Contacts Picker dialog is dismissed. + + + + + finnur@chromium.org + twellington@chromium.org + + The contact properties requested by the website (names, emails, telephone + numbers). Measured once when the Contacts Picker dialog is dismissed. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the total number of contacts selected in the contacts picker. + Measured once when the Contacts Picker dialog is dismissed. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the percentage of contacts selected in the contacts picker. + Measured once when the Contacts Picker dialog is dismissed. + + + + + nemco@google.com + wenyufu@chromium.org + clank-app-team@google.com + + Source that changed the auto dark web content settings. This includes both + changes to global theme settings as well as individual site exceptions. This + histogram does not take into account whether the browser UI theme is dark or + not (e.g. browser theme could be "light" and user could still + change auto dark mode state in site settings). Recorded when the auto dark + web content settings changes including {NewState} + + + + + + + + + twellington@chromium.org + clank-app-team@google.com + + Records the reason why dark theme is enabled when dark theme is visible to + user. + + + + + twellington@chromium.org + clank-app-team@google.com + + Records whether dark theme is enabled or not on cold start and when the + enabled state changes. + + + + + twellington@chromium.org + clank-app-team@google.com + + Records user theme preference of system default, light or dark theme on cold + start and when the theme preference changes. + + + + + nemco@google.com + wenyufu@chromium.org + clank-app-team@google.com + + Entry that navigate the user into the Theme Settings. Recorded when the + Theme settings is opened. + + + + + + Removed May 2022. + + twellington@chromium.org + tedchoc@chromium.org + clank-app-team@google.com + + Records the largest display dimension in dp during deferred startup. The + display size is not affected by Android N multi-window mode. Clamped at + 200dp to 1200dp. + + + + + twellington@chromium.org + shuyng@google.com + clank-app-team@google.com + + Records the largest display dimension in dp during deferred startup. The + display size is not affected by Android N multi-window mode. Clamped at + 200dp to 2000dp. 20dp granularity. + + + + + twellington@chromium.org + aishwaryarj@google.com + clank-app-team@google.com + + Records the primary display (screen) size in tens of inches with 0.2 inches + (2 units) granularity, during deferred startup. The display size is not + affected by Android N multi-window mode. + + + + + + Removed May 2022. + + twellington@chromium.org + tedchoc@chromium.org + clank-app-team@google.com + + Records the smallest display dimension in dp during deferred startup. The + display size is not affected by Android N multi-window mode. Clamped at 0 to + 1000dp. + + + + + twellington@chromium.org + shuyng@google.com + clank-app-team@google.com + + Records the smallest display dimension in dp during deferred startup. The + display size is not affected by Android N multi-window mode. Clamped at 100 + to 1000dp. 10dp granularity. + + + + + + Removed Feb 2020. + + agrieve@chromium.org + cduvall@chromium.org + + Records the number of times Chrome runs "cmd package compile" to + fix dexopt issues, and for what reason. + + + + + arbesser@google.com + autofill_assistant@google.com + + Counts calls to Activity.onPerformDirectAction made by the system on behalf + of the assist app and which action was performed, if any. Available starting + with Android Q. + + + + + + Removed in April 2023. + + hesen@chromium.org + clank-downloads@google.com + + Records various actions taken by the user on the rename dialog in download + home. + + + + + + + qinmin@chromium.org + clank-downloads@google.com + + Records instances where the foreground undergoes a lifecycle change (when + the foreground starts, changes pinned notification, or stops). + + + + + dtrainor@chromium.org + clank-downloads@google.com + + The number of non-incognito download items displayed that are already viewed + by the user at any time, recorded when the download UI is initialized. + {AndroidDownloadTypes} + + + + + + + + dtrainor@chromium.org + clank-downloads@google.com + + The number of non-incognito download items displayed when the download UI is + initialized. {AndroidDownloadTypes} + + + + + + + + dtrainor@chromium.org + clank-downloads@google.com + Recorded when a download fails to open. + + + + dtrainor@chromium.org + clank-downloads@google.com + Recorded when a download is opened. + + + + dtrainor@chromium.org + clank-downloads@google.com + The count of Download Home list entry actions taken. + + + + dtrainor@chromium.org + clank-downloads@google.com + The count of Download Home top level menu actions taken. + + + + + Removed in April 2023. + + dtrainor@chromium.org + clank-downloads@google.com + + The number of items selected when performing a multi-delete action. + + + + + + Removed in April 2023. + + dtrainor@chromium.org + clank-downloads@google.com + + The number of items selected when performing a multi-share action. + + + + + qinmin@chromium.org + clank-downloads@google.com + + Records instances where a user interacts with a download notification (ie. + clicks on, pauses, resumes, cancels). + + + + + shaktisahu@chromium.org + clank-downloads@google.com + Records how users open audio download files on Android. + + + + shaktisahu@chromium.org + clank-downloads@google.com + + Records the entry point for users opening downloaded files on Android, that + are not audio nor video. + + + + + shaktisahu@chromium.org + clank-downloads@google.com + Records how users open video download files on Android. + + + + qinmin@chromium.org + clank-downloads@google.com + + + + Records instances of DownloadForegroundService stops. The number of expected + stops (stopped) and unexpected stops (task removed, low memory, etc) can be + compared to get a sense of how often the service crashes to see how it + handles restarts. For example, the number of times the service is stopped + because of low memory can be compared to the number of times the service has + been destroyed to see how frequently it occurs. Or, the number of start + sticky's will indicate how often the service is able to restart due to an + unexpected stop. + + + + + + Removed in April 2023. + + twellington@chromium.org + clank-downloads@google.com + The number of downloads shared at the same time. + + + + + Removed in April 2023. + + twellington@chromium.org + clank-downloads@google.com + + Recorded when downloads are shared through the download manager. A recorded + value of "All" indicates that multiple types of downloads were + shared. + + + + + twellington@chromium.org + clank-downloads@google.com + The percentage of total storage downloads consume. + + + + shaktisahu@chromium.org + clank-downloads@google.com + + Records the required stretch of the smaller dimension before displaying an + image on download home. Measured in percentage. {AndroidDownloadTypes} + + + + + + qinmin@chromium.org + clank-downloads@google.com + + Records the entry point for users opening the download page on Android. + + + + + wenyufu@chromium.org + clank-large-form-factors@google.com + + Records the distance of the drag end position from the initial drag start + position when dragging starts and ends within ContentView containing web + contents. Note that the distance only counts the distance of drag event + happend on the screen; scrolling for the web content will be disabled during + drag. Used to assist in setting proper threshold to dismiss context menu + during drag. Android only. + + + + + wenyufu@chromium.org + clank-large-form-factors@google.com + + Records the duration in ms of drag process when drop happend inside + ContentView containing web contents, regardless DragEvent#getResult. Does + not capture drag events that end outside the ContentView (Use + Android.DragDrop.FromWebContent.Duration instead). Android only. + + + + + wenyufu@chromium.org + clank-large-form-factors@google.com + + Records the duration in ms of drag process when {DropResult}. Recorded for + the drag process starts from the web content, and drop happens outside of + the web content. Does not capture drag events that end inside the + ContentView containing web contents. Recorded when such a drag event ends. + Android only. + + For more information regarding drag results, see: + https://developer.android.com/reference/android/view/DragEvent#getResult() + + + + + + + + + wenyufu@chromium.org + clank-large-form-factors@google.com + + Records the type of object being dragged, for the drag process starts from + the web content, and drop happens outside of the web content. Does not + capture drag events that end inside the ContentView containing web contents. + Recorded when such a drag event ends. Android only. + + + + + shuyng@google.com + clank-large-form-factors@google.com + + Records the duration between the URI being cleared and + ContentProvider#openFile attempts with that expired URI. This is used to + evaluate how long we should keep the image data. Because drop target app + could request data multiple times with the same URI, this metric could + record multiple times per URI, which gives us the holistic view about the + timing when the image data associated with the URI is needed. Another metric + Android.DragDrop.Image.OpenFileTime.FirstExpired only records at most once + per URI, to avoid counting in retries from drop target app when Chrome + rejects the expired URI. This metric is recorded when Chrome receives an + expired URI to retrieve data. If the URI is not the latest expired one, the + metric will not be recorded because we do not calculate the elapsed time for + older URIs. Android only. + + + + + shuyng@google.com + clank-large-form-factors@google.com + + Records the duration between receiving Android Drag End event and the first + ContentProvider#openFile attempted by the drop target app. The duration is + calculated during the first ContentProvider#openFile for each URI. Another + metric Android.DragDrop.Image.OpenFileTime.LastAttempt is recorded for the + last ContentProvider#openFile. Record 0 if the duration is negative (e.g. + ContentProvider#openFile is accessed before drag ends). Android only. + + + + + shuyng@google.com + clank-large-form-factors@google.com + + Records the duration between the URI being cleared and the first + ContentProvider#openFile attempt with that expired URI. This is used to + evaluate how long we should keep the image data. Because drop target app may + retry after Chrome rejects the expired URI; and the retries are not helpful + to evaluate how long the data is needed; this metric records at most once + per URI. Another metric Android.DragDrop.Image.OpenFileTime.AllExpired + records multiple times per URI, to gives us the holistic view about the + timing when the image data associated with the URI is needed. This metric is + recorded when Chrome receives an expired URI to retrieve data. If the URI is + not the latest expired one, the metric will not be recorded because we do + not calculate the elapsed time for older URIs. Android only. + + + + + shuyng@google.com + clank-large-form-factors@google.com + + Records the duration between receiving Android Drag End event and the last + ContentProvider#openFile attempted by the drop target app. The duration is + calculated when the image data expired at the designated time limit. It is + not recorded if the image data is replaced before the time limit due to the + start of the next image drag. Another metric + Android.DragDrop.Image.OpenFileTime.FirstAttempt is recorded for the first + ContentProvider#openFile. Record 0 if the duration is negative (e.g. + ContentProvider#openFile is accessed before drag ends). Android only. + + + + + shuyng@google.com + clank-large-form-factors@google.com + + Records the image size being dragged from Chrome. Recorded when start + dragging an image from Chrome's web content, regardless of whether drop is + handled successfully. Used to evaluate the memory consumption. Android only. + + + + + shuyng@google.com + clank-large-form-factors@google.com + + Records the interval between two back-to-back image drags. This is used to + evaluate the duration to preserve the image data. Android only. + + + + + skym@chromium.org + clank-sbui-team@google.com + + Recorded during ChromeBaseAppCompatActivity initialization if third_party + dynamic colors logic thinks dynamic colors are available. This is often + based on Android version and OEM. This metric is not related to whether + dynamic colors are desired by features/experiments. + + + + + mvanouwerkerk@chromium.org + src/android_webview/OWNERS + src/chrome/android/OWNERS + + Records the input device source for the action down touch event. + + + + + anthie@google.com + ljjlee@google.com + chrome-kids-eng@google.com + cros-families-eng@google.com + + The different GMS error status codes that a user may encounter during the + parent authentication step in the local web approval flow. Recorded on + Android only. See go/chrome-local-web-approval-parent-auth-error-codes + (Googlers only) for the error code definitions. + + + + + + + agrieve@chromium.org + fredmello@chromium.org + tiborg@chromium.org + wnwen@chromium.org + + Availability status for each dynamic feature module. Reported once per + Chrome start. This metric's purpose is to measure a feature module's install + penetration over time. + + + + + + + agrieve@chromium.org + fredmello@chromium.org + tiborg@chromium.org + wnwen@chromium.org + + Duration of successful installs for each dynamic feature module. Only + contains install durations for modules first requested *before* Chrome + started last and may therefore be installed from cache. Omits deep sleep + time. + + + + + + + agrieve@chromium.org + fredmello@chromium.org + tiborg@chromium.org + wnwen@chromium.org + + Install status counter for each dynamic feature module. Recorded during + on-demand and deferred installs. + + + + + + + agrieve@chromium.org + fredmello@chromium.org + tiborg@chromium.org + wnwen@chromium.org + + Install status for each dynamic feature module. Recorded after the + installation has finished. + + + + + agrieve@chromium.org + fredmello@chromium.org + tiborg@chromium.org + wnwen@chromium.org + + Length of time during startup used by module framework code. This is our + metric to improve and used to guard against regressions. + + + + + + + agrieve@chromium.org + fredmello@chromium.org + tiborg@chromium.org + wnwen@chromium.org + + Duration of successful installs for each dynamic feature module. Only + contains install durations of modules first requested *after* Chrome started + last and are therefore unlikely to be installed from cache. Omits deep sleep + time. + + + + + drott@chromium.org + layout-dev@chromium.org + + Records the latency of looking up a local font from Android downloadable + fonts at the time of instantiating the font in the fonts backend in the + renderer. Includes time for error checking and attempting to create the font + from the retrieved blob, if there is one. Only records timings for + situations in which a font could not be instantiated. This is recorded only + on devices that support high resolution timers. + + + + + drott@chromium.org + layout-dev@chromium.org + + Records the latency of looking up a local font from Android downloadable + fonts at the time of instantiating the font in the fonts backend in the + renderer. Includes time for error checking and attempting to create the font + from the retrieved blob, if there is one. Only records timings for + situations in which a font was successfully instantiated and returned. This + is recorded only on devices that support high resolution timers. + + + + + drott@chromium.org + cduvall@chromium.org + layout-dev@chromium.org + + Records the latency of fetching the font name lookup table from the browser. + The table is cached by the renderer so will usually only be fetched once per + renderer startup. This is recorded when an attempt is made to fetch the + table, typically once per renderer on the first font lookup for that + process. If the original fetch fails, this will be recorded the next time a + font lookup is requested. + + + + + twellington@chromium.org + clank-app-team@google.com + + Records the time taken to fetch all available font files from the GMS Core + Android downloadable font provider. + + + + + + Removed 09/2022. No longer needed. + + twellington@chromium.org + clank-app-team@google.com + + Records font fetch requests by font name. These results may be used to + determine whether it remains worthwhile to preload fonts that are available + for renderer font match requests. + + + + + + Removed 09/2022. No longer needed. + + twellington@chromium.org + clank-app-team@google.com + + Records the result of font fetch requests made to the GMS Core Android + downloadable font provider. The result may be success, or failure with a + reason. In the case of multiple failures, only the first one encountered is + reported. See implementation at AndroidFontLookupImpl. + + + + + twellington@chromium.org + clank-app-team@google.com + + Records the time taken to make a fetchFonts font request to GMS Core via the + Android downloadable font provider API. This metric may be used to determine + whether it's reasonable to execute this task on the IO thread rather than + posting to a background thread. + + + + + twellington@chromium.org + clank-app-team@google.com + + Records the time taken to respond to a request from the renderer to fetch a + specific font file from the GMS Core Android downloadable font provider. + + + + + sinansahin@google.com + twellington@chromium.org + + Time it took to retrieve the downloadable fonts after the first draw of + {ActivityType}'s content view. Mutually exclusive with *BeforeFirstDraw. + Recorded when all downloadable fonts are retrieved. + + + + + + sinansahin@google.com + twellington@chromium.org + + Time it took to retrieve the downloadable fonts after post-inflation + startup. Mutually exclusive with *BeforePostInflationStartup. Recorded when + all downloadable fonts are retrieved. {ActivityType} + + + + + + sinansahin@google.com + twellington@chromium.org + + Amount of time the downloadable fonts were retrieved before the first draw. + Mutually exclusive with *AfterFirstDraw. Recorded when the first #onDraw + call happens for the {ActivityType}'s content view. + + + + + + sinansahin@google.com + twellington@chromium.org + + Amount of time the downloadable fonts were retrieved before post-inflation + startup. Mutually exclusive with *AfterPostInflationStartup. Recorded after + AsyncInitializationActivity#performPostInflationStartup. {ActivityType} + + + + + + sinansahin@google.com + twellington@chromium.org + + Time it took to retrieve the downloadable fonts after Application#OnCreate. + Recorded when all downloadable fonts are retrieved. {ActivityType} + + + + + + roagarwal@chromium.org + chrome-incognito@google.com + + Records the clicks on Clear Browsing Data button at history page for each + profile type in Android. + + + + + roagarwal@chromium.org + chrome-incognito@google.com + + Records the clicks on Home button in Android toolbar for each profile type. + + + + + roagarwal@chromium.org + chrome-incognito@google.com + + Records the count of any cases when clicking on the "Close all + Incognito tabs" notification may not delete any files which were opened + in the Incognito session. True value denotes file was not deleted and false + otherwise. + + + + + roagarwal@chromium.org + chrome-incognito@google.com + + Records the result of the attempt to re-auth the user via biometrics or + device lock for the Incognito re-auth screen. + + + + + roagarwal@chromium.org + chrome-incognito@google.com + + Records the count when the Incognito lock setting was either turned + "on" or "off" from the Chrome Settings > Privacy and + Security > Lock Incognito tabs when you leave Chrome, option. This + setting can be in disabled state if the Android screen lock is not set-up, + in which case we don't record this metric. This is recorded only when the + toggle is not in disabled state and if the re-authentication checks succeeds + which follows after the user changes the toggle. This covers only the + interactions done from the above mentioned Incognito lock Setting page. See + also the metric "Android.IncognitoReauth.PromoActionType" which + records the opt-in made exclusively from promo card. + + + + + roagarwal@chromium.org + chrome-incognito@google.com + + Records the action type the user makes on the Incognito re-auth promo card + which is shown inside the Incognito tab grid view. There's only two possible + interactions possible which is either to turn on the Incognito lock or + dismiss the promo. A "Promo accepted" entry is emitted when user + clicks on "Turn on Incognito lock" (gated on successful + re-authentication) and a "No thanks" value is emitted when the + user clicks on "No thanks". + + + + + arabm@google.com + chrome-incognito@google.com + + Records the number of impressions of the Incognito re-auth promo card when + user clicks accept or dismiss or when the promo expires after the max number + of impressions. + + + + + roagarwal@chromium.org + chrome-incognito@google.com + + Records the Incognito lock setting state (if available to clients) exactly + once during the browser startup, after the native code is initialized. Note, + for multi-windows this histogram would be emitted as many times as the users + enter multi-window(s). + + + + + mthiesse@chromium.org + yfriedman@chromium.org + + When a navigation to an external protocol is blocked due to a missing + gesture on the redirect chain, records the time in milliseconds since the + last time the user touched the screen before the navigation. Note that this + notion is decoupled from the last user activation in blink due to quirks + around how the RedirectHandler works. + + + + + mthiesse@chromium.org + yfriedman@chromium.org + + Recorded when a navigation to an Intent URI occurs. Records the results of + the navigation. + + + + + mthiesse@chromium.org + yfriedman@chromium.org + + When a site attempts to navigate an intent: or android-app: URI, records + whether or not the URI contained an intent selector. + + + + + mthiesse@chromium.org + yfriedman@chromium.org + + Recorded when an external app is launched as the result of a navigation. + Records the source and scheme of the navigation. + + + + + twellington@chromium.org + mthiesse@chromium.org + + When a user attempts to navigate a file: URI, records the mime type of the + file. + + + + + mthiesse@chromium.org + tedchoc@google.com + + Number of URLs present in Text Share intents (ACTION_SEND) received by + Chrome. + + + + + tedchoc@chromium.org + clank-team@google.com + + Signifies whether the last shared app information is retrieved successfully + or not. This is logged when configuring the direct sharing menu item. + + + + + + + cduvall@chromium.org + agrieve@chromium.org + + Whether a split Context has had its ClassLoader replaced due to b/172602571. + This is recorded every time a split Context is created. + + + + + + + cduvall@chromium.org + agrieve@chromium.org + + Amount of time it takes to create a new Context for a split. This will only + be recorded if isolated splits are enabled. + + + + + + + cduvall@chromium.org + agrieve@chromium.org + + Amount of time spent waiting for a split preload task to finish. This will + only be recorded if isolated splits are enabled. + + + + + smaier@chromium.org + agrieve@chromium.org + + The status of an AsyncTask when get() is called on the UI thread. This is + only recorded if the AsyncTask isn't immediately available. + + Seeing the distribution of PENDING vs RUNNING tasks will give us a better + idea for how to approach these hangs. + + + + + rsesek@chromium.org + + Reports the kernel major and minor version from the utsname.release field. + The low 16 bits of each version are combined into a 32-bit integer. The + range is from [0x00020006,0x0004000a] to track kernel versions 2.6 through + 4.10. + + + + + finnur@chromium.org + peter@chromium.org + + Recorded once per batch of files uploaded, when Chrome has made the + determination of what media picker to show to the user. + + + + + + Removed 09/2022. Expired and not needed anymore. + + ssid@chromium.org + + The duration of each failed ActivityManager.getMyMemoryState() call made by + MemoryPressureMonitor. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + ssid@chromium.org + + Memory pressure notifications sent by Android through ComponentCallbacks2. + This metric was added 04/2018; for prior data for the browser process see + MemoryAndroid.NotificationBackground and + MemoryAndroid.NotificationForeground. {AndroidProcessType} + + + + + + + + + lazzzis@chromium.org + src/components/messages/OWNERS + + Recorded once per message when the message is dismissed to capture the + dismissal reason (e.g. primary button tap, timeout). The histogram can be + used for measuring user engagement with messages of different types. + + + + + + lazzzis@chromium.org + src/components/messages/OWNERS + + Records the message identifier each time a message is enqueued through + MessageDispatcher (the entry point to Chrome for Android's messages system). + This histogram can be used for getting a count of messages broken down by + message identifier. + + + + + lazzzis@chromium.org + src/components/messages/OWNERS + + Records the message identifier when an enqueued message is not immediately + displayed either because there is another message on the secreen or because + message scope (e.g. tab) is not active. This metric is recorded along with + Android.Messages.Enqueued.Hiding, which records identifier of currently + visible message. + + + + + lazzzis@chromium.org + src/components/messages/OWNERS + + Recorded when an enqueued message is not immediately displayed. This metric + records message identifier of a message currently displayed on the screen + (that prevented the enqueued message from getting displayed immediately). + INVALID_MESSAGE is recorded when the message isn't displayed because message + scope (e.g. tab) isn't active or when message queue is suspended. + + + + + lazzzis@chromium.org + src/components/messages/OWNERS + + Records the message identifier when a message is displayed immediately when + it is enqueued. This includes cases when there are no other messages on the + screen as well as cases when the new message is high priority and causes + some other message to hide. + + + + + lazzzis@chromium.org + src/components/messages/OWNERS + + Records the type of stacking animation when it is triggered. The type + indicates the relation between current displayed messages and incoming + messages. + + + + + lazzzis@chromium.org + src/components/messages/OWNERS + + Records the scenario when 3 message stacking could be possible. + + + + + lazzzis@chromium.org + src/components/messages/OWNERS + + Records the message identifier when {Action} during a stacking animation. + + + + + + + + + + + + + lazzzis@chromium.org + src/components/messages/OWNERS + + Records the time interval the message was displayed on the screen before the + user dismissed it with a gesture. The metric is NOT recorded when the user + presses primary or secondary button or when the message is auto-dismissed + based on timer. The interval includes both enter and exit animation. The + metric can be used to analyze the time threshold for the user to give up + waiting for autodismiss timer and dismiss the message explicitly. + + + + + + lazzzis@chromium.org + src/components/messages/OWNERS + + Records the time interval the message was displayed on the screen before the + user explicitly dismissed it. The metric is recorded when the user presses + primary or secondary button, or dismisses the message with a gesture. It is + not recorded when the message is auto-dismissed based on timer. The interval + includes both enter and exit animation. The metric can be used to analyze + the amount of time it takes for the user to understand the message and take + an action (e.g. click a button, dismiss the message, etc.). + + + + + + twellington@chromium.org + clank-app-team@google.com + + Records the action taken on a security sensitive touch event in modal + dialog. As of M84 it is used for site premission dialogs. + + + + + + Expired in M77. See Android.ChildProcessBinding.* + + tedchoc@chromium.org + clank-team@google.com + + The number of moderate bindings which were kept while Chrome process is in + the foreground. This is logged right before Chrome process goes into the + background. + + + + + jinsukkim@chromium.org + twellington@chromium.org + clank-app-team@google.com + + The maximum number of Chrome instances that ran at the same time in a + 24-hour period. Checked whenever there is an activity state change to log + the stats once in 24 hours. + + + + + jinsukkim@chromium.org + twellington@chromium.org + clank-app-team@google.com + + Records the number of running ChromeTabbedActivity's on every + ChromeTabbedActivity startup. This includes activities that may not be + visible on screen (i.e. it includes ChromeTabbedActivity's in the + "stopped" state). This does not include ChromeTabbedActivity's + that have been destroyed regardless of whether their owning Android Task may + be retrieved in Android Recents. Applicable to Android S+ only. + + + + + jinsukkim@chromium.org + twellington@chromium.org + clank-app-team@google.com + + The number of allocated instance IDs which corresponds to the number of + retrievable Chrome instances (aka windows). An instance is considered + retrievable if it has tab state data on disk irrespective of whether that + data is currently assigned to a running ChromeTabbedActivity. These + instances may be retrieved from Chrome's in-app window manager from Android + Recents if they are associated with a live ChromeTabbedActivity or Android + Task. Recorded on every ChromeTabbedActivity start-up. Applicable to Android + S+ only. + + + + + ckitagawa@chromium.org + yfriedman@chromium.org + chrome-metrics-team@google.com + + Records whether multiple user profiles are present in Android. This is + recorded every time a metrics log is closed. + + + + + + + twellington@chromium.org + tedchoc@chromium.org + clank-app-team@google.com + + Records on every metrics upload whether the activity is running in Android N + multi-window mode or not. + + + + + jinsukkim@chromium.org + twellington@chromium.org + clank-app-team@google.com + + Total time spent in Android N+ multi-window (aka split-screen) mode. + Recorded when multi-window mode is exited. + + + + + mheikal@chromium.org + hanxi@chromium.org + hnakashima@chromium.org + yfriedman@chromium.org + + Records that a specific background task has finished cleanly (i.e. no + unexpected exits because of chrome crash or OOM). This includes tasks that + have been stopped due to timeout. + + + + + mheikal@chromium.org + hanxi@chromium.org + hnakashima@chromium.org + + Records that a specific native background task started in Full Browser Mode + has finished cleanly. See Android.NativeBackgroundTask.TaskFinished for more + details. + + + + + mheikal@chromium.org + hanxi@chromium.org + hnakashima@chromium.org + + Records that a specific native background task started in Reduced Mode has + finished cleanly. It is possible that Full Browser has launched while the + task was running. See Android.NativeBackgroundTask.TaskFinished for more + details. + + + + + mheikal@chromium.org + hanxi@chromium.org + hnakashima@chromium.org + yfriedman@chromium.org + + Records that a specific native background task has been started. This does + not consider tasks that are marked as DONE or RESCHEDULED before a call to + start native is made (regardless of whether native is already loaded). + + + + + mheikal@chromium.org + hanxi@chromium.org + hnakashima@chromium.org + + Records that a specific native background task has been started in Full + Browser Mode. See Android.NativeBackgroundTask.TaskStarted for more details. + + + + + mheikal@chromium.org + hanxi@chromium.org + hnakashima@chromium.org + + Records that a specific native background task has been started in Reduced + Mode. See Android.NativeBackgroundTask.TaskStarted for more details. + + + + + finkm@chromium.org + + Counts impressions of the NTP on Android. It also counts potential + impressions. A potential impression is a place where it would make sense to + open the NTP instead of the current view. E.g. the no-tab view is counted as + a potential impression since this view could be replaced with the NTP. For + better comparison regular impressions are also counted. The no-tab view + counting happens right after the user closed the last tab and the regular + impression counting happens at construction time of the NTP (=whenever a new + tab is opened). + + + + + chili@chromium.org + + State of a download or offline page request at user-initiated cancel. + {OfflineItemsSource} + + + + + + + + + ender@google.com + chrome-mobile-search@google.com + + Records the outcome of the User's interaction with ActionInSuggest chips, + breaking down the cases where the intent could not be created or started. + + Recorded every time the user interacts with the ActionInSuggest, for the + Action that the user interacted with. Not recorded if the user does not + interact with ActionInSuggest. + + + + + spelchat@chromium.org + chrome-brapp-loading@google.com + + Records time between the user input that triggered an Omnibox navigation on + Android to the time the Omnibox code calls into the shared C++ navigation + code (NavigationController). + + + + + ender@chromium.org + tedchoc@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + + Recorded every time AutocompleteController.java interacts with + autocomplete_controller_android.cc. Indicates how often matches referenced + by Java are different from the matches referenced by C++ at any position. + + Note: Chrome M91 and before only increased this histogram for specific Match + objects that the user interacted with. As of M92, this histogram is + increased for every case where at least one Match referenced by Java was + different from its corresponding C++ match at the same exact position. + + + + + ender@chromium.org + jdonnelly@chromium.org + + Records interactions with the Search Refine button, differentiating by + context (zero-prefix vs non-zero-prefix), including the cases where the User + did not interact with the Refine button placed beside the Search suggestion + at all. + + Recorded once per interaction with the Omnibox and Sugestions, when the + Omnibox loses focus. This includes cases where the User chooses to navigate + somewhere (both by using a suggestion or pressing Go button on keyboard), or + abandons the Omnibox. + + + + + spelchat@chromium.org + chrome-brapp-loading@google.com + + Records time spent setting geolocation headers when the user navigates via + the Omnibox. This time blocks the start of the navigation and is included in + InputToNavigationStart metrics, but not in NavigationTo* metrics. + + + + + + Retired with M103. Please refer to .CreateTime2 + + ender@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + + Records time spent on positioning all suggestions on screen. This histogram + is recorded every time a new suggestion list is received. + + Values recorded here should generally aim to be small, likely below 2ms + range. Higher values are an indicator of a performance problem. + + Layout operation should take place just once when suggestion view is shown + for the first time. + + This metric is reported for all users and uses 100microsecond granularity. + + When comparing Durations measured here, also compare Total Counts for a + correct indication of how frequently views are laid out and how the overall + time spent performing layout operation changed. + + This histogram is related to Android.Omnibox.SuggestionView.Reused, + Android.Omnibox.SuggestionList.MeasureTime, + Android.Omnibox.SuggestionView.CreateTime. + + + + + ender@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + + Records time spent on positioning all suggestions on screen. This histogram + is recorded every time a new suggestion list is received. + + Values recorded here should generally aim to be small, likely below 2ms + range. Higher values are an indicator of a performance problem. + + Layout operation should take place just once when suggestion view is shown + for the first time. + + This metric is reported for all users and uses 100microsecond granularity. + + When comparing Durations measured here, also compare Total Counts for a + correct indication of how frequently views are laid out and how the overall + time spent performing layout operation changed. + + This histogram is related to Android.Omnibox.SuggestionView.Reused, + Android.Omnibox.SuggestionList.MeasureTime2, + Android.Omnibox.SuggestionView.CreateTime2. + + + + + + Retired with M103. Please refer to .MeasureTime2 + + ender@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + + Records time spent on measuring all suggestions ahead of positioning them on + screen. This histogram is recorded every time a new suggestion list is + received. + + Values recorded here should generally aim to be small, likely below 2ms + range. Higher values are an indicator of a performance problem. + + Measure operation should take place just once when suggestion view is shown + for the first time. + + This metric is reported for all users and uses 100microsecond granularity. + + When comparing Durations measured here, also compare Total Counts for a + correct indication of how frequently views are measured and how the overall + time spent measuring views changed. + + This histogram is related to Android.Omnibox.SuggestionView.Reused, + Android.Omnibox.SuggestionList.LayoutTime, + Android.Omnibox.SuggestionView.CreateTime. + + + + + ender@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + + Records time spent on measuring all suggestions ahead of positioning them on + screen. This histogram is recorded every time a new suggestion list is + received. + + Values recorded here should generally aim to be small, likely below 2ms + range. Higher values are an indicator of a performance problem. + + Measure operation should take place just once when suggestion view is shown + for the first time. + + This metric is reported for all users and uses 100microsecond granularity. + + When comparing Durations measured here, also compare Total Counts for a + correct indication of how frequently views are measured and how the overall + time spent measuring views changed. + + This histogram is related to Android.Omnibox.SuggestionView.Reused, + Android.Omnibox.SuggestionList.LayoutTime2, + Android.Omnibox.SuggestionView.CreateTime2. + + + + + ender@google.com + pnoland@chromium.org + gangwu@chromium.org + + Records time elapsed between requesting the suggestions and converting the + first (synchronous) set of received suggestions to the UI model. + + For the complete, asynchronous iteration see the + Android.Omnibox.SuggestionList.RequestToUiModel.Last metric. + + This metric is recorded exactly once per request, including the zero-prefix + suggestions request. + + + + + ender@google.com + pnoland@chromium.org + gangwu@chromium.org + + Records time elapsed between requesting the suggestions and converting the + final (asynchronous) set of received suggestions to the UI model. + + For the short, synchronous iteration see the + Android.Omnibox.SuggestionList.RequestToUiModel.First metric. + + This metric is recorded at most once per request, including the zero-prefix + suggestions request. The metric will not be emitted if the current + Autocomplete cycle was canceled by the user - either by refining the input + in the omnibox, or by ending the interaction with the Omnibox. + + + + + ender@chromium.org + jdonnelly@chromium.org + + For every interaction with the Omnibox, this metric records whether the user + scrolled the omnibox while exploring suggestions on {PageClass}. + + This is recorded once per Omnibox interaction, regardless of whether the + User chooses to navigate somewhere or abandons the interaction. + + + + + + + + + + + ender@google.com + gangwu@chromium.org + rongtan@chromium.org + + Records the type of suggestion that was reused with the help of + RecyclerView. + + This histogram drives OmniboxSuggestionsDropdown optimization, helping us + find the balance between the volume of suggestions and amount of memory we + delegate to re-use the pre-constructed suggestion views. + + Along with the Android.Omnibox.SuggestionView.ReusedType, the two histograms + paint the picture of which suggestions need to be created more often than + others vs which suggestions have more capacity than is actually needed. + Higher reuse means lower latency at the expense of slight increase of memory + consumption. + + This histogram is related to Android.Omnibox.SuggestionView.ReusedType. + + + + + + Retired with M103. Please refer to .CreateTime2 + + ender@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + + Records time spent creating a single suggestion. + + Values recorded here should generally aim to be small, below 1ms range. + Higher values may be an indicator of a performance problem. + + This metric is reported for all users and uses 100microsecond granularity. + + When comparing Durations measured here, also compare Total Counts for a + correct indication of how frequently views are created and how the overall + time spent creating views changed. + + This histogram is related to Android.Omnibox.SuggestionList.LayoutTime, + Android.Omnibox.SuggestionList.MeasureTime, + Android.Omnibox.SuggestionView.Reused. + + + + + ender@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + + Records time spent creating a single suggestion. + + Values recorded here should generally aim to be small, below 1ms range. + Higher values may be an indicator of a performance problem. + + This metric is reported for all users and uses 100microsecond granularity. + + When comparing Durations measured here, also compare Total Counts for a + correct indication of how frequently views are created and how the overall + time spent creating views changed. + + This histogram is related to Android.Omnibox.SuggestionList.LayoutTime2, + Android.Omnibox.SuggestionList.MeasureTime2, + Android.Omnibox.SuggestionView.Reused. + + + + + + Replaced with Android.Omnibox.SessionViewsCreated and + Android.Omnibox.SessionViewsReused since M110 + + ender@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + + Records number of times a suggestion was successfully reused. + + Values recorded here tell how efficiently View reuse algorithms operate and + how frequently these algorithms have managed to prevent unnecessary view + creation. Higher Reuse counts indicate better performance. + + When analysing this metric, consider checking also the Total Counts of + Android.Omnibox.SuggestionView.CreateTime metric for a better information + regarding how view creations and re-uses have changed: + + * If this metric increased while the Total Count of the CreateTime + decreased, the change has positive effect. + + * If this metric increased (or decreased) and there is a similar change in + Total Counts of CreateTime, then the effect is neutral. + + * If this metric decreased, while the Total Count increased, then the change + has a negative effect (fewer reuses, more time spent creating views) + + Obsolete: Please use Android.Omnibox.SessionViewsCreated and + Android.Omnibox.SessionViewsReused. + + This histogram is related to Android.Omnibox.SuggestionList.LayoutTime2, + Android.Omnibox.SuggestionList.MeasureTime2, + Android.Omnibox.SuggestionView.CreateTime2. + + + + + ender@google.com + gangwu@chromium.org + rongtan@chromium.org + + Records the type of suggestion that was reused with the help of + RecyclerView. + + This histogram drives OmniboxSuggestionsDropdown optimization, helping us + find the balance between the volume of suggestions and amount of memory we + delegate to re-use the pre-constructed suggestion views. + + Along with the Android.Omnibox.SuggestionView.CreatedType, the two + histograms paint the picture of which suggestions need to be created more + often than others vs which suggestions have more capacity than is actually + needed. Higher reuse means lower latency at the expense of slight increase + of memory consumption. + + This histogram is related to Android.Omnibox.SuggestionView.CreatedType. + + + + + ender@google.com + rongtan@google.com + + Records number of views created from the moment the Omnibox was focused, + until the interaction was completed, whether the user navigated somewhere or + canceled the interaction. + + Values recorded here tell how efficiently the view creation and re-use + works, highlighting possible issues related to unusually frequent view + creation; the number of views created should be low and not exceed the sum + of all the views recycled by HistogramRecordingRecycledViewPool component. + Any deviation from this are a signal that the RecycledViewPool limits are + not optimal. + + When observing a higher than expected number of created views, consult the + Android.Omnibox.SuggestionView.CreatedType to identify view type that is not + correctly captured and update the limits of the + HistogramRecordingRecycledViewPool. + + This histogram is related to Android.Omnibox.SuggestionView.CreatedType, + Android.Omnibox.SuggestionView.SessionViewsReused. + + + + + ender@google.com + rongtan@google.com + + Captures the efficiency of the view re-use from the moment the Omnibox was + focused, until the interaction was completed, whether the user navigated + somewhere or canceled the interaction. + + Values captured here directly reflect the efficiency of recycled view pool + tuning, with the following caveats: + + * short sessions (omnibox focused and defocused, with no inputs) will report + efficiency of 0% (because all the views had to be created and no views were + available for re-use). + + * this metric will never truly capture 100% effectiveness, because during + every input session some views will have to be created. + + The captured value should be at or above 90% re-use. Lower re-use rates may + be an indication of a possible issue. + + This histogram is related to + Android.Omnibox.SuggestionView.SessionViewsCreated. + + + + + ender@chromium.org + jdonnelly@chromium.org + mpearson@chromium.org + + Records whether users interacted with suggestion originating from Java + cache. + + Android presents the Cached suggestions for a brief time before the Native + libraries become available, replacing these with a fresh content as soon as + Autocomplete subsystem serves them. This histogram records all the events + where the cached suggestions were shown for an extended period of time - + long enough for the User to identify and interact with a suggestion of their + choice. + + Recorded every time the User initiates navigation using the Omnibox or the + Suggestions list, regardless of context. + + + + + mdjones@chromium.org + twellington@chromium.org + amaralp@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + Records how the omnibox was focused. + + + + roagarwal@chromium.org + chrome-incognito@google.com + + Records the clicks on History menu item separately for each profile type in + Android. + + + + + nyquist@chromium.org + yfriedman@chromium.org + + Records the size of the user's cache at startup on Android O and above. + + + + + nyquist@chromium.org + yfriedman@chromium.org + + At startup, records the space on disk taken by Chrome application including + APK resources, compiled libraries, and extracted native code. Only recorded + for Android O and above. + + + + + nyquist@chromium.org + yfriedman@chromium.org + + Records the size of the user's data directory at startup on Android O and + above. Does not include cache size. + + + + + wenyufu@chromium.org + twellington@chromium.org + + Records the total duration of initializing PartnerBrowserCustomization in + the background. Noting that and the initialization has a 10-second timeout, + and this histogram does not count the duration for all associated callback. + Recorded when the initialization is completed or canceled. + + + + + wenyufu@chromium.org + twellington@chromium.org + + Records the total duration of initializing PartnerBrowserCustomization in + the background and running all of the associated callbacks. Recorded when + the initialization is completed or canceled, and all the associated async + callbacks are run. + + + + + wenyufu@chromium.org + twellington@chromium.org + + Records whether partner customization is initialized before the first tab is + created. A value of false means the first tab might be using a different + homepage than the one customized by the partner. Recorded during Chrome + start up when the very first tab is created. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the amount of time the BitmapScaler spent scaling a bitmap. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the total number of images served from the high-res cache during + the lifetime of the dialog. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the total number of images sent for decoding during the lifetime of + the dialog. + + + + + finnur@chromium.org + twellington@chromium.org + + The percentage of out-of-memory decoding failures, per batch of photos (not + videos) decoded. Intended to help identify if there are devices where + decoding fails 100% of the time. Be wary at looking at other numbers in the + histogram, as a value emitted at, say, 50% may represent one failure in a + two-item decoding or 50 failures in a hundred-item decoding. These are + qualitatively different experiences for a user. + + + + + finnur@chromium.org + twellington@chromium.org + + The percentage of file error decoding failures, per batch of videos (not + photos) decoded. Intended to help identify if there are devices where + decoding fails 100% of the time. Be wary at looking at other numbers in the + histogram, as a value emitted at, say, 50% may represent one failure in a + two-item decoding or 50 failures in a hundred-item decoding. These are + qualitatively different experiences for a user. + + + + + finnur@chromium.org + twellington@chromium.org + + The percentage of IO error decoding failures, per batch of videos (not + photos) decoded. Intended to help identify if there are devices where + decoding fails 100% of the time. Be wary at looking at other numbers in the + histogram, as a value emitted at, say, 50% may represent one failure in a + two-item decoding or 50 failures in a hundred-item decoding. These are + qualitatively different experiences for a user. + + + + + finnur@chromium.org + twellington@chromium.org + + The percentage of runtime error decoding failures, per batch of videos (not + photos) decoded. Intended to help identify if there are devices where + decoding fails 100% of the time. Be wary at looking at other numbers in the + histogram, as a value emitted at, say, 50% may represent one failure in a + two-item decoding or 50 failures in a hundred-item decoding. These are + qualitatively different experiences for a user. + + + + + finnur@chromium.org + twellington@chromium.org + + The percentage of unknown decoding error failures, per batch of videos (not + photos) decoded. Intended to help identify if there are devices where + decoding fails 100% of the time. Be wary at looking at other numbers in the + histogram, as a value emitted at, say, 50% may represent one failure in a + two-item decoding or 50 failures in a hundred-item decoding. These are + qualitatively different experiences for a user. + + + + + finnur@chromium.org + twellington@chromium.org + + Records which action the user takes in the PhotoPickerDialog. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the total number of files returned from the enumeration operation. + Measured once at the end of the enumeration operation. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the enumeration rate (files per tenths of a second). Measured once + at the end of the enumeration operation. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the amount of time the BitmapScaler spent enumerating files on + disk. Measured once at the end of the enumeration operation. + + + + + finnur@chromium.org + twellington@chromium.org + + Records whether the EXIF orientation directive is present and what it is set + to. Collected once per decoded image, but only on Android N and above (and + when no IO error occurs). + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the byte count of a decoded image. Only recorded on successful + decodes. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the amount of time it takes the decoder to decode one image. Only + recorded on successful decodes. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the amount of time it takes to process one image decode request + (not video) end to end (RPC and actual decoding of the bits by utility + process). Recorded whether or not the RPC/decode request was successful. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the amount of time it takes to decode all the frames needed to show + the animation -- end to end (RPC and actual decoding of the bits by utility + process). Recorded whether or not the RPC/decode request was successful. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the amount of time it takes to process one video frame request end + to end (RPC and actual decoding of the bits by utility process). Recorded + whether or not the RPC/decode request was successful. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the amount of time it takes to upscale a bitmap from the low-res + cache. Recorded only when there a cache miss from the high-res bitmap but a + cache hit from the low-res (placeholder) bitmap. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the byte count of the first video thumbnail. Only recorded on + successful decodes. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the amount of time it takes the decoder to decode all the frames + needed to display an animated thumbnail. Only recorded on successful + decodes. + + + + + finnur@chromium.org + twellington@chromium.org + + Measures the amount of time it takes the decoder to decode the first frame + of a video. Only recorded on successful decodes. + + + + + twellington@chromium.org + tedchoc@chromium.org + + Whether Google Play Services is installed on the device. Recorded during + deferred startup. + + + + + twellington@chromium.org + tedchoc@chromium.org + + The version code for Google Play Services if it is installed on the device, + or 0 if it is not. Recorded during deferred startup. + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Measures the amount of time spent querying for whether a WebAPK is already + installed. + + + + + shuyng@google.com + twellington@chromium.org + + Records the changes of request desktop site content settings. This is + recorded when a user manually switches the global setting between + mobile/desktop. + + + + + shuyng@google.com + twellington@chromium.org + + Records the new domain level Request Desktop Setting when changed. False + means Mobile site while true means Desktop site. This is recorded when a + user manually edits a domain level Request Desktop Setting from the site + settings exception list. + + + + + aishwaryarj@google.com + shuyng@google.com + + Records if a user opened the app menu as a consequence of showing the + per-site IPH, emitted when the IPH is dismissed. + + + + + shuyng@google.com + twellington@chromium.org + + Records the new subdomain level Request Desktop Setting when changed. False + means Mobile site while true means Desktop site. This is recorded when a + user manually edits a subdomain level Request Desktop Setting from the site + settings exception list. + + + + + + Deprecated in December 2022. This is no longer recorded as we cleanup + feature flag RequestDesktopSiteForTablets. + + gangwu@chromium.org + fgorski@chromium.org + + Records if Chrome width is eligible for requesting desktop sites. Recorded + only when navigating to google or google search. This is recorded when + chrome adds X-Eligible-Tablet to the http header per request. + + + + + gangwu@chromium.org + fgorski@chromium.org + + Records if Chrome uses the desktop site user agent to request websites. This + is recorded when each tab loads a new url or reloads a url. + + + + + gangwu@chromium.org + fgorski@chromium.org + + Records if a user switched to request desktop site from the app menu. This + is recorded when a user manually switches sites between the desktop/mobile. + + + + + shuyng@google.com + twellington@chromium.org + + Records the new domain level Request Desktop Setting when added. False means + Mobile site while true means Desktop site. This is recorded when a user + manually adds a domain level Request Desktop Setting from the Add site + dialog in Site settings. + + + + + shuyng@google.com + twellington@chromium.org + + Records the new subdomain level Request Desktop Setting when added. False + means Mobile site while true means Desktop site. This is recorded when a + user manually adds a subdomain level Request Desktop Setting from the Add + site dialog in Site settings. + + + + + triploblastic@chromium.org + chrome-signin-team@google.com + + Whether Chrome tried to restore its settings from a previous device or + installation, and what happened when it did. Only recorded on first run. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Measures the amount of time from when Android begins notifying the Browser + process of a rotation, to when the Renderer successfully submits and + activates a frame in the new orientation. + + + + + fgorski@chromium.org + wylieb@chromium.org + + The type of the search engine chosen by the user in Search Engine Choice + flow. + + + + + wylieb@chromium.org + fgorski@chromium.org + + Counts occurences of various events related to Search Engine Choice feature. + + + + + wylieb@chromium.org + pavely@chromium.org + fgorski@chromium.org + + Counts occurences of various events related to Search Engine Choice V2 + feature. + + + + + wylieb@chromium.org + fgorski@chromium.org + + The type of the search engine used before Search Engine Choice flow was + presented. + + + + + rsesek@chromium.org + + Reports the status of the seccomp-bpf sandbox in renderer processes. + Anything other than "Sandbox Engaged" indicates the sandbox is not + turned on. See https://crbug.com/477049. + + + + + finnur@chromium.org + peter@chromium.org + + Records the types of content selected for upload, focusing mostly on image + and video types and how they were determined (asking ContentResolver for the + MIME type or going by extension). Recorded when user uploads files to a + website (once per item uploaded). + + + + + finnur@chromium.org + peter@chromium.org + + Records the number of images selected in either the new Photo Picker or the + standard Android file picker. Note: Only recorded in situations determined + to warrant the new Photo Picker (not, for example, if mixed content, like + images and text files, was requested). + + + + + peter@chromium.org + finnur@chromium.org + + Records the scope of accepted content for a select file dialog when shown by + a Web developer. + + + + + sreejakshetty@chromium.org + chrome-brapp-loading@google.com + + Records the final status of the spare tab, for example, if the spare tab is + used, destroyed, crashed, etc. This is recorded when the spare tab is used + for navigation or destroyed. It is only recorded when a spare tab is + created, and it is only recorded once per spare tab. + + + + + yfriedman@chromium.org + wnwen@chromium.org + + Measures the amount of time due to a StrictMode violation from calling out + to Android activity manager. + + + + + wnwen@chromium.org + yfriedman@chromium.org + + Measures the amount of time due to a StrictMode violation from fetching for + the thumbnail cache directory. + + + + + skym@chromium.org + wenyufu@chromium.org + clank-app-team@google.com + + The number of survey download request attempts that have been made before + the survey is accepted. Note: + + 1) The download attempt might not result in a survey download due to + different reasons (e.g. download request failed or network failure). 2) + Chrome may have also successfully downloaded the survey several times in + previous sessions, but the surveys were not able to be shown for min amount + of times. In such scenarios, the total number of attempts across all + sessions will be recorded. 3) If the number of allowed download attempts has + been saturated before the survey is accepted, nothing will be recorded. + + Recorded when a survey prompt is accepted. Android Only. + + + + + twellington@chromium.org + wenyufu@chromium.org + clank-app-team@google.com + + Recorded when a survey download is requested. If the download has been + attemped, but the download request is not sent (e.g. user is not signed-in), + 'not requested' will be recorded. + + + + + skym@chromium.org + wenyufu@chromium.org + clank-app-team@google.com + + The result of the completed survey download request. A survey download is + initiated on ChromeTabbedActivity cold start iff the user passes a series of + eligibility checks. Recorded when a valid survey response is received. + Android only. + + + + + aishwaryarj@google.com + twellington@chromium.org + wenyufu@chromium.org + clank-app-team@google.com + + The result of the request to show the survey after it has been downloaded. + This request is initiated when the user accepts to take the survey on the + survey prompt. This histogram is agnostic to the content of the survey, + which is configured server side, and will be recorded for all surveys shown + in Chrome. Android only. + + + + + skym@chromium.org + wenyufu@chromium.org + clank-app-team@google.com + + Whether a user completed the survey after it was presented. This histogram + is agnostic to the content of the survey, which is configured server side, + and will be recorded for all surveys shown in Chrome. Android only. + + + + + twellington@chromium.org + wenyufu@chromium.org + clank-app-team@google.com + + The result of the survey filtering process. Each enum represents a different + filter that caught the user. This is recorded on cold starts when we check + if a user qualifies for a survey. + + + + + sreejakshetty@chromium.org + spelchat@chromium.org + chrome-brapp-loading@google.com + + Records the duration of new tab creation for {TabLaunchType}. Emitted + everytime a new tab is finished being created. Take into account that + low-end devices create tabs more slowly, so adjust your analysis + accordingly. + + + + + + + + + + + + + + + + + + + + + + + + + + + + sreejakshetty@chromium.org + spelchat@chromium.org + chrome-brapp-loading@google.com + + Records the duration of the creation of a new tab from an existing + WebContents for {TabLaunchType}. A record is made each time a tab is created + using an existing WebContents. + + + + + + + + + + + + + + + + + + + + + + + + + + + ckitagawa@chromium.org + bjfong@google.com + fredmello@chromium.org + + Reports the number of tabs that are bookmarked using the TabSelectionEditor + bookmark action. Recorded once per user attempt to bookmark tabs in the Tab + Selection Editor. + + + + + ckitagawa@chromium.org + bjfong@google.com + fredmello@chromium.org + + The result of the share action taken from the TabSelectionEditor. Record + once per user attempt to share tabs in the Tab Selection Editor. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + Measures the time between opening the TabSelectionEditor in milliseconds + within a given browser activity lifespan. This is recorded when the + TabSelectionEditor is shown with the exception of the first time it is shown + within an activity lifespan. + + + + + rbyers@chromium.org + mthiesse@chromium.org + + When a navigation is intercepted, the scheme of the URL being intercepted. + + + + + blundell@chromium.org + mthiesse@chromium.org + tedchoc@chromium.org + + The distribution of results when running ExternalNavigationHandler for + navigations that have an {ProtocolType}. This shows how often we send + intents to be handled by other applications. + + + + + + + + + gauravjj@google.com + twellington@chromium.org + clank-large-form-factors@google.com + + This captures the time taken for a user to select a tab after scrolling the + tab strip as one measure of tab strip switching efficiency. This is recorded + only when a tab switch event occurs within 60 seconds of the most recent tab + strip scroll. In the event of multiple back-to-back scrolls, this metric is + recorded so long as the sequence of scrolls occur within 60 seconds of each + other and is capped at 3 minutes. + + + + + skavuluru@chromium.org + twellington@chromium.org + clank-large-form-factors@google.com + + Records the time taken to create the StartSurfaceCoordinator and grid tab + switcher views. Only recorded for tablets. + + + + + roagarwal@chromium.org + chrome-incognito@google.com + + Emitted every time a user uses Incognito button on Tab Switcher. Records + whether or not there is any Incognito tab when Incognito button is clicked. + + + + + skavuluru@chromium.org + twellington@chromium.org + clank-large-form-factors@google.com + + Records the time taken to create TabListCoordinator, which inflates the + RecyclerView for the grid tab switcher, and bind views. + + + + + ckitagawa@chromium.org + dtrainor@chromium.com + + Records the number of entries for the in-memory approximation bitmap + thumbnail cache. Recorded on a Poisson distributed frequency with a mean of + 5 minutes starting 1 minute after TabContentManager native initialization. + + + + + ckitagawa@chromium.org + dtrainor@chromium.com + + Records the in-memory approximation bitmap thumbnail cache size in KiB. + Recorded on a Poisson distributed frequency with a mean of 5 minutes + starting 1 minute after TabContentManager native initialization. Note that + this memory may be distributed across the GPU process and Browser process. + + + + + ckitagawa@chromium.org + dtrainor@chromium.com + + Records the number of entries for the in-memory ETC1 and bitmap thumbnail + cache. Recorded on a Poisson distributed frequency with a mean of 5 minutes + starting 1 minute after TabContentManager native initialization. + + + + + ckitagawa@chromium.org + dtrainor@chromium.com + + Records the in-memory ETC1 and bitmap thumbnail cache size in KiB. Recorded + on a Poisson distributed frequency with a mean of 5 minutes starting 1 + minute after TabContentManager native initialization. Note that this memory + may be distributed across the GPU process and Browser process. + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + Measures the size of the bitmap cache used. Recorded whenever a bitmap is + added to the cache. {ThumbnailProvider_ClientType} + + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + Records the status of a thumbnail query from the thumbnail provider + in-memory cache. {ThumbnailProvider_ClientType} + + + + + + skym@chromium.org + seacow@google.com + + Recorded when a toolbar view draws itself to a bitmap such that it can be + passed to the compositor and drawn by native. Performing a bitmap capture is + somewhat expensive opperation that must be done on the UI thread. It is + possible that high capture counts are correlated with scroll jank. + + + + + skym@chromium.org + seacow@google.com + + Recorded on #isDirty calls that return true. Because #isDirty() is used to + control when bitmap captures happen, this histogram holds the reason that + the capture was allowed. Note that there there's an assert that calls into + #isDirty() from #getBitmap(), which can cause these to be double counted. If + Canary starts running assert code, this will cause this metric to double in + report volume. + + + + + skym@chromium.org + seacow@google.com + + Recorded on #isDirty calls that return false. Because #isDirty() is used to + control when bitmap captures happen, this histogram holds the reason that + the capture was not allowed. + + + + + skym@chromium.org + seacow@google.com + + Captures the stages reached in the Toolbar's in motion handling. Recorded + every time the in motion state of the compositor changes, before the event + is routed to the renderer process. Motion states include: flinging, swiping, + and any gesture that the CompositorViewHolder is processing. This metric + shows how often the in motion handling had to request the toolbar's capture + readiness state, which is a computationally expensive operation, and could + slow down input handling. + + + + + skym@chromium.org + seacow@google.com + + When the allow reason for a bitmap capture was that the snapshots were + different, then this histogram is recorded with the reason that the + snapshots were different. Often there may be multiple differences but one is + arbitrarily and consistently picked. + + + + + nuskos@chromium.org + chrometto-team@google.com + + Keeps a counter of each onDraw invoked on the root view and emits the count + once every 30 seconds. Thus this is the amount of times android attempted to + draw/update a java view in the last 30 seconds. + + NOTE: 30 second intervals with 0 draws are not reported. + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + + Records calls to WebView APIs from AndroidX. Some AndroidX-originating calls + may plumb through the corresponding platform (framework) API if the device + OS version supports the platform API. In this case the API call will be + logged by the "Android.WebView.ApiCall" histogram instead. This is + logged each time an AndroidX API is called through the "boundary + interface" code path (see //android_webview/support_library/README.md + for more details). + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + + Records calls to WebView APIs through the platform (framework) APIs. This + may include AndroidX API calls on OS versions where the AndroidX library + just calls through the platform API (see + "Android.WebView.AndroidX.ApiCall" for details). This is logged + each time an API is called. + + For historical data (before M99), see "WebView.ApiCall". + + + + + xiaq@chromium.org + src/android_webview/OWNERS + + Size on disk taken by the embedding app's data directory, recorded once per + WebView startup after a small delay. + + + + + xiaq@chromium.org + src/android_webview/OWNERS + + Time to compute the size on disk taken by the embedding app's data + directory, recorded once per WebView startup after a small delay. + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + Records the invocation count of WebView callbacks. + + + + hazems@chromium.org + src/android_webview/OWNERS + + Size on disk taken by the ComponentsProviderService serving directory. This + is logged once per run of the update job in AwComponentUpdateService. + + + + + hazems@chromium.org + src/android_webview/OWNERS + + Size on disk taken by the AwComponentUpdateService directory. This is logged + once per update job in AwComponentUpdateService. + + + + + hazems@chromium.org + src/android_webview/OWNERS + + Duration of ComponentsProviderService getFilesForComponent request. This + method retrieves FileDescriptors for an installed component. This is logged + at the end of every request the service receives. + + + + + hazems@chromium.org + src/android_webview/OWNERS + + Logs the result of ComponentsProviderService getFilesForComponent request. + This method retrieves FileDescriptors for an installed component. This is + logged once for every request the service receives. + + + + + hazems@chromium.org + src/android_webview/OWNERS + + Whether a SafeMode action was executed by Component Updater services. This + is logged whenever a nonembedded Component Updater service checks whether + SafeMode is enabled. + + + + + hazems@chromium.org + src/android_webview/OWNERS + + Whether AwComponentUpdateService quit unexpectedly on the previous run. This + might indicate a crash occurred during the previous job. This is logged once + per run of AwComponentUpdateService. + + + + + hazems@chromium.org + src/android_webview/OWNERS + + Duration of AwComponentUpdateService update job. This job is responsible for + updating and installing components. This is logged once per run of the job. + + + + + hazems@chromium.org + src/android_webview/OWNERS + + How many components were updated by AwComponentUpdateService update job. + This is logged once per run of the job, and is capped at 1000. + + + + + michaelbai@chromium.org + src/android_webview/OWNERS + + Records WebView force dark behavior settings on each main frame navigation + entry committed. + + + + + michaelbai@chromium.org + src/android_webview/OWNERS + + Records WebView force dark mode settings on each main frame navigation entry + committed. + + + + + michaelbai@chromium.org + src/android_webview/OWNERS + + Records if WebView applies the algorithmic darkening on each main frame + navigation entry committed. + + + + + michaelbai@chromium.org + src/android_webview/OWNERS + + Records if the application has light theme and if WebView applies the + algorithmic darkening on each main frame navigation entry committed. + + + + + michaelbai@chromium.org + src/android_webview/OWNERS + + Records if the application is in the night mode and if WebView applies the + algorithmic darkening on each main frame navigation entry committed. + + + + + michaelbai@chromium.org + src/android_webview/OWNERS + + Records if the application has light theme on each main frame navigation + entry committed. + + + + + michaelbai@chromium.org + src/android_webview/OWNERS + + Records application's night mode bit related to + android.content.res.Configuration.UI_MODE_NIGHT_MASK on each main frame + navigation entry committed. + + + + + michaelbai@chromium.org + src/android_webview/OWNERS + + Records if application is in night mode and if it has light theme on each + main frame navigation entry committed. + + + + + michaelbai@chromium.org + src/android_webview/OWNERS + + Records WebView is darkened or not when the prefers-color-scheme is set to + dark according to the app theme not FORCE_DARK_AUTO setting. This histogram + is recorded on main frame's color scheme inferred for every committed + navigation. + + + + + michaelbai@chromium.org + src/android_webview/OWNERS + + Records if WebView shall set prefers-color-scheme to dark according to app's + theme after FORCE_DARK_AUTO fails. It is recorded on each main frame + navigation entry committed. + + + + + michaelbai@chromium.org + src/android_webview/OWNERS + + Records if the application has light theme and if its theme's + textColorPrimary attribute is light on each main frame navigation entry + committed. + + + + + michaelbai@chromium.org + src/android_webview/OWNERS + + Records if the application is in night mode and if its theme's + textColorPrimary attribute is light on each main frame navigation entry + committed. + + + + + ntfschr@chromium.org + hazems@chromium.org + src/android_webview/OWNERS + + Records the number of times the developer UI app was launched. This only + ever logs the value "true" because we only care about the total + count. This is logged in the developer UI app during Activity#onCreate. + + + + + ntfschr@chromium.org + hazems@chromium.org + src/android_webview/OWNERS + + Records the state of crash collection, as seen by the developer UI. This is + recorded when launching the crash UI, but only if the UI is not already + showing an error message for another problem (ex. WebView package error). + This only logs the first state we detect: ex. if the user has enabled crash + reporting by opting in and also with the flag UI, this only logs the flag UI + case. + + + + + ntfschr@chromium.org + hazems@chromium.org + src/android_webview/OWNERS + + Records the user's interaction with crashes in the developer UI's crash + list. Specifically, this tracks how the user interacts with the "hide + crash", "upload this crash report" or the "file bug + report" buttons and possible subsequent dialogs. Since the latter two + buttons are connected (the user must upload a crash before they can file a + bug report), we track interaction with both in the same histogram. This is + recorded for each button press in the crash list and is not recorded if the + user does not interact with any crashes. + + + + + ntfschr@chromium.org + hazems@chromium.org + src/android_webview/OWNERS + + Records the number of crashes shown in the developer UI. This is logged each + time the crash UI is launched and each time its list is refreshed. The UI + currently limits the number of crashes at 20, so clients logging the maximum + may have more logs sitting on disk. + + + + + ntfschr@chromium.org + hazems@chromium.org + src/android_webview/OWNERS + + Records the time spent blocking WebView startup to check for developer mode + (see "Android.WebView.DevUi.DeveloperModeEnabled"). This is + recorded once during WebView startup, regardless of whether developer mode + is enabled. + + + + + ntfschr@chromium.org + hazems@chromium.org + src/android_webview/OWNERS + + Records whether or not WebView is starting up in "developer mode." + This is a mode where the user has enabled debugging features through the + WebView developer UI. This is recorded once during startup. + + + + + ntfschr@chromium.org + hazems@chromium.org + src/android_webview/OWNERS + + Records the time spent blocking WebView startup to load flags from the + developer UI. This is recorded only once during WebView startup, and only if + we've already detected developer mode is enabled (see + "Android.WebView.DevUi.DeveloperModeEnabled"). + + + + + ntfschr@chromium.org + hazems@chromium.org + src/android_webview/OWNERS + + This is recorded each time a user toggles a flag in the developer UI + (changing a flag's state), and logs whether the user found this flag with + the search bar ("true" means there was a non-empty search query). + This is only recorded when the user toggles an individual flag through the + Spinner dialog, not when they press the "reset all flags" button. + + + + + + + ntfschr@chromium.org + hazems@chromium.org + src/android_webview/OWNERS + + Records the user's navigation to a Fragment. "FromIntent" tracks + navigations triggered by an Intent (ex. navigating to HomeFragment on + launch) and "NavBar" tracks user interaction with the bottom + navigation bar. "AnyMethod" should be the sum of the other two. + {Android_WebView_DevUi_NavType} + + + + + + + + + + ntfschr@chromium.org + hazems@chromium.org + src/android_webview/OWNERS + + Records the user's selection in the developer UI overflow menu or action + bar, recorded after each selection. + + + + + ntfschr@chromium.org + hazems@chromium.org + src/android_webview/OWNERS + + Records how the developer UI launcher icon for Monochrome was toggled: was + it enabled or disabled? This can be recorded either from WebView's + non-embedded processes or Chrome's browser process whenever either changes + the icon state (nothing is logged if we don't need to change the icon + state). This is only recorded in Monochrome (Android Nougat, Oreo, and Pie), + since this logic is only relevant in that case. + + + + + + + ntfschr@chromium.org + hazems@chromium.org + src/android_webview/OWNERS + + Records the time spent using a specific tool, from creation to destruction. + + + + + ntfschr@chromium.org + hazems@chromium.org + src/android_webview/OWNERS + + Records the number of flags we will toggle for this run of WebView. This is + recorded only once during WebView startup, and only if we've already + detected developer mode is enabled (see + "Android.WebView.DevUi.DeveloperModeEnabled"). If developer mode + is disabled, we will not toggle any flags through this mechanism. + + + + + peter@chromium.org + src/android_webview/OWNERS + + Records strategy to be used by force dark in WebView when + setForceDarkBehavior API is called by the embedding application. + + + + + peter@chromium.org + src/android_webview/OWNERS + + Records WebView's force dark setting and the UI's night mode when + setForceDark API is called by the embedding application. + + + + + blundell@chromium.org + vasilyt@chromium.org + + For each draw in GL that WebView does on request from HWUI, records whether + the draw was done into the FBO or not. + + + + + vasilyt@chromium.org + boliu@chromium.org + + Tracks invalidate and frame submission status for WebView hardware draw. + Result is enum that represent three flags: did we called invalidate this + frame, did renderer submitted compositor frame and whether DrawParams from + Android HWUI changed. This is logged once per WebView draw functor call. + + + + + blundell@chromium.org + vasilyt@chromium.org + + Tracks the amount of time that it took for WebView to save HWUI state. + Recorded once per saving of HWUI state. + + + + + jam@chromium.org + cduvall@chromium.org + + Measures how long InputStreams take from creation to completion. This is + emitted for all streams whether they succeed or fail. + + + + + peter@chromium.org + src/android_webview/OWNERS + + Records whether an invocation of a JavaScript method exposed through + WebView's Java Bridge happened on a page's main frame or one of its sub + frames. Recorded for each invocation of such methods. + + + + + ntfschr@chromium.org + torne@chromium.org + src/android_webview/OWNERS + + Records the scheme for the URL loaded by a browser-initiated navigation. + Specifically, this is the scheme of the URL passed to loadUrl() (and its + overloads), postUrl(), and loadData() (this is implicitly + "data:"). also records if this value is "empty", which + means either null or "about:blank". This intentionally excludes + loadDataWithBaseURL(). + + + + + hazems@chromium.org + src/android_webview/OWNERS + + Records the result of parsing the apps package names allowlist used to + populate the "app_package_name" field in UMA metrics logs. This is + recorded when the AwAppsPackageNamesAllowlistComponentLoaderPolicy is + successfully loaded by EmbeddedComponentLoader, i.e when ComponentLoaded is + called by the loader. + + + + + hazems@chromium.org + src/android_webview/OWNERS + + Records the status of the apps package names allowlist used to populate the + "app_package_name" field in UMA metrics log. The status tracks if + a new version is loaded, a cached one is used or if loading the allowlist + has failed. It's recorded everytime the app package name is queried when a + new metrics log is created. + + + + + hazems@chromium.org + src/android_webview/OWNERS + + Records the time delta between creating a AwMetricsServiceClient instance + during WebView startup and the time when the app package names allowlist is + loaded and looked up. This only records when a new version of the allowlist + is loaded successfully. i.e it's not recorded if the loading the allowlist + fails or if a cached version is used. + + + + + hazems@chromium.org + src/android_webview/OWNERS + + Whether requests to query the app package names allowlist component is + throttled or not. + + + + + hazems@chromium.org + src/android_webview/OWNERS + + How long before the app package names allowlist record cached in the client + expires. This is only recorded from Apps that are in the app package names + allowlist. Recorded every time a metrics log is being created. + + + + + ntfschr@chromium.org + carlosil@chromium.org + src/android_webview/OWNERS + + Records the mixed content mode set when an app uses the + WebSettings.setMixedContentMode API. + + + + + + We collected the data we need about this, these histograms are no longer + needed, see https://crbug.com/1266439#c8. Removed in December 2022. + + hazems@chromium.org + src/android_webview/OWNERS + + Records the first nonembedded WebView Service to run in the nonembedded + ":webview_service" process. This excludes ContentProviders because + they are always created during the process startup. This is recorded when + the service is created (when `onCreate` is called). Also see + "Android.WebView.Nonembedded.IsFreshServiceProcessLaunched". + + + + + + We collected the data we need about this, these histograms are no longer + needed, see https://crbug.com/1266439#c8. Removed in December 2022. + + hazems@chromium.org + src/android_webview/OWNERS + + Captures if the service is the first service to be created in the process or + not. It helps to see how often the nonembedded ":webview_service" + process is reused for multiple services. This excludes ContentProviders + because they are always created during the process startup. This is recorded + when any nonembedded service is created (when `onCreate` is called). Also + see "Android.WebView.Nonembedded.FirstServiceInProcess". + + + + + hazems@chromium.org + ntfschr@chromium.org + src/android_webview/OWNERS + + Records the time interval between when a histogram is recorded in a + non-embedded WebView process and when it's actually sent to the UMA API in + an embedded WebView. This is recorded during WebView startup for each + histogram retrieved and replayed successfully from WebView non-embedded + metrics service. + + + + + ntfschr@chromium.org + hazems@chromium.org + src/android_webview/OWNERS + + Records the number of histograms received from WebView's non-embedded + histogram service. This is recorded once during WebView startup, after + retrieving histograms from the service (if the proto can be parsed). + + + + + hazems@chromium.org + ntfschr@chromium.org + src/android_webview/OWNERS + + Records whether metrics parsing from file in non-embedded histogram service + was successful. It's recorded during service startup by adding it to records + list. It captures the most recent file parsing result for the last service + launch before the client connects to the service. + + + + + hazems@chromium.org + ntfschr@chromium.org + src/android_webview/OWNERS + + Recorded by the non-embedded histogram service if it's unable to return + histograms. This is always recorded when a client connects to retrieve + histograms. + + + + + ntfschr@chromium.org + hazems@chromium.org + src/android_webview/OWNERS + + Records whether metrics transmission from the non-embedded histogram service + was successful. This is recorded once during WebView startup, after + retrieving histograms from the service. + + + + + + Deprecated in April 2022 (milestone M103). + + ntfschr@chromium.org + src/android_webview/OWNERS + + The WebViewClient error code as returned by the onReceivedError callback + This is recorded regardless of whether the network service is enabled or + disabled. + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + + The WebViewClient HTTP response status code as returned by the + onReceivedHttpError callback. This callback is only called for HTTP errors, + so this does not include any successful HTTP responses (code 200). + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + + This captures two pieces of information about renderer crashes: did the app + developer handle the renderer crash to recover and what type of crash was + this? This is recorded once each time the renderer process dies + unexpectedly, and is logged after we have notified the app via the + onRenderProcessGone() callback. + + Prior to M99, this histogram did not distinguish between crashes vs. kills + if the renderer crash was handled by the app. + + + + + ntfschr@chromium.org + carlosil@chromium.org + src/android_webview/OWNERS + + Records the mixed content mode set when an app loads optionally blockable + mixed content (images, audio, or video). This histogram is logged on page + load, once per subresource (i.e. a single page load can cause multiple + records if the page contains multiple mixed content subresources). + + + + + mvanouwerkerk@chromium.org + src/android_webview/OWNERS + + Measures the count of distinct http and https origins visited per day in + WebView. The purpose of this metric is to slice it by package name to help + characterize the usage of that package. + + + + + + Deprecated in March 2022. + + mvanouwerkerk@chromium.org + src/android_webview/OWNERS + + Time spent on a page with a {Scheme} scheme. This is measured from + navigation commit to the start of the next navigation. For http and https + schemes it is additionally recorded whether it is a first or third party + page. This uses an optional key, in this case the value is + "{Party}". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pbirk@chromium.org + src/android_webview/OWNERS + + Records the type of X-Requested-With HTTP header that is set on request from + WebView. This enum is recorded by + |InterceptedRequest::InterceptResponseReceived| for all requests. It may + differ from the user settings, as it also captures if the header has been + set explicitly on the request by other means, such as javascript or + embedding code. + + + + + pbirk@chromium.org + src/android_webview/OWNERS + + Records whether a suitable WebContents was available for use to look up the + partition origin for the XRequestedWith deprecation origin trial. This + histogram is recorded when the AwProxyingUrlLoader attemps to get the last + committed origin of the top frame for partitioning use, which is on all + requests that are not top frame navigation requests. If the WebContents is + not available, an opaque origin will be used for partitioning, which will + result in a failed lookup. + + + + + + Replaced before launch by + Android.WebView.RequestedWithHeader.OnNavigationRequestedWithHeaderAllowListSize + + pbirk@chromium.org + src/android_webview/OWNERS + + Records the XRequestedWithHeaderMode that was configured to be used on page + navigation to decide how to set the X-Requested-With HTTP header. This is + recorded on navigation committed, and records the configured setting. It may + be the case that javascript or the embedder has overwritten the header, + which will not be reflected by this histogram. + + + + + pbirk@chromium.org + src/android_webview/OWNERS + + Records the size of the XRequestedWithHeaderAllowList that was used on page + navigation. This is recorded to gain insight into the distribution of size + when used, which will give an idea of the impact to the ecosystem. + + + + + pbirk@chromium.org + src/android_webview/OWNERS + + Records if the WebViewXRequestedWithDeprecation Origin Trial was enabled on + a resource request. This histogram is recorded on every request sent by + WebView if Persistent Origin Trials are enabled. + + + + + pbirk@chromium.org + src/android_webview/OWNERS + + Records if the WebViewXRequestedWithDeprecation Origin Trial was enabled on + a resource request with a scheme that uses cryptography, i.e. HTTPS or WSS. + This histogram is recorded on every request sent by WebView if the + WebViewXRequestedWithDeprecation trial is enabled and the scheme is either + HTTP/HTTPS or WS/WSS. + + + + + + Replaced before launch by + Android.WebView.RequestedWithHeader.SetRequestedWithHeaderModeAllowListSize + + pbirk@chromium.org + src/android_webview/OWNERS + + Records the parameter passed to WebSettingsCompat#setRequestedWithHeaderMode + when called by the embedding app. This reflects explict configuration of the + X-Requested-With HTTP header by the app for WebViews. + + + + + pbirk@chromium.org + src/android_webview/OWNERS + + Records the size of the allow-list passed to + WebSettingsCompat#setRequestedWithHeaderOriginAllowList when called by the + embedding app. + + + + + + Replaced before launch by + Android.WebView.RequestedWithHeader.SetServiceWorkerRequestedWithHeaderModeAllowListSize + + pbirk@chromium.org + src/android_webview/OWNERS + + Records the parameter passed to + ServiceWorkerWebSettingsCompat#setRequestedWithHeaderMode when called by the + embedding app. This reflects explict configuration of the X-Requested-With + HTTP header by the app for WebView service workers. + + + + + pbirk@chromium.org + src/android_webview/OWNERS + + Records the size of the allow-list passed to + ServiceWorkerWebSettingsCompat#setRequestedWithHeaderOriginAllowList when + called by the embedding app. + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + + Records the time spent blocking WebView startup to check for SafeMode (see + "Android.WebView.SafeMode.SafeModeEnabled"). This is recorded once + during WebView startup, regardless of whether SafeMode is enabled. + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + + Records whether SafeMode was able to execute all the specified SafeMode + actions or if it encountered an error. This is recorded once during WebView + startup and only if SafeMode is enabled (see + "Android.WebView.SafeMode.SafeModeEnabled"). If multiple fixes + have different statuses, then this will log a single status in the following + precedence: a. Unknown error b. Action failed c. Unrecognized action d. + Success (If all actions were successful). + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + + Records the time spent blocking WebView startup to both retrieve the list of + SafeMode actions from the SafeModeService and to execute those actions. This + is recorded once during startup only if SafeMode is enabled (see + "Android.WebView.SafeMode.SafeModeEnabled"). This can be + interpreted as the additional startup cost caused by enabling SafeMode. + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + + Records whether or not WebView is starting up in SafeMode. This is a mode + where WebView takes extra steps during startup to reduce the risk of + starting in a bad state. This is recorded once during WebView startup, + regardless of whether SafeMode is enabled. + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + + Records the action WebView took (if any) to "fix up" secure + cookies for backwards compatibility. + + + + + + Deprecated in M102. This histogram had a bug which caused it to under-count + when the request was not intercepted. This has been fixed in the + "Android.WebView.ShouldInterceptRequest.InterceptionType2" + histogram. + + ntfschr@chromium.org + src/android_webview/OWNERS + + Whether the request was intercepted by the embedder of Android WebView, and + if so which url scheme was used. Intercepted request are requests for which + the shouldInterceptRequest() callback returned a non-null response. + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + + Whether the network request was intercepted by the embedder of Android + WebView, and if so which URL scheme was used for the request. Intercepted + requests are requests for which the shouldInterceptRequest() callback + returned a non-null response. This is logged each the + shouldInterceptRequest() callback API is invoked by WebView, which + corresponds to every network request. + + This histogram was added in M102. Prior milestones logged + "Android.WebView.ShouldInterceptRequest.InterceptionType", however + that histogram had a bug which caused the "Not intercepted" bucket + to be under-reported and for all other buckets to be over-reported. + + + + + alexmitra@chromium.org + nator@chromium.org + src/android_webview/OWNERS + + Records whether WebView is being run in a single process or multi-process. + This is recorded each time logs are uploaded. This is used as a dashboard + filter. + + + + + mvanouwerkerk@chromium.org + src/android_webview/OWNERS + + Measures the count of distinct sites visited per week in WebView. This is + recorded at the time of a navigation when stored hashed site navigations are + older than a week. The purpose of this metric is to slice it by package name + to help characterize the usage of that package. This histogram uses eTLD+1 + as the definition of a site. + + + + + torne@chromium.org + src/android_webview/OWNERS + + How long it takes to initialize a WebViewChromiumFactoryProvider. This is + the first major phase of the WebViewChromium construction. + + + + + torne@chromium.org + src/android_webview/OWNERS + + How long it takes to initialize a WebViewProvider, the first time that one + is initialized. WebViewProvider initialization is the second major phase of + WebViewChromium construction. The first initialization is recorded + separately because it is usually much slower than subsequent ones. + + + + + torne@chromium.org + src/android_webview/OWNERS + + How long it takes to initialize a WebViewProvider, the first time that one + is initialized. WebViewProvider initialization is the second major phase of + WebViewChromium construction. When it is not the first time, it is faster + and thus recorded separately. + + + + + torne@chromium.org + src/android_webview/OWNERS + How long it takes to run startChromiumLocked. + + + + torne@chromium.org + src/android_webview/OWNERS + + The total time to initialize WebViewChromiumFactoryProvider. + + This measurement is different from Stage1.FactoryInit as it takes into + accout time spent in framework. + + + + + hazems@chromium.org + src/android_webview/OWNERS + + Records the delay between calling Context#bindService until the + ServiceConnection#onServiceConnected is called. This should give an idea of + how long it takes for nonembedded service connections to be established and + capture any regressions in this. In the case when a service connection is + dropped and then reconnected by the system, the histogram is only recorded + for the first connection. + + + + + + + + + pbirk@chromium.org + src/android_webview/OWNERS + + Records whether the WebViewClient provided by the app is an instance of + WebViewClientCompat (and therefore exposes AndroidX callbacks). This is + recorded each time the app sets a new WebViewClient via + WebView#setWebViewClient(). + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + + The version of the target SDK of the app WebView is running in. This is + recorded once during startup. + + + + + torne@chromium.org + src/android_webview/OWNERS + + Records when we allow a cross origin push state from a file URL solely + because AllowUniversalAccessFromFileURLs is enabled. This is logged from the + implementation of history. + + + + + torne@chromium.org + src/android_webview/OWNERS + + Records when we allow a cross origin push state from a file URL solely + because AllowUniversalAccessFromFileURLs is enabled. This is logged from the + implementation of the frame renderer. + + + + + cduvall@chromium.org + src/android_webview/OWNERS + + Records the length of the WebView variations header. Recorded every time + WebViewCompat.getVariationsHeader() is called. + + + + + mvanouwerkerk@chromium.org + ntfschr@chromium.org + src/android_webview/OWNERS + + Records the global visibility state of WebView in seconds, updated with + every Metrics upload. The Visible bucket counts total seconds that any + WebView was visible (the view itself was visible, and was attached to the + view hierarchy of a visible window). The NotVisible bucket counts time since + WebView initialization for which no WebView was considered visible, or no + WebView existed. The total of these two buckets reflects the amount of time + covered by metrics collection. + + + + + mvanouwerkerk@chromium.org + ntfschr@chromium.org + src/android_webview/OWNERS + + Records per-WebView visibility duration in seconds, updated with every + Metrics upload. The Visible bucket counts the total time in seconds that + each WebView was considered visible (the view itself was visible, and was + attached to the view hierarchy of a visible window). If more than one + WebView is considered visible, then each WebView contributes independently. + The NotVisible bucket counts the duration that each WebView exists but not + in a visible state. As with the Visible bucket, each WebView contributes + independently, and thus this bucket is not incremented when no WebViews + exist. + + + + + mvanouwerkerk@chromium.org + ntfschr@chromium.org + src/android_webview/OWNERS + + Records the number of seconds any WebView was visible (the view itself was + visible, and was attached to the view hierarchy of a visible window) with a + particular URL scheme in the primary main frame. Updated with every Metrics + upload. Note that the seconds are logged as the count for the scheme enum + values. + + + + + mvanouwerkerk@chromium.org + ntfschr@chromium.org + src/android_webview/OWNERS + + Records the number of seconds each WebView was visible (the view itself was + visible, and was attached to the view hierarchy of a visible window) with a + particular URL scheme in the primary main frame. Updated with every Metrics + upload. Note that the seconds are logged as the count for the scheme enum + values. + + + + + mvanouwerkerk@google.com + ntfschr@chromium.org + src/android_webview/OWNERS + + Records the number of seconds any WebView was visible (the view itself was + visible, and was attached to the view hierarchy of a visible window) by + screen coverage percentage. The screen coverage of all WebViews is merged so + overlaps do not count more than once and do not increase the percentage. + Updated with every Metrics upload. Not recorded when there is no visible + WebView. Fractional percentages are rounded down. Note that the seconds are + logged as the count for the percentages. + + + + + mvanouwerkerk@google.com + ntfschr@chromium.org + src/android_webview/OWNERS + + Records the number of seconds each WebView was visible (the view itself was + visible, and was attached to the view hierarchy of a visible window) by + screen coverage percentage. The screen coverage of these WebViews is not + merged. Updated with every Metrics upload. Not recorded when there is no + visible WebView. Fractional percentages are rounded down. Note that the + seconds are logged as the count for the percentages. + + + + + mvanouwerkerk@google.com + ntfschr@chromium.org + src/android_webview/OWNERS + + Records the number of seconds each WebView was visible (the view itself was + visible, and was attached to the view hierarchy of a visible window) with a + {scheme} scheme in the primary main frame by screen coverage percentage. The + screen coverage of these WebViews is not merged. Updated with every Metrics + upload. Not recorded when there is no visible WebView. Fractional + percentages are rounded down. Note that the seconds are logged as the count + for the percentages. + + + + + + + + + + + + + + + + + + + + + Deprecated in March 2022. + + idries@google.com + ntfschr@chromium.org + peconn@chromium.org + src/android_webview/OWNERS + + Records the number of seconds that WebView is displaying Open Web Content + for each bucket of screen proportion, updated with every Metrics upload. For + the purposes of bucketing this is rounded down. A separate bucket is used + when the screen coverage is exactly zero. + + + + + wylieb@chromium.org + fgorski@chromium.org + + Counts occurences of various events related to the Search Engine Logo + feature. When enabled, the feature will show the logo of the default search + engine in the omnibox. These events record the performance of fetching + non-Google logos. + + + + + peconn@chromium.org + peter@chromium.org + + Logs which way had the user navigated into settings screens when they press + "Clear and Reset" button in settings of a single website. + + + + + + diff --git a/histograms/metadata/apps/OWNERS b/histograms/metadata/apps/OWNERS new file mode 100644 index 000000000000..03bcea3f6acd --- /dev/null +++ b/histograms/metadata/apps/OWNERS @@ -0,0 +1,8 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +nancylingwang@chromium.org +tby@chromium.org +tsergeant@chromium.org +yulunwu@chromium.org diff --git a/histograms/metadata/apps/histograms.xml b/histograms/metadata/apps/histograms.xml new file mode 100644 index 000000000000..52468a315b64 --- /dev/null +++ b/histograms/metadata/apps/histograms.xml @@ -0,0 +1,2973 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jshikaram@chromium.org + chromeos-apps-foundation-team@google.com + desktop-pwas-team@google.com + + The actions taken by the user when they are viewing the app details of an + app in App Management (chrome://os-settings/app-management). On + Windows/Linux/MacOS AppManagement.AppDetailViews.WebApp is the view on + chrome://app-settings page. + + + + + jshikaram@chromium.org + chromeos-apps-foundation-team@google.com + The ways the user opens up the App Management interface. + + + + melzhang@chromium.org + tsergeant@chromium.org + chromeos-apps-foundation-team@google.com + + The time it takes for the first login flow of the App Preload service to + complete with the final status of {Status}. + + This metric is recorded when the user logs in for the first time on a device + and the App Preload service kicks off the first login flow. + + + + + + + + + melzhang@chromium.org + tsergeant@chromium.org + chromeos-apps-foundation-team@google.com + + The combined http and net error codes the App Provisioning Server responds + with after a request is made. + + + + + melzhang@chromium.org + tsergeant@chromium.org + chromeos-apps-foundation-team@google.com + + The time between request and response made by the App Preload Service to the + APS endpoint for the initial request which is performed the first time a + user logs in. This is only recorded if the response is successful. + + + + + melzhang@chromium.org + tsergeant@chromium.org + chromeos-apps-foundation-team@google.com + + The result code of the web app install command used to install a web app + through the App Preload Service. This gives specific detail about errors + within the web apps system. Recorded every time the App Preload Service + attempts to install a web app (e.g. during OOBE). + + + + + melzhang@chromium.org + tsergeant@chromium.org + chromeos-apps-foundation-team@google.com + + The overall result of installing a web app through the App Preload Service. + Recorded every time the App Preload Service attempts to install a web app + (e.g. during OOBE). + + + + + nancylingwang@chromium.org + chromeos-apps-foundation-team@google.com + + Recorded the app window activated times for {AppType} in Chrome OS. This is + logged when more than 24 hours pass after last log, or during the system + startup phase if more than 24 hours passed after last log. + + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + + Records the result of creating shortcuts for a WebApp, specifically from the + user clicking on "Create Shortcut" on the chrome://apps page, in + the right click menu of the respective WebApp icon. + + + + + tapted@chromium.org + benwells@chromium.org + + The number of times v2 packaged apps are launched grouped by + extension_misc::AppLaunchBuckets. See also Extensions.AppLaunch. + + + + + nancylingwang@chromium.org + chromeos-apps-foundation-team@google.com + + Records an app launch grouped by app type. This is recorded when an app is + launched. + + + + + nancylingwang@chromium.org + chromeos-apps-foundation-team@google.com + + Records an app launch grouped by app type V2. This is recorded when an app + is launched. + + + + + nancylingwang@chromium.org + chromeos-apps-foundation-team@google.com + Records an app launch grouped by launch source. + + + + pdyson@chromium.org + + The number of apps the were not able to be ranked by the Aggregated ML app + ranker (Top Cat). + + + + + pdyson@chromium.org + + The number of apps successfully ranked by the Aggregated ML app ranker (Top + Cat). + + + + + thanhdng@chromium.org + + The type of errors that occur during the inference of Search Ranking + aggregated model. + + + + + jennyz@chromium.org + newcomer@chromium.org + + The time between sending an answer card request and receiving the + notification that answer card has finished loading. + + + + + jennyz@chromium.org + newcomer@chromium.org + + The time between sending an answer card request and receiving the + notification navigation has been finished with a valid answer card. + + + + + gzadina@google.com + tbarzic@chromium.org + + The number of apps launched from different parts of the launcher (apps grid, + search results UI, recent apps), and the shelf. Values are incremented each + time the user launches an app. Each bucket represents where in the launcher + or shelf the app was launched from. Recorded for {TabletOrClamshell}. + + + + + + andrewxu@chromium.org + tbarzic@chromium.org + + The time duration between the earliest user session activation with the app + list sort enabled and the first sort usage. This metric is recorded when app + list sort is triggered. + + + + + wrong@chromium.org + tbarzic@chromium.org + + The time between sending a non-empty query to AppSearchProvider and + receiving results back. + + + + + jennyz@chromium.org + newcomer@chromium.org + + The time between sending an empty query to AppSearchProvider and receiving + Zero State recommendation results back. + + + + + anasalazar@chromium.org + tbarzic@chromium.org + + Relative smoothness of animations of entering or exiting the cardified state + in the apps grid. 100% represents ideally smooth 60 frames per second. 50% + represents only 30 frames per second is achieved during the animations. 0% + should not happen. This metric is recorded one time per apps grid page each + time we enter or exit cardified state in the apps grid. + {EnterOrExitCardifiedState} + + + + + + + + + + tby@chromium.org + gzadina@chromium.org + + Recorded once upon login, records the state of the Disconnect Google Drive + Account setting. + + + + + + Deprecated Feb 2022 in favor of + Apps.AppList.Search.ContinueResultCount.Type. This histogram was recorded in + the wrong place to be useful for counting how many Continue results the user + sees, vs. how many the search backend is prepared to show. + + amandadeacon@chromium.org + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + Recorded on the first publication of zero-state results when opening the + launcher. Records the number of {Type} results that are ready for display. + + + + + + + + + + + Deprecated April 2022 in favor of + Apps.AppList.Search.ContinueResultRemoved.Type. This histogram was recorded + wrongly with the missing Search prefic. It is missing data for drive backed + files. + + anasalazar@chromium.org + tbarzic@chromium.org + + Records the type of a zero-state result when it is removed from the Continue + section. Recorded once every time a result is removed. Chrome OS only. + + + + + jamescook@chromium.org + tbarzic@chromium.org + + Whether the user has manually hidden the productivity launcher + "continue where you left off" section. Recorded once per launcher + open. Split by clamshell vs. tablet mode. + + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + How long it takes DriveFS to return search results. This is the first half + of the I/O logic of the Drive provider. Logged once per Drive search query. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + How long it takes to generate on-disk file paths for search results. This is + the second half of the I/O logic of the Drive provider. Logged once per + Drive search query. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Latency in milliseconds from the beginning of a launcher search query to + Drive file results being returned. Logged once per Drive search query. This + should roughly equal DriveFSLatency + FileInfoLatency for each query. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Relevance score for a Drive file result that was returned in response to a + search query. Logged once for each file per search query. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + The outcome of a query for Drive file results. Logged once per Drive search + query. + + + + + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + The time between sending a zero state query and receiving file + recommendations back from DriveZeroStateProvider. + + + + + + Deprecated September 2022, now that it's replaced by + Ash.Search.DriveFileSuggestDataValidation.Status + + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + The outcome of a query for search results from DriverZeroStateProvider. + Recorded once per zero-state query. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Whether or not the default relevance was used when calculating the relevance + score between a filename and the search query. The default relevance is used + as a fallback whenever the relevance calculation fails. Logged once per + relevance calculation. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Result of requesting a thumbnail icon for some types of file results in the + Chrome OS launcher. Emitted on each attempt to load a thumbnail, if it + results in an error. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Latency in milliseconds from the beginning of a launcher search query to + local file results being returned. Logged once per file search query. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Relevance score for a local file result that was returned in response to a + search query. Logged once for each file per search query. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Whether or not local file search was exited early due to a time out. Logged + once per file search query. + + + + + wrong@chromium.org + amandadeacon@chromium.org + + The outcome of a query for game results. Logged once per game search query. + + + + + wrong@chromium.org + amandadeacon@chromium.org + + The outcome of an index update from the Discovery service. Logged once per + update. + + + + + wrong@chromium.org + amandadeacon@chromium.org + chenjih@chromium.org + + The outcome of the icon load from the Discovery service. Logged once per + icon loaded in game result. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + zufeng@google.com + + The end result of list searches by the provider for the help app in the CrOS + launcher. Logged once per time a list search finishes. Not logged if the + search is canceled by a new search starting. Not logged for the help app + provider's suggestion chips. Chrome OS only. + + + + + wrong@chromium.org + thanhdng@chromium.org + tby@chromium.org + zufeng@google.com + + The latency of a search in the HelpAppProvider. Recorded each time a search + is completed, even if it returns no results. Not recorded if the query is + too short to perform a search at all. Chrome OS only. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Records the size of a response from the ItemSuggest API. Reported once per + successful response. Will not be reported if the response exceeds the + maximum size, instead check Apps.AppList.ItemSuggestCache.Status. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Records the outcome of a call to ItemSuggest. Reported once per call to + UpdateCache that passes the minimum time between udpates check. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Records the latency from the start of a call to UpdateCache to the time when + results are finalised. Reported once each time results are successfully + obtained, which corresponds to a kOk status being recorded in + Apps.AppList.ItemSuggestCache.Status. + + + + + wrong@chromium.org + amandadeacon@chromium.org + rbeccahsu@google.com + + Records the number of keyword tokens that are detected in a user query. + Reported once each time for each query generated. + + + + + tbarzic@chromium.org + gzadina@google.com + + Type of the result that a user opened during their first launcher search in + their first user session on the device. It includes a bucket for the case + the user does not launch any results. + + + + + + tbarzic@chromium.org + mmourgos@chromium.org + gzadina@google.com + + The number of apps which exist within the launcher app list. This number + also includes apps within folders. This metric is recorded every 30 minutes. + + + + + tbarzic@chromium.org + jamescook@chromium.org + mmourgos@chromium.org + + The total number of apps in folders ignoring system-created folders like the + OEM folder and the Linux apps folder. Recorded every 30 minutes. + + + + + tbarzic@chromium.org + jamescook@chromium.org + mmourgos@chromium.org + + The number of folders that users have in their Launcher. Includes + system-created folders like the OEM folder and the Linux apps folder. + Recorded every 30 minutes. + + + + + tbarzic@chromium.org + jamescook@chromium.org + + The number of folders that users have in their launcher. Does not include + system-created folders like the OEM folder and the Linux apps folder. + Recorded every 30 minutes. + + + + + tbarzic@chromium.org + mmourgos@chromium.org + gzadina@google.com + + The number of items which exist within the root level of the app list. This + number includes both app items and folder items. Apps within folders are not + included. This metric is recorded every 30 minutes. + + + + + wrong@chromium.org + tbarzic@chromium.org + + The time between sending an non-empty query and receiving search results + back from OmniboxProvider which queries chrome AutocompelteController's + search providers to get the results. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Various error states of the provider for OS settings in the cros launcher. + Emitted either the case of an unexpected error or an successful non-empty + query search. The bucket proportion is not meaningful as overlaps can occur + among errors. Instead, the ratio between each error bucket and the + successful query search can be used to calculate the accurate error rate. + + + + + wrong@chromium.org + tby@chromium.org + chenjih@chromium.org + + Various states of the icon related parameters for OS settings in the cros + launcher. Emitted at each branch to help investigate the cause of icon load + failures. The bucket proportion is not meaningful as overlaps can occur + among status. Instead, the ratio between states can be used to calculate how + the flow is divided into sub-branches. + + + + + wrong@chromium.org + thanhdng@chromium.org + tby@chromium.org + + The latency of a search in the OsSettingsProvider. Recorded each time a + search is completed, even if it returns no results. Not recorded if the + query is too short to perform a search at all. Chrome OS only. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Various error states on reading a backing file from disk, in the score + normalizer used by the Chrome OS launcher. Emitted once when a persistent + proto initially reads from disk. Some number of Missing values are expected, + eg. because it is logged for each new user added to a device. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Various error states on writing a backing file to disk, in the score + normalizer used by the Chrome OS launcher. Emitted each time a persistent + proto writes to disk. + + + + + cowmoo@google.com + assistive-eng@google.com + + The latency of a search in the PersonalizationProvider. Recorded each time a + search is completed, even if it returns no results. Not recorded if the + query is too short to perform a search at all. Chrome OS only. + + + + + andrewxu@chromium.org + tby@chromium.org + wrong@chromium.org + + Record the size of the removed results proto in KB. Emitted when the proto + initialization completes. + + + + + wrong@chromium.org + amandadeacon@chromium.org + celiahe@google.com + + The number of the results above the BestMatch threshold with {Type} case. + Recorded once per result's score above the BestMatch threshold. + + + + + + + + + amandadeacon@chromium.org + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + Recorded when the user has seen the zero-state launcher. Records the number + of {Type} results shown. + + + + + + + + + + + anasalazar@chromium.org + tbarzic@chromium.org + + Records the type of a zero-state result when it is removed from the Continue + section. Recorded once every time a result is removed. Chrome OS only. + + + + + anasalazar@chromium.org + tbarzic@chromium.org + + Represents the number of file suggestions removed per user per session in + the in ChromeOS launcher UI. Recorded every time the user removes a + suggestion. Each bucket represents the total number of suggestions removed + within the user session at the time the histogram is recorded. If the user + removes total of n files, histogram will have recorded all of 1, 2, 3, ..., + n values. We also record 0 count during session end if no suggestions have + been removed. + + + + + amandadeacon@chromium.org + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + Recorded when the user has seen the zero-state launcher. Records whether or + not the user would have seen any Drive files. This is equivalent to + Apps.AppList.Search.ContinueResultCount.Drive greater than 0. + + + + + wrong@chromium.org + thanhdng@chromium.org + tby@chromium.org + + Records errors in processing other Apps.AppList.Search.* metrics. These are + expected to be rare and bucket proportion is not meaningful. + + + + + amandadeacon@chromium.org + wrong@chromium.org + + Emitted on usage of launcher search. Records overall impressions, launches, + abandons, and ignores, for the query list view when federated analytics is + enabled. + + Impression. Emitted if either a) the view is displayed for 2 seconds or b) + the user interacted with a result, eg. by clicking it. + + Launch. Emitted after an impression, if a result is clicked in the query + list view. + + Abandon. Emitted after an impression, if the user closes the launcher or + moves to another UI view. + + Ignore. Emitted after an impression, if the user launches a result from a + different currently visible UI view. + + + + + amandadeacon@chromium.org + wrong@chromium.org + + Records status in initialization of federated analytics. These are expected + to be rare, and the bucket proportion is not meaningful. + + + + + amandadeacon@chromium.org + wrong@chromium.org + + Records status in reporting of federated analytics examples. These are + expected to be rare, and the bucket proportion is not meaningful. + + + + + amandadeacon@chromium.org + tby@chromium.org + + Tracks the conclusion of each search session starting from the search box. + Records launcher dismissals ("quit"), launches, and viewings of + answer card results, for the query list view when federated analytics is + enabled. + + Quit. Emitted if the user dismisses search without launching a result or + seeing an answer card. + + Launch. Emitted if the user launches a search result. + + AnswerCardSeen. Emitted if an answer card is displayed for some threshold + period of time, and the user then dismisses the launcher without launching a + result. + + + + + yulunwu@chromium.org + tby@chromium.org + wrong@chromium.org + tbarzic@chromium.org + + Records errors in processing other Apps.AppList.Search.Session2.* metrics. + These are expected to be rare and bucket proportion is not meaningful. + + + + + yulunwu@chromium.org + tby@chromium.org + wrong@chromium.org + tbarzic@chromium.org + + Tracks search result launches, answer card impressions, and search session + abandons for launcher search sessions. + + A search session is started when a query is entered into the bubble launcher + search box or when the tablet mode device enters the kFullscreenSearch + AppListViewState. Each search session must conclude one of following ways: + + Quit: Recorded when ending a search session without launching a result and + no answer card was shown long enough to have make an impression. + + Launch: Recorded when a search session is ended by launching a result. An + answer card may or may not have been shown long enough to make an + impression. + + AnswerCardImpression: An answer card was shown long enough to the user to + have made an impression at some point during the search session. The answer + card may or may not be shown at the moment the search session ended. + + + + + + wrong@chromium.org + thanhdng@chromium.org + tby@chromium.org + + Emitted on a usage of launcher search, and records overall impressions, + launches, abandons, and ignores for the {SearchView} view. + + Launch. Emitted after an impression, if a result is clicked in the + {SearchView} view. + + Abandon. Emitted after an impression, if the user closes the launcher or + moves to another UI view. + + Ignore. Emitted after an impression, if the user launches a result from a + different currently visible UI view. + + Impression. Emitted if either a) the view is displayed for 2 seconds or b) + the user interacted with a result, eg. by clicking it. + + The bucket proportion is not meaningful, because impressions are a superset + of the other buckets. Instead, the ratio between buckets is meaningful. + + + + + + wrong@chromium.org + thanhdng@chromium.org + tby@chromium.org + + Emitted when launching a search result. Records the index of the launched + result in the {SearchView} view. The top-most result is index zero. + + + + + + wrong@chromium.org + thanhdng@chromium.org + tby@chromium.org + + Tracks launches, impressions, abandons, and ignores for search result types + in the launcher. This histogram is specific to the {SearchView} view. These + metrics are all emitted once for each unique displayed search result type, + and records that search result type. + + For example, if we show the user three files and two apps, and the user + clicks a file, then we would record: one file impression and one app + impression, one file launch, and one app ignore. + + Launch. Emitted after an impression, if the user launches a result. + + Abandon. Emitted after an impression, if the user closes the launcher or + moves to a different view. + + Ignore. Emitted after an impression, if the user then launched a different + result. + + Impression. Emitted if either a) a set of results is displayed for 2 seconds + or b) the user interacted with a result, eg. by clicking it. + + + + + + + wrong@chromium.org + thanhdng@chromium.org + tby@chromium.org + + The length of the query that resulted in an app launch from search box. This + metric only records non-empty queries. + + + + + tbarzic@chromium.org + gzadina@google.com + + The decision of the user whether to remove a search result from search + results UI when productivity launcher is enabled. When productivity launcher + is enabled, the user has an option to remove subset of omnibox results from + search results. When removing the result, the user is shown a dialog to + confirm or cancel result removal. This histogram record the user action in + that dialog. + + + + + wrong@chromium.org + thanhdng@chromium.org + tby@chromium.org + + The number of app launches from the search box with non-empty queries. This + was updated in 12/2022 to include more result types that were apps. + + + + + andrewxu@chromium.org + tbarzic@chromium.org + + The time duration between showing the app list sort education nudge and the + first sort usage. This metric is recorded when app list sort is triggered + after the sort nudge is shown. + + + + + andrewxu@chromium.org + tbarzic@chromium.org + + The time duration between showing the app list sort education nudge and the + first sort usage. This metric is recorded when app list sort is triggered + after the sort nudge is shown. The collected data are separated by the + tablet mode state under which the sort nudge is shown. In detail, if the + sort nudge shows initially in tablet (or clamshell), then the discovery + duration is reported using the histogram for tablet (or clamshell). + + + + + + andrewxu@chromium.org + chromeos-launcher@google.com + + The app list sort order preserved in the pref service. Triggered when the + pref service for the new session is ready. + + + + + + gzadina@google.com + tbarzic@chromium.org + + Whether the user successfully used the launcher when they opened it for the + first time. Successful usage entails launching an app, or search result from + the launcher UI. Only recorded in user session started after creating a new + account on the device. Split by whether the launcher was first shown in + clamshell or tablet mode. + + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Whether or not the user has enabled Suggested Content in the launcher. This + is logged once per UMA upload, and only for any user that has the Suggested + Content toggle feature flag enabled. + + + + + laurencom@google.com + wrong@chromium.org + tby@google.com + + Records the ProbeError::ErrorType returned on request for + {ProbeErrorSourceStruct}. Recorded on the event a request to cros_healthd + probe service returns a ProbeError. This can occur when a request is made to + the CrosHealthdProbeService within the System Info Provider. + + + + + + + + + + laurencom@google.com + wrong@google.com + tby@google.com + + Records error type such as no data error, not a number error and expectation + not met error when receiving system information including battery info, + network info and system info. All errors are recorded. + + + + + + + + + gzadina@google.com + tbarzic@chromium.org + + Amount of time passed from when the launcher was shown to the user + performing a launcher workflow action, which includes launching an app from + the apps grid, launching an app from recent apps section, opening a search + result, or opening a task in continue section. Logged when the user performs + an action. Recorded for {TabletOrClamshell}. + + + + + + gzadina@google.com + tbarzic@chromium.org + + Tracks different launcher worflow actions the user performs in the launcher. + Logged when the user performs an action. Recorded for {TabletOrClamshell}. + + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Emitted on a usage of the launcher, and records overall impressions, + launches, and abandons for a launcher UI view. The bucket proportion is not + meaningful for this metric, because impressions are a superset of launches + and abandons. Instead, the ratio between buckets can be used to calculate + accurate overall CTR. {LauncherUISurface} + + This metric stopped collecting data in November 2021, but has not yet been + marked obsolete because the historical data is still being used for + analysis. + + + + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Emitted on a usage of the launcher, and records overall impressions, + launches, and abandons for a launcher UI view. The bucket proportion is not + meaningful for this metric, because impressions are a superset of launches + and abandons. Instead, the ratio between buckets can be used to calculate + accurate overall CTR. {LauncherUISurface} + + This metric stopped collecting data in November 2021, but has not yet been + marked obsolete because the historical data is still being used for + analysis. + + + + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Emits true when the user enters a query into the Chrome OS launcher search + box. Entering any number of characters is considered only one query, but + deleting the contents of the search box and starting again is recorded as a + new query. + + This metric stopped collecting data in November 2021, but has not yet been + marked obsolete because the historical data is still being used for + analysis. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Emitted after an impression, if the user then closes the launcher or moves + to a different view without launching any search result. This is emitted + once per abandon, per displayed result. Records the displayed result's type. + See Apps.AppList.UserEvent.TypeImpression for more details. + + This metric is completed by a histogram suffix describing which UI surface + the results are recorded from. {LauncherUISurface} + + This metric stopped collecting data in November 2021, but has not yet been + marked obsolete because the historical data is still being used for + analysis. + + + + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + When a set of results is displayed for 2 seconds and the user has probably + seen it, or the user interacted with the results and has definitely seen it, + we consider it an impression. + + Emitted once per impression for each displayed result. Records the type of + the displayed result, eg. native app or omnibox bookmark. + + The Apps.AppList.UserEvent.Type* metrics are directly comparable + per-result-type. So, for example, (launches / impressions) for a result type + gives an accurate CTR. + + This metric is completed by a histogram suffix describing which UI surface + the results are recorded from. {LauncherUISurface} + + This metric stopped collecting data in November 2021, but has not yet been + marked obsolete because the historical data is still being used for + analysis. + + + + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Emitted after an impression, if the user launches a result. Records the type + of the launched result. See Apps.AppList.UserEvent.TypeImpression for more + details. + + This metric is completed by a histogram suffix describing which UI surface + the results are recorded from. {LauncherUISurface} + + This metric stopped collecting data in November 2021, but has not yet been + marked obsolete because the historical data is still being used for + analysis. + + + + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Relevance score for a zero state Drive result in the results list. Logged + whenever ItemSuggest is queried, once for each zero-state result created. + + + + + wrong@chromium.org + tby@chromium.org + + The time between sending a zero state query and receiving file + recommendations back from the ZeroStateFileProvider. + + + + + wrong@chromium.org + tby@chromium.org + thanhdng@chromium.org + + Relevance score for a zero state file result in suggestion chips or the + results list. Logged once each time zero state is loaded. + + + + + wrong@chromium.org + tby@chromium.org + + The type of item that was launched from a zero state launcher search result. + + + + + jennyz@chromium.org + newcomer@chromium.org + + The type of the app list suggestion that was opened by user in zero state. + + + + + tbarzic@chromium.org + mmourgos@chromium.org + newcomer@chromium.org + + The number of apps launched from the launcher and shelf for each launcher + state. This is incremented each time an app is launched. Each bucket + represents where in the launcher or shelf the app was launched from. + {AppListState} + + + + + + + + + + + + + + + tbarzic@chromium.org + mmourgos@chromium.org + newcomer@chromium.org + + The different ways to move an app in app list's apps grid. Logged when the + app moving succeeds. + + + + + charleszhao@chromium.org + pdyson@chromium.org + + The type of app clicked in the launcher on ChromeOS, recorded after the icon + is clicked, before it is launched. + + + + + tbarzic@chromium.org + wcwang@chromium.org + chromeos-launcher@google.com + + The different ways to move an app in app list's apps grid, specifically for + the scrollable apps grid in bubble launcher. Logged when the app moving + succeeds. + + + + + tbarzic@chromium.org + wcwang@chromium.org + chromeos-launcher@google.com + + The amount of time it takes to build the app list bubble UI. This is logged + each time the app list bubble gets shown. + + + + + tbarzic@chromium.org + newcomer@chromium.org + chromeos-launcher@google.com + + The number of times the different sources for showing the bubble app list + are used. This is logged when the bubble app list is shown, which only + exists in clamshell mode. See sister metric + "Apps.AppListShowSource" for tablet mode and fullscreen app list + metrics. + + + + + + + anasalazar@chromium.org + tbarzic@chromium.org + + The type of app list continue search result that was opened by the user. + This is gathered per continue section task opened. + + + + + tbarzic@chromium.org + mmourgos@chromium.org + + The amount of time it takes to build the app list UI. This is logged each + time the app list is built from scratch. + + + + + jennyz@chromium.org + newcomer@chromium.org + + The type of the default result opened by user by pressing ENTER key. + Launcher UI shows suggested apps, recent queries, etc when user activates + the search box, or shows matched apps (installed apps, play store app + results, etc.) and other results (query suggestions, web site, bookmark, + files, etc) when user types a query. It will set the focus on the first + result as the default. User can open the default result by simply pressing + ENTER key. This metrics logs the type of the default result (installed app, + play store result, query suggestion, etc) opened by user pressing ENTER key. + + + + + tbarzic@chromium.org + jamescook@chromium.org + chromeos-launcher@google.com + + Relative smoothness of animations of showing and hiding app list folder. + 100% represents ideally smooth 60 frames per second. 50% represents only 30 + frames per second is achieved during the animations. 0% should not happen. + This metric is recorded exactly once when the user starts the folder + animation in the launcher. + + Warning: this histogram was expired from 2021-08-29 to 2021-09-28; data may + be missing. + + + + + + + mmourgos@chromium.org + tbarzic@chromium.org + newcomer@chromium.org + + The folder name length in characters when an app list folder gets renamed. + Logged when the folder name is changed and the texfield is no longer in + focus. + + + + + mmourgos@chromium.org + tbarzic@chromium.org + newcomer@chromium.org + + The number of times folders are opened in the app list. This is logged when + the folder is clicked. + + + + + newcomer@chromium.org + tbarzic@chromium.org + mmourgos@chromium.org + + Elapsed time from the input event to hide the launcher UI. This is logged + each time the launcher is dismissed by pressing search key, clicking shelf + button, or focusing out side of the launcher. + + + + + wrong@chromium.org + tby@chromium.org + + Logs the length of user typed queries that result in launcher clicks. + Emitted each time the user opens a launcher search result after typing a + query. + + + + + jennyz@chromium.org + tbarzic@chromium.org + newcomer@chromium.org + + The UMA histogram that logs the length of user typed queries app list + launcher issues to the search providers. + + + + + angusmclean@chromium.org + tbarzic@chromium.org + src/ash/app_list/OWNERS + + The time a user spends with the AppList open after opening it using the + {OpenMethod} method. + + + + + + + + + + + + tbarzic@chromium.org + newcomer@chromium.org + mmourgos@chromium.org + + The source used to switch pages in the app list's app grid. Logged when the + page switch succeeds. + + + + + + Deprecated in M108. Tiled app results are no longer shown. + + jennyz@chromium.org + newcomer@chromium.org + + The index of the app within all play store apps displayed when it is + launched. + + + + + tby@chromium.org + ypitsishin@chromium.org + chrome-knowledge-eng@google.com + The state of a Play Store app search request. + + + + + Deprecated in M108. Tiled app results are no longer shown. + + jennyz@chromium.org + newcomer@chromium.org + + Deprecated in Oct 2022. The number of the play store apps displayed to user + as tile items for a query. + + + + + napper@chromium.org + robsc@chromium.org + thanhdng@chromium.org + + Response when parsing the recommended app list from Play Store for candidate + app list, recorded every time a response from the play store is parsed in + client. + + + + + napper@chromium.org + robsc@chromium.org + thanhdng@chromium.org + + Number of responses from server in Apps.AppListRecommendedResponse.count + when fetching appListRecommendded GetAppReinstallCandidates. + + + + + napper@chromium.org + robsc@chromium.org + thanhdng@chromium.org + + Milliseconds elapsed to fetch appListRecommended GetAppReinstallCandidates. + + + + + yulunwu@chromium.org + tbarzic@chromium.org + + The outcome of app list search attempting to autocomplete queries by + matching user entered text with search result text. This metric is split by + prefix match, substring match, and no match. This is gathered each time app + list attempts to perform an autocomplete. + + + + + + Deprecated in July 2022. Replaced with Apps.AppListSearchQueryLenghtV2, + which, unlike this histogram, only records query length for results from + launcher search results UI. Apps.AppListSearchQueryLength was recording + query length when launching results from continue section. + + + + yulunwu@chromium.org + calamity@chromium.org + + The length of the app list search query when a result is opened. This is + gathered per click of a search result. + + + + + yulunwu@chromium.org + calamity@chromium.org + + The length of the app list search query when a result is opened. This is + gathered per click of a search result in launcher search results UI. + + + + + + wutao@chromium.org + + The app list search result of an internal app that was opened by the user. + This is gathered per click of a search result. + + + + + wutao@chromium.org + + The app list search result of an internal app that was shown to the user. + This is gathered per creation of a search result. Note: Typing a word with + multiple letters could trigger multiple creations of the search result. + + + + + + + tbarzic@chromium.org + newcomer@chromium.org + mmourgos@chromium.org + + The type of app list search result that was opened by the user. This is + gathered per SearchResult opened. Only recorded for search results shown in + the search result page of the launcher (suggestion chips are not recorded). + + + + + tbarzic@chromium.org + newcomer@chromium.org + mmourgos@chromium.org + + Elapsed time from the input event to show the launcher UI. This is logged + each time the app list is shown by pressing search key, clicking shelf + button, or swiping from shelf. + + + + + tbarzic@chromium.org + newcomer@chromium.org + + The number of times the different sources for showing the app list are used. + This is logged when the app list is shown. Does not count the app list shown + when the last window is closed in tablet mode. This is not the total number + of times the app list is shown to the user; for that consult the user action + AppList_WindowFocused. + + + + + andrewxu@chromium.org + tbarzic@chromium.org + + Records the launcher usage state during the session started by a new user + (i.e. the session completing the OOBE flow). This metric is recorded in the + following scenarios: (1) the launcher shows and the current user is new (2) + the launcher has never shown before launcher is destructed. Destruction can + be triggered by loging out accounts, shuting down the device or system + crashes and meanwhile the current user is new (3) the launcher has never + shown when the active user has changed and the previous active user was a + new user. Split depending on whether the device was in tablet or clamshell + mode when the metric was recorded. + + + + + + nancylingwang@chromium.org + chromeos-apps-foundation-team@google.com + + The total number of installed {AppType} for each app type in Chrome OS. This + is logged when more than 24 hours pass after last log, or during the system + startup phase if more than 24 hours passed after last log. This histogram is + capped at 1000; values above this go into the overflow bucket. + + + + + + nancylingwang@chromium.org + chromeos-apps-foundation-team@google.com + + The total number of installed {AppType} for each app type {InstallReason} in + Chrome OS. This is logged when more than 24 hours pass after last log, or + during the system startup phase if more than 24 hours passed after last log. + This histogram is capped at 1000; values above this go into the overflow + bucket. + + + + + + + + Deprecated in May 2022. Replaced with + Apps.AppList.NumberOfAppsInNonSystemFolders, which is recorded periodically, + for consistency with other app list metrics. + + mmourgos@chromium.org + newcomer@chromium.org + + The total number of apps in folders ignoring OEM folders. This is logged + each time the app list is initialized. The + "FullscreenAppListDisabled" suffix has been deprecated. + {AppListFolderExperiment} + + + + + + + + + + nancylingwang@chromium.org + sstan@chromium.org + + Records whether the ARC ghost window is launched when the ARC app are + restored during the system startup phase. + + + + + + + tbarzic@chromium.org + jamescook@chromium.org + chromeos-launcher@google.com + + Emitted when the clamshell launcher {Transition} animation completes. + Reports the smoothness of this animation. 100% represents the ideally smooth + 60 frames per second. + + + + + + + + + + + + tbarzic@chromium.org + newcomer@chromium.org + mmourgos@chromium.org + + The number of times a certain command was executed by a context menu, split + by whether the context menu came from an app, or another part of the system + UI. {ContextMenuFromApp} + + + + + + + + + wcwang@chromium.org + mmourgos@chromium.org + tbarzic@chromium.org + + The show source (touch, mouse, keyboard, etc) for a context menu. Split by + the component from which the context menu originated. {AppUIComponent} + + + + + + + wcwang@chromium.org + mmourgos@chromium.org + tbarzic@chromium.org + + The user journey time for a ContextMenu, defined as the time between + launching a context menu and the context menu's close callback being + activated. Not recorded whenever the context menu is not for an app icon on + the shelf. {AppUIComponent} + + + + + + + estade@chromium.org + desktop-pwas-team@google.com + + Records the result of creating shortcut image for web app on Linux. + + + + + phillis@chromium.org + cmumford@chromium.org + + Records the result of creating shortcut for web app on Linux. + + + + + phillis@chromium.org + cmumford@chromium.org + + Records the result of creating shortcut for web app on MacOS. + + + + + nancylingwang@chromium.org + chromeos-apps-foundation-team@google.com + + Records when a user attempts to launch a particular Chrome OS app. + {DefaultAppLaunchSource} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + estade@chromium.org + desktop-pwas-team@google.com + + Records the result of MIME info database update when enabling an app's use + of the PWA File Handling API + + + + + estade@chromium.org + desktop-pwas-team@google.com + + Records the result of file handler registration for PWA on Windows + + + + + estade@chromium.org + desktop-pwas-team@google.com + + Records the result of MIME info database update when disabling an app's use + of the PWA File Handling API + + + + + + Deprecated in M103. Replaced with Apps.NewUserFirstLauncherAction. + + andrewxu@chromium.org + tbarzic@chromium.org + + Records which launcher action a new user takes for the first time within a + session. Launcher actions include the following: activating a launcher app + and opening a search result from either a launcher suggestion chip or the + search box. The metric is recorded when a launcher action performs on a new + user's session for the first time. Split depending on whether the first + launcher action occurred in clamshell or tablet mode. + + + + + + + + andrewxu@chromium.org + tbarzic@chromium.org + newcomer@chromium.org + + Relative smoothness of animations of launcher transitions in tablet mode. + 100% represents ideally smooth 60 frames per second. 50% represents only 30 + frames per second is achieved during the animations. 0% should not happen. + This metric is recorded exactly once when the user triggers launcher + animation in tablet mode. {AppListTabletModeTransition} + + + + + + + + + + + + + + + + nancylingwang@chromium.org + chromeos-apps-foundation-team@google.com + Records the app icon loading method when loading app icons. + + + + andrewxu@chromium.org + chromeos-launcher@google.com + + The events that reset the app list pref sort order. Triggered when the pref + sort order is reset. + + + + + + mmourgos@chromium.org + chromeos-launcher@google.com + + Emitted when an app list drag reorder animation completes. Reports the + smoothness of this animation. 100% represents the ideally smooth 60 frames + per second. + + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + + Records the result of installing an app on the chrome://apps page. This + happens when a user drags a link to this page. + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + + Records the result of locally installed an app on the chrome://apps page, + which involves hooking up Os integration. Specifically, this records if the + shortcuts were created successfully. This happens whena user right-clicks on + a greyed out webapp icon in the chrome://apps page and clicks + "Install". + + + + + andrewxu@chromium.org + chromeos-launcher@google.com + + The user-set sort order of the productivity launcher. Triggered when the + launcher is set with a new order. + + + + + + andrewxu@chromium.org + chromeos-launcher@google.com + + Emitted when the app list sort reorder animation completes. Reports the + smoothness of this animation. 100% represents the ideally smooth 60 frames + per second. + + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The amount of time needed to create a lock screen apps profile. This metric + is recorded only if the profile creation was successful. The lock screen + apps profile is created if the user has an app enabled on Chrome OS lock + screen, and is used as the context in which the app is launched on top of + the lock screen. + + + + + glenrob@chromium.org + tbuckley@chromium.org + + Boolean indicating whether the lock screen apps profile creation succeeded. + The lock screen apps profile is created if the user has an app enabled on + Chrome OS lock screen, and is used as the context in which the app is + launched on top of the lock screen. + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The size of a data item stored in the lock screen data item storage using + chrome.lockScreen.data API as sent from the app - the item will be encrypted + before getting stored in the storage. + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The size of an encrypted data item stored in the lock screen data item + storage using chrome.lockScreen.data API. + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The amount of time it took to complete a lock screen data item storage + operation. Reported only on the operation failure. + {LockScreenAppDataItemOperation} + + + + + + glenrob@chromium.org + tbuckley@chromium.org + + Warning: this histogram was expired from 2021-06-01 to 2022-05-16; data may + be missing. The amount of time it took to complete a lock screen data item + storage operation. Reported only on the operation success. + {LockScreenAppDataItemOperation} + + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The result of a lock screen data item storage operation returned through + chrome.lockScreen.data extension API. {LockScreenAppDataItemOperation} + + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The number of data items saved in the lock screen data item storage per app. + This is recorded on startup, when the app attempts to use the + chrome.lockScreen.data API. + + + + + glenrob@chromium.org + tbuckley@chromium.org + + Reported when a user attempts to launch a note taking app on the lock + screen. It reports the note taking app state in the lock screen apps profile + at the launch attempt time - for example, whether the app was enabled, or + whether the app had been terminated and an app reload was attempted. + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The amount of time a lock screen enabled app window spent in a certain state + during the app window activity. The state to which the histogram refers to + is defined by the suffix. The metric is logged upon leaving the associated + state. {LockScreenNoteTakingAppWindowState} + + + + + + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The note taking action availability state on the lock screen, recorded when + the user session is locked. + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The state in which lock screen enabled note taking app was when the note + taking session ended. + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The amount time a lock screen app had been launching when the app launch was + canceled. Logged if the lock screen app session ends before the lock screen + app window is shown. + + + + + glenrob@chromium.org + tbuckley@chromium.org + + Ordinal number of a note taking app launch request from a lock screen within + a lock screen session. If a note taking app is launched n times during a + single lock screen session, this histogram will be reported with values 1 + through n. The launch counter is reset on screen unlock. + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The user action that launched note taking from the lock screen. + + + + + glenrob@chromium.org + tbuckley@chromium.org + + Reported when a note taking app is unloaded from the lock screen apps + profile while lock screen note taking is available. Reports the unload + reason type, which can be used to deduce whether the app can be reloaded in + the profile. The app unload event is not reported if the app is unloaded due + to lock screen note taking becoming unavailble (e.g. when the user unlocks + the screen). + + + + + glenrob@chromium.org + tbuckley@chromium.org + + Amount of time needed to install a copy of a lock screen note taking app + into lock screen apps profile. + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The reason the note taking on lock screen was ended (and lock screen app + window was closed). + + + + + glenrob@chromium.org + tbuckley@chromium.org + + Reported when a note taking app is terminated in the lock screen apps + profile. It reports the number of times the app was reloaded in the lock + screen apps profile during the current lock screen session (prior to the + termination). + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The amount of time needed to load a note taking app window contents on the + lock screen - i.e. the time passed from the user requesting an app launch to + the app window contents being loaded. + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The amount of time needed to launch a note taking app window from the lock + screen - i.e. the time passed from the user requesting an app launch to the + app window appearing on the screen. + + + + + tapted@chromium.org + patricialor@chromium.org + + The number of other media app windows that exist when a new media app window + is created. Counts windows open with any supported file type, or in the + "zero state" (with no open file). + + + + + andrewxu@chromium.org + tbarzic@chromium.org + + Records which launcher action a new user takes for the first time within a + session. Launcher actions include the following: activating a launcher app, + opening a search result from either a launcher suggestion chip or the search + box, or triggering an app from the continue section. The metric is recorded + when a launcher action performs on a new user's session for the first time. + Split depending on whether the first launcher action occurred in clamshell + or tablet mode. + + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The result of attempting to launch a default note-taking app on Chrome OS. + Only reported if the preferred app was unspecified or failed to launch. + + + + + glenrob@chromium.org + tbuckley@chromium.org + + The result of attempting to launch the user-specified preferred note-taking + app, if any, on Chrome OS. + + + + + + Deprecated in May 2022. Replaced with Apps.AppList.NumberOfFolders, which is + recorded periodically, for consistency with other app list metrics. + + tbarzic@chromium.org + mmourgos@chromium.org + newcomer@chromium.org + + The number of folders that users have in their Launcher. Includes + system-created folders like "Linux apps" or the OEM folder. + Recorded every time the launcher is shown. + + + + + + Deprecated in May 2022. Replaced with Apps.AppList.NumberOfNonSystemFolders, + which is recorded periodically, for consistency with other app list metrics. + + tbarzic@chromium.org + jamescook@chromium.org + newcomer@chromium.org + + The number of folders that users have in their launcher. Does not include + system-created folders like "Linux apps" or the OEM folder. + Recorded every time the launcher is shown. + + + + + mmourgos@chromium.org + tbarzic@chromium.org + newcomer@chromium.org + + The number of pages that users have in the top level apps grid of their + Launcher. This metric is recorded every time the launcher is shown. + + + + + andrewxu@chromium.org + tbarzic@chromium.org + + Records the opened launcher search results from the search box. Data is + gathered when a search result is opened from the search box. + {AnyNonAppBrowserWindowOpenAndNotMinimized} denotes whether there is any + non-app browser window open and not minimized when a search result is + opened. + + + + + + + + + tbarzic@chromium.org + newcomer@chromium.org + wutao@chromium.org + + Relative smoothness of animations of launcher pagination transitions. 100% + represents ideally smooth 60 frames per second. 50% represents only 30 + frames per second is achieved during the animations. 0% should not happen. + This metric is recorded exactly once when the user starts the pagination + transition animation of the launcher. + + + + + + + omrilio@chromium.org + tbarzic@chromium.org + newcomer@chromium.org + + Presentation time for the apps grid scrolling operation. This starts when + drag starts by gesture and ends before the patination animation starts. The + smoothness of the pagination animation is recorded in + Apps.PaginationTransition.AnimationSmoothness.{TabletMode|ClamshellMode}. + + + + + + + omrilio@chromium.org + tbarzic@chromium.org + newcomer@chromium.org + + Maximum latecy reported during one drag to scroll operation on apps grid. + + + + + mxcai@chromium.org + chromeos-apps-foundation-team@google.com + + Records the number of entries in the preferred apps list that was stored on + the disk. The preferred apps list is a vector that identifies the preferred + app for an intent filter. This value is recorded every time on user login + and we read the stored data from the disk. + + + + + nancylingwang@chromium.org + sstan@chromium.org + + Records whether all Arc app windows have been restored. This is logged when + the restoration process finishes during the system startup phase. + + + + + nancylingwang@chromium.org + sstan@chromium.org + + Records restoration result states of Arc apps. This is logged when the + restoration process finishes during the system startup phase. + + + + + nancylingwang@chromium.org + sstan@chromium.org + + Records the number of restored ARC app windows in Chrome OS. This is logged + during the system startup phase. This histogram is capped at 100; values + above this go into the overflow bucket. + + + + + nancylingwang@chromium.org + sammiequon@chromium.org + + Records the browser restore result, whether tabs can be restored, when the + browser is restored during the system startup phase. + + + + + nancylingwang@chromium.org + sammiequon@chromium.org + + Records the number of app launching restored grouped by app type, when the + system startup. + + + + + nancylingwang@chromium.org + sammiequon@chromium.org + + Records user actions on the full restore for crash notification, when the + notification is closed. + + + + + nancylingwang@chromium.org + sammiequon@chromium.org + + Records the restore apps and pages preference setting, when a profile is + loaded. + + + + + nancylingwang@chromium.org + sammiequon@chromium.org + + Records user actions on the full restore notification, when the notification + is closed. + + + + + nancylingwang@chromium.org + sammiequon@chromium.org + + Records the restore apps and pages preference setting, when the preference + setting is changed. + + + + + nancylingwang@chromium.org + chromeos-apps-foundation-team@google.com + + Recorded the app running duration for {AppType} in Chrome OS. This is logged + when more than 24 hours pass after last log, or during the system startup + phase if more than 24 hours passed after last log. + + + + + + nancylingwang@chromium.org + chromeos-apps-foundation-team@google.com + + Recorded the app running duration percentage for {AppType} in Chrome OS. + This is logged when more than 24 hours pass after last log, or during the + system startup phase if more than 24 hours passed after last log. + + + + + + tbarzic@chromium.org + anasalazar@chromium.org + newcomer@chromium.org + + Relative smoothness of animations of the scrollable shelf when scrolling. + 100% represents ideally smooth 60 frames per second. 50% represents only 30 + frames per second is achieved during the animations. 0% should not happen. + This metric is recorded exactly once when the user scrolls over the + scrollable shelf. {HomeLauncherVisibility} + + + + + + + + tbarzic@chromium.org + anasalazar@chromium.org + newcomer@chromium.org + + Maximum latency of the presentation time of the drag scroll in the + scrollable shelf. {HomeLauncherVisibility} + + + + + + tbarzic@chromium.org + anasalazar@chromium.org + newcomer@chromium.org + + Presentation time of the drag scroll in the scrollable shelf in + milliseconds. + + Warning: This histogram was expired from 2021-01-10 to 2022-06-02; data may + be missing. {HomeLauncherVisibility} + + + + + + nancylingwang@chromium.org + sammiequon@chromium.org + + Records the last session restore exit result. This is logged when the + restoration process finishes during the system startup phase. + + + + + nancylingwang@chromium.org + sammiequon@chromium.org + + Records the restored browser window count from session restore. This is + logged when the restoration process finishes during the system startup + phase. + + + + + tbarzic@chromium.org + newcomer@chromium.org + src/ash/app_list/OWNERS + + Relative smoothness of animations of tablet mode launcher state transitions. + 100% represents ideally smooth 60 frames per second. 50% represents only 30 + frames per second is achieved during the animations. 0% should not happen. + This metric is recorded exactly once when the user switches states of the + launcher. + + + + + tbarzic@chromium.org + jamescook@chromium.org + chromeos-launcher@google.com + + Time between when an app is installed and when the user launches the app. + Recorded the first time the user launches the app. The clamshell or tablet + mode state is the state when the app is launched. + + + + + + andrewxu@chromium.org + tbarzic@chromium.org + + The time duration between session activation and the first launcher action + on a new user session. Launcher actions include the following: activating a + launcher app and opening a search result from either a launcher suggestion + chip or the search box. This metric is recorded when a new user triggers the + launcher action for the first time. + + + + + + andrewxu@chromium.org + tbarzic@chromium.org + + The time duration between session activation and opening the Launcher for + the first time on a new user session. This metric is recorded when a new + user opens the laucnher for the first time. + + + + + + nancylingwang@chromium.org + chromeos-apps-foundation-team@google.com + + Records the amount of time that {AppType} were used in the last five minutes + on Chrome OS. This is logged every five minutes. + + + + + + nancylingwang@chromium.org + chromeos-apps-foundation-team@google.com + + Records the amount of time that {AppTypeV2} were used in the last five + minutes on Chrome OS. This is logged every five minutes. + + + + + + + diff --git a/histograms/metadata/arc/OWNERS b/histograms/metadata/arc/OWNERS new file mode 100644 index 000000000000..4c2da61ce1c4 --- /dev/null +++ b/histograms/metadata/arc/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +mhasank@chromium.org +batoon@google.com diff --git a/histograms/metadata/arc/histograms.xml b/histograms/metadata/arc/histograms.xml new file mode 100644 index 000000000000..c1c14097d166 --- /dev/null +++ b/histograms/metadata/arc/histograms.xml @@ -0,0 +1,2788 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vraheja@chromium.org + arc-core@google.com + Time taken for ARC to boot during an Abi Migration event. + + + + vraheja@chromium.org + arc-core@google.com + + Time taken by ArcAbiMigrationService specifically to downgrade system + packages. + + + + + vraheja@google.com + arc-core@google.com + + Records event type for ArcAbiMigrationService during Abi Migration. + + + + + vraheja@chromium.org + arc-core@google.com + + Records the number of failed attempts in trying to perform Primary Abi + Migration. + + + + + sahok@chromium.org + arc-framework@google.com + + For each window, measure the time that the window is focused with + {ArcAccessibilityFeatures} enabled. This metric is recorded when the window + loses focus or the window is closed. + + + + + + sahok@chromium.org + arc-framework@google.com + + Count the number of windows with accessibility features enabled when a + window is opened or an accessibility feature is enabled while windows exist. + + + + + + Removed 2022/03. + + hirokisato@chromium.org + arc-framework@google.com + + Whether the ARC window is opened with TalkBack enabled or not. Counted when + a user opens a window or toggles the feature. Checked only when the spoken + feedback is enabled in Chrome OS. + + + + + vraheja@chromium.org + tbuckley@chromium.org + + Record user's choice or error during ADB sideloading opt-in UI after reboot. + + + + + khmel@google.com + arc-performance@google.com + The time elapsed for booting up the ARC instance. + + + + momohatt@google.com + arc-storage@google.com + + The total size of data an application has in Android /data directory. This + is defined as the per-application sum of the size of application-specific + directories in /data/app, /data/data, /data/media/0/Android/(data|obb) and + /data/user_de/0. The data is collected once per device, on the first ARC + boot after the device upgrades to a ChromeOS version with this metric. + + + + + momohatt@google.com + arc-storage@google.com + + The total number of {FileTypeByDirectoryOrNot} an application has in Android + /data directory. This is defined as the per-application sum of the numbers + in application-specific directories under /data/app, /data/data, + /data/media/0/Android/(data|obb) and /data/user_de/0. The data is collected + once per device, on the first ARC boot after the device upgrades to a + ChromeOS version with this metric. + + + + + + momohatt@google.com + arc-storage@google.com + + The size of {Target}. The data is collected once per device, on the first + ARC boot after the device upgrades to a ChromeOS version with this metric. + + + + + + momohatt@google.com + arc-storage@google.com + + The number of {FileTypeByDirectoryOrNot} in {Target}. The data is collected + once per device, on the first ARC boot after the device upgrades to a + ChromeOS version with this metric. + + + + + + + momohatt@google.com + arc-storage@google.com + + The duration of the file system traversal to take the statistics about the + content of Android /data directory. The data is collected once per device, + on the first ARC boot after the device upgrades to a ChromeOS version that + ships with this metric. + + + + + khmel@google.com + alanding@google.com + arc-performance@google.com + + ANR rate separated by {AnrPeriod} as ANR count happened in this period. + + + + + + khmel@google.com + arc-performance@google.com + + ANR rate separated by {AnrPeriod} and {ArcBootType} as ANR count happened in + this period. + + + + + + + khmel@google.com + alanding@google.com + arc-performance@google.com + + Counts ANR events in the system separated by ANR type and {AnrSource}. + + + + + + + + + + + + + + + + + + cwd@google.com + cros-vm-technology@google.com + + Number of ARC Apps killed by {ArcAppKillType} in each interval of 10 + minutes. + + + + + + cwd@google.com + cros-vm-technology@google.com + + Number of ARC Apps killed by {ArcAppKillType} in each interval of 10 minutes + when {ArcBackgroundVms}. + + + + + + + cwd@google.com + cros-vm-technology@google.com + + Number of ARC Apps killed each day {ArcAppKillDailyType}. + {ArcAppKillDailyBackgroundVms}. + + + + + + + batoon@google.com + arc-core@google.com + + Emitted for each app launched with ArcAppLauncher. Records the primary ABI + used for the app. This will let us know if 32-bit binaries are still being + used or if 32-bit support is not needed anymore. + + + + + khmel@google.com + fahdi@google.com + + The number of ARC apps open at any given time. Collected every 5 minutes. + This indicates both how many users are engaging with apps and, when they do + engage, how many apps they are engaging with at a time. + + + + + khmel@google.com + arcvm-eng@google.com + + True if the user (or Chrome app sync) has manually installed one or more + apps or Ash has one or more "unknown" apps. See + Arc.AppCount.InstalledApp and Arc.AppCount.UnknownApp for more details. + Collected once every time when ARC starts. + + + + + khmel@google.com + arcvm-eng@google.com + + The number of ARC {AppType}s that are managed by Chrome (Ash). Collected + once every time when ARC starts. + + + + + + + + + + + batoon@google.com + arc-core@google.com + + Record the number of manual installs that did not complete after the very + first login on a device. This metric is recorded when the ARC session is + stopped IFF it is the first session after opting in during the sync consent + screen. + + + + + batoon@google.com + arc-core@google.com + + Record the length of time it took to complete a manual install after the + very first login on a device. This metric is recorded when a manual install + succeeds IFF it is the first session after opting in during the sync consent + screen. + + + + + batoon@google.com + arc-commercial@google.com + + Record the success rate for all apps within a single policy. This will allow + us to understand the reliability of force installs for a single customer. + The metric is emitted when success/failure results are received for all apps + in a policy or when 30 minutes have elapsed since the policy was received. + + + + + thanhdng@chromium.org + tby@chromium.org + wrong@chromium.org + + Record a reason when an arc application completes installation successfully, + including policy based applications, default applications and user prompted + installations. Warning: this histogram was expired from 09/01/2021 to + 10/01/2021; data may be missing. + + + + + mmourgos@chromium.org + newcomer@chromium.org + + Record the time to build ARC app shortcut items on menu model. We get the + needed metadata from Android and decode icons in the utility process. It is + an asynchronous procedure so we need to know the longest waiting time. + + + + + batoon@google.com + arc-core@google.com + + Emitted for each ARC app shortcut search result. Records whether the icon is + empty. This will let us know how often the Google Play Store icon is shown + in place of a shortcut. + + + + + batoon@google.com + arc-core@google.com + + Emitted for each requested ARC app shortcut. Records whether the icon is + empty. This will let us know how often the Google Play Store icon is shown + in place of a shortcut. + + + + + jhorwich@google.com + + Total number of ARC apps installed on a device measured at startup. Note: + This includes launchable apps that are installed by default, such as Play + Store and Settings, as well as any vendor specific apps. + + Warning: this histogram was expired after M92 and brought back 2021-09-17; + expired after M99 and brought back 2022-12-07; data may be missing. + + + + + batoon@google.com + arc-core@google.com + + Records the app size of apps installed during the initial session of app + sync. Metrics are emitted when an app sync install is completed IFF it is + the first session after opting in during the sync consent screen. + + + + + batoon@google.com + arc-core@google.com + + Records the time from the start of app sync until the last finished + installation before the session ended. This is not the latency for total app + sync, since total app sync may occur over multiple sessions. Metrics are + emitted when a user logs off IFF it is the first session after opting in + during the sync consent screen. + + + + + batoon@google.com + arc-core@google.com + + Records the count of {ArcSyncAppTypes} apps during the initial session for + app sync. Metrics are emitted when a user logs off IFF it is the first + session after opting in during the sync consent screen. + + + + + + thanhdng@chromium.org + tby@chromium.org + wrong@chromium.org + + Record a reason why an application was uninstalled when uninstall is + completed. Warning: this histogram was expired from 09/01/2021 to + 10/01/2021; data may be missing. + + + + + + + mhasank@google.com + arc-core@google.com + + The status of account check before GMS Sign-in. {ArcUserTypes} + + + + + + + + mhasank@google.com + arc-core@google.com + + Elapsed time waiting for the account status check to be completed. This is + not recorded in case of account status check failure. {ArcUserTypes} + + + + + + + + mhasank@google.com + arc-core@google.com + + Number of attempts done while waiting for the check-in task to be completed. + 0 means that device was already checked-in. This is recorded in case + check-in task is completed successfully. {ArcUserTypes} + + + + + + + + mhasank@google.com + arc-core@google.com + + Elapsed time waiting for the check-in task to be completed. This is recorded + in case check-in task is completed successfully. {ArcUserTypes} + + + + + + acostinas@google.com + chromeos-commercial-networking@google.com + + If the network is configured to use a mandatory Proxy Auto-Configuration + (PAC) script which is unreachable, all network requests will fail. In this + case, the code which fetches the auth code used for Google Play Store + sign-in will retry to connect directly to the Google endpoint, bypassing the + proxy. This histogram is only recorded if the auth code was fetched + successfully. A "false" entry means the code was successfully + fetched at the first try, regardless of proxy configuration. A + "true" entry means that the network is configured to use a + mandatory PAC script which is unreachable and code was successfully fetched + at the second try, when the unreachable proxy was bypassed. {ArcUserTypes} + + + + + + + + vsomani@google.com + arc-core@google.com + + Contains the status of the main account hash migration resolution. We record + this metric when migrating the main account hash from java hashcode to use a + cryptographic hash. This is done at the bootup time. + + + + + mhasank@google.com + arc-core@google.com + + Contains the status of main account resolution. {ArcUserTypes} + + + + + + + + + + mhasank@google.com + arc-core@google.com + + Elapsed time waiting for network connection before starting other + authorization operations. {ArcUserTypes} + + + + + + anastasiian@google.com + mhasank@google.com + arc-core@google.com + + Tracks the number of accounts in ARC. This is recorded only once per + session, at login time. + + + + + anastasiian@google.com + mhasank@google.com + arc-core@google.com + + Tracks the percentage of the accounts in session that are also available in + ARC. This is recorded only once per session, at login time. + + + + + + + mhasank@google.com + arc-core@google.com + + Records why ARC restarted the provisioning flow by reauthenticating and + adding the user to ARC. This happens when ARC detects missing AndroidID or + primary user in the Account Manager. {ArcUserTypes} + + + + + + mhasank@google.com + arc-core@google.com + + Contains the status of the account info and auth code fetch for primary + account. Recorded when ARC requests account information (e.g. when account + is added, when token is updated). + + + + + mhasank@google.com + arc-core@google.com + + Contains the status of the account info and auth code fetch for secondary + account. Recorded when ARC requests account information (e.g. when account + is added, when token is updated). + + + + + + + mhasank@google.com + arc-core@google.com + + Elapsed time waiting for GMS sign-in to complete. {ArcUserTypes} + + + + + + + Deprecated Dec 2022. Code that emits this histogram is in ArcMetricsService + in Android and needs removal (b/261750670) + + jhorwich@google.com + arc-core@google.com + + The relative time of a boot progress event since the ARC starts. + {AndroidBootProgressEvents} + + + + + + + + + + + + + + + + + + + + Deprecated Dec 2022. Code that emits this histogram is in arc_setup in + Chrome OS and needs removal (b/261750670) + + jhorwich@google.com + Code installation result for ARC boot continue. + + + + + Deprecated Mar 2022. + + yhanada@google.com + arc-framework@google.com + + Chrome OS IME's latency on ARC++ apps. This value is the elapsed time + between a key event sent to Chrome OS IME from ArcImeService and an IME + command corresponding to the key event arriving to ArcImeService. + + + + + yhanada@google.com + arc-framework@google.com + The number of clipboard and drag-and-drop events. + + + + batoon@google.com + mhasank@google.com + arc-commercial@google.com + + The amount of time it took to complete the {TimedCloudDpcOp} + ({SuccessFailure}) operation in CloudDPC. {ArcUserTypes} + + + + + + + + + Deprecated Dec 2022. Code that emits this histogram is in arc_setup in + Chrome OS and needs removal (b/261750670) + + jhorwich@google.com + + Total time needed to check the integrity of host generated code. If + signature checking fails, it also includes the time to regenerate and sign + the code. + + + + + + Deprecated Dec 2022. Code that emits this histogram is in arc_setup in + Chrome OS and needs removal (b/261750670) + + jhorwich@google.com + Host code relocation result. + + + + + Deprecated Dec 2022. Code that emits this histogram is in arc_setup in + Chrome OS and needs removal (b/261750670) + + jhorwich@google.com + Time needed to relocate boot*.art files. + + + + + Deprecated Dec 2022. Code that emits this histogram is in arc_setup in + Chrome OS and needs removal (b/261750670) + + jhorwich@google.com + Time needed to sign boot*.art files. + + + + + Deprecated Dec 2022. Code that emits this histogram is in arc_setup in + Chrome OS and needs removal (b/261750670) + + jhorwich@google.com + + Code verification result for host generated code for boot for login screen. + + + + + + Deprecated Dec 2022. Code that emits this histogram is in arc_setup in + Chrome OS and needs removal (b/261750670) + + jhorwich@google.com + Time needed to verify host generated code. + + + + sstan@google.com + mhasank@google.com + arc-commercial@google.com + + Records the number of times ChromeOS Companion Library API called. Counter + adding when its Stub library receive the call from applications. + + + + + toshikikikuchi@google.com + takise@google.com + + The initial resize lock state of ARC apps. The histogram is emitted when any + ARC window is initialized. + + + + + yhanada@google.com + arc-framework@google.com + + The number of times right click events on ARC++ apps are converted to + simulated long press. + + + + + khmel@google.com + + The number of ARC container lifetime events. One START event and up to one + non-START event are recorded per ARC session, which ends when the user opts + out from ARC or signs out. + + Warning: this histogram was expired after 2022-04-03 and brought back + 2022-12-07; data may be missing. + + + + + khmel@google.com + + The number of times ARC container crashes and automatically restarts in one + ARC session, which ends when the user opts out from ARC or signs out. + + Warning: this histogram was expired after 2022-04-24 and brought back + 2022-12-07; data may be missing. + + + + + khmel@google.com + alanding@google.com + arc-performance@google.com + + Records the time that throttling was disabled due to a particular throttle + observer. The duration begins when a new throttle observer becomes active, + and measures until it becomes inactive or another throttle observer becomes + effective. {ArcThrottleObservers} + + + + + + + + + + + + + + khmel@google.com + alanding@google.com + arc-performance@google.com + + Records the result of setting ARC CPU restrictions in ARCVM. + + + + + jhorwich@google.com + fahdi@google.com + + ARC use time. The use time is incremented in regular intervals while android + container is active. Reported at most once a day, at which point accumulated + time is reset (which means that sum of reported times for a OS version would + give an estimate of ARC usage time per OS version). + + Warning: this histogram was expired after 2021-03-12 and brought back + 2021-09-17; expired 2022-05-01 and brought back 2022-12-07; data may be + missing. + + + + + + Removed as of 05/2022 + + hashimoto@google.com + + Reason why a custom tab session ended. Recorded when a session ends. + + + + + + Removed as of 05/2022 + + hashimoto@google.com + Lifetime of each session. Recorded when a session ends. + + + + + Removed as of 05/2022 + + hashimoto@google.com + + Lifetime of each session. Recorded when a session is closed. + + + + + + Removed as of 05/2022 + + hashimoto@google.com + + Lifetime of each session. Recorded when a session ends because the tab was + forwarded to a normal tab. + + + + + khmel@google.com + arc-core@google.com + The duration of the SELinux data restoration flow. + + + + khmel@google.com + arc-core@google.com + + Tracks status of SELinux contexts restore flows of Android /data for ARC++ P + container. This also means ARC++ container boot delay. + + + + + hashimoto@chromium.org + yuholong@chromium.org + arcvm-eng@google.com + + True if ARC is going to be activated later in an on-demand manner on a + regular boot. False if ARC is going to be automatically activated without + delay. + + + + + hashimoto@chromium.org + yuholong@chromium.org + arcvm-eng@google.com + + Elapsed time from when the ARC is enabled to ARC activation on a regular + boot. Recorded only when activation is delayed. + + + + + mduggan@google.com + yhanada@google.com + arc-framework@google.com + + Total of Arc.EngagementTime.Background and Arc.EngagementTime.Foreground. + Note that this differs from Arc.EngagementTime.Total in that this is the + ARC++ engagement time, while Arc.EngagementTime.Total is the CrOS total + engagement time on devices with ARC++ enabled. See Arc.EngagementTime.Total + for definition of engagement and further details. + + + + + mduggan@google.com + yhanada@google.com + arc-framework@google.com + + Times when user is engaged and ARC++ apps are running in the background, but + the user isn't focusing on an ARC++ app window. See Arc.EngagementTime.Total + for definition of engagement and details. + + + + + mduggan@google.com + yhanada@google.com + arc-framework@google.com + + Times when user is engaged and focuses on an ARC++ app window. See + Arc.EngagementTime.Total for definition of engagement and details. + + + + + mduggan@google.com + yhanada@google.com + arc-framework@google.com + + Total CrOS user session time (from login to logout) excluding times when + user "disengages": screen is locked or dims down due to user idle. + Engagement time metrics, along with foreground and background time, are only + collected on users with ARC++ enabled. All four metrics are accumulated and + recorded to UMA once a day. For Total ARC++ engagement time, please see + Arc.EngagementTime.ArcTotal. + + + + + fukino@chromium.org + youkichihosoi@chromium.org + + When a removable media is mounted, whether Android apps have full access to + the media. Users can allow full access in Settings. + + + + + risan@google.com + youkichihosoi@google.com + arc-storage@google.com + + How many times ArcFileSystemWatcher is created. Used as baseline for + Arc.FileSystemWatcher.ExceedLimit. + + + + + risan@google.com + youkichihosoi@google.com + arc-storage@google.com + + How many times inotify in ArcFileSystemWatcher exceeds its limit. + ArcFileSystemWatcher watches file system events on files shared with ARC by + using inotify, and requests MediaFileProvider in ARC to index media files + when needed. But the FilePathWatcher imposes a limit for the number of + watches that can be used by ArcFileSystemWatcher. Therefore, it is probable + that some media files are left unindexed. + + + + + khmel@google.com + arc-performance@google.com + + Elapsed time from the when user requests app launch before ARC boot and ARC + is booted. Note, ARC booted does not mean app is actually shown. You may + consider Arc.FirstAppLaunchDelay.TimeDeltaUntilAppLaunch also. Unlike + Arc.FirstAppLaunchDelay.TimeDeltaUntilAppLaunch, this metric is recorded + only up to once a user session. Zero when the container has already been up + and running when the user launches the ARC app. + + + + + khmel@google.com + alanding@google.com + + How long the user sees the spinning icon waiting for ARC boot. This metric + is not recorded at all if the user launches apps only after ARC is booted. + Unlike Arc.FirstAppLaunchDelay.TimeDelta, this metric might be recorded + multiple times per a user session, for example when users starts multiple + ARC apps while ARC is booting. + + + + + khmel@google.com + arc-performance@google.com + + Elapsed time from the when UI is shown after login to when the user + activates first ARC app. + + + + + momohatt@google.com + arc-storage@google.com + + The number of apps that have at least one file or directory that is failed + to be fixed during the fixup process that is triggered after ARC P to R + upgrade. + + + + + momohatt@google.com + arc-storage@google.com + + The number of directories that are fixed during the {Scale} fixup process + that is triggered after ARC P to R upgrade. + + + + + + + + + momohatt@google.com + arc-storage@google.com + + The duration of the {Scale} fixup process that is triggered after ARC P to R + upgrade. + + + + + + + + + sstan@chromium.org + arc-framework-tok@google.com + + Number of the view type of ARC app ghost window. Counted when the ghost + window created or the view updated. + + + + + hungmn@google.com + raging@google.com + yuholong@google.com + arcvm-eng@google.com + + Number of reclaimed process. Counted when there is a successful guest zram + reclaim. + + + + + hungmn@google.com + raging@google.com + yuholong@google.com + arcvm-eng@google.com + + Outcome of an ARC Guest Zram reclaim operation. True if at least one process + was successfully reclaimed, false otherwise. + + + + + hungmn@google.com + raging@google.com + yuholong@google.com + arcvm-eng@google.com + + Elapsed time to reclaim memory from all processs. Recorded only when there + is a successful guest zram reclaim. + + + + + hungmn@google.com + raging@google.com + yuholong@google.com + arcvm-eng@google.com + + Number of unreclaimed process. Counted when there is a successful guest zram + reclaim. + + + + + khmel@google.com + lgcheng@google.com + + Elapsed time of first 5 compressed app icons is loaded from file system. + Recorded when the app icon loading completes. + + + + + khmel@google.com + lgcheng@google.com + + Elapsed time of other compressed app icons is loaded from file system. + Recorded when the app icon loading completes. + + + + + khmel@google.com + lgcheng@google.com + + Elapsed time of first 5 uncompressed app icons is loaded from file system. + Recorded when the app icon loading completes. + + + + + khmel@google.com + lgcheng@google.com + + Elapsed time of other uncompressed app icons is loaded from file system. + Recorded when the app icon loading completes. + + + + + cuicuiruan@google.com + arc-gaming@google.com + + Records the Action reposition operation types, including touchscreen drag, + mouse drag and keyboard arrow keys, when users move action views to adjust + touch points. Records the events when users release touch, mouse or key. + + + + + cuicuiruan@google.com + arc-gaming@google.com + + Records the button group reposition operation types, including touchscreen + drag, mouse drag and keyboard arrow keys, when users move the button group. + Records the events when users release touch, mouse or key. + + + + + cuicuiruan@google.com + arc-gaming@google.com + + Count the usage of input overlay editing feature on all associated apps. The + metric is recorded when users press the Customize button. Refer to + InputMenuView::OnButtonCustomizedPressed(). + + + + + cuicuiruan@google.com + arc-gaming@google.com + + Check whether users play the game with input overlay feature enabled or + disabled on all associated apps. The metric is recorded when users launch + the associated apps and when users have menu state changed upon on closing + the input menu only. Refer to TouchInjector::RecordMenuStateOnLaunch() and + TouchInjector::OnInputMenuViewRemoved(). + + + + + cuicuiruan@google.com + arc-gaming@google.com + + Check whether users play the game with input overlay mapping hint enabled or + disabled on all associated apps. The metric is recorded when users launch + the associated apps and when users have menu state changed upon on closing + the input menu only. Refer to TouchInjector::RecordMenuStateOnLaunch() and + TouchInjector::OnInputMenuViewRemoved(). + + + + + cuicuiruan@google.com + arc-gaming@google.com + + Records the menu entry button reposition operation types, including + touchscreen drag, mouse drag and keyboard arrow keys, when users move menu + entry button. Records the events when users release touch, mouse or key. + + + + + cuicuiruan@google.com + arc-gaming@google.com + + Records the window state type when {UI} reposition happens. Records the + events when users release touch, mouse or key. + + + + + + + + + + tsergeant@chromium.org + chromeos-apps-foundation-team@google.com + + Recorded when an ARC app opens a Chrome OS app with an intent (e.g., when + Sharing from an Android app to a Web App installed through the Play Store). + Records the action being handled by the Chrome OS app, like Viewing a URL or + Sending content. + + + + + sstan@chromium.org + nancylingwang@chromium.org + The number of ARC apps launched with ghost window. + + + + hashimoto@google.com + khmel@google.com + arc-performance@google.com + + The 15-minute load average multiplied by 100 and divided by the number of + logical processors online. Recorded 15 minutes after ARC start. + + + + + + hashimoto@google.com + khmel@google.com + arc-performance@google.com + + The 1-minute load average multiplied by 100 and divided by the number of + logical processors online. Recorded 1 minute after ARC start. + + + + + + hashimoto@google.com + khmel@google.com + arc-performance@google.com + + The 5-minute load average multiplied by 100 and divided by the number of + logical processors online. Recorded 5 minutes after ARC start. + + + + + + phshah@chromium.org + arc-app-dev@google.com + + Prediction target used in ChromeOS Low-latency Stylus Library. + + + + + phshah@chromium.org + arc-app-dev@google.com + + Records the number of times ChromeOS Low-latency Stylus Library API called. + Counter adding when its Stub library receive the call from applications. + + + + + + + levarum@google.com + chrome-metrics-team@google.com + + Native bridge used for ARC. Can be unknown and none. This is collected along + with Arc.State during every metrics recording interval, so it is in every + record uploaded to the server (despite crbug.com/929583 which was fixed in + M73). This is required because this value is used to categorize all other + data in the dashboard as collected with specific native bridge in use. Since + M74 this is also included in initial stability logs. + + + + + alanding@google.com + arc-app-dev@google.com + + Records any ARC Bridge connection / communication failures using + NearbyShare. + + + + + alanding@google.com + arc-app-dev@google.com + + Records any data handling errors with sharing text or files using + NearbyShare. + + + + + alanding@google.com + arc-app-dev@google.com + + Time taken by ARC Nearby Share to transfer file streams from ARC's virtual + file system in ContentProviders to Chrome's native file system. The time is + only recorded when file stream completes successfully. + + + + + alanding@google.com + arc-app-dev@google.com + + Records the reason for failing to stream a file using NearbyShare. ARC + NearbyShare shares a file after finding a window, and once "share" + is clicked, it attempts to send the file. + + + + + alanding@google.com + arc-app-dev@google.com + Records any IO errors while using NearbyShare. + + + + alanding@google.com + arc-app-dev@google.com + + Records the success or failure of attempts to find NearbyShare window. ARC + NearbyShare finds a window after the "nearby share" button is + clicked in an app. If NearbyShare successfully finds a window, + "true" is recorded onto the histogram. "false" is + recorded in the case a window is not found. + + + + + hugobenichi@google.com + cros-networking@google.com + + Records errors that happened inside the ARC networking and WiFi Java stack. + + + + + hugobenichi@google.com + cros-networking@google.com + + Records events triggered inside ARC networking and WiFi Java stack related + to Android API usage by Android Apps, mojom API usage by the host, and other + events such as VPN connections + + + + + mhasank@google.com + arc-core@google.com + + Records the success result of DNS query resolution inside ARC. + + + + + mhasank@google.com + arc-core@google.com + + Records the success result of DNS query resolution inside ARC. + + + + + yaoqq@google.com + arc-framework@google.com + + Records whether at least one action button is enabled or not for an Arc + notification when the notification is created. + + + + + yaoqq@google.com + arc-framework@google.com + + Records the expand state of an Arc notification, the status of + fixed_size/expandable is logged when the notification is created, while the + status of expanded/collapsed is logged when the user expands/collapses it. + Need to note that if it's a grouped notification we are tracking the state + of the summary(top level) notification of the group, since we can't easily + acquire the state for the child notifications of the group. + + + + + yaoqq@google.com + arc-framework@google.com + + Records whether inline reply is enabled or not for an Arc notification when + the notification is created. + + + + + shuminghao@google.com + arc-framework@google.com + + Records whether an Arc notification is custom notification or not. + + + + + yaoqq@google.com + arc-framework@google.com + Records the style of an Arc notification when it's created. + + + + mhasank@google.com + arc-core@google.com + + Arc OptIn action taken by user. Warning: this histogram was expired from + 2022-03-17 to 2022-04-18; data may be missing. + + + + + mhasank@google.com + arc-core@google.com + Arc OptIn cancelation reason. + + + + mhasank@google.com + arc-core@google.com + + Records user action on the optin dialog when a network-related provisioning + failure occurs by type: close window, retry, send feedback and check network + connection. + + + + + mhasank@google.com + khmel@google.com + arc-core@google.com + Arc OptIn flow result. + + + + mhasank@google.com + khmel@google.com + arc-core@google.com + + Arc Silent Auth Code status. This status is set during the ARC OptIn flow. + + + + + mhasank@google.com + khmel@google.com + arc-core@google.com + + Arc Silent Auth Code status. This status is set during the ARC + Device/Primary Account reauthorization flow. + + + + + mhasank@google.com + khmel@google.com + arc-core@google.com + + Arc Silent Auth Code status. This status is set during the minting of an + auth code for a Secondary Account. It can be set for Secondary Account + signin or reauthorization. + + + + + jhorwich@google.com + khmel@google.com + + State of PlayAutoInstall flow after the request. {ArcUserTypes} + + + + + + + + jhorwich@google.com + khmel@google.com + + Elapsed time from the when the PlayAutoInstall request was issued and + completed. {ArcUserTypes} + + + + + + + + momohatt@google.com + arc-storage@google.com + + The number of {FileTypeByDirectoryOrNot} under the "Play files" + folder in ChromeOS Files app except for the "Android" directory. + The data is collected once per device, on the first ARC boot after the + device upgrades to a ChromeOS version with this metric. + + + + + + khmel@google.com + arc-performance@google.com + + Elapsed time from the when the user launches the Play Store app and to when + the Play Store window is shown to the user. + + + + + rsorokin@chromium.org + cros-oac@google.com + + Whether the Play Store has been launched by the user within a week from the + when onboarding (OOBE) is finished. The metric is recorded only once. The + recording happens when Play Store is launched by the user or when a week has + passed since onboarding (a check is done at user session initialization). + + + + + + Deprecated in M108. Tiled app results are no longer shown. + + jennyz@chromium.org + newcomer@chromium.org + + Time between a default play store result being activated by user pressing + ENTER key and being displayed. + + + + + tby@chromium.org + ypitsishin@chromium.org + chrome-knowledge-eng@google.com + + Time between sending an Play Store app discovery request and the storing + returned results. + + + + + jennyz@chromium.org + newcomer@chromium.org + + Time between a play store result being clicked and being displayed. + + + + + tby@chromium.org + ypitsishin@chromium.org + chrome-knowledge-eng@google.com + + The total number of returned apps of a Play Store app discovery query. + + + + + tby@chromium.org + ypitsishin@chromium.org + chrome-knowledge-eng@google.com + + The number of returned instant apps of a Play Store app discovery query. + + + + + tby@chromium.org + ypitsishin@chromium.org + chrome-knowledge-eng@google.com + + The number of returned uninstalled apps of a Play Store app discovery query. + + + + + khmel@google.com + arc-performance@google.com + + Elapsed time from the when the user agrees ToS to when the Play Store window + is shown to the user. {ArcUserTypes} + + + + + + + + batoon@google.com + arc-commercial@google.com + + Record which app install types are included in the policy that is applied to + a device. The metric is emitted once when arc_policy_bridge starts and any + time the policy is updated. For example, if there are 5 FORCE_INSTALLED apps + and 3 BLOCKED apps in the policy, the metric will record one count for + FORCE_INSTALLED and one count for BLOCKED. + + + + + mhasank@google.com + arc-commercial@google.com + + Record which sub-policies are included in the ArcPolicy object that + represents policy restrictions set on ARC. The metric is emitted once when + arc_policy_bridge starts and any time the policy is updated. + + + + + bmgordon@chromium.org + project-bolton@google.com + + Print preview events for ARC. Recorded when specific print preview events + occur (print preview requested, preview document created, etc.). + + + + + bmgordon@chromium.org + project-bolton@google.com + + Count how frequently a set of pre-defined print preview errors occur for + ARC. + + + + + + + mhasank@google.com + arc-core@google.com + + The error that occurred during GMS check-in operation. Recorded when ARC++ + provisioning flow fails. {ArcUserTypes} + + + + + + + + mhasank@google.com + arc-core@google.com + + The result (success or the reason of failure) of Cloud DPC provisioning. + Recorded when ARC++ provisioning flow completes. {ArcUserTypes} + + + + + + + + yaohuali@google.com + mhasank@google.com + arc-commercial@google.com + + Elapsed time from the signing in process start to right before GMS sign-in + or CloudDPC provisioning. {ArcUserTypes} + + + + + + + + + + mhasank@google.com + arc-core@google.com + + The error that occured during GMS sign-in operation. Recorded when ARC++ + provisioning flow fails. {ArcUserTypes} + + + + + + + + mhasank@google.com + arc-core@google.com + + The status (success or error) of ARC++ provisioning. {ArcUserTypes} + + + + + + mhasank@google.com + arc-core@google.com + + Elapsed time from the signing in process start to call to onSignInFailed. + Warning: this histogram was expired from 2022-11-01 to 2023-03-08; data may + be missing. {ArcUserTypes} + + + + + + + + mhasank@google.com + arc-core@google.com + + Elapsed time from the signing in process start to successful call to + onSignInComplete. Warning: this histogram was expired from 2022-11-01 to + 2023-03-08; data may be missing. {ArcUserTypes} + + + + + + + + mhasank@google.com + arc-core@gmail.com + + The result (success or the type of failure) of ARC reauthorization. + {ArcUserTypes} + + + + + + + + khmel@google.com + alanding@google.com + + Standard deviation for commit time delta from ideal time. Only collected if + the user has app syncing enabled and doesn't have a custom passphrase set. + {ArcPerformanceAppCategories} + + + + + + + + khmel@google.com + alanding@google.com + + Render frames per second. Only collected if the user has app syncing enabled + and doesn't have a custom passphrase set. {ArcPerformanceAppCategories} + + + + + + + + khmel@google.com + alanding@google.com + + Time (in ms) between an app launch request and the detection of the first + rendered frame. Recorded when the frame is detected by the first commit to + the Exo surface. + + + + + khmel@google.com + alanding@google.com + + 95 percent of the frames in the first 5 minutes after app launch took + shorter time (in ms) than this value. + + + + + khmel@google.com + alanding@google.com + + Percentage ratio of janky frames to total frames recorded in a 5 minute + interval. + + + + + khmel@google.com + alanding@google.com + + Render quality with maximum 100%. Only collected if the user has app syncing + enabled and doesn't have a custom passphrase set. + {ArcPerformanceAppCategories} + + + + + + + + niwa@google.com + arcvm-eng@google.com + + The types of ARC SDK version upgrade. (e.g. Upgrade from N to P) Reported + when SDK version upgrade is detected during ARC boot. + + + + + + + mhasank@chromium.org + jhorwich@google.com + khmel@google.com + arc-core@google.com + + The result (success or the type of failure) of ARC Secondary Account signin/ + reauthorization. + + + + + hungmn@google.com + khmel@google.com + arc-performance@google.com + + True if there has been a WebView usage in an ARC session. This is recorded + when an ARC session is stopped. + + + + + shaochuan@google.com + khmel@google.com + ttylenda@google.com + + This is updated when the mojo connections to processes in detailing in + ArcMojoConnectionType are closed for reasons other than the ARC container + shutting down or crashing. {ArcUserTypes} + + + + + + + + jhorwich@google.com + arc-core@google.com + + This is updated in case ARC++ stops for the reasons detailed in + ArcStopReason. For example, this is recorded in case of a graceful ARC++ + shutdown or if ARC++ crashes. {ArcUserTypes} + + + + + + + + + + jhorwich@google.com + ttylenda@google.com + chrome-metrics-team@google.com + + Whether ARC is enabled or not. Before M56 this was collected only on login + and when ARC was enabled or disabled. From M56 forward this is collected + during every metrics recording interval, so it is in every record uploaded + to the server (despite crbug.com/929583 which was fixed in M73). This is + required because this value is used to categorize all other data in the + dashboard as collected with ARC enabled or not. This is true even for users + who are running on ecryptfs and skipped Ext4 migration; even though ARC Apps + do not run until migration is complete on N or later systems. Since M74 this + is also included in initial stability logs. + + + + + jhorwich@google.com + khmel@google.com + + Similar to "Arc.State" metric but has separation by user type. + {ArcUserTypes} + + Warning: this histogram was expired after 2022-03-05 and brought back + 2022-12-07; data may be missing. + + + + + + + + mhasank@chromium.org + arc-commercial@google.com + + The result (success or the type of failure) of ARC supervision transition + events. + + + + + mhasank@chromium.org + arc-commercial@google.com + + Elapsed time for a successful supervision transition, during which the + supervision transition screen was displayed. + + + + + mhasank@chromium.org + arc-commercial@google.com + + Whether supervision transition screen exited due to a successful transition. + + + + + mhasank@chromium.org + arc-core@google.com + + Whether system package updates were deleted during ARC upgrade. + + + + + mhasank@chromium.org + arc-core@google.com + + Time taken by ARC System Health Service to run upgrade hygiene tasks. + + + + + khmel@google.com + Action of ARC++ Graphics Tracing tool. + + + + khmel@google.com + arc-performance@google.com + + Elapsed time from the when ARC++ is started in already provisioned state to + when the ARC is available for the user. {ArcUserTypes} + + + + + + + + khmel@google.com + arc-performance@google.com + + Elapsed time from the when ARC++ is opted in from the user's session to when + the ARC is available for the user. {ArcUserTypes} + + + + + + + + khmel@google.com + arc-performance@google.com + + Elapsed time from the when ARC++ is opted in from OOBE to when the ARC is + available for the user. {ArcUserTypes} + + + + + + + + jhorwich@chromium.org + arc-core@google.com + + Counts user interactions with ARC by type, such as ARC app launches via the + shelf or launcher. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The detailed cause of an access denied error at opening a source file during + ARCVM /data migration. Reported each time when the migrator encounters such + an error. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The number of times ARCVM /data migration has been automatically resumed. + This is reported when an auto-resume is triggered, or the maximum number of + auto-resumes has been hit for the first time. The value 0 means that no + auto-resume has been attempted, and the first auto-resume will be triggered + right after the event. Samples in the overflow bucket means that the maximum + number of auto-resumes has been reached but the migration is not finished + yet, in which case auto-resume is disabled and the user needs to manually + resume the migration. Each value should be recorded at most once per user. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The amount of decrease in battery level during ARCVM /data migration, + defined by the battery level at the beginning of the migration minus the + lowest battery level observed during the migration. Reported at the end of + successful migrations. 0 is reported if the battery level has always been + higher than that at the beginning of the migration. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The desired disk image size for the destination of ARCVM /data migration. + Reported each time the initial screen is shown and the free disk space + requirement is {SatisfiedOrNot}. + + + + + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + Duration of the ARCVM /data migration. This is reported once when a newly + started migration is completed. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The status of ARCVM /data migration when it ends. This is reported when a + migration finishes successfully, fails, or gets cancelled halfway. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The error code of a file operation failure that caused the ARCVM /data + migration to fail. Reported when a migration thread encounters a file + operation error. This can be reported multiple times for a migration when + multiple threads fail at around the same time. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The type of file operation at which the ARCVM /data migration failed. + Reported when a migration thread encounters a file operation error. This can + be reported multiple times for a migration when multiple threads fail at + around the same time. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The location of files at which ARCVM /data migration failed. Reported when a + migration thread encounters a file operation error. This can be reported + multiple times for a migration when multiple threads fail at around the same + time. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The battery level when the user enters the UX flow of ARCVM /data migration. + This is reported for both new migrations and resumed migrations. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The total amount of free disk space on the system when a new or resumed + ARCVM /data migration is started. Reported when a migration failed with + ENOSPC (no space error). + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The reason why ARCVM /data migration is marked as finished. {ArcUserTypes} + + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The status of ARCVM /data migration at the beginning of each ARC session. + {ArcUserTypes} + + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The total amount of free disk space on the system when the user encounters + ENOSPC (no space error) during ARCVM /data migration. Reported when a + migration failed with ENOSPC. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The total number of bytes of xattr data that we are trying to store on a + file when we encounter an ENOSPC (no space error) during ARCVM /data + migration. This includes both the xattr data already present on the file as + well as the new xattr we are trying to set. Reported when a migration thread + encounters ENOSPC on setting a new xattr. This can be reported multiple + times for a migration when multiple threads fail at around the same time. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + Counts the number of events that the notification for ARCVM /data migration + is shown for the first first time for the user. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The number of days until the deadline displayed in the notification or the + confirmation dialog of ARCVM /data migration. The value is initialized as 30 + when the notification is shown for the first time, and decremented until it + reaches the minimum value 1. When it reaches the minimum value, it means + that the migration should be performed in the same day and should not be + dismissed, so the notification and the dialog become nondismissible. + Reported when {ArcVmDataMigrationFrontEndEvents}. + + + + + + + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The size of free disk space required for the ARCVM /data migration. Reported + each time the initial screen is shown and the free disk space requirement is + {SatisfiedOrNot}. + + + + + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + Counts how many times the notification for resuming ARCVM /data migration is + shown while the migration is in progress. The notification is shown (and + thus the event is reported) only when auto-resume is disabled after the + maximum number of auto-resumes has been reached but the migration has not + finished yet. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + Records events happening in the screen flow of ARCVM /data migration. + Recorded when an event happens during a {ArcVmDataMigrationType}. + + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The initial state of the screen flow of ARCVM /data migration. Recorded at + the beginning of each {ArcVmDataMigrationType}. + + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + Records failures in the setup phase of the screen flow of ARCVM /data + migration. Recorded when a failure happens during a + {ArcVmDataMigrationType}. + + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The result of the setup of ARCVM /data migration. Reported before triggering + the migration tool. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + The status of ARCVM /data migration when it starts. This is reported when a + new migration or a resumed migration is started. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + Total number of files to be migrated in ARCVM /data migration. Reported once + at the beginning of a new migration. + + + + + momohatt@google.com + youkichihosoi@google.com + arc-storage@google.com + + Total bytes to be migrated in ARCVM /data migration. Reported once at the + beginning of a new migration. + + + + + youkichihosoi@google.com + arc-storage@google.com + + Counts the number of mount failures for a volume shared with ARC. This is + recorded when a volume is successfully mounted by ARC, or when ARC gives up + on mounting a volume. Samples in the underflow bucket (value 0) indicate + that ARC successfully mounted the volume without any failure. Samples in the + overflow bucket indicate that ARC stopped trying to mount the volume after + reaching the retry threshold. Samples in between them with value n indicate + that ARC successfully mounted the volume after n failures (= n retries). + Emitted only on ARC-enabled Chrome OS devices. + + + + + mhasank@google.com + preranap@google.com + arc-commercial@google.com + + Records the number of times an API for adding and excluding route in VPN is + called from ChromeOS Vpn Service Builder Compat Library. + + + + + alanding@google.com + arc-performance@google.com + + The duration of the Wayland client event processing time in ARC. This metric + is recorded when the processing end time is late or the duration exceeded + the expected timing threshold for a {WaylandEventType}. + + + + + + + + alanding@google.com + arc-performance@google.com + + Wayland client event message type in ARC. This metric is recorded when the + message processing end time is late or the duration exceeded the expected + timing threshold. + + + + + sstan@google.com + arc-framework@google.com + + Number of ARC app ghost window launches by ArcWindowPredictor. Counted when + user manually launches ARC app when ARC is still in boot stage. + + + + + + + mhasank@google.com + arc-core@google.com + + Elapsed time waiting for the check-in task to be completed. This is recorded + in case check-in task is completed successfully. + + + + + + + mhasank@google.com + arc-core@google.com + Elapsed time waiting for GMS sign-in to complete. + + + + + diff --git a/histograms/metadata/ash/OWNERS b/histograms/metadata/ash/OWNERS new file mode 100644 index 000000000000..f4fb118dc477 --- /dev/null +++ b/histograms/metadata/ash/OWNERS @@ -0,0 +1,8 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +tby@chromium.org +jimmyxgong@chromium.org +gavinwill@chromium.org +yulunwu@chromium.org diff --git a/histograms/metadata/ash/histograms.xml b/histograms/metadata/ash/histograms.xml new file mode 100644 index 000000000000..e99753ecd735 --- /dev/null +++ b/histograms/metadata/ash/histograms.xml @@ -0,0 +1,6682 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jimmyxgong@chromium.org + longbowei@google.com + cros-peripherals@google.com + + Record which desk the user switches to. Fires when the user switches desk to + a specific index using a keyboard shortcut. + + + + + afakhry@chromium.org + + Showing the IME menu bubble has two accelerators: - Alt+Shift+K which is + deprecated. - Search+Shift+K which is new. This histogram shows the number + of times each accelerator (deprecated and new) is used. + + + + + zentaro@chromium.org + cros-peripherals@chromium.org + + Opening the task manager has two accelerators: - Shift+Esc which is + deprecated. - Search+Esc which is new. This histogram shows the number of + times each accelerator (deprecated and new) is used. + + + + + afakhry@chromium.org + + Toggling the high contrast display mode has two accelerators: - + Search+Shift+H which is deprecated. - Ctrl+Search+H which is new. This + histogram shows the number of times each accelerator (deprecated and new) is + used. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + Captures the result of a user using the rotation accelerator - + Ctrl+Shift+Refresh. This histogram shows how frequently users accidentally + hit the key combination. + + + + + xdai@chromium.org + chromeos-wmp@google.com + Captures usage of Alt+[ and Alt+]. + + + + cowmoo@google.com + xiaohuic@chromium.org + + Recorded whenever Ambient mode is entered from {TabletOrClamshell}. + AmbientUiMode indicates whether the user entered Ambient mode from the lock + screen or from screen idle. + + + + + + wutao@chromium.org + xiaohuic@chromium.org + + Emitted when the ambient mode photo transition animation completes to report + the smoothness of this animation. 100% represents ideally smooth 60 frames + per second. + + + + + cowmoo@google.com + xiaohuic@chromium.org + + Among eligible users, whether the user has Ambient mode enabled. Recorded + once for every UMA upload. The set of eligible users includes all users with + profiles that can allow Ambient mode to be enabled. This is limited by + profile type, whether the user is primary, if the user has a supported + email, etc. + + + + + cowmoo@google.com + xiaohuic@chromium.org + + Among eligible users with ambient mode enabled, records the length of each + session. The metric is emitted when ambient mode is ended. 2 new animated + ambient mode themes have been added started in M104. + + + + + + cowmoo@google.com + esum@google.com + + Among eligible users with ambient mode enabled, records the length of each + session for {Theme}. The metric is emitted when ambient mode is ended. + + + + + + esum@google.com + xiaohuic@chromium.org + + Among eligible users with ambient mode enabled, records the accumulated + duration spent in {Orientation} mode during a single ambient mode session + rendering the {Theme} UI. For example, say ambient mode starts in landscape + for A ms, switches to portrait for B ms, then back to landscape for C ms + before ambient mode ends. A + C will be emitted for landscape mode, and B + will be emitted for portrait mode. Emitted once per observed orientation + each time the user exits ambient mode. + + + + + + + + + + esum@google.com + xiaohuic@chromium.org + + Emitted periodically while {Theme} is rendering in ambient mode. 100% + represents ideal smoothness. + + + + + + esum@google.com + xiaohuic@chromium.org + + Only applies to multi-screen use cases in ambient mode. Records the offset + observed between {Theme} animations' timestamps when rendering on multiple + screens. Ideally, this would be 0, but small imperceptible offsets are + acceptable (under .1 seconds). The offset recorded here is the absolute + difference in milliseconds between the animation with the smallest and + largest timestamp. The metric is emitted after every single animation frame + in ambient mode (there is a high volume). For single-screen use cases, this + metric is inactive. + + + + + + esum@google.com + xiaohuic@chromium.org + + Applies to ambient mode animations with image assets embedded in them (spots + in the animation where the user's photos should be plugged in). Captures the + percentage of time that the orientation (landscape vs portrait) of the image + asset matches that of the actual photo being assigned to it. Ideally this is + 100%. Does not apply to the slideshow ambient theme. Emitted each time the + photos in the animation are refreshed (after each animation cycle is + complete). + + + + + + cowmoo@google.com + xiaohuic@chromium.org + + Among eligible users with ambient mode enabled, records the source of + ambient mode photos. Recorded once for every UMA upload. + + + + + esum@google.com + xiaohuic@chromium.org + + Among eligible users with ambient mode enabled, records the number of + screens present during a {Theme} ambient mode session. Emitted each time + ambient mode exits. + + + + + + cowmoo@google.com + xiaohuic@chromium.org + + Among eligible users with ambient mode enabled, records the selected number + of personal photo albums. Recorded once only when users make a selection on + the personal photo albums on Settings page. + + + + + esum@google.com + xiaohuic@google.com + + Records the amount of time it takes for {Theme} in ambient mode to start. + This includes tasks such as downloading an initial set of photos from IMAX + server, decoding them, loading the animation from resource pak, etc. Note + this measurement does not include the lock screen inactivity timeout + (currently 7 seconds). So ideally, this should be 0. Also note that ambient + mode should start after a 10 second timeout if at least 1 photo has been + downloaded from IMAX. Hitting the 10 second timeout is considered non-ideal, + but acceptable behavior. However, anything over that is very bad. Thus, this + histogram has a 15 second maximum (added a 5 second buffer to the timeout + just to be safe). Anything over the 15 second maximum goes in the overflow + bucket and is considered a total failure to start ambient mode. This should + be extremely rare. Emitted each time the {Theme} UI starts rendering, or + when ambient mode exits in the event that the UI never started rendering. + + + + + + cowmoo@google.com + xiaohuic@chromium.org + + Among eligible users with ambient mode enabled, records the total number of + personal photo albums. Recorded once only when users make a selection on the + personal photo albums on Settings page. + + + + + mmourgos@chromium.org + gzadina@google.com + + For each user, records whether they have the app notification badging user + preference enabled or disabled. This metric is only logged when an active + user session has been started. This metric is logged periodically every 30 + minutes. + + + + + alemate@chromium.org + khmel@chromium.org + arc-performance@google.com + chromeos-perfmetrics-eng@google.com + + For each user after they opted-in into ARC++, records the duration of + initial apps installation. Duration is measured as an interval between the + opt-in and the moment when all default apps become either "ready" + or "update error". This is only reported within the same opt-in + session, and is not reported if default apps were not installed within the + session. + + + + + cowmoo@chromium.org + xiaohuic@chromium.org + + Relative smoothness of assistant related animations. 100% represents ideally + smooth 60 frames per second. {AshAssistantAnimationSmoothness} + + + + + + + + + + + minch@chromium.org + tclaiborne@chromium.org + + End scenario type while swiping back from the left side of the window in + tablet mode. + + + + + minch@chromium.org + tclaiborne@chromium.org + + Start scenario type while swiping back from the left side of the window in + tablet mode. + + + + + minch@chromium.org + tclaiborne@chromium.org + + Underneath window type while swiping back from the left side of the window + in tablet mode. + + + + + hidehiko@chromium.org + oshima@chromium.org + + Making sure nobody in the production calls the + ProfileManager::GetPrimaryUserProfile() in unexpected timing. This entry + will not have "false" status. + + + + + hidehiko@chromium.org + oshima@chromium.org + + Making sure nobody in the production calls ProfileHelper::GetUserByProfile() + for the Profile instance, which does not have corresponding User. This entry + will not have "false" status. + + + + + janagrill@google.com + artyomchen@google.com + + The time elapsed from the completion of a successful forward migration to + the start of a backward migration, with a maximum of 24 days. Recorded every + time backward migration is started, if forward migration was performed prior + to it. + + + + + janagrill@google.com + artyomchen@google.com + + The time in ms that elapsed while DeleteAshItems() was run. Recorded once + when browser data backward migration happens if the step succeeds. + + + + + janagrill@google.com + artyomchen@google.com + + The time in ms that elapsed while DeleteLacrosDir() was run. Recorded once + when browser data backward migration happens if the step succeeds. + + + + + janagrill@google.com + artyomchen@google.com + + The time in ms that elapsed while DeleteTmpDir() was run. Recorded once when + browser data backward migration happens if the step succeeds. + + + + + janagrill@google.com + artyomchen@google.com + + The time in ms that elapsed while MergeSplitItems() was run. Recorded once + when browser data backward migration happens if the step succeeds. + + + + + janagrill@google.com + artyomchen@google.com + + The time in ms that elapsed while MoveLacrosItemsToAshDir() was run. + Recorded once when browser data backward migration happens if the step + succeeds. + + + + + janagrill@google.com + artyomchen@google.com + + The time in ms that elapsed while MoveMergedItemsBackToAsh() was run. + Recorded once when browser data backward migration happens if the step + succeeds. + + + + + janagrill@google.com + artyomchen@google.com + + The time in ms that elapsed while PreMigrationCleanUp() was run. Recorded + once when browser data backward migration happens if the step succeeds. + + + + + janagrill@google.com + artyomchen@google.com + + The final status of browser data backward migration. Recorded once at the + end of the migration process. It is collected to monitor whether backward + migration is working, and if it is not to determine which step is failing. + + + + + janagrill@google.com + artyomchen@google.com + + The number of Lacros secondary profiles at the time of starting the backward + migration process. Recorded every time migration is started. + + + + + janagrill@google.com + artyomchen@google.com + + Recorded when browser data backward migration fails. Records the errno set + by the operation that caused the migration to fail. `TaskStatus` is used to + determine the step in which the error occurred. + + + + + + + + + + + + + + + + + + + + + + + + janagrill@google.com + artyomchen@google.com + + How long the backward migration took to complete in ms. Only recorded if + migration succeeds. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The size of profile data that is identified to belong to ash-chrome i.e. the + total size of files that are under profile data directory of ash-chrome that + should remain in the same directory. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The size of profile data that is duplicated in both ash and lacros data + directory. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The time taken for copying common data shared with lacros and ash. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The size of data copied due to the migration i.e. extra space taken up + because of the migration. Only recorded if migration succeeded. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + Records error if CreateDirectory failed to create a directory used to copy + files into as an intermediate destination during migration. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The size of profile data that is identified to belong to ash-chrome i.e. the + total size of files that are under profile data directory of ash-chrome that + should remain in the same directory. + + The same as Ash.BrowserDataMigrator.AshDataSizeMB but collected without + actually running the migrator. It is called on every ash launch. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The size of profile data that is duplicated in both ash and lacros data + directory. + + The same as Ash.BrowserDataMigrator.CommonDataSizeMB but collected without + actually running the migrator. It is called on every ash launch. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + Extra disk space that has to be freed up to carry out move migration. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + Free disk space after move migration. + + + + ythjkt@chromium.org + hidehiko@chromium.org + + Checks if there is enough disk space for profile migration in each modes. + These modes are Copy, Move, DeleteAndCopy and DeleteAndMove. + + Checked upon launch of ash-chrome. + + + + + + + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The size of profile data that is identified to belong to lacros-chrome i.e. + the total size of files that are under profile data directory of ash-chrome + that should move to lacros data directory. + + The same as Ash.BrowserDataMigrator.LacrosDataSizeMB but collected without + actually running the migrator. It is called on every ash launch. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The size of profile data that is identified to be deletable such as cache. + + The same as Ash.BrowserDataMigrator.NoCopyDataSizeMB but collected without + actually running the migrator. It is called on every ash launch. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The total size of data that has to be copied for copy migration. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The total size of data that has to be copied for move migration. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The final status of browser data migration. It is collected to monitor if + migration is working and if not used to determine which step is failing. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The size of profile data that is identified to belong to lacros-chrome i.e. + the total size of files that are under profile data directory of ash-chrome + that should move to lacros data directory. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + The time taken for copying lacros data. + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The time taken for profile migration before it is cancelled by the user + during move migration. Profile move migration happens once after Lacros and + move migration is enabled. This only gets recorded if the user clicks + "Skip" from the migration UI displayed during the migration. + Profile move migration is a feature to migrate profile data from Ash to + Lacros once after Lacros is enabled. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + This is recorded if move profile migration is aborted due to the lack of + extra space required on disk. The amount of space required to be freed is + recorded. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + Recorded when profile move migration fails. Profile move migration happens + once after Lacros and move migration is enabled. Records the errno set by + the operation that caused the migration to fail. `TaskStatus` is used to + determine which step the error occurred. Profile move migration is a feature + to migrate profile data from Ash to Lacros once after Lacros is enabled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The time taken for move migration to run PreMigrationCleanUp() and recorded + once when profile move migration happens. Profile move migration migrates + profile data from Ash to Lacros after Lacros is enabled. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The step from which move migration is resumed from. Recorded once at the + beginning of profile move migration. Profile move migration gets resumed + from where it left off if the previous attempt were did not finish + completely. Profile move migration migrates profile data from Ash to Lacros + after Lacros is enabled. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The time taken for move migration to copy target items inside + SetupLacrosDir(). Recorded once during profile move migration. Profile move + migration is a feature to migrate profile data from Ash to Lacros once after + Lacros is enabled. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The time taken for move migration to run SetupLacrosDir(). Recorded once + during the migration. Profile move migration is a feature to migrate profile + data from Ash to Lacros once after Lacros is enabled. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The time taken for profile move migration to complete in ms. Recorded once + at the end of the migration if it is successful. Profile move migration is a + feature to migrate profile data from Ash to Lacros once after Lacros is + enabled. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The final status of profile move migration. Recorded once at the end of the + migration process. Profile move migration is a feature to migrate profile + data from Ash to Lacros once after Lacros is enabled. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The size of profile data that is identified to be deletable such as cache. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The total size of data that has to be copied. Collected for cases when the + migration fails due to lack of disk space. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + The time taken for migration to complete in ms. Only recorded if migration + succeeded. + + + + + andreaorru@chromium.org + hidehiko@chromium.org + + Making sure nobody in the production calls + ash::standalone_browser::BrowserSupport::Initialize() in unexpected timing. + This entry will not have "false" status. + + + + + kradtke@chromium.org + cros-status-area-eng@google.com + + Records which keys are used when the user navigates the Monthly Calendar + View accessible from Quick Settings and system tray with the keyboard. + Triggered when user shifts focus from a Calendar element to another by + pressing tab, or when navigating Calendar Date Cells with the arrow keys. + + + + + jiamingc@google.com + cros-status-area-eng@google.com + + Records the number of currently visible events shown to the user when the + Calendar Event List view displays in one day. i.e. the user opens the sys + tray calendar, clicks on a date cell and sees 2 events, this metric will + track a count of 2. + + + + + newcomer@google.com + cros-status-area-eng@google.com + + Recorded when the "Join" meeting button is pressed from the + Calendar "EventListView" i.e. the user opens the sys tray + calendar, taps todays date cell, then scrolls to the event and taps the + "Join" meeting button. + + + + + samcackett@google.com + cros-status-area-eng@google.com + + Recorded whenever a user sees any calendar event in the CalendarView. + Recorded once per lifetime of the calendar view. + + + + + rtinkoff@google.com + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded when a calendar fetch returns. The duration of the fetch request. + + + + + + This metric was originally recording something slightly different from what + the name suggests. Replaced with Ash.Calendar.MaxDistanceBrowsed. + + rtinkoff@google.com + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded when the calendar is closed. The furthest 'distance' (in months) + from today's date to which a users fetch request succeeded. + + + + + + Deprecated Mar 2022, now that it's no longer needed. + + rtinkoff@google.com + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded whenever calendar events are requested, and we can't do the fetch + because a a resource we need doesn't exist or is not available. + + + + + rtinkoff@google.com + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded whenever calendar events are requested, and no fetch is required + because the fetch has already returned. + + + + + rtinkoff@google.com + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded whenever calendar events are fetched. The recorded enum value + indicates the return code of the fetch request. + + + + + rtinkoff@google.com + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded when a calendar fetch returns. The total size of the month's + events. + + + + + rtinkoff@google.com + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded whenever calendar events are requested, and the request went too + long without a response. + + + + + rtinkoff@google.com + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded when the calendar is closed. The total number of months cached for + calendar events while it was open. + + + + + newcomer@chromium.org + cros-status-area-eng@google.com + + Records the maximum absolute distance from today that a user has browsed in + the calendar. Recorded when the calendar is closed. + + + + + kradtke@chromium.org + cros-status-area-eng@google.com + + Records the time a user spends in a calendar month. Records the time when + the user either scrolls to another month or closes the CalendarView. + + + + + jiamingc@google.com + cros-status-area-eng@google.com + + The source of scrolling in calendar view. Recorded when the calendar is + scrolled and changed to another month (note that scrolls resulting in no + month change are not recorded). + + + + + newcomer@google.com + cros-status-area-eng@google.com + + Recorded when the calendar view is shown from the {ViewShowSource}. + + + + + + + + + + newcomer@google.com + cros-status-area-eng@google.com + + Measures the time from open of CalendarView, to CalendarDateCellView + representing today receives events. Recorded once per lifetime of + CalendarViewController (once per show), when todays CalendarDateCellView + receives event data. + + + + + newcomer@google.com + cros-status-area-eng@google.com + + Records the number of currently visible upcoming events shown to the user + when the Calendar "Up next" view displays. i.e. the user opens the + sys tray calendar, "Up next" displays 2 upcoming events, this + metric will track a count of 2. + + + + + newcomer@google.com + cros-status-area-eng@google.com + + Recorded when an upcoming event is pressed from the Calendar "Up + next" view and launched in Google Calendar. i.e. the user opens the sys + tray calendar, "Up next" displays an event in the next 10 mins and + the user taps the event. + + + + + newcomer@google.com + cros-status-area-eng@google.com + + Recorded when the "Join" meeting button is pressed from the + Calendar "Up next" view i.e. the user opens the sys tray calendar, + "Up next" displays an event in the next 10 mins and the user taps + "Join" meeting button on the event. + + + + + newcomer@google.com + cros-status-area-eng@google.com + + Recorded when the calendar view is destroyed, records the lifetime of the + CalendarView object, which corresponds with the user journey time of the + calendar. + + + + + + + + + newcomer@google.com + cros-status-area-eng@google.com + Recorded when the {CalendarChildView} is activated. + + + + + + + + + + newcomer@google.com + jiamingc@google.com + cros-status-area-eng@google.com + Recorded when the close event list animation is finished. + + + + + + + + + jiamingc@google.com + cros-status-area-eng@google.com + + The time to build the CalendarView, recorded when CalendarView is + constructed, which happens every time the calendar is shown from the status + area. + + + + + newcomer@google.com + jiamingc@google.com + cros-status-area-eng@google.com + Recorded when the on month changed animation is finished. + + + + newcomer@google.com + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded when the open event list animation is finished on the + {CalendarChildView}. The metric is expired from 2023-02-18 to 2023-03-15, so + it's possible some data is dropped during that time. + + + + + + + + + + + + newcomer@google.com + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded when the scroll one month animation is finished on the + {CalendarChildView}. + + + + + + + + + + newcomer@google.com + samcackett@google.com + cros-status-area-eng@google.com + + Animation smoothness recorded when the up next view is shown. 60 fps is 100% + smoothness and so ideally we should see smoothness > 80%. + + + + + newcomer@google.com + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded when the {Animation} animation is finished on the + {CalendarChildView}. + + + + + + + + + + + + + afakhry@chromium.org + gzadina@google.com + + Recorded whenever a button from the bar widget displayed in Capture mode is + pressed in {TabletOrClamshell}. The recorded enum value indicates the type + of the button pressed. + + + + + + michelefan@chromium.org + gzadina@google.com + + Records the number of camera disconnections in {TabletOrClamshell} during + recording. + + + + + + michelefan@chromium.org + gzadina@google.com + + Records how many seconds it takes a camera that got disconnected to get + reconnected again within the grace period in {TabletOrClamshell}. + + + + + + michelefan@chromium.org + gzadina@google.com + + Recorded whenever a user is in a capture mode screen recording entered from + {TabletOrClamshell}. Emits true when audio is enabled, false otherwise. + + + + + + afakhry@chromium.org + gzadina@google.com + + Recorded whenever a user performs a screen capture in {TabletOrClamshell}. + The recorded enum indicates the configuration used for the capture. I.e. the + capture source and the capture type. + + + + + + afakhry@chromium.org + gzadina@google.com + + Recorded whenever a user is in a region capture session in + {TabletOrClamshell} and performs a capture or they switch the capture + source. The recorded count indicates the number of times the user adjusts + the region. This counts each time they move the region or resize it. It is + reset whenever a user creates a new region or the count is recorded. + + + + + + afakhry@chromium.org + gzadina@google.com + + Records the number of consecutive screenshots the user takes within 5s of + each other, regardless of capture options. + + + + + afakhry@chromium.org + gzadina@google.com + + Recorded whenever capture mode screen recording is ended in + {TabletOrClamshell}. The recorded enum value indicates the reason that lead + to ending the screen recording. + + + + + + afakhry@chromium.org + gzadina@google.com + + Recorded whenever Capture mode is entered from {TabletOrClamshell}. The + recorded enum value indicates the method used to enter Capture mode. + + + + + + afakhry@chromium.org + gzadina@google.com + + Records the size of the successfully recorded GIF file by capture mode in + {TabletOrClamshell}. This metric will not be recorded if a file was not + successfully saved. + + + + + + afakhry@chromium.org + gzadina@google.com + + Records the time of a successful GIF recording in capture mode in + {TabletOrClamshell}. This metric will not be recorded if a file was not + successfully saved. The upper limit of this histogram is 3 hours. + + + + + + afakhry@chromium.org + gzadina@google.com + + Records the percent ratio between the area of the user selected region for + GIF recording to the area of the full screen in {TabletOrClamshell}. Emitted + only when GIF recording is about to start. + + + + + + conniekxu@chromium.org + gzadina@google.com + + Records the number of connected cameras to the device whenever it changes. + + + + + michelefan@chromium.org + gzadina@google.com + + Within a {TabletOrClamshell} capture session entered from the projector app, + the histogram records the number of times a user adjusts a capture region, + which includes the moving and resizing. The count is recorded and reset when + a user performs a capture.The count is only reset when a user creates a new + region or switches capture sources. + + + + + + michelefan@chromium.org + gzadina@google.com + + Recorded whenever a user is in a region capture session in + {TabletOrClamshell} entered from the projector app and performs a capture or + they switch the capture source. The recorded count indicates the number of + times the user adjusts the region. This counts each time they move the + region or resize it. It is reset whenever a user creates a new region or the + count is recorded. + + + + + + michelefan@chromium.org + gzadina@google.com + + Records whether a Projector-initiated recording starts with camera on or not + in {TabletOrClamshell}. + + + + + + michelefan@chromium.org + gzadina@google.com + + Records whether a Projector-initiated recording starts with demo tools + feature enabled or not in {TabletOrClamshell}. + + + + + + afakhry@chromium.org + michelefan@chromium.org + gzadina@google.com + + Records the time of a successful video recording in capture mode entered + from the projector app in {TabletOrClamshell}. This metric will not be + recorded if a file was not successfully saved. The upper limit of this + histogram is 3 hours. + + + + + + shidi@chromium.org + + Track all quick actions on screenshot notification. Including: Edit in + backlight, Go to Files, Delete File. + + + + + michelefan@chromium.org + gzadina@google.com + + Records the camera preview position when the recording is started in + {TabletOrClamshell}. + + + + + + michelefan@chromium.org + gzadina@google.com + + Records the camera size when the recording is started in + {TabletOrClamshell}. + + + + + + michelefan@chromium.org + gzadina@google.com + + Records whether a capture mode video recording starts with camera or not in + {TabletOrClamshell}. + + + + + + michelefan@chromium.org + gzadina@google.com + + Records whether a capture mode video recording starts with demo tools + feature enabled or not in {TabletOrClamshell}. + + + + + + michelefan@chromium.org + gzadina@google.com + + Recorded whenever screen capture is saved in {TabletOrClamshell}. The + recorded enum value indicates the location that the screen capture is saved. + + + + + + afakhry@chromium.org + gzadina@google.com + + Records the size of the successfully recorded WebM file by capture mode in + {TabletOrClamshell}. This metric will not be recorded if a file was not + successfully saved, or if it was recorded for Projector. + + + + + + + Replaced with + Ash.CaptureModeController.ScreenRecordingLength.{TabletOrClamshell} in M99. + + afakhry@chromium.org + gzadina@google.com + + Records the time of a successful video recording in capture mode. This + metric will not be recorded if a file was not successfully saved. The upper + limit of this histogram is 3 hours. + + + + + afakhry@chromium.org + gzadina@google.com + + Records the time of a successful video recording in capture mode in + {TabletOrClamshell}. This metric will not be recorded if a file was not + successfully saved. The upper limit of this histogram is 3 hours. + + + + + + afakhry@chromium.org + gzadina@google.com + + Records the number of screenshots that have been taken via the + CaptureModeController every 24 hours. Note that counts are not persisted + across crashes, restarts, or sessions so this is only intended to give a + rough approximation. + + + + + afakhry@chromium.org + gzadina@google.com + + Records the number of screenshots that have been taken via the + CaptureModeController every 7 days. Note that counts are not persisted + across crashes, restarts, or sessions so this is only intended to give a + rough approximation. This means that this metric will only be recorded in + sessions spanning at least 7 days. + + + + + afakhry@chromium.org + gzadina@google.com + + Emits true if a user has switched capture modes (fullscreen, region, window) + while in a capture mode session, false otherwise. + + + + + michelefan@chromium.org + gzadina@google.com + + Recorded whenever the capture folder is switched to default downloads folder + in {TabletOrClamshell}. The recorded enum value indicates the reason that + leads to the switching. + + + + + + + Deprecated May 2022, now that it's no longer needed. + + minch@chromium.org + changmar@chromium.org + + Emitted true when the user switched to dark mode through (Dark theme) page + inside settings. Emitted false if the user switched to light mode in this + case. ChromeOS only. + + + + + + Deprecated May 2022, now that it's no longer needed. + + minch@chromium.org + changmar@chromium.org + + Emitted true if the user checked (Based on your wallpaper) radio button + inside (Dark theme) page of the settings. Emitted false if the user checked + (Neutral) radio button inside the page. ChromeOS only. + + + + + minch@chromium.org + changmar@chromium.org + + Emitted true when the user switched to dark mode through toggling the (Dark + theme) feature pod button inside system tray menu. Emitted false if the user + switched to light mode through toggling this button. ChromeOS only. + + + + + aprilzhou@chromium.org + janetmac@chromium.org + + Recorded when a desk API {Method} method succeeded or failed. + + + + + + + + + + + afakhry@chromium.org + tclaiborne@chromium.org + chromeos-perfmetrics-eng@google.com + + Emitted when the virtual desks activation animation begins, to report the + latency of starting this animation. In a continuous desk animation, this + metric is recorded only for the first desk switch. + + + + + afakhry@chromium.org + tclaiborne@chromium.org + chromeos-perfmetrics-eng@google.com + + Emitted when the virtual desks removal animation begins, to report the + latency of starting this animation. In a continuous desk animation, this + metric is recorded only for the first desk switch. + + + + + afakhry@chromium.org + tclaiborne@chromium.org + + Emitted when the virtual desks activation animation completes to report the + smoothness of this animation when running on the display on which the active + window resides (if any) or the display of the primary root window. 100% + represents ideally smooth 60 frames per second. + + + + + afakhry@chromium.org + sammiequon@chromium.org + tclaiborne@chromium.org + + When a four finger touchpad swipe has ended, an animation to the nearest + desk will occur. This histogram is emitted when that animation finishes. + 100% represents ideally smooth 60 frames per second. + + + + + afakhry@chromium.org + tclaiborne@chromium.org + + Emitted when the virtual desks removal animation completes to report the + smoothness of this animation when running on the display on which the active + window resides (if any) or the display of the primary root window. 100% + represents ideally smooth 60 frames per second. + + + + + zxdan@chromium.org + janetmac@chromium.org + + Emitted when a window is assigned to all desks. E.g. `Move to Desks menu` + which can be accessed from a window's context menu or keyboard shortcuts. + This is not emitted when a window is unassigned from all desks. As of M99, + this should be used as the source of truth for the usage of the assign to + all desks feature. + + + + + + Deprecated April 2023, the Bento Bar feature has been deleted. + + minch@chromium.org + janetmac@chromium.org + + Emits true if a user clicked `Show deskbar` inside the context menu of bento + bar or desks bar in overview mode, false if `Hide deskbar` inside the same + context menu being clicked. + + + + + + Deprecated April 2023, the Bento Bar feature has been deleted. + + minch@chromium.org + janetmac@chromium.org + + Emits true when the bento bar is created for the user. Will not emit false + if the bento bar has never been created for the user. This will be used to + count the number of users who saw the bento bar. + + + + + aprilzhou@google.com + janetmac@chromium.org + + Emitted after a virtual desk being removed with close all option and undo + toast being shown. This metric describes the total number of times the user + chooses to close a desk with its windows, regardless of whether that action + is undone. + + + + + aprilzhou@google.com + janetmac@chromium.org + + Emitted after a virtual desk being removed with close all option and undo + toast being clicked. + + + + + + Made obsolete 2022-07-13 because the name and summary did not effectively + describe what it was recording. Replaced by Ash.Desks.CloseAllTotal. + + aprilzhou@google.com + janetmac@chromium.org + + Emitted after a virtual desk being removed with close all option and undo + toast being showed. This metrics is a sum of user undo remove and ignore + undo. + + + + + benbecker@google.com + chromeos-wms@google.com + + Emitted one minute after the DesksController synchronously closes all + windows with widgets remaining in a desk. Reports the number of windows with + null widgets that are still open after that time. + + + + + afakhry@chromium.org + janetmac@chromium.org + + Emitted when a desk is destroyed or a user activates a desk they haven't + visited the prior day. In the former case, reports the number of consecutive + days a user visited the newly-closed desk. In the latter case, reports the + number of consecutive days a user visited the desk during the previous + visit. This metric is persisted across multiple sessions and restarts. I.e. + if a user logs out and logs back in their desk's consecutive daily visits + will be restored. This metric uses the user's local timezone so if they move + back in time via timezone change, this metric will be reset. + + + + + benbecker@google.com + janetmac@chromium.org + + Emitted when a user with more than one desk changes the name of a desk to + specify how many of the user's desks have custom names. + + + + + benbecker@google.com + janetmac@chromium.org + + Emitted when a user with more than one desk confirms the name of a desk to + specify how often users create custom names. + + + + + benbecker@google.com + janetmac@chromium.org + + Emitted when a user with more than one desk changes the name of a desk to + specify the percentage of the user's desks that have custom names. + + + + + afakhry@chromium.org + janetmac@chromium.org + + The lifetime of the desk at index {DeskIndex} (1-indexed). Emitted when a + desk is removed. This metric is persisted across multiple sessions and + restarts. I.e. if a user logs out and logs back in their desk's lifetime + will be restored. + + + + + + + + + + + + + + + afakhry@chromium.org + tclaiborne@chromium.org + + Emitted when there's a change in the virtual desks count whether due to desk + creation or removal in Bento. Specifies the number of available desks. It is + not emitted for the first-ever created default desk. + + + + + afakhry@chromium.org + tclaiborne@chromium.org + + Emitted when the active desk is changed to specify the source of this + action, i.e. whether due to new-desk shortcut, desk removed, window + activated, switch-desk shortcut, or a press on the desk mini_view. + + + + + afakhry@chromium.org + tclaiborne@chromium.org + + Emitted when a window is moved from the current active desk to another desk. + Specifies the source of this action, i.e. whether to window drag-and-drop, + or keyboard shortcut. As of M90, the "Assign to desk menu" bucket + is emitted when a user assigns a window to all desks through its context + menu. Prior to this, the "Assign to desk menu" bucket was emitted + when a user switched desks and their All Desks windows were moved from the + old active desk to the new active desk. As of M99, the "Assign to desk + menu" no longer tracks the assign to all desks source. The replacement + is "Ash.Desks.AssignToAllDesksSource". + + + + + afakhry@chromium.org + tclaiborne@chromium.org + + Emitted when a virtual desk is created to specify the source of this action, + i.e. whether from the new-desk button, keyboard shortcut, or due to desks + restore. It is not emitted for the first-ever created default desk. + + + + + afakhry@chromium.org + sammiequon@chromium.org + tclaiborne@chromium.org + + Tracks the number of times a desk (virtual workspace) has visibly changed in + a time span of five seconds. This counts the number of total traversals; for + example if the user has moved from desk 1 to 2 to 1 to 2 to 3, the number + recorded is 4. This only gets recorded if a traversal starts. A traversal + means that the desk has changed onscreen. + + + + + + This metric was originally recording for metrics for both combineDesk and + closeAll. Replaced with Ash.Desks.NumberOfWindowsClosed2. + + aprilzhou@google.com + janetmac@chromium.org + + Emitted when a virtual desk is removed and all windows on the desk being + closed to record the total number of windows being closed by this operation. + + + + + + This metric was originally recording for metrics for both combineDesk and + closeAll. Replaced with Ash.Desks.NumberOfWindowsClosed2.{RemovalSource}. + + aprilzhou@google.com + janetmac@chromium.org + + Emitted when a virtual desk is removed and all windows on the desk being + closed by {RemovalSource} to record the total number of windows being closed + by this operation. + + + + + + + + + + + aprilzhou@google.com + janetmac@chromium.org + + Emitted when a virtual desk is removed and all windows on the desk being + closed to record the total number of windows being closed by this operation. + Emitted only for close-all. + + + + + aprilzhou@google.com + janetmac@chromium.org + + Emitted when a virtual desk is removed and all windows on the desk being + closed by {RemovalSource} to record the total number of windows being closed + by this operation. Emitted only for close-all. + + + + + + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the first desk. Emitted when a desk is removed, or + a window is moved to another desk. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the tenth desk. Emitted when a desk is removed, or + a window is moved to another desk. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the eleventh desk. Emitted when a desk is removed, + or a window is moved to another desk. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the twelfth desk. Emitted when a desk is removed, + or a window is moved to another desk. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the thirteenth desk. Emitted when a desk is + removed, or a window is moved to another desk. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the fourteenth desk. Emitted when a desk is + removed, or a window is moved to another desk. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the fifteenth desk. Emitted when a desk is removed, + or a window is moved to another desk. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the sixteenth desk. Emitted when a desk is removed, + or a window is moved to another desk. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the second desk. Emitted when a desk is removed, or + a window is moved to another desk. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the third desk. Emitted when a desk is removed, or + a window is moved to another desk. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the fourth desk. Emitted when a desk is removed, or + a window is moved to another desk. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the fifth desk. Emitted when a desk is removed, or + a window is moved to another desk. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the sixth desk. Emitted when a desk is removed, or + a window is moved to another desk. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the seventh desk. Emitted when a desk is removed, + or a window is moved to another desk. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the eighth desk. Emitted when a desk is removed, or + a window is moved to another desk. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of windows on the ninth desk. Emitted when a desk is removed, or + a window is moved to another desk. + + + + + afakhry@chromium.org + sammiequon@chromium.org + tclaiborne@chromium.org + + Presentation time in ms when a four finger swipe is being used to change + desks. One full swipe results in multiple emissions of this metric; once + everytime the fingers change location on the trackpad. Presentation time is + the time it takes from when the software recognizes the touchpad swipe to + when the next frame is displayed on the screen. + + + + + afakhry@chromium.org + sammiequon@chromium.org + tclaiborne@chromium.org + + The largest presentation time value in ms for a single four finger swipe to + change desks. One full swipe results in one emission of this metric; its the + largest value of Ash.Desks.PresentationTime.UpdateGesture which is emitted + multiple times during a single full swipe. Presentation time is the time it + takes from when the software recognizes the touchpad swipe to when the next + frame is displayed on the frame. + + + + + afakhry@chromium.org + janetmac@chromium.org + + Emitted when a virtual desk is removed to specify the source of this remove + operation, i.e. whether from the close-desk button, or keyboard shortcut. + + + + + aprilzhou@google.com + janetmac@chromium.org + + Emitted when a virtual desk is removed to specify the category of this + remove operation among close all, combine desk, and close all and wait. + + + + + + Deprecated April 2023, the Bento Bar feature has been deleted. + + minch@chromium.org + janetmac@chromium.org + + Emitted true when first session started and detected user pref + `kUserHasUsedDesksRecently` has been set to true for the user. Will not emit + false otherwise. This will be used to count the number of users that + `kUserHasUsedDesksRecently` has been set to true. + + + + + afakhry@chromium.org + janetmac@chromium.org + + The number of unique weekly active desks a user has interacted with in a + week. A desk is considered interacted with if a window is moved to it, it is + created, its name is changed, or it is activated and stayed on for at least + 3s. This metric is persisted across multiple sessions and restarts. I.e. if + a user logs out and logs back in. This metric is reported a week after it + begins counting. If a session is restored and more than a week has elapsed + since counting has begun, the restored data will be emitted as an entry and + this metric will be reset. + + + + + yzd@google.com + janetmac@chromium.org + + Emitted when a desk template is added or updated to indicate result of this + operation. i.e. whether this operation is successful or failed with any + particular reason. + + + + + dandersson@chromium.org + janetmac@chromium.org + + Recorded when a Save and Recall saved desk is manually deleted. + + + + + avynn@google.com + janetmac@chromium.org + Recorded when desk templates are deleted, is never false. + + + + ligeng@google.com + marcuskoehler@google.com + + Records the number of tabs in a Floating Workspace desk when it is saved. + + + + + ligeng@google.com + marcuskoehler@google.com + + Records the number of windows and tabs in a Floating Workspace desk when it + is saved. + + + + + ligeng@google.com + marcuskoehler@google.com + + Records the number of windows in a Floating Workspace desk when it is saved. + + + + + ligeng@google.com + marcuskoehler@google.com + Emitted when a Floating Workspace desk is launched. + + + + richui@chromium.org + janetmac@chromium.org + + Emitted when a template is launched and a desk is created, is never false. + + + + + dandersson@chromium.org + janetmac@chromium.org + Emitted when a Save and Recall desk is launched. + + + + avynn@google.com + janetmac@chromium.org + + Recorded when a user opens the template grid, is never false. + + + + + dandersson@chromium.org + janetmac@chromium.org + Recorded when a new Save and Recall desk is created. + + + + avynn@google.com + janetmac@chromium.org + + Recorded when a user creates a desk template, is never false. + + + + + dandersson@chromium.org + janetmac@chromium.org + Recorded when the user replaces a Save and Recall desk. + + + + aprilzhou@chromium.org + janetmac@chromium.org + + Recorded when replace dialog opens and user accepted it, is never false. + + + + + dandersson@chromium.org + janetmac@chromium.org + + Records the number of tabs in a Save and Recall desk when it is saved. + + + + + zhumatthew@google.com + janetmac@chromium.org + + Records the save and recall template file size that is saved to local + storage. + + + + + dandersson@google.com + janetmac@chromium.org + + Records the number of times the unsupported Apps dialog shows. This event is + triggered when a user attempts to save a Save and Recall desk that contains + an unsupported app type. Currently the saved desk feature only supports + PWAs, Extensions, and browser instances. + + + + + dandersson@chromium.org + janetmac@chromium.org + + Records the number of windows and tabs in a Save and Recall desk when it is + saved. + + + + + dandersson@chromium.org + janetmac@chromium.org + + Records the number of windows in a Save and Recall desk when it is saved. + + + + + richui@chromium.org + janetmac@chromium.org + Records the number of tabs in a template when it is saved. + + + + zhumatthew@google.com + janetmac@chromium.org + + Records the file size of the desk template that is saved to local storage. + + + + + dandersson@chromium.org + janetmac@chromium.org + + The number of seconds between the creation of a new Save and Recall desk and + its launch (and automatic deletion). + + + + + avynn@google.com + janetmac@chromium.org + + Measures the amount of time it takes to launch a template from the time that + the launch is invoked to the time that the last window is opened. + + + + + avynn@google.com + janetmac@chromium.org + + Records the number of times the unsupported Apps dialog shows. This event is + triggered when a user attempts to save a template that contains an + unsupported app type. Currently the desks templates feature only supports + PWAs, Extensions, and browser instances. + + + + + dandersson@chromium.org + janetmac@chromium.org + + Records the number of Save and Recall desks a user has saved when a desk is + saved or deleted. + + + + + richui@chromium.org + janetmac@chromium.org + + Records the number of templates a user has saved when a template is saved or + deleted. + + + + + richui@chromium.org + janetmac@chromium.org + + Records the number of windows and tabs in a template when it is saved. + + + + + richui@chromium.org + janetmac@chromium.org + + Records the number of windows in a template when it is saved. + + + + + qianwan@google.com + chromeos-data-team@google.com + + Record the number of different failed/success cases for check membership + process. Refer to ash::device_activity::DeviceActivityClient for details. + + + + + hirthanan@google.com + chromeos-data-team@google.com + + Record the total duration to transition between DeviceActivityClient states. + States are defined in //chromeos/ash/components/device_activity_client.h. + ChromeOS only. {DeviceActiveClientState} + + + + + + hirthanan@google.com + chromeos-data-team@google.com + + Record success if the PSM OPRF response contains a value. This network + request is called after browser start if the last ping timestamp of the + Chromebook is not known. ChromeOS only. + + + + + hirthanan@google.com + chromeos-data-team@google.com + + Record success if the PSM OPRF response is able to be parsed correctly. This + network request is called after browser start if the last ping timestamp of + the Chromebook is not known. ChromeOS only. + + + + + hirthanan@google.com + chromeos-data-team@google.com + + Record success if the PSM Query response contains a value. This network + request is called after browser start if the last ping timestamp of the + Chromebook is not known. ChromeOS only. + + + + + hirthanan@google.com + chromeos-data-team@google.com + + Record success if the PSM Query response is able to be parsed correctly. + This network request is called after browser start if the last ping + timestamp of the Chromebook is not known. ChromeOS only. + + + + + hirthanan@google.com + chromeos-data-team@google.com + + Record the states after reading preserved file over DBus for last active utc + dates. PreservedFileState is defined in + //chromeos/ash/components/device_activity_client.h. ChromeOS only. + + + + + hirthanan@google.com + chromeos-data-team@google.com + + Emit the NetError code associated with the PSM OPRF response. This network + request is called after browser start if the last ping timestamp of the + Chromebook is not known. ChromeOS only. Enum for histogram will contain 0 - + 899. Ranges are defined //net/base/net_error_list.h;l=14-23. + + + + + hirthanan@google.com + chromeos-data-team@google.com + + Emit the NetError code associated with the PSM Query response. This network + request is called after browser start if the last ping timestamp of the + Chromebook is not known. ChromeOS only. Enum for histogram will contain 0 - + 899. Ranges are defined //net/base/net_error_list.h;l=14-23. + + + + + hirthanan@google.com + chromeos-data-team@google.com + + Whether the private set membership query response is true or false. + + + + + hirthanan@google.com + chromeos-data-team@google.com + + Emitted in the minute during the hour that DeviceActivityClient + {DeviceActivityClientTransitionMethod} is called. ChromeOS only. + + + + + + + + + hirthanan@google.com + chromeos-data-team@google.com + + Record the PsmResponse whenever a response is received from the server. + PsmResponse is defined in + //chromeos/ash/components/device_activity_client.h. ChromeOS only. + {DeviceActiveClientState} + + + + + + hirthanan@google.com + chromeos-data-team@google.com + + Record success boolean after attempting to write last active utc dates for + all use case to the preserved file, over DBus. + + + + + hirthanan@google.com + chromeos-data-team@google.com + + Recorded every time the DeviceActivityClient enters a new state in its FSM. + States are defined in //chromeos/ash/components/device_activity_client.h. + ChromeOS only. + + + + + hirthanan@google.com + chromeos-data-team@google.com + + Record success boolean to indicate whether a branded ChromeOS device is a + testimage/unknown channel type or a legitimate device. Frequency of + recording the histogram is on every device browser startup. + + + + + hirthanan@google.com + chromeos-data-team@google.com + Whether the PSM derived active secret is set (non empty). + + + + hirthanan@google.com + chromeos-data-team@google.com + + Record the number of times various methods are called in + //chromeos/ash/components/device_activity/. ChromeOS only. + + + + + malaykeshav@chromium.org + oshima@chromium.org + + The effective resolution of the internal display after device scale factor + and display zoom level has been applied. This is the exact value matching + the display's effective resolution. This is emitted at regular intervals. + + + + + kuscher@google.com + wutao@chromium.org + + User-initiated action taken that affects docked windows such as docking, + undocking, minimizing, restoring, closing or just dragging a docked window. + + + + + kuscher@google.com + wutao@chromium.org + + Source (mouse, touch, keyboard or unknown) of the user-initiated action for + docked windows. + + + + + kuscher@google.com + wutao@chromium.org + + Number of all docked windows or panels including hidden or minimized. + Recorded on every user action that interacts with docked windows. + + + + + kuscher@google.com + wutao@chromium.org + + Number of large (wider than dock maximum width) windows that had to be + shrunk to get docked among the visible docked windows. Recorded on every + user action that interacts with docked windows. + + + + + kuscher@google.com + wutao@chromium.org + + Number of docked visible panels. Recorded on every user action that + interacts with docked windows. + + + + + kuscher@google.com + wutao@chromium.org + + Number of visible docked windows or panels. Recorded on every user action + that interacts with docked windows. + + + + + kuscher@google.com + wutao@chromium.org + + Time elapsed between instances of docking, undocking or any other action + affecting docked state of a window. + + + + + kuscher@google.com + wutao@chromium.org + + Width of the docked area in pixels. Recorded every time it changes after a + user window resize operation is completed. + + + + + tbarzic@chromium.org + xdai@chromium.org + + Presentation time in ms when a window is dragged from the bottom of the + shelf. Recorded when the drag action is in progress. + + Warning: this histogram was expired from 2022-10-04 to 2023-02-22; data may + be missing. + + + + + tbarzic@chromium.org + xdai@chromium.org + + Maximum latency of the presentation time in ms when a window is dragged from + the bottom of the shelf. Recorded when the drag action is finished. + + + + + mmourgos@chromium.org + tbarzic@chromium.org + + Tracks the number of times that each end of life incentive button has been + clicked. Recorded when the button is clicked to open the incentive url. + + + + + mmourgos@chromium.org + tbarzic@chromium.org + + Tracks the number of times that each end of life incentive type is shown. + Recorded as soon as the end of life incentive is shown on the screen. + + + + + xiyuan@chromium.org + yichenz@chromium.org + chromeos-perfmetrics-eng@google.com + + Similar to "Ash.EventLatency.TotalLatency" but tracks total + latency of 5 core events + (MouseDragged/MousePressed/MouseReleased/KeyPressed/KeyReleased) for ash UI, + from when the user input causing the event is generated until the frame + caused by the event is submitted by the GPU service and presented + successfully on the screen. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + xiyuan@chromium.org + yichenz@chromium.org + chromeos-perfmetrics-eng@google.com + + Tracks total latency of all types of event for ash UI, from when the user + input causing the event is generated until the frame caused by the event is + submitted by the GPU service and presented successfully on the screen. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + xiyuan@chromium.org + yichenz@chromium.org + chromeos-perfmetrics-eng@google.com + + Tracks total latency of {EventType} for ash UI, from when the user input + causing the event is generated until the frame caused by the event is + submitted by the GPU service and presented successfully on the screen. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + nupurjain@google.com + shidi@chromium.org + sammiequon@chromium.org + + The number of floating windows per session, which is from the time a user + logs in to the time they log off. This counts how many times any window + enters float state. If the same window is floated twice in the same session, + it will get recorded twice. + + + + + nupurjain@google.com + sammiequon@chromium.org + shidi@chromium.org + + The amount of time a user keeps a floating window open and visible. Open and + visible means the window is in float state and is on the active desk. If a + window is floated and moved to an inactive desk we stop recording. The timer + starts when we float a window and we record the histogram when the window is + unfloated. The recording can also happen if a floated window is moved to an + inactive desk, or the desk changes; we treat this as unfloated. + + + + + nupurjain@google.com + shidi@chromium.org + sammiequon@chromium.org + + The counts of how many times floated windows moved to another desk per + session, which is from the time a user logs in to the time they log off. + + + + + nupurjain@google.com + shidi@chromium.org + sophiewen@chromium.org + + Recorded whatever action is taken on the {TabletOrClamshell} multitask menu. + + + + + + nupurjain@google.com + shidi@chromium.org + sophiewen@chromium.org + + Recorded whenever the multitask menu is opened from {TabletOrClamshell}. The + recorded enum value indicates the method used to open the menu. + + + + + + ligeng@google.com + marcuskoehler@google.com + + Recorded when floating workspace service is launched. The false bucket is + unused here. + + + + + ligeng@google.com + marcuskoehler@google.com + + Recorded the browser session type (local or remote) restored by floating + workspace service on current device. + + + + + ligeng@google.com + marcuskoehler@google.com + Recorded the reason for template launch failures. + + + + ligeng@google.com + marcuskoehler@google.com + + Recorded the reason for template launch timeouts either when we pass the + threshold for waiting for a floating workspace to be downloaded or when + there's no floating workspace template to be downloaded after waiting for + the set timeout. + + + + + ligeng@google.com + marcuskoehler@google.com + + Indicate the time to download a floating workspace template. If after set + timeout is reached and there is no floating workspace template downloaded, a + record of the timeout will be recorded in + "Ash.FloatingWorkspace.TemplateLaunchTimeOut". + + + + + ligeng@google.com + marcuskoehler@google.com + Record the size of an uploaded floating workspace template. + + + + ligeng@google.com + marcuskoehler@google.com + Record the floating workspace template upload status. + + + + sammiequon@chromium.org + tbarzic@chromium.org + + Relative smoothness of animations when performing tablet mode homescreen + animations, recorded when the animation completes. 100% represents ideally + smooth 60 frames per second. + + + + + andrewxu@chromium.org + tbarzic@chromium.org + Gestures supported by the in-app hotseat. + + + + anasalazar@chromium.org + newcomer@chromium.org + + Tracks the animation smoothness for the ShelfWidget's animating background + during transitions of the hotseat to shown, extended, and hidden hotseat + states. Check Ash.HotseatWidgetAnimation.AnimationSmoothness for smoothness + of the HotseatWidget. {HotseatTransitionType} + + + + + + anasalazar@chromium.org + newcomer@chromium.org + + Presentation time in ms of the hotseat when it changes between the hidden + and the extended state as a result of a drag action. Recorded when the drag + action is in progress. + + + + + anasalazar@chromium.org + newcomer@chromium.org + + Maximum latency of the presentation time in ms of the hotseat when it + changes between the hidden and the extended state as a result of a drag + action. Recorded when the drag action is finished. + + + + + anasalazar@chromium.org + newcomer@chromium.org + + Tracks the animation smoothness for the bounds animation of the hotseat + widget's elements during transitions of the hotseat to shown, extended, and + hidden hotseat states. Check Ash.HotseatTransition.AnimationSmoothness for + smoothness of the shelf's animating background. {HotseatTransitionType} + + + + + + anasalazar@chromium.org + newcomer@chromium.org + + Tracks the animation smoothness for the bounds animation of the hotseat + widget's elements during transitions of the hotseat to shown, extended, and + hidden hotseat states. Check Ash.HotseatTransition.AnimationSmoothness for + smoothness of the shelf's animating background. {HotseatWidgetElement} + + + + + + + + + xiyuan@chromium.org + oshima@chromium.org + + Similar to Ash.InteractiveWindowResize.TimeToPresent but tracks the resize + latency for lacros windows by measuring configure -> ack -> present + time. + + + + + xiyuan@chromium.org + oshima@chromium.org + + Maximum time of Ash.InteractiveWindowResize.Lacros.TimeToPresent during an + interactive resize. + + + + + xiyuan@chromium.org + oshima@chromium.org + + Time between when the size of a window changes during an interactive window + resize and the results are drawn (presented) on screen. This is recorded for + each movement of the mouse/pointer that results in a resize. + + + + + xiyuan@chromium.org + oshima@chromium.org + + Maximum time between when the size of a window changes during an interactive + window resize and the results are drawn (presented) on screen. This is + recorded for each movement of the mouse/pointer that results in a resize. + + + + + skuhne@chromium.org + lacros-team@google.com + + The Lacros operation mode. This will record if Ash is the only browser, both + browsers are running side by side or if Lacros is the only browser. It will + be emitted once when the system (Ash) starts. + + + + + skuhne@chromium.org + lacros-team@google.com + + The Lacros operation mode. This will record if Ash is the only browser, both + browsers are running side by side or if Lacros is the only browser. It will + be emitted at least once a day. + + + + + skuhne@chromium.org + lacros-team@google.com + + The Lacros operation mode and the origin of the setting. This will record if + Ash is the only browser, both browsers are running side by side or if Lacros + is the only browser as well as if the setting was set by the user, enforced + by a policy or enforced by the user (overriding any given policy). It will + be emitted shortly before Lacros gets started the first time from the system + (Ash). + + + + + skuhne@chromium.org + lacros-team@google.com + + The Lacros operation mode and the origin of the setting. This will record if + Ash is the only browser, both browsers are running side by side or if Lacros + is the only browser as well as if the setting was set by the user, enforced + by a policy or enforced by the user (overriding any given policy). It will + be emitted at least once a day. + + + + + emaamari@google.com + cros-lurs@google.com + + The count of auth method switching actions on ChromeOS lock screen. + + + + + emaamari@google.com + cros-lurs@google.com + + The usage of different auth methods (PIN / Password / Smartlock / + Fingerprint / Challenge response) on Chromebooks in clamshell mode and on + other form-factors. + + + + + emaamari@google.com + cros-lurs@google.com + + The usage of different auth methods (PIN / Password / Smartlock / + Fingerprint / Challenge response) on Chromebooks in tablet mode. + + + + + + Deprecated in M111 and replaced with + "Ash.OSAuth.Login/Lock.NbPasswordAttempts.UntilFailure". + + emaamari@google.com + cros-lurs@google.com + + The number of incorrect passwords entered in Chrome OS login/lock screen + until the user gives up (user signs out the current session or shuts down + the device). + + + + + + Deprecated in M111 and replaced with + "Ash.OSAuth.Login/Lock.NbPasswordAttempts.UntilSuccess". + + emaamari@google.com + cros-lurs@google.com + + The number of incorrect passwords entered in Chrome OS login/lock screen + until a successful attempt. + + + + + emaamari@google.com + cros-lurs@google.com + + The numbers of times that users click on the shelf buttons, trays and lock + screen note on the ChromeOS lock screen. + + + + + emaamari@google.com + cros-lurs@google.com + + The count of auth method switching actions on ChromeOS login screen. + + + + + emaamari@google.com + cros-lurs@google.com + + The usage of different auth methods (PIN / Password / Smartlock / + Fingerprint / Challenge response) on Chromebooks in clamshell mode and on + other form-factors. + + + + + emaamari@google.com + cros-lurs@google.com + + The usage of different auth methods (PIN / Password / Smartlock / + Fingerprint / Challenge response) on Chromebooks in tablet mode. + + + + + emaamari@google.com + cros-lurs@google.com + + Whether the cryptohome migration banner was shown on the Chrome OS login + screen. + + + + + emaamari@google.com + cros-lurs@google.com + + The numbers of times that users click on the shelf buttons and trays on the + ChromeOS login screen. + + + + + emaamari@google.com + raleksandrov@google.com + cros-lurs@google.com + What shelf buttons or trays are clicked in the OOBE. + + + + emaamari@google.com + rrsilva@google.com + cros-lurs@google.com + + The result of the PIN auto submit 'Backfill' operation. Users updating to + M86 with an existing PIN will have their preference regarding auto submit + 'backfilled' to either enabled or disabled. + + + + + agawronska@chromium.org + galenemco@google.com + cros-families-eng@google.com + + Records instances of a "PERMANENTLY_UNTRUSTED" result during the + check for trusted values before showing gaia signin. This is a fatal result + which will result in signin not being shown. + + + + + agawronska@chromium.org + galenemco@google.com + cros-families-eng@google.com + + Records the amount of time spent waiting for trusted values before showing + gaia signin. Waiting for trusted values ensures that the device owner id is + present before showing the signin, which is necessary for checking signin + permissions for child users. This check may introduce a delay for all users. + This metric allows monitoring that delay. + + + + + xiyuan@chromium.org + chromeos-perfmetrics-eng@google.com + + Time between user logged in (i.e. a successful cryptohome mount) and when + good ADF (<= 20%) is observed for more than 5 seconds. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + oshima@chromium.org + chromeos-wmp@google.com + + + + The duration of how long it took to finish all animations applied during the + login process, from the time the first animation is added, to the time the + last animation is finished. + + + + + oshima@chromium.org + chromeos-wmp@google.com + + + + Jank metrics of all animations applied during the login process. This + represents how often the frame update rate changed during animation. + + + + + oshima@chromium.org + chromeos-wmp@google.com + + + + Relative smoothness of all animations applied during the login process. 100% + represents the ideal smoothness for 60 frames per second. + + + + + tbarzic@chromium.org + gzadina@google.com + + Reports events related to camera privacy switch state. The camera privacy + switch is a hardware toggle supported by some Chrome OS devices that + disables the built in camera video feed. The histogram is reported (1) when + a camera privacy switch state change is detected (which generally causes a + system toast to get shown), and (2) when a notification informing the user + that the camera privacy switch is on (the notification is shown if the user + tries to use their camera with the privacy switch tuned on). The camera + privacy switch state is only recorded if the state change is a result of a + user action - it will not be recorded for state changes that are a result of + camera privacy switch state initialization. + + + + + tbarzic@chromium.org + gzadina@google.com + + Time from showing a notification informing the user about the camera privacy + switch to the user turning the privacy switch off. The camera privacy switch + is a hardware switch supported by some Chrome OS devices that cuts the video + camera feed off. The Chrome OS UI shows a notification if the user tries to + use the camera with the privacy switch on. The intention is to track the + time it takes for the user to flip the privacy switch after they're notified + the camera is disabled. The histogram is recorded if the user toggles the + camera privacy switch after seeing the notification about the privacy switch + being on (if the switch is toggled more than once after the notification + gets shown, only the first toggle action will be reported). The time is + reported in seconds with 5 second granularity. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Presentation time while scrolling through the list of notifications in + Notification Center. Emitted when Notification Center is scrolled. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Presentation time while scrolling through the list of notifications in + Notification Center. Emitted when Notification Center is scrolled. + + + + + chungsheng@google.com + chromeos-mojo-service-manager@google.com + + The retry times when try to bootstrap to mojo service manager. + + + + + chungsheng@google.com + chromeos-mojo-service-manager@google.com + + Whether the connection to mojo service manager is lost before during ash + running. + + + + + sammiequon@chromium.org + yunchengs@google.com + chromeos-wm-corexp@google.com + + After a display rotation, the existing app windows will get remapped. A one + minute timer then runs. If any of the app windows are moved or resized by + the user, then this histogram records true. If the timer ends without an app + window being moved or resized, then this histogram records false. Used to + determine if the user is satisfied with the window manager auto remap. + + + + + sammiequon@chromium.org + yunchengs@google.com + chromeos-wm-corexp@google.com + + After a display work area change, the existing app windows will get + remapped. A one minute timer then runs. If any of the app windows are moved + or resized by the user, then this histogram records true. If the timer ends + without an app window being moved or resized, then this histogram records + false. Used to determine if the user is satisfied with the window manager + auto remap. + + + + + anasalazar@chromium.org + newcomer@chromium.org + + Relative smoothness of animations of the navigation widget's elements, which + are the widget itself and its child views. 100% represents ideally smooth 60 + frames per second. 50% represents only 30 frames per second is achieved + during the animations. Recorded every time an animation is triggered in the + Navigation Widget. We record this metric for each element separately. + {HotseatTransitionType} + + + + + + anasalazar@chromium.org + newcomer@chromium.org + + Relative smoothness of animations of the navigation widget's elements, which + are the widget itself and its child views. 100% represents ideally smooth 60 + frames per second. 50% represents only 30 frames per second is achieved + during the animations. Recorded every time an animation is triggered in the + Navigation Widget. We record this metric for each element separately. + {NavigationWidgetElement} + + + + + + + + + + afakhry@chromium.org + tclaiborne@chromium.org + Emitted when the Auto Night Light notification is shown. + + + + afakhry@chromium.org + tclaiborne@chromium.org + + Emitted when the user interacts with the Auto Night Light notification to + report the state of the notification as a result of this interaction. + + + + + afakhry@chromium.org + tclaiborne@chromium.org + + The type of CRTC color transorm matrix support for the currently connected + displays. Emitted when cursor compositing status is refreshed, but only when + Night Light is on. The cursor compositing status is refreshed whenever there + is a change in Night Light status or color temperature. + + + + + afakhry@chromium.org + tclaiborne@chromium.org + + The selected Night Light schedule type. Emitted when the user changes the + Night Light schedule type from the Display System Settings. + + + + + afakhry@chromium.org + tclaiborne@chromium.org + + The ranges in which the selected values of the Night Light color temperature + reside. Emitted when the user drags the Night Light color temperature slider + to change its value from the Display System Settings. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Animation smoothness of the "clear all" animation in the CrOS + message center. This occurs when the clear all button is pressed with + notifications that are not visible on screen. Measured via a throughtput + tracker. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Animation smoothness of the "clear all" animation in the CrOS + message center. This occurs when the clear all button is pressed and all + notifications are visible. Measured via a throughtput tracker. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + The number of notification contained in one group. Emitted when a + notification is added or removed from a group. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Animation smoothness of the "Expand or Collapse" animation in the + CrOS message center. This occurs when the notification requests a size + change due to being expanded or collapsed. Usually involves other layer + animations which are named (get name from leandre@). + + + + + amehfooz@chromium.org + cros-status-area-eng@google.com + + Animation smoothness of the slide out part of the animation when a grouped + notification is removed. Emmitted when a grouped notification is removed by + clicking on it's close button. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Record the types of group notification added to the system. The types are + group parent and group child. Emitted when a group notification is created. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Animation smoothness of the "move down" animation in the CrOS + message center. This occurs when a notification is removed and notifications + above the deleted one animate downwards to fill in the space. Measured via a + throughtput tracker. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Relative smoothness of the fade in animation of the settings button inside a + swipe control notification view. 100% represents ideally smooth 60 frames + per second. Emitted when the fade in animation is completed. + + + + + leandre@chromium.org + amehfooz@chromium.org + tbarzic@chromium.org + cros-status-area-eng@google.com + + Relative smoothness of animations of notification pop-up. 100% represents + ideally smooth 60 frames per second. Emitted when pop-up animations are + completed, including pop-up fade-in, fade-out, move-up, move-down. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Relative smoothness of the {Animation} in notification view when converting + from single to group notification. 100% represents ideally smooth 60 frames + per second. Emitted when the animation is completed. + + + + + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Relative smoothness of the bounds change animation of the expand button + inside a notification view. 100% represents ideally smooth 60 frames per + second. Emitted when the animation is completed. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + The count of actions that is performed after an expand button is clicked. + The actions are expanding or collapsing individual or group notification. + Emitted when an expand button is clicked. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Relative smoothness of the {Animation} inside the expand button of the + notification view when converting from single to group notification. 100% + represents ideally smooth 60 frames per second. Emitted when the animation + is completed. + + + + + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Relative smoothness of the scale down animation of image container view + inside a notification view. 100% represents ideally smooth 60 frames per + second. Emitted when the scale down animation is completed. + + + + + andrewxu@chromium.org + cros-status-area-eng@google.com + + Records the notification drag end state when the notification image drag + ends. + + + + + andrewxu@chromium.org + cros-status-area-eng@google.com + + Records the notification catalog name when the notification image drag + starts. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Records the types of notification view added to the system. Emitted when + each notification is added and the notification is visible. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Relative smoothness of the fade in animation of {ChildView} inside a + notification view. 100% represents ideally smooth 60 frames per second. + Emitted when the fade in animation is completed. + + + + + + + + + + + + + + + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Relative smoothness of the fade out animation of {ChildView} inside a + notification view. 100% represents ideally smooth 60 frames per second. + Emitted when the fade out animation is completed. + + + + + + + + + + + + + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Relative smoothness of the scale and translate animation of {ChildView} + inside a notification view. 100% represents ideally smooth 60 frames per + second. Emitted when the animation is completed. + + + + + + + + + kradtke@chromium.org + cros-status-area-eng@google.com + + Tracks the number of times a specific nudge is shown to users. This metric + is recorded every time a nudge is shown. + + + + + kradtke@google.com + cros-status-area-eng@google.com + + Tracks the time from when a specific educational nudge is shown to when it's + interacted with. Starts measuring time when the nudge is shown and records + the Nudge catalog name in one of the time buckets available if the user + performs the nudge's suggested action. + + + + + + + + + + kradtke@google.com + cros-status-area-eng@google.com + + Tracks the time a specific toast spends on screen before being dismissed by + the user or system. Records the toast catalog name in one of the time + buckets available when toast is dismissed either manually or by time out. + + + + + + + + + + kradtke@chromium.org + cros-status-area-eng@google.com + + Tracks the number of times a specific toast is shown to users. This metric + is recorded every time a toast is shown. + + + + + kradtke@chromium.org + cros-status-area-eng@google.com + + Records the time a toast spends in queue before it's shown on screen. + + + + + kradtke@google.com + cros-status-area-eng@google.com + + Tracks the number of times a specific system notification is added to the + notification list. This metric is recorded every time the + `OnNotificationAdded` event is triggered for a system notification. + + + + + + + + + kradtke@google.com + cros-status-area-eng@google.com + + Tracks the time a specific system notification spends as a pop-up before + being dismissed either by the user or system. Records the notification + catalog name in one of the time buckets available when the pop-up is + dismissed either manually or by time out. + + + + + + + + + + + + + + + kradtke@google.com + cros-status-area-eng@google.com + + Tracks the number of times a specific system notification pop-up is shown to + users. + + + + + + + + + kradtke@google.com + cros-status-area-eng@google.com + + Records the time a system notification spends as a pop-up before being + dismissed either by the user or system. Starts measuring time whenever the + pop-up is shown to the user, and records metric when the pop-up is dismissed + either manually or by time out. + + + + + + + + + anastasiian@chromium.org + cros-lurs@google.com + + Whether the logged in user has {AuthFactor} auth factor configured. Recorded + upon successful login. + + + + + + + + + + + emaamari@google.com + cros-lurs@google.com + + The number of incorrect passwords entered in Chrome OS + {AuthenticationSurface} screen until the "{AuthenticationOutcome}" + outcome. For previous data (grouped for login and lock screen together) see + "Ash.Login.Lock.NbPasswordAttempts.*". + + + + + + + + + + + + + + + + omrilio@chromium.org + oshima@chromium.org + + Relative smoothness of animations when closing a window, recorded when the + animation completes. 100% represents ideally smooth 60 frames per second. + + + + + omrilio@chromium.org + oshima@chromium.org + chromeos-perfmetrics-eng@google.com + + Relative smoothness of animations when entering overview mode, recorded when + the animation completes. 100% represents ideally smooth 60 frames per + second. {OverviewAnimationMode} + + + + + + omrilio@chromium.org + oshima@chromium.org + chromeos-perfmetrics-eng@google.com + + Relative smoothness of animations when exiting overview mode, recorded when + the animation completes. 100% represents ideally smooth 60 frames per + second. {OverviewAnimationMode} + + + + + + nupurjain@chromium.org + sammiequon@chromium.org + + The number of times the arrow keys are pressed in overview mode per session, + i.e. between bringing up overview mode and ending it. This is only measured + for the sessions that end by selecting a window with the enter key. + + + + + minch@chromium.org + janetmac@chromium.org + + Emitted when exiting overview mode. Recording the reasons for ending + overview mode. E.g, pressing the overview button at status area. + + + + + nupurjain@chromium.org + sammiequon@chromium.org + + The number of items (single windows or groups of windows such as panels) in + the overview mode, present at the start of each session. + + + + + nupurjain@chromium.org + sammiequon@chromium.org + + The ratio between the arrow key presses and the number of overview items, + expressed as a percentage for a single session. Recorded when an overview + session is exited after selecting a highlighted overview item. + + + + + nupurjain@chromium.org + sammiequon@chromium.org + + The number of items closed from the window overview for a single session. + Recorded when exiting an overview session. + + + + + sammiequon@chromium.org + tclaiborne@chromium.org + + Maximum latency of the presentation time for scrolling the overview grid in + overview mode for a scrolling session. + + + + + sammiequon@chromium.org + tclaiborne@chromium.org + + Presentation time for scrolling the overview grid in overview mode. Each + time the grid is updated by a scroll, the time it takes to update the new + visuals onto the screen is updated. + + + + + nupurjain@chromium.org + sammiequon@chromium.org + tclaiborne@chromium.org + + When a window is selected in overview mode, records that window's position + in the global MRU ordering. 1 represents the most-recently used window, 2 + represents the next most-recently used window, and so on. + + + + + minch@chromium.org + janetmac@chromium.org + + Emitted when entering overview mode. Recording the reasons for starting + overview mode. E.g, pressing the overview button at status area. + + + + + nupurjain@chromium.org + sammiequon@chromium.org + + The amount of time between endings of overview mode sessions which were + caused by the user selecting a window which was not previously active. Only + recorded on the second and later times after startup that the user selected + a window which was not previously active. + + + + + nupurjain@chromium.org + sammiequon@chromium.org + + The amount of time between uses of overview mode, recorded when overview + mode is entered. Only recorded on the second and later times after startup + that the user entered overview mode. + + + + + nupurjain@chromium.org + sammiequon@chromium.org + + The amount of time spent in overview mode. Overview mode is engaged by + pressing the overview accelerator, overview button tray or swiping up from + the shelf in tablet mode. The time is measured from the moment the windows + begin animating to a thumbnail size preview to when a window is selected or + selection is canceled. Recorded when an overview session is exited, before + the exit animation starts. + + + + + + + xdai@chromium.org + chromeos-wm-corexp@google.com + Presentation time for dragging a window in overview mode. + + + + + + xdai@chromium.org + chromeos-wm-corexp@google.com + + Maximum latency of the presentation time for dragging a window in overview + mode. + + + + + xdai@chromium.org + chromeos-wmp@google.com + + Recorded when a drag from overview (not from the top or shelf) is completed, + and when an overview item is closed by vertically swiping or flinging (even + if you fling without dragging). + + + + + jimmyxgong@chromium.org + jthies@chromium.org + cros-peripherals@google.com + + The connectivity results of when the user plugs in a Thunderbolt/USB4 + peripheral to their Chrome OS device. This is recorded for only devices that + support Thunderbolt/USB4 connectivity. Gets recorded every time a + Thunderbolt/USB4 peripheral is plugged in. This histogram is based off of + the obsolete Ash.PciePeripheral.ConnectivityResults histogram and also + includes invalid cable detection from the Chrome OS type-c daemon. + + + + + minch@chromium.org + sammiequon@chromium.org + yunchengs@google.com + chromeos-wm-corexp@google.com + + The number of windows restored in multi-display scenario, such as due to + disconnecting and reconnecting display, enabling and disabling mirror mode, + entering and leaving dock mode. Zero is not recorded. + + + + + minch@chromium.org + sammiequon@chromium.org + yunchengs@google.com + chromeos-wm-corexp@google.com + + Emits the number of windows bounds restored when rotating the screen back to + the previous screen orientation. Zero is not recorded. + + + + + cowmoo@google.com + assistive-eng@google.com + + Emitted when a request to load ambient mode google photos albums preview + images completes, but only upon first page load. This roughly corresponds to + user perceived time it takes to load the ambient preview section of + Personalization App. Does not emit if a user opens Personalization App onto + a page that does not load google photos albums previews. Does not emit + unless the user already has ambient mode enabled and Google Photos selected + as the source upon first opening Personalization App. + + + + + jasontt@chromium.org + assistive-eng@google.com + + Emitted when a user selects an animation theme in screensaver subpage. + + + + + jasontt@chromium.org + assistive-eng@google.com + + Emitted when a user presses the `Turn on` button on ambient preview to + enable screen saver. + + + + + ericamlee@google.com + assistive-eng@google.com + + Emitted when a user clicks a button to choose a color scheme for dynamic + color in personalization hub. + + + + + ericamlee@google.com + assistive-eng@google.com + + Emitted when a user clicks a static color button for dynamic color in + personalization hub. + + + + + ericamlee@google.com + assistive-eng@google.com + + Emitted when a user clicks the toggle button to enable or disable dynamic + color in personalization hub. + + + + + thuongphan@chromium.org + assistive-eng@google.com + + Records which entry point is used to access Personalization Hub. Emitted + every time Personalization hub is accessed. + + + + + jasontt@chromium.org + assistive-eng@google.com + + Emitted when a user selects a keyboard backlight color in personalization + hub. + + + + + jasontt@chromium.org + assistive-eng@google.com + + Records the keyboard backlight color that the user has settled on. Emitted + once for every UMA upload. + + + + + thuongphan@chromium.org + assistive-eng@google.com + + Records the display type of keyboard backlight color that the user has + settled on. Emitted once for every UMA upload. + + + + + thuongphan@chromium.org + assistive-eng@google.com + + Emitted every time the user selects 'Customize' button to open zone + customization dialog to view or set zone colors, even when no zone color + changed. + + + + + jasontt@chromium.org + assistive-eng@google.com + + Emitted when the keyboard backlight is updated to a new wallpaper extracted + color. Non transparent colors are considered valid. + + + + + thuongphan@chromium.org + assistive-eng@google.com + + Records the keyboard backlight color for zone {ZoneIdx} that the user has + settled on. Emitted once for every UMA upload if the user currently uses + customized zone colors for keyboard backlight. + + + + + + + + + + + + jasontt@chromium.org + assistive-eng@google.com + + Emitted when a user navigates to a valid path in personalization hub. + + + + + jasontt@chromium.org + assistive-eng@google.com + + Emitted when a user selects a theme button in personalization hub. + + + + + takise@chromium.org + linben@chromium.org + How long Android PIP was used for, upon ending the session. + + + + takise@chromium.org + linben@chromium.org + + Various individiual Picture-in-picture related events. See AshPipEvents. + + + + + hongyulong@chromium.org + nupurjain@google.com + + Record the battery level when a charger is connected and the battery status + is from discharging to charging. + + + + + hongyulong@chromium.org + nupurjain@google.com + + Record the battery level when a charger is unplugged and the battery status + is from charging to discharging. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Animation smoothness of the privacy indicators view animation. This occurs + when an app is accessing camera/microphone or screen sharing and a green + indicator appears on the status area button. Measured via a throughtput + tracker. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Record the type of the app that change the status of camera/microphone + access. Emitted when there is any change in the status of camera/microphone + access. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Record the type of the app that associate with the privacy indicators + notification whose settings button is clicked. Emitted when the user click + on the settings button of that notification. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Record the number of apps that access the camera at the same time. Emitted + when there are one or more apps accessing the camera. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Record the number of apps that access the microphone at the same time. + Emitted when there are one or more apps accessing the microphone. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Record the number of times that the privacy indicator repeatedly shows per + 100ms. Emitted when the sequence of consecutive shows in the privacy + indicator has finished. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Record the number of times that the tray indicator shows in the tray per + session. Emitted when there is a change in user session. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Record the type of privacy indicators shown. Emitted when the privacy + indicators view is shown in the status tray. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Record the source that use privacy indicators. Emitted when there's a client + calling into the function that updates the privacy indicators. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Animation smoothness of the privacy indicators {Icon} fade in animation. + This occurs when an app is accessing camera/microphone or screen sharing and + a green indicator appears on the status area button. + + + + + + + + + + tobyhuang@chromium.org + cros-projector@google.com + + Tracks how the user progresses through the creation flow in + {TabletOrClamshell}, recorded each time the user starts or ends a screencast + recording. + + + + + + tobyhuang@chromium.org + cros-projector@google.com + + Tracks the most common errors during the screencast recording creation + process in {TabletOrClamshell}, recorded each time an error occurs. + + + + + + tobyhuang@chromium.org + yilkal@chromium.org + llin@chromium.org + cros-projector@google.com + + Recorded whenever the user chooses a marker color on the Projector toolbar + in {TabletOrClamshell}. This metric records when the user changes the color + or when the annotator toggles on, to record the saved last used color. + + + + + + xiqiruan@chromium.org + yilkal@chromium.org + cros-projector@google.com + + Records the fallback reason of using server based speech recognition instead + of on device speech recogniton. This metric is recorded on server based + speech recognition in projector session. + + + + + xiqiruan@chromium.org + cros-projector@google.com + + Tracks the processing time of batch pending screencast files validation on + IO thread. Recorded each time when IO task finishes. + + + + + xiqiruan@chromium.org + cros-projector@google.com + + Tracks the interval between UI updates during screencast uploading. Recorded + at each pending screencast's UI change except for the first one of current + uploading phase. + + + + + llin@chromium.org + cros-projector@google.com + + Records the nullptr error that potentially caused a crash when handling + policy changes. + + + + + yilkal@chromium.org + cros-projector@google.com + + For a recognition session happening at {Location}, this histogram records + the recognition status at the end of the session. + + + + + + tobyhuang@chromium.org + yilkal@chromium.org + llin@chromium.org + cros-projector@google.com + + Recorded whenever the user opens, closes, or presses a button the Projector + toolbar in {TabletOrClamshell}. + + + + + + tobyhuang@chromium.org + cros-projector@google.com + + Tracks the number of transcripts generated during a recording in + {TabletOrClamshell}, recorded each time the metadata file saved successfully + after a recording ends. + + + + + + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded when any button in the quick settings view is activated. + + + + + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded when an action is done on any FeaturePod in the quick settings + view. {FeaturePodBehavior} can be a toggle to enable the feature, toggle to + disable this feature, going to the feature's detailed page, or making the + button visible. + + + + + + + + + + + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded when an action is done on any slider in the quick settings view or + in the slider bubble. {SliderBehavior} can be changing the value or toggling + to enable the feature. + + + + + + + + + + + kradtke@chromium.org + cros-status-area-eng@google.com + + Records time user spent in Quick Settings opened through the Status Area + button. Starts measuring time whenever the QS bubble is opened, and records + metric when the QS bubble is closed. + + + + + jiamingc@google.com + cros-status-area-eng@google.com + + The number of feature pods (e.g. WiFi, Bluetooth, IME, Accessibility, etc.) + in the system tray quick settings when it is opened, including pods that + overflow to other pages. This metric is logged by 2 different types of + {DeviceMode}: "Clamshell" and "Tablet". This metric gets + recorded for both the new quick settings view and the old unified system + view, see + "Ash.UnifiedSystemView.{DeviceMode}.FeaturePodCountOnOpen" which + is the metric for the old view. + + + + + + + + + xiyuan@chromium.org + chromeos-perfmetrics-eng@google.com + + Relative smoothness of animations when rotating screen. 100% represents + ideally smooth 60 frames per second. 50% represents only 30 frames per + second is achieved during the animations. 0% should not happen. This metric + is recorded exactly once when the user rotates the screen. + + + + + andrewxu@chromium.org + + The outcome of drive file suggestion data validation. Recorded once per + validation. + + + + + yulunwu@google.com + tbarzic@google.com + + Records the time interval between user-initiated search model updates after + the user starts a search query. Used to record how quickly users update the + search model in {TabletOrClamshell} after the first keystroke. + + + + + + yulunwu@google.com + tbarzic@google.com + tby@google.com + + Records whether search result animation times were shorted for recent search + result update animation preemptions. Recorded when productivity launcher + search containers' results change while result containers are still + animating. + + + + + xiqiruan@chromium.org + yilkal@chromium.org + cros-projector@google.com + + Records the length of remaining un-transcribed audio when the audio capture + stops. + + + + + xiqiruan@chromium.org + yilkal@chromium.org + cros-projector@google.com + + Records the time user needs to wait to get the final speech recognition + result after audio capture stops. + + + + + xiqiruan@chromium.org + yilkal@chromium.org + cros-projector@google.com + + Records the network error or HTTP response code of server based speech + recognition request when an an error occurred. + + + + + anasalazar@chromium.org + mmourgos@google.com + + Tracks the number of menu items that are enabled in a shelf item's secondary + menu. This metric is only recorded when a menu item is selected. + + + + + anasalazar@chromium.org + mmourgos@google.com + + Tracks the index of the selected menu item in a shelf item's secondary menu. + This metric is only recorded when a menu item is selected. + + + + + tbarzic@chromium.org + gzadina@google.com + + The reason shelf navigation buttons are shown in tablet mode. The buttons + are shown when the device is in tablet mode only if certain accessibility + settings are enabled. This histogram records which accessibility setting + caused the buttons to be shown. Shown when navigation buttons visibility + changes in tablet mode, and only if HideShelfControlsInTabletMode feature is + enabled. + + + + + anasalazar@chromium.org + mmourgos@google.com + + The number of icons in the shelf, not including the App Launcher icon. This + metric is recorded every 30 minutes. + + + + + anasalazar@chromium.org + mmourgos@google.com + + The number of pinned icons in the shelf, not including the App Launcher + icon. This metric is recorded every 30 minutes. + + + + + anasalazar@chromium.org + mmourgos@google.com + + The number of unpinned icons in the shelf. This metric is recorded every 30 + minutes. + + + + + + Deprecated in M111. No longer needed since metalayer was deprecated in M110. + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + The percentage of the screen area circled by the Assistant pen. Recorded + when the "closed shape" gesture is recognized. + + + + + + Deprecated in M111. + + angelaxiao@chromium.org + assistive-eng@google.com + + Whether or not the user is shown the limitation toast notifying that the + Assistant stylus features (i.e. what's on my screen) have been deprecated. + Also considers whether or not the deprecation flag has been set. Recorded + upon every stylus long press action. + + + + + + Deprecated in M111. No longer needed since metalayer was deprecated in M110. + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + The duration of an Assistant pen gesture. Recorded at the end of every + gesture. + + + + + + Deprecated in M111. No longer needed since metalayer was deprecated in M110. + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + The interval between subsequent Assistant pen gestures within a session. + Session is defined as the period while the Assistant tool is enabled. + Recorded at the end of each gesture except for the first one in the session. + The interval is computed excluding the gesture duration. + + + + + + Deprecated in M111. No longer needed since metalayer was deprecated in M110. + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + The number of Assistant pen gestures per session. Session is defined as the + period while the Assistant tool is enabled. Recorded at the end of the + session. + + + + + + Deprecated in M111. No longer needed since metalayer was deprecated in M110. + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + The number of recognized Assistant pen gestures per session. Session is + defined as the period while the Assistant tool is enabled. Recorded at the + end of the session. + + + + + + Deprecated in M111. No longer needed since metalayer was deprecated in M110. + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + The type of the Assistant pen gesture. Recorded at the end of each gesture. + + + + + + Deprecated in M111. No longer needed since metalayer was deprecated in M110. + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + The length of a recognized "horizontal stroke" Assistant pen + gesture. Recorded at the and of the gesture. + + + + + + Kept to view historical data. + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + The amount of time spent in Palette Assistant mode. Recorded when the + Assistant mode is exited. + + + + + + Kept to view historical data. + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + The amount of time spend in Palette Laser pointer mode. Recorded when the + Laser pointer mode is exited. + + + + + + Kept to view historical data. + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + The amount of time spend in Palette Magnify mode. Recorded when the Magnify + mode is exited. + + + + + + Kept to view historical data. + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + Tracks the number of times a palette mode is explicitly cancelled or + switched out of. + + + + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + Recorded every time that the palette option has been selected from the + palette that has been opened manually (not via a stylus eject event). + + + + + + Kept to view historical data. + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + Recorded every time that the palette option has been selected from the + palette that has been opened automatically (by a stylus eject event). + + + + + + Kept to view historical data. + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + Recorded every time that the palette option has been selected by means other + that the palette menu (e.g. stylus barrel button or a keyboard accelerator). + + + + + sherrilin@google.com + cros-lurs@google.com + + Track actions on the shutdown confirmation bubble, if it's opened, dismissed + or which buttons are clicked. + + + + + sherrilin@google.com + cros-lurs@google.com + + Track time delta between a bubble opened and an action taken on the shutdown + confirmation bubble. + + + + + + + + + + sherrilin@google.com + cros-lurs@google.com + + Emitted at device start-up if a shut-down was previously initiated from the + shelf shutdown button. In other words this metric is only recorded if a + shelf shutdown button was pressed and the device was powered up again soon + after that. + + + + + tbuckley@chromium.org + + Tracks the amount of time between a window being minimized by the shelf and + subsequently activated. In other words this metric is only recorded if a + shelf button pressed action causes a window to be minimized and the very + next shelf button pressed action causes the same window to be activated. + + + + + + + kuscher@google.com + tbarzic@chromium.org + + The current state of the shelf (alignment) when the shelf launcher is used + to launch an app/window/etc, this is used instead of log in to give data on + users that do not lock/unlock or log in frequently. + + + + + andrewxu@chromium.org + newcomer@chromium.org + + Relative smoothness of animations of the shelf icons. 100% represents + ideally smooth 60 frames per second. Recorded when shelf icon animations are + completed, including icon move, icon fade-in and icon fade-out. + {ShelfIconAnimationType} + + + + + + + + + + + xiyuan@chromium.org + chromeos-perfmetrics-eng@google.com + + Tracks the percent of dropped frames in a 1 second sliding window. + + PercentDroppedFrames is measured by tracking the number of frames which were + not displayed on screen out of the total number of frames expected to be + produced and displayed. In other words, the lower this number is, the + smoother experience. + + The ".InSession" covers the time of 1 minute beyond into user + sessions. The 1 minute timeline is picked based on + "Ash.Login.TimeUntilGoodADF" histogram, where about 93-94% user + sessions fall under the 1 minute bar. + + The metric is reported {Stage}. + + + + + + + + + + This metric is reported on every dropped frame instead of every frame. It is + deprecated in favor of Ash.Smoothness.PercentDroppedFrames_1sWindow2. + + xiyuan@chromium.org + chromeos-perfmetrics-eng@google.com + + Tracks the percent of dropped frames in a 1 second sliding window. + + PercentDroppedFrames is measured by tracking the number of frames which were + not displayed on screen out of the total number of frames expected to be + produced and displayed. In other words, the lower this number is, the + smoother experience. + + The metric is reported {Stage}. + + + + + + + + + + + + yilkal@chromium.org + cros-projector@google.com + + The length of the speech recognition session happening on {Location}. This + histogram records the length at the end of the session. + + + + + + zxdan@chromium.org + afakhry@chromium.org + nupurjain@chromium.org + fanafan@chromium.org + + Emitted at entry to split view mode and each time the orientation or the + device mode changes to report whether the device is in clamshell mode or + tablet mode and whether the orientation is landscape or portrait. + + + + + + + + + xdai@chromium.org + zxdan@chromium.org + nupurjain@chromium.org + fanafan@chromium.org + + Emitted at the entry point of split view mode, to report the device + orientation is in landscape mode (left and right) or portrait mode (top and + bottom). + + + + + xdai@chromium.org + zxdan@chromium.org + nupurjain@chromium.org + fanafan@chromium.org + + Emitted at the entry point of split view mode, to report the device is in + clamshell mode or tablet mode. + + + + + xdai@chromium.org + zxdan@chromium.org + nupurjain@chromium.org + fanafan@chromium.org + + Emitted when device orientation changes in split view, to report the device + orientation is in landscape mode (left and right) or portrait mode (top and + bottom). + + + + + xdai@chromium.org + zxdan@chromium.org + nupurjain@chromium.org + fanafan@chromium.org + + Emitted at the end of split view mode to report the number of resizing + window operations in split view mode session for both clamshell and tablet + mode. + + + + + + + + + xdai@chromium.org + zxdan@chromium.org + nupurjain@chromium.org + fanafan@chromium.org + + Emitted at the end of split view mode to report the number of swap window + operations in split view mode session. + + + + + michelefan@chromium.org + xdai@chromium.org + + Recorded whenever two windows in split view are swapped. The recorded enum + indicates where the swap operation is triggered, which can either be from + double tap or swap button on the snap group expanded menu. + + + + + xdai@chromium.org + chromeos-wmp@google.com + + The amount of time that the user spent in multi-display split view mode, + meaning that split view is active on more than one display. The time is + measured from when the number of displays in split view becomes more than + one to when it drops back down to one. + + + + + xdai@chromium.org + nupurjain@chromim.org + fanafan@chromium.org + + The amount of time that the user spent in split view mode. The time is + measured from the moment a window is snapped to one side of the screen to + when split view mode is ended. + + + + + xdai@chromium.org + zxdan@chromium.org + nupurjain@chromium.org + fanafan@chromium.org + + Emitted at the end of split view mode or the point of switching between + clamshell mode and tablet mode in split view, to report the engagement time + of general split view and multi-display split view in both clamshell mode + and tablet mode. + + + + + + + + + + + + + sammiequon@chromium.org + xdai@chromium.org + + Relative smoothness of animation when releasing the split view divider, + recorded when the animation completes. 100% represents ideally smooth 60 + frames per second. + + + + + xdai@chromium.org + omrilio@chromium.org + oshima@chromium.org + chromeos-perfmetrics-eng@google.com + + Maximum latency of the presentation time while resizing one or two split + view windows. {SplitViewResizeModes} + + + + + + xdai@chromium.org + omrilio@chromium.org + oshima@chromium.org + chromeos-perfmetrics-eng@google.com + + Presentation time while resizing one or two split view windows. + {SplitViewResizeModes} + + + + + + + Deprecated Mar 2023 because of the b:273278497. The data logged under this + histogram is meaningless. Check Ash.StateKeysPresent2 for new data. + + igorcov@chromium.org + vsavu@google.com + + The presense of state keys on first device policy fetch response. It is + expected for state keys to be present. The histogram is logged only in case + of successful device policy fetch response. Warning: This histogram was + expired from 2022-07-03 to 2022-07-05; data may be missing. + + + + + igorcov@chromium.org + vsavu@google.com + + The presense of state keys on first device policy fetch response. It is + expected for state keys to be present. The histogram is logged only in case + of successful device policy fetch response. This is replacing the old + Ash.StateKeysPresent histogram because a bug made that data useless. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Relative smoothness of the bounce in animation of tray background view. 100% + represents ideally smooth 60 frames per second. Emitted when animation is + completed (when the shelf pod/tray background view is completely bounced in + and shown the tray). + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Relative smoothness of the fade in animation of tray background view. 100% + represents ideally smooth 60 frames per second. Emitted when animation is + completed (when the shelf pod/tray background view is completely faded in + and shown the tray). + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Relative smoothness of the fade in animation of tray background view. 100% + represents ideally smooth 60 frames per second. Emitted when animation is + completed (when the shelf pod/tray background view is completely hidden in + the tray). + + + + + newcomer@chromium.org + cros-status-area-eng@google.com + + Logged when: Hidden: a TrayBackgroundView's preferred visibility is set to + false. Shown: a TrayBackgroundView's preferred visibility is set to true. + Pressed: Logged when a TrayBackgroundView is activated, either showing a + bubble or handling a custom action. The metric is expired from 2023-01-19 to + 2023-03-15, so it's possible some data is dropped during that time. + + + + + + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Relative smoothness of the hide animation of tray item view. 100% represents + ideally smooth 60 frames per second. Emitted when animation is completed + (when the tray item is completely hidden in the tray). + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Relative smoothness of the show animation of tray item view. 100% represents + ideally smooth 60 frames per second. Emitted when animation is completed + (when the tray item is completely shown in the tray). + + + + + leandre@chromium.org + amehfooz@chromium.org + tbarzic@chromium.org + + Presentation time while opening QuickSettings and Notification Center + through Status Area button. Emitted when QuickSettings and Notification + Center are opened and shown. + + + + + xdai@chromium.org + omrilio@chromium.org + + Maximum latency of the presentation timestamp while dragging a tab in tablet + mode. + + + + + xdai@chromium.org + omrilio@chromium.org + Presentation time while dragging a tab in tablet mode. + + + + xdai@chromium.org + omrilio@chromium.org + + Maximum latency of the presentation timestamp while dragging maximized + window in tablet mode. + + + + + xdai@chromium.org + omrilio@chromium.org + + Presentation time while dragging maximized window in tablet mode. + + + + + andrewxu@chromium.org + tbarzic@chromium.org + + Boolean indicating whether a swipe from hotseat on home screen resulted in a + transition to overview. + + + + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + The height of the system menu divided by the height of the Ash desktop work + area; a value over 100% indicates that a portion of the system menu is not + visible to the user. Recorded each time the menu is opened. + + + + + amehfooz@chromium.org + cros-status-area@google.com + gzadina@chromium.org + + The number of user-visible rows in the system menu's default view. Recorded + each time the menu is opened. + + + + + + + yichenz@chromium.org + chromeos-wmp@google.com + + Presentation time in ms when a tab is dragged. In clamshell mode, each time + a tab is dragged within a display, the time it takes to present the new + frame on screen is recorded. In tablet mode (with webui tab strip enable), + dragging between displays is precluded, thus each time a tab is dragged, the + time it takes to present the new frame to screen is recorded. + + + + + + + yichenz@chromium.org + chromeos-wmp@google.com + + Maximum presentation time recorded during a tab dragging session in both + clamshell and tablet mode. + + + + + oshima@chromium.org + sammiequon@chromium.org + + Relative smoothness of animations when entering tablet mode, recorded when + the animation completes. 100% represents ideally smooth 60 frames per + second. + + + + + oshima@chromium.org + sammiequon@chromium.org + + Relative smoothness of animations when exiting tablet mode, recorded when + the animation completes. 100% represents ideally smooth 60 frames per + second. + + + + + nupurjain@chromium.org + tbuckley@google.com + + The number of seconds between contiguous task switch user actions triggered + by any of the other task switch actions that are tracked. (e.g., + Ash.Tab.TimeBetweenSwitchToExistingTabUserActions, + Ash.WindowCycleController.TimeBetweenTaskSwitches, + Ash.AppList.TimeBetweenTaskSwitches, + Ash.Overview.TimeBetweenActiveWindowChanges, etc). Note the + Ash.AppList.TimeBetweenTaskSwitches and + Ash.Tab.TimeBetweenSwitchToExistingTabUserActions histograms were deprecated + and removed in 10/2016. Note that + Ash.Overview.TimeBetweenActiveWindowChanges was renamed from + Ash.WindowSelector.TimeBetweenActiveWindowChanges on 04/2021. + + + + + kuscher@google.com + rbyers@chromium.org + The distance between touch-move events. + + + + kuscher@google.com + + The interval between the end of a touch-sequence and the start of the next + touch-sequence. + + + + + oshima@chromium.org + + Chrome OS only. The computed angle between the lid and the keyboard panel. + These values are imprecise and may be tens of degrees off from reality. + Reported once per hour that the system is awake, and not reported if the + system doesn't have two accelerometers. + + + + + girard@chromium.org + + The length of time that TouchView is active, for each activation. + + + + + girard@chromium.org + The proportion of time spent in TouchView during a session. + + + + girard@chromium.org + The total time that TouchView is active during a session. + + + + girard@chromium.org + The length of time between TouchView activations. + + + + girard@chromium.org + + The total time that TouchView is not active during a session. + + + + + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded when any button in the old quick settings view is activated. + + + + + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded when an action is done on any FeaturePod in the old quick settings + view. {FeaturePodBehavior} can be a toggle to enable the feature, toggle to + disable this feature, going to the feature's detailed page, or making the + button visible. + + + + + + + + + + + jiamingc@google.com + cros-status-area-eng@google.com + + Recorded when an action is done on any slider in the old quick settings view + or in the slider bubble. {SliderBehavior} can be changing the value or + toggling to enable the feature. + + + + + + + + + + + jiamingc@google.com + cros-status-area-eng@google.com + + The number of feature pods (e.g. WiFi, Bluetooth, IME, Accessibility, etc.) + in the old system tray quick settings when it is opened, including pods that + overflow to other pages. This metric is logged by 2 different types of + {DeviceMode}: "Clamshell" and "Tablet". This metric gets + recorded for both the new quick settings view and the old unified system + view, see "Ash.QuickSettings.{DeviceMode}.FeaturePodCountOnOpen" + which is the metric for the new quick settings view. + + + + + + + + + oshima@chromium.org + chromeos-wmp@google.com + + + + The duration of how long it took to finish all animations applied during the + login process, from the time the first animation is added, to the time the + last animation is finished. + + + + + oshima@chromium.org + chromeos-wmp@google.com + + + + Jank metrics of all animations applied during the unlock process. This + represents how often the frame update rate changed during animation. + + + + + oshima@chromium.org + chromeos-wmp@google.com + + + + Relative smoothness of all animations applied during the unlock process. + 100% represents the ideal smoothness for 60 frames per second. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + Records the size of the entire profile data directory. Collected upon + launching ash chrome. + + + + + ythjkt@chromium.org + hidehiko@chromium.org + + Records the size of each file/dir directly under user data directory. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + angelaxiao@google.com + updowndota@google.com + + Emitted when loading default user images from gstatic resources. Records + whether an image download attempt was successful or not. + + + + + leandre@google.com + cros-status-area-eng@google.com + + Records the background blur state that users want to switch to when they + choose a different value for background blur effect in the tab slider of the + video conference panel. + + + + + leandre@google.com + cros-status-area-eng@google.com + + Recorded when the stop screen share button in video conference tray is + clicked. + + + + + leandre@google.com + cros-status-area-eng@google.com + + Recorded when the toggle bubble button in video conference tray is clicked + to open/close the bubble. + + + + + leandre@google.com + cros-status-area-eng@google.com + + Recorded when the {Device} mute button in video conference tray is clicked. + We will record if the user clicks the button to mute or to un-mute the + {Device}. + + + + + + + + + leandre@google.com + cros-status-area-eng@google.com + + Recorded when the toggle button of {EffectName} in the video conference + bubble is clicked. We will record if the user clicks the button to enable or + disable the effect. + + + + + + + + + + + jasontt@chromium.org + assistive-eng@google.com + + The wallpaper collection of the selected online wallpaper. Recorded each + time the online wallpaper image is selected, but not when wallpaper is + automatically refreshed. + + + + + xiaohuic@chromium.org + assistive-eng@chromium.org + + The custom wallpaper layout type. Recorded when the user sets a new custom + wallpaper or changes the existing custom wallpaper's layout. + + + + + thuongphan@google.com + cowmoo@google.com + assistive-eng@google.com + + Records the refresh count for the request of the Google Photos API which + {Api} with a valid refresh token. The count increases each time a user + scrolls down to the end of the page to fetch more photos or albums from the + Google Photos API. Emitted only at the end of a session. + + + + + + xiaohuic@google.com + assistive-eng@google.com + + Records the response time for the {Result} request to the Google Photos API + which {Api}. Emitted only on {Result} parsing of the API response at the + moment parsing is completed. + + + + + + + + + + xiaohuic@google.com + assistive-eng@google.com + + Records the result for the request to the Google Photos API which {Api}. + Emitted for both failed and successful parsing of the API request at the + moment parsing is completed. + + + + + + xiaohuic@google.com + assistive-eng@google.com + + Records the result count for the response of the Google Photos API which + {Api}. Emitted only on successful parsing of the API response at the moment + parsing is completed. + + + + + + + Replaced 01/2023 by Ash.Wallpaper.GooglePhotos.Source2. + + xiaohuic@google.com + assistive-eng@google.com + + Records the section of the Wallpaper App from which a Google Photos + wallpaper was selected. Emitted regardless of the selection's success. + b/262449270: Adds new enums to record when a user picks a photo from owned + or shared albums with the Google Photos shared albums feature. + + + + + thuongphan@google.com + cowmoo@google.com + assistive-eng@google.com + + Records the section of the Wallpaper App from which a Google Photos + wallpaper was selected. Emitted regardless of the selection's success. + + + + + jasontt@chromium.org + assistive-eng@google.com + + The selected online wallpaper. Recorded each time the online wallpaper image + is selected, but not when wallpaper is automatically refreshed. + + + + + jasontt@chromium.org + assistive-eng@google.com + + Tracks the preview mode usage for wallpaper. Recorded each time the + wallpaper image is previewed. + + + + + thuongphan@chromium.org + assistive-eng@google.com + + Recorded when a user attempts to set a wallpaper, either by the built-in + Wallpaper App, or by a third party App. Note the wallpaper change triggered + by Sync file system event doesn't count. + + + + + kuscher@google.com + assistive-eng@google.com + + The wallpaper type. Recorded at user login. + + This metric expired in April 2022 and was revived in August 2022. Data + between these times is incomplete. + + + + + sammiequon@chromium.org + wutao@chromium.org + + Relative smoothness of cross fade animation when setting window bounds. 100% + represents ideally smooth 60 frames per second. 50% represents when only 30 + frames per second is achieved during the animations. 0% should not happen. + This metric is recorded exactly once when SetBoundsDirectCrossFade is + called, such as when window is maximized. + + + + + sammiequon@chromium.org + xdai@chromium.org + + When dragging a maximized window, the window will shrink to restore bounds. + Dragging the window back to the top of the screen will expand the window. + This histogram is fired only if the window is initially maximized. If we + drag a normal window to maximized state, the animation smoothness will be + recorded in the regular cross fade histogram above. This histogram will be + recorded to measure the smoothenss of the expand animation. 100% represents + ideally smooth 60 frames per second. 50% represents when only 30 frames per + second is achieved during the animations. 0% should not happen. + + + + + sammiequon@chromium.org + xdai@chromium.org + + When dragging a maximized window, the window will shrink to restore bounds. + This histogram is fired everytime we drag a maximized window to normal + state. This histogram will be recorded to measure the smoothness of the + shrink animation. 100% represents ideally smooth 60 frames per second. 50% + represents when only 30 frames per second is achieved during the animations. + 0% should not happen. + + + + + sammiequon@chromium.org + tclaiborne@chromium.org + + Relative smoothness of hiding window animation. 100% represents ideally + smooth 60 frames per second. 50% represents when only 30 frames per second + is achieved during the animations. 0% should not happen. This metric is + recorded exactly once when AnimateHideWindowCommon is called, such as when + window is closed. + + + + + oshima@chromium.org + sammiequon@chromium.org + chromeos-perfmetrics-eng@google.com + + Relative smoothness of minimizing window animation. 100% represents ideally + smooth 60 frames per second. 50% represents when only 30 frames per second + is achieved during the animations. 0% should not happen. This metric is + recorded exactly once when AnimateHideWindow_Minimize is called, such as + when window is minimized. + + + + + oshima@chromium.org + sammiequon@chromium.org + + Relative smoothness of snapping window animation. 100% represents ideally + smooth 60 frames per second. 50% represents when only 30 frames per second + is achieved during the animations. 0% should not happen. This metric is + recorded exactly once when a window is snapped to the left or right in + clamshell mode using the alt + [ or ] accelerator, but only if the size of + the window's bounds change. + + + + + oshima@chromium.org + sammiequon@chromium.org + chromeos-perfmetrics-eng@google.com + + Relative smoothness of unminimizing window animation. 100% represents + ideally smooth 60 frames per second. 50% represents when only 30 frames per + second is achieved during the animations. 0% should not happen. This metric + is recorded exactly once when AnimateShowWindow_Minimize is called, such as + when window is unminimized. + + + + + conniekxu@chromium.org + xdai@chromium.org + nupurjain@chromium.org + + Emitted when a window state is being destroyed. Records number of + mis-triggers of the drag to maximize behavior for a window during its + lifetime. + + + + + conniekxu@chromium.org + xdai@chromium.org + nupurjain@chromium.org + + This boolean keeps tracking if a drag to maximize behavior is valid or not. + Emits true if a window is dragged to maximized and stays maximized status + over 5 seconds. If a window is dragged to maximized, but gets restored + during 5 seconds, the drag to maximize behavior should be considered as + invalid and a mis-trigger. + + + + + nupurjain@chromium.org + sophiewen@chromium.org + + The amount of time a user keeps a partial split window open and visible. + Starts recording when a user partial splits through the multitask menu, or + activates a desk that contains a partial window. Ends recording when the + window is closed, changes window state, is snapped/dragged/resized to a + non-partial snap ratio, gets moved to an inactive desk, or a different desk + is activated. + + + + + cattalyya@chromium.org + afakhry@chromium.org + nupurjain@chromium.org + fanafan@chromium.org + + Emitted when the user snaps the window to record whether window snap is used + while the display orientation is portrait or landscape mode. + + + + + afakhry@chromium.org + tclaiborne@chromium.org + + Emitted when the user ends window cycling via Alt-Tab, if and only if user + had 2 or more desks and a new window was activated, to report the distance + between the active desks before and after window cycling. A distance of 0 + means no desks switch occurred. + + + + + afakhry@chromium.org + xdai@chromium.org + tclaiborne@chromium.org + + Emitted when the user starts Alt-Tab, if and only if user had 2 or more + desks and Bento is not disabled, to report the initial alt-tab mode, which + signals user's saved and preferred mode. + + + + + sammiequon@chromium.org + tclaiborne@chromium.org + xdai@chromium.org + + The number of windows in the Alt+Tab selector. Only recorded once when + cycling starts, not every time when Tab is pressed without releasing Alt. + + + + + afakhry@chromium.org + xdai@chromium.org + tclaiborne@chromium.org + + Emitted when the user switches the Alt-Tab mode, if and only if user had 2 + or more desks and Bento is not disabled, to report whether the user switches + the mode via a click or keyboard. + + + + + andp@chromium.org + benbecker@chromium.org + nupurjain@chromium.org + + Emitted when same app window cycling ends, if and only if user had 2 or more + desks and Bento is not disabled, to report the same-desk vs all-desk mode + selection. + + + + + andp@chromium.org + benbecker@chromium.org + nupurjain@chromium.org + + Emits true when a same-app cycling session is started and false when a + normal cycling session is started. + + + + + andp@chromium.org + benbecker@chromium.org + nupurjain@chromium.org + + The number of windows the user didn't have to tab through because they were + using Alt-Backtick instead of Alt-Tab. Recorded as the number of + non-same-app windows in the ending MRU list between the starting and chosen + window in the initial cycling direction. + + + + + afakhry@chromium.org + xdai@chromium.org + tclaiborne@chromium.org + + Emitted when the user switches the Alt-Tab mode from a click or keyboard, if + and only if user had 2 or more desks and Bento is not disabled, to report + the alt-tab mode the user switches to. + + + + + sammiequon@chromium.org + tclaiborne@chromium.org + xdai@chromium.org + + The number of seconds between task switches triggered by the next window and + previous window accelerator keys (ie Alt+Tab, Alt+Shift+Tab). + + + + + yichenz@chromium.org + chromeos-wmp@google.com + + Relative smoothness of showing window animation when the window cycle view + moves the next window into position when alt + tab is pressed. 100% + represents ideally smooth 60 frames per second. 50% represents when only 30 + frames per second is achieved during the animations. 0% should not happen. + + Warning: this histogram was expired from 2022-04-10 to 2023-02-22; data may + be missing. + + + + + yichenz@chromium.org + chromeos-wmp@google.com + + Relative smoothness of showing window animation when the window cycle view + starts. 100% represents ideally smooth 60 frames per second. 50% represents + when only 30 frames per second is achieved during the animations. 0% should + not happen. + + Warning: this histogram was expired from 2022-04-10 to 2023-02-22; data may + be missing. + + + + + andrewxu@chromium.org + tbarzic@chromium.org + + The final state after window drag gesture that started from the system shelf + in tablet mode. + + + + + antrim@chromium.org + cros-lurs@google.com + + How long it took for the screen lock process to complete. This does not + include timeouts. Warning: this histogram was expired from M78 till M104. + + + + + antrim@chromium.org + cros-lurs@google.com + + How long it took for the screen lock process to complete, for timeouts only. + Warning: this histogram was expired from M78 till M104. + + + + + michelefan@chromium.org + xdai@chromium.org + + Emits true if the resize widget is clicked to start the resizing while in + mulit-window resizing mode. + + + + + michelefan@chromium.org + xdai@chromium.org + + Emits true if the resize widget is clicked to start the resizing while in + mulit-window resizing mode. + + + + + michelefan@chromium.org + xdai@chromium.org + + Emits true if the resize widget shows on mouse hover on the ResizeWindows. + + + + + michelefan@chromium.org + xdai@chromium.org + + Emits true if the resize widget shows on mouse hover on the ResizeWindows + and the two windows of the ResizeWindows are snapped. + + + + + xdai@chromium.org + nupurjain@chromium.org + + Emitted when a window is to be snapped. Records different ways for a user to + snap a window. + + + + + + diff --git a/histograms/metadata/ash_clipboard/OWNERS b/histograms/metadata/ash_clipboard/OWNERS new file mode 100644 index 000000000000..e596635697a1 --- /dev/null +++ b/histograms/metadata/ash_clipboard/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +ckincaid@chromium.org +dmblack@google.com diff --git a/histograms/metadata/ash_clipboard/histograms.xml b/histograms/metadata/ash_clipboard/histograms.xml new file mode 100644 index 000000000000..fa393bb8da1b --- /dev/null +++ b/histograms/metadata/ash_clipboard/histograms.xml @@ -0,0 +1,345 @@ + + + + + + + + + + ckincaid@chromium.org + multipaste@google.com + + The number of consecutive copies in the user session. Recorded when a paste + occurs. + + Warning: This histogram was expired from 2021-09-01 to 2022-01-05; data may + be missing. + + + + + ckincaid@chromium.org + multipaste@google.com + + The number of consecutive pastes in the user session. Includes pastes from + clipboard history. Recorded when a copy occurs. + + + + + ckincaid@chromium.org + multipaste@google.com + + The number of consecutive pastes from the clipboard history menu in the user + session. Recorded at the time of a copy or a paste that is not through the + clipboard history menu, such as pressing Ctrl+V or using a context menu's + Paste option. + + Warning: This histogram was expired from 2022-01-02 to 2022-01-05; data may + be missing. + + + + + ckincaid@chromium.org + multipaste@google.com + + The data format of an item deleted from the clipboard history menu. Recorded + when the user deletes an item. + + Note: Prior to M112, this histogram erroneously recorded two samples when an + item was deleted by clicking the delete button. Deleting an item using the + Backspace key correctly recorded one sample. + + + + + ckincaid@chromium.org + multipaste@google.com + + The data format of an item pasted from the clipboard history menu. Recorded + when the user pastes an item. + + Note: Prior to M112, this histogram erroneously recorded samples only when + an item was pasted by clicking or pressing Enter with an item selected. + Other methods of pasting, such as toggling the menu closed or using the + virtual keyboard, were not counted at all. + + + + + ckincaid@chromium.org + multipaste@google.com + + The data format of an item shown in the clipboard history menu. Recorded + when the item's view is created. + + + + + ckincaid@chromium.org + multipaste@google.com + + The index of a clipboard history menu item selected by the user. Recorded + when the item is selected. + + + + + ckincaid@chromium.org + multipaste@google.com + + The number of items shown in the clipboard history menu. Recorded each time + the menu is shown. + + + + + ckincaid@chromium.org + multipaste@google.com + + The way a user made the clipboard history menu show. Recorded each time the + menu is shown. + + + + + ckincaid@chromium.org + multipaste@google.com + + The length of time between the user opening the clipboard history menu and + the menu closing. Recorded every time the clipboard history menu is closed, + regardless of whether the user selected one of the menu's options. + + + + + + Replaced by version 2 in 10/22. This histogram can be deleted when M109 + reaches stable. + + ckincaid@chromium.org + multipaste@google.com + + The time between a user's Ctrl key press and the user's V key press when + pasting via keyboard. Recorded when V is pressed. Only recorded for the + first V press in a sequence. Sample scenario: User holds Ctrl, waits 200ms, + presses V (histogram entry recorded), and presses V again without releasing + Ctrl (no histogram entry recorded). + + + + + ckincaid@chromium.org + multipaste@google.com + + The time between a user's Ctrl key press and the user's V key press when + pasting via keyboard. Recorded when V is pressed. Only recorded for the + first V press in a sequence. Sample scenario: User holds Ctrl, waits 200ms, + presses V (histogram entry recorded), and presses V again without releasing + Ctrl (no histogram entry recorded). + + Note: Version 1 of this histogram incorrectly recorded the Ctrl pressed time + in some cases such that it seemed closer to the V pressed time than it + really was. This histogram's entries are more accurate. + + + + + ckincaid@chromium.org + multipaste@google.com + + The time between a user's V key press in a Ctrl+V sequence and the end of + the paste. Recorded when Ctrl is released, V is released, or a different key + is pressed. + + + + + ckincaid@chromium.org + multipaste@google.com + + The lifetime of a request created by the clipboard image model factory. This + factory reuses one request object for disinct logical requests until no new + rendering requests are issued for some period of time, at which point the + request object is deemed idle and destroyed. Recorded when a request object + is destroyed, either because it was idle or the system is shutting down. + + + + + ckincaid@chromium.org + multipaste@google.com + + The delay between the issue time of a request to render a clipboard history + item preview and the request's completion time. Recorded when a rendering + request finishes. + + + + + ckincaid@chromium.org + multipaste@google.com + + The end result of a request to render an image preview for the clipboard + history menu. Recorded when a request finishes, whether successful or not. + + + + + ckincaid@chromium.org + multipaste@google.com + + The number of times the clipboard history {NudgeType} has been shown. + Recorded when the {NudgeType} is shown. + + This histogram can be used in conjunction with the ToFeatureOpen and + ToFeaturePaste histograms to understand a nudge's efficacy in getting users + to engage with the feature. + + + + + + + + + + + Replaced by version 2 in January 2023. This histogram can be deleted once + the new version has enough stable channel data. + + ckincaid@chromium.org + multipaste@google.com + + The delay between the user being shown the clipboard history {NudgeType} and + the user's {Action} action. Recorded at the time of the {Action}. + + + + + + + + + + + + + + ckincaid@chromium.org + multipaste@google.com + + The delay between the user being shown the clipboard history {NudgeType} and + the user's {Action} action. Recorded at the time of the {Action}. + + Note: Version 1 of this histogram counted opening the clipboard history menu + via context menu as an "open" action. However, the nudges suggest + opening clipboard history via accelerator; they do not mention a context + menu option. This histogram only records opens that the nudge may have + actually led to. + + + + + + + + + + + + + + ckincaid@chromium.org + multipaste@google.com + + An operation such as a copy or paste detected by clipboard history. Recorded + after any duplicate clipboard operations are debounced in clipboard history. + + The total number of copies and pastes in this histogram differ from the + Clipboard.Write and Clipboard.Read histograms, respectively, because + clipboard history debounces operations before emitting to this histogram. As + a result, clipboard history avoids recording programmatic clipboard reads + and writes that do not correspond to user actions. + + Warning: This histogram was expired from 2022-01-02 to 2022-01-05; data may + be missing. + + + + + ckincaid@chromium.org + multipaste@google.com + + The way a user made the clipboard history menu show before selecting an item + from that menu to paste. Recorded when an item is pasted from clipboard + history. + + + + + ckincaid@chromium.org + multipaste@google.com + + The type (plain vs. rich text) and input source of a clipboard history + paste. Recorded when an item is pasted from clipboard history. + + + + + ckincaid@chromium.org + multipaste@google.com + + The operation (copy or paste) initiating a clipboard history reorder. + Recorded each time the clipboard history list is reordered. + + + + + + diff --git a/histograms/metadata/assistant/OWNERS b/histograms/metadata/assistant/OWNERS new file mode 100644 index 000000000000..8961bd822a3d --- /dev/null +++ b/histograms/metadata/assistant/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +xiaohuic@chromium.org diff --git a/histograms/metadata/assistant/histograms.xml b/histograms/metadata/assistant/histograms.xml new file mode 100644 index 000000000000..842782677d71 --- /dev/null +++ b/histograms/metadata/assistant/histograms.xml @@ -0,0 +1,299 @@ + + + + + + + + + + + + + + + + + xiaohuic@chromium.org + croissant-eng@chromium.org + + The number of times Assistant better onboarding buttons are clicked. + + + + + xiaohuic@chromium.org + croissant-eng@chromium.org + + The number of times buttons on Assistant UI (e.g., minimize) are clicked. + + + + + updowndota@chromium.org + xiaohuic@chromium.org + + Among eligible users, whether the user has the Assistant context (related + info) enabled. Recorded once for every UMA upload. The set of eligible users + includes all users with profiles that can allow Assistant service to be + enabled (AssistantAllowedState is limited by locale, policy, etc). + + + + + xiaohuic@chromium.org + croissant-eng@chromium.org + + Counts the number of times Dsp hotword gets detected in each status, to help + capture the hotword false acceptance rate. + + + + + xiaohuic@chromium.org + croissant-eng@chromium.org + + Record the Assistant entry point where Assistant UI becomes visible. + ChromeOS only. + + + + + xiaohuic@chromium.org + croissant-eng@chromium.org + + Record the Assistant exit point where Assistant UI becomes invisible. + ChromeOS only. + + + + + updowndota@chromium.org + croissant-eng@chromium.org + + Counts the number of times user click the hotword enable notification to + open Assistant settings. + + + + + xiaohuic@chromium.org + croissant-eng@chromium.org + + Record the Assistant interaction resolution code. It indicates how the + Assistant server interpreted a particular query and decision on the state, + e.g. if the conversation is normal or timed out or ended with other errors. + + + + + wutao@chromium.org + assistive-eng@google.com + + The result of an attempt to install the libassistant DLC package. Emitted + when the Assistant service installs the DLC. + + + + + wutao@chromium.org + assistive-eng@google.com + + Records if the libassistant DLC is loaded successfully. Emitted when the + libassistant service initializes. + + + + + updowndota@chromium.org + croissant-eng@chromium.org + + Amount of time between get settings request and response. The request will + be sent for each time the Assistant OptIn Flow is triggered to get string + texts from the server. + + + + + updowndota@chromium.org + croissant-eng@chromium.org + + Number of times that the loading timeout triggers. The loading timeout is + set by the Assistant OptIn Flow loading screen, which shows up during the + server string texts and webviews are pending. + + + + + updowndota@chromium.org + croissant-eng@chromium.org + Record the status of the Assistant opt-in flow. + + + + xiaohuic@chromium.org + croissant-eng@chromium.org + Number of queries fired for each entry point. + + + + xiaohuic@chromium.org + croissant-eng@chromium.org + The Assistant query response type. + + + + xiaohuic@chromium.org + croissant-eng@chromium.org + + The source of Assistant query (e.g. dialog plate text field, voice input). + Recorded when the query is committed. + + + + + xiaohuic@chromium.org + croissant-eng@chromium.org + + Among eligible users, whether the user has the Assistant service enabled. + Recorded once for every UMA upload. The set of eligible users includes all + users with profiles that can allow Assistant service to be enabled + (AssistantAllowedState is limited by locale, policy, etc). + + + + + xiaohuic@chromium.org + assistive-eng@google.com + + Amount of time between when the Assistant service is launched, and when the + Assistant back-end signals it is ready to process queries. + + + + + updowndota@chromium.org + xiaohuic@chromium.org + assistive-eng@google.com + Amount of time spent in starting Assistant service. + + + + wutao@chromium.org + assistive-eng@google.com + + Records the number of Assistant manager service in each state, to help + capture the service failure rate. Recorded when the service state changes. + + + + + xiaohuic@chromium.org + croissant-eng@chromium.org + + For each attempt to set the hotword locale for a DSP device, counts whether + the attempt succeeded. + + + + + basiaz@google.com + chrome-language@google.com + + (Android only) Reports the current Agsa version on the device. The version + is reported as described in GSAState#parseAgsaMajorMinorVersionAsInteger. + + This is reported {Timing}. + + + + + + basiaz@google.com + chrome-language@google.com + + (Android only) Reports the outcome of the consent dialog shown for the + assistant. + + + + + basiaz@google.com + chrome-language@google.com + + (Android only) Reports why users failed the eligibility check for the + feature. + + Before M90, this histogram only reported the FailureReason which failed the + eligibility check. If a client failed for multiple reasons, some would be + ignored. + + From M90 onwards, this will report all FailureReasons that effect + eligibility. + + This is reported {Timing}. + + + + + + basiaz@google.com + chrome-language@google.com + + (Android only) Reports user eligibility for Assistant voice search. This is + reported even when the feature is disabled. + + This is reported {Timing}. + + + + + + + diff --git a/histograms/metadata/auth/histograms.xml b/histograms/metadata/auth/histograms.xml new file mode 100644 index 000000000000..3cafdd052ce5 --- /dev/null +++ b/histograms/metadata/auth/histograms.xml @@ -0,0 +1,316 @@ + + + + + + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Result from an attempt to authenticate a user to an Active Directory domain. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + Result from automatic background machine password renewal. + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Result from automatic background ticket-granting-ticket renewal. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Result of an attempt to get an Active Directory user's Kerberos + ticket-granting-ticket and configuration data. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Result of an attempt to get the status of an Active Directory user's + Kerberos ticket, password and account. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Result from an attempt to join a machine to an Active Directory domain. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Result from an attempt to fetch device policy from an Active Directory + domain and store it on disk. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Result from an attempt to fetch user policy from an Active Directory domain + and store it on disk. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Number of times 'kinit' failed until the next try succeeded or the method + gave up because a maximum number of tries was exceeded. 'kinit' is run for + Active Directory enrolled devices during user authentication and device + policy fetch. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Number of times 'smbclient' failed until it the next try succeeded or the + method gave up because a maximum number of tries was exceeded. 'smbclient' + is run for Active Directory enrolled devices during policy fetch. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + The Kerberos encryption types used while succesfully authenticating an user. + This value comes from the DeviceKerberosEncryptionTypes policy. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + The Kerberos encryption types used while succesfully joining an Active + Directory domain. This value comes from the advanced settings of the + domainjoin screen. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Number of group policy objects attached to a specific user or machine on an + Active Directory domain. This value is recorded when user or device policy + is fetched from an Active Directory server. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Time in milliseconds to authenticate a user to an Active Directory domain. + The value is recorded no matter if the operation was successful or not. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Time in milliseconds to get the Kerberos ticket-granting-ticket and + configuration data of an Active Directory user. The value is recorded no + matter if the operation was successful or not. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Time in milliseconds to get status information of an Active Directory user. + The value is recorded no matter if the operation was successful or not. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Time in milliseconds to join a machine to an Active Directory domain. Domain + join is part of the Active Directory enrollment process. The value is + recorded no matter if the operation was successful or not. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Time in milliseconds to fetch device policy from an Active Directory domain + and store it on disk. The value is recorded no matter if the operation was + successful or not. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Time in milliseconds to fetch user policy from an Active Directory domain + and store it on disk. The value is recorded no matter if the operation was + successful or not. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Time in milliseconds to call 'kinit' (request Kerberos ticket-granting- + ticket). TGTs are requested regularly for accessing services on Active + Directory domains. The value is recorded no matter if the operation was + successful or not. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Time in milliseconds to call 'klist' (print Kerberos ticket-granting-ticket + information). The command reveals a TGT's lifetime, which is used to + determine TGT status in GetUserStatus() called periodically by Chrome. The + value is recorded no matter if the operation was successful or not. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Time in milliseconds to call 'kpasswd' (change Active Directory password). + The command is used to change the machine account password. By default, it + is run every 30 days by the AuthPolicy daemon. The value is recorded no + matter if the operation was successful or not. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Time in milliseconds to call 'net ads gpo list' (list Active Directory group + policy objects). The value is recorded no matter if the operation was + successful or not. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Time in milliseconds to call 'net ads info' (query Active Directory + information). The value is recorded no matter if the operation was + successful or not. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Time in milliseconds to call 'net ads join' (join machine to an Active + Directory domain). The value is recorded no matter if the operation was + successful or not. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Time in milliseconds to call 'net ads search' (query information about an + Active Directory account). The value is recorded no matter if the operation + was successful or not. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Time in milliseconds to call 'net ads workgroup' (query Active Directory + workgroup). The value is recorded no matter if the operation was successful + or not. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + Time in milliseconds to call 'smbclient' (download policy from an Active + Directory domain). The value is recorded no matter if the operation was + successful or not. + + + + + + diff --git a/histograms/metadata/auto/OWNERS b/histograms/metadata/auto/OWNERS new file mode 100644 index 000000000000..e94d94072d92 --- /dev/null +++ b/histograms/metadata/auto/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +tby@chromium.org diff --git a/histograms/metadata/auto/histograms.xml b/histograms/metadata/auto/histograms.xml new file mode 100644 index 000000000000..bbea620c2f53 --- /dev/null +++ b/histograms/metadata/auto/histograms.xml @@ -0,0 +1,500 @@ + + + + + + + + + + + + + + + thanhdng@chromium.org + tby@chromium.org + + When user changes brightness manually, we will ask the model whether it also + thinks brightness should be changed. This enum states the reason why the + model also thinks brightness should be changed. Chrome OS only. + + + + + + + thanhdng@chromium.org + tby@chromium.org + + When user changes brightness manually, we will ask the model whether it also + thinks brightness should be changed. We also log the number of model + iterations if we've set to use personal curve only. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + When user changes brightness manually, we will ask the model whether it also + thinks brightness should be changed. This enum states the reason why the + model doesn't think brightness should be changed. Chrome OS only. + + + + + + + thanhdng@chromium.org + tby@chromium.org + + When user changes brightness manually, we will ask the model whether it also + thinks brightness should be changed. We also log the als-stddev in its + averaging period. This metric records the als-stddev when the associated + als-delta is unknown. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + When user changes brightness manually, we will ask the model whether it also + thinks brightness should be changed. We also log the als-delta from the + previous log-lux (when brightness was last changed) to the current log-lux, + which includes both the sign of the als-delta and its absolute value. Chrome + OS only. {AlsBrightnessDirection} + + + + + + + + thanhdng@chromium.org + tby@chromium.org + + When user changes brightness manually, we will ask the model whether it also + thinks brightness should be changed. We also log the als-stddev in its + averaging period. We log it separately for the case when the associated + als-delta is positive and negative. Chrome OS only. {AlsBrightnessDirection} + + + + + + + + thanhdng@chromium.org + tby@chromium.org + + Whether the ALS is enabled or the error otherwise. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + Reason for the model to change brightness. Chrome OS only. + + + + thanhdng@chromium.org + tby@chromium.org + + The time between two consecutive auto brightness changes. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + Number of model iterations when brightness is changed by a personal curve. + Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + Whether the brightness monitor is enabled or the error otherwise. Chrome OS + only. + + + + + thanhdng@chromium.org + tby@chromium.org + + Number of times that a user has made brightness adjustments on an Atlas + device with an ambient sensor that is supported by the auto screen + brightness model. Reported daily. The count is accumulated through the day, + spanning reboots, and sent once the system clock indicates that a full day + or more has passed since the last report. If the system is suspended or off + for more than a day, the current count will be reported immediately the next + time the system boots, but the skipped days will not be reported. Chrome OS + only. + + + + + thanhdng@chromium.org + tby@chromium.org + + Number of times that a user has made brightness adjustments on an Eve device + with an ambient sensor that is supported by the auto screen brightness + model. Reported daily. The count is accumulated through the day, spanning + reboots, and sent once the system clock indicates that a full day or more + has passed since the last report. If the system is suspended or off for more + than a day, the current count will be reported immediately the next time the + system boots, but the skipped days will not be reported. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + Number of times that a user has made brightness adjustments on a Kohaku + device with an ambient sensor that is supported by the auto screen + brightness model. Reported daily. The count is accumulated through the day, + spanning reboots, and sent once the system clock indicates that a full day + or more has passed since the last report. If the system is suspended or off + for more than a day, the current count will be reported immediately the next + time the system boots, but the skipped days will not be reported. Chrome OS + only. + + + + + thanhdng@chromium.org + tby@chromium.org + + Number of times that a user has made brightness adjustments on a device + without an ambient sensor. Reported daily. The count is accumulated through + the day, spanning reboots, and sent once the system clock indicates that a + full day or more has passed since the last report. If the system is + suspended or off for more than a day, the current count will be reported + immediately the next time the system boots, but the skipped days will not be + reported. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + Number of times that a user has made brightness adjustments on a Nocturne + device with an ambient sensor that is supported by the auto screen + brightness model. Reported daily. The count is accumulated through the day, + spanning reboots, and sent once the system clock indicates that a full day + or more has passed since the last report. If the system is suspended or off + for more than a day, the current count will be reported immediately the next + time the system boots, but the skipped days will not be reported. Chrome OS + only. + + + + + thanhdng@chromium.org + tby@chromium.org + + Number of times that a user has made brightness adjustments on a device with + an ambient sensor that is supported by the auto screen brightness model. + Reported daily. The count is accumulated through the day, spanning reboots, + and sent once the system clock indicates that a full day or more has passed + since the last report. If the system is suspended or off for more than a + day, the current count will be reported immediately the next time the system + boots, but the skipped days will not be reported. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + Number of times that a user has made brightness adjustments on a device with + an ambient sensor that is not supported by the auto screen brightness model. + Reported daily. The count is accumulated through the day, spanning reboots, + and sent once the system clock indicates that a full day or more has passed + since the last report. If the system is suspended or off for more than a + day, the current count will be reported immediately the next time the system + boots, but the skipped days will not be reported. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + Type of error seen when handling data related to automatic screen brightness + adjustments. Only reported on Chrome OS. + + + + + thanhdng@chromium.org + tby@chromium.org + + The elapsed time from a model brightness adjustment to the next user manual + brightness change. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + Whether the global curve is reset at initialization. + + + + thanhdng@chromium.org + tby@chromium.org + + A monotone cubic spline curve may be invalid from input that used to + generate it. This metric records why it's invalid. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + Whether there was no recorded ALS reading when brightness was changed. + + + + + thanhdng@chromium.org + tby@chromium.org + + Under the current implementation of brightness monitor, user brightness + request should be received before brightness change signal. Adapter operates + under this assumption. This metric logs an error if a brightness change + signal is received without a prior brightness request signal. Chrome OS + only. + + + + + thanhdng@chromium.org + napper@chromium.org + tby@chromium.org + + Personal model iteration count when modeller is initialized. Chrome OS only. + + + + + thanhdng@chromium.org + napper@chromium.org + tby@chromium.org + Status of the model loading from disk. Chrome OS only. + + + + thanhdng@chromium.org + tby@chromium.org + + Whether a new brightness exceeds the preset bound that defines reasonble + range of change. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + Whether a training data is an outlier and should be discarded by the model + during training. Chrome OS only. + + + + + thanhdng@chromium.org + napper@chromium.org + tby@chromium.org + + When training data comes in, the model may or may not be updated. We measure + the error of the model as compared with the target value from training data. + This metric measures the error when model is not updated. Chrome OS only. + + + + + thanhdng@chromium.org + napper@chromium.org + tby@chromium.org + + When training data comes in, the model may or may not be updated. We measure + the error of the model as compared with the target value from training data. + This metric measures the error when model is updated. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + Whether user brightness change is consistent with the model so that model is + not updated. + + + + + thanhdng@chromium.org + tby@chromium.org + + The time elapsed between training start and a new curve saved to disk. Only + reported if a new curve was created and saved successfully to disk. Chrome + OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + Whether a new curve was successfully saved to disk. Only reported if a new + curve was created during the training process. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + When user changes brightness manually, if the previous change was caused by + the model, then we log bucketized absolute brightness changes of the two + adjustments. This metric records changes if they are in the opposite + directions. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + When there is an error in the automatic screen brightness parameters, this + records which kind of parameter is invalid. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + Whether the user's personal brightness curve is valid. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + When user changes brightness manually, if the previous change was caused by + the model, then we log bucketized absolute brightness changes of the two + adjustments. This metric records changes if they are in the same direction. + Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + The time elapsed to complete training after which a new curve was generated. + Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + The time elapsed to complete training after which no new curve was + generated. Chrome OS only. + + + + + thanhdng@chromium.org + tby@chromium.org + + How user manual screen brightness adjustment changes the model. Chrome OS + only. + + + + + + diff --git a/histograms/metadata/autofill/OWNERS b/histograms/metadata/autofill/OWNERS new file mode 100644 index 000000000000..7eadb9181512 --- /dev/null +++ b/histograms/metadata/autofill/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +jsaul@google.com # Autofill (Payments org) +vidhanj@google.com +vsemeniuk@google.com # Passwords diff --git a/histograms/metadata/autofill/histograms.xml b/histograms/metadata/autofill/histograms.xml new file mode 100644 index 000000000000..51c22a953273 --- /dev/null +++ b/histograms/metadata/autofill/histograms.xml @@ -0,0 +1,5521 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + battre@chromium.org + chrome-autofill-team@google.com + + Logged when users select Autocomplete entries in the dropdown, this + histogram captures the number of days that have passed since the selected + autocomplete entry was last submitted on a website. I.e., the distribution + of time between uses of an "active" autocomplete entry. + + + + + battre@chromium.org + chrome-autofill-team@google.com + + Autocomplete events which are recorded when the user interacts with + suggestions served from Autocomplete. + + + + + + This is for an ablation study that we may want to reactivate at some points + in the future. + + battre@chromium.org + chrome-autofill-team@google.com + + Records for time from the first change to an input element (typed or + autofilled) on any form of a frame to a form submission. Note that the + change could even happen to a different form on the page than the one + submitted. + + + + + + + + This is for an ablation study that we may want to reactivate at some points + in the future. + + battre@chromium.org + chrome-autofill-team@google.com + + Records whether after changing the value of an input element (typed or + autofilled) in a frame, any form on that page is submitted. + + + + + + + koerber@google.com + chrome-autofill-alerts@google.com + + Logs if the filling of a field was accepted even though it had a + NUMERIC_QUANTITY prediction. This metric is only emitted if the feature to + grant the heuristic precedence is disabled. Emitted on submission time. + + + + + jsaul@google.com + chrome-autofill-alerts@google.com + + Tracks whether Profile (Address) Autofill is enabled on page load for a page + containing forms. + + + + + jsaul@google.com + chrome-autofill-alerts@google.com + + Tracks whether Profile (Address) Autofill is enabled when Chrome launches. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The number of unverified autofill addresses deleted because they have not + been used for a long time, and are not used as billing addresses of valid + credit cards. Note the deletion only happens once per major version upgrade. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The number of address suggestions not shown in the Autofill popup because + they have not been used recently enough. Note that suppression only applies + when the user has not typed any text into the field. If any text is in the + field, all matching addresses are displayed, regardless of how recently they + have been used. + + + + + koerber@google.com + battre@chromium.org + + Each country can require different fields (ZIP code, state, city) to exist + for an address to be valid. This histogram logs which mandatory fields were + missing in a submitted address form. + + + + + koerber@google.com + battre@chromium.org + + Logs whether the individual requirements for importing an address profile + are met at form submission time. + + + + + koerber@google.com + battre@chromium.org + + Logs the overall status of a profile import attempt on form submission time. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The number of address suggestions shown in the Autofill popup. + + + + + koerber@google.com + chrome-autofill-alerts@google.com + + For each {AddressType} in a given AutofillProfile, the verification status + of the corresponding non-empty type is recorded when a profile is used to + fill a form. + + + + + + + + + + + + + + + schwering@google.com + chrome-autofill-alerts@google.com + + Records at submission time for each autofilled field with autocomplete != + off whether the user edited the autofilled field value or not. + {AutofillFormType} + + + + + + + + schwering@google.com + chrome-autofill-alerts@google.com + + Records at submission time for each autofilled field with autocomplete != + off whether the user edited the autofilled field value or not. + {AutofillFormType} + + + + + + + + schwering@google.com + chrome-autofill-alerts@google.com + + Records for each submitted form whether the user accepted the suggestion to + fill values and the triggering field has autocomplete != off. This is + counted as 'yes' if the user accepted such a suggestion at any time, + regardless whether other suggestions were ignored or whether the accepted + suggestion was reverted afterwards. {AutofillFormType} + + + + + + schwering@google.com + chrome-autofill-alerts@google.com + + Records at submission time for each autofilled field with autocomplete = off + whether the user edited the autofilled field value or not. + {AutofillFormType} + + + + + + + + schwering@google.com + chrome-autofill-alerts@google.com + + Records at submission time for each autofilled field with autocomplete = off + whether the user edited the autofilled field value or not. + {AutofillFormType} + + + + + + + + schwering@google.com + chrome-autofill-alerts@google.com + + Records for each submitted form whether the user accepted the suggestion to + fill values and the triggering field has autocomplete = off. This is counted + as 'yes' if the user accepted such a suggestion at any time, regardless + whether other suggestions were ignored or whether the accepted suggestion + was reverted afterwards. {AutofillFormType} + + + + + + koerber@google.com + fleimgruber@google.com + chrome-autofill-team@google.com + + Records a pair of (PredictionState, AutocompleteState) for each field in a + submitted form. PredictionState indicates if server and/or heuristic type + prediction were available. AutocompleteState indicates if the autocomplete + attribute was present and whether it was valid. Emitted on form submission. + + + + + koerber@google.com + fleimgruber@google.com + chrome-autofill-team@google.com + + Records the heuristic type of each field with autocomplete=garbage in a + submitted form. Emitted on form submission. + + + + + koerber@google.com + fleimgruber@google.com + chrome-autofill-team@google.com + + Records the server type of each field with autocomplete=garbage in a + submitted form. Emitted on form submission. + + + + + koerber@google.com + fleimgruber@google.com + chrome-autofill-team@google.com + + Records the server type of each field with autocomplete=garbage in a + submitted form. If no server type is available, the heuristics type is + logged instead. Emitted on form submission. + + + + + koerber@google.com + fleimgruber@google.com + chrome-autofill-team@google.com + + Records the PredictionType of each field in a submitted form, depending on + the field's AutocompleteState. Emitted on form submission. + + + + + + + + + + + + + + + + jkeitel@google.com + chrome-autofill-team@google.com + + Records how a user removed a single Autocomplete entry (i.e. via the + keyboard or via a delete button in the Autofill popup). Emitted on + Autocomplete entry deletion. + + + + + jihadghanna@google.com + chrome-autofill-alerts@google.com + + Records for each autofilled field where {PredictionType} predictions yielded + {FieldType}, what was the corresponding autocomplete value. + + + + + + + + + + + + + + + battre@chromium.org + chrome-autofill-team@google.com + Whether an autocomplete query is created for a field. + + + + battre@chromium.org + chrome-autofill-team@google.com + Whether there is any suggestions for an autocomplete query. + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + Tracks the time it takes to fetch the full PAN of a credit card once user + successfully authenticates using WebAuthn. + + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + Tracks the time it takes to fetch the full PAN of a credit card once user + successfully authenticates using WebAuthn. + + + + + + + + Deprecated in M111. Subsumed by + Autofill.BetterAuth.CardUnmaskPreflightCalledWithFidoOptInStatus. + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + Tracks the number of times Chrome made a GetDetailsForGetRealPan call. A + preflight call is only made when card suggestions are shown, and can only + happen when the user has server cards and is eligible for WebAuthn. + + As a percentage of the number of times card suggestions are shown, which is + tracked under Autofill.FormEvents.CreditCard, this metric provides an + estimate for the potential reach for the Autofill Better Auth project. + Moreover, this acts as a baseline value for other metrics in this project. + + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + The total count of this histogram tracks the number of times Chrome made a + preflight GetDetailsForGetRealPan call. A preflight call is only made when + card suggestions are shown, and can only happen when the user has server + cards and is eligible for WebAuthn. For every log in this histogram, it also + tracks whether the user is opted-in to WebAuthn or opted-out of WebAuthn. A + log of true indicates the user is opted-in, and a log of false indicates the + user is opted-out. + + As a percentage of the number of times card suggestions are shown, which is + tracked under Autofill.FormEvents.CreditCard, this metric provides an + estimate for the potential reach for the Autofill Better Auth project. + Moreover, this acts as a baseline value for other metrics in this project. + + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + Tracking the latency of a GetDetailsForGetRealPan call to Payments servers. + This duration should be comparable to that of Autofill.UnmaskPrompt.Duration + and should ideally stay under 500 ms in order for the user to autofill their + credit card without experiencing much friction. + + + + + vinnypersky@google.com + autofill-auth-team@google.com + + Logs the number of times that we initiate the card unmask preflight flow. + This will log both when the user is eligible for WebAuthn as well as when + the user is not eligible for WebAuthn, as it is logged before we check this + status. + + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + If the user is definitely opted-in to the new auth flow, Payments sends a + list of instrument IDs in the GDFGRP call, and Chrome makes the final call + on whether CVC or WebAuthn should be shown. Tracks which authentication + method was prompted. + + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + Tracks when a user completes each step in a card unmasking flow per + authentication flow type, with an additional breakdown for if it was a + server card or virtual card. + + + + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + Tracks when a user completes each step in a card unmasking flow per + authentication type. This will provide a relative conversion rate for each + authentication type. {AutofillCreditCardAuthenticationFlows} + + + + + + + + + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + Tracks when users opt-in either from the settings page or from a checkout + flow, making an UpdateAutofillUserPreference call. For each call to + payments, logs if the call was made in order to verify an existing + credential, to create a new credential, or to fetch a challenge. + {AutofillCreditCardWebauthnOptInOrigin} + + + + + + vinnypersky@google.com + shgar@google.com + + Records when the Better Auth (FIDO) opt-in promo could have been offered on + Desktop, but wasn't. Logged at the time of the promo not being shown. This + metric can only be logged from the checkout flow, as we do not block opting + in to FIDO from the settings page. It logs the enum reason of what caused + the promo to not be shown. + + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + Logs the number of times the opt-in promo to use FIDO authentication for + card unmasking has been shown. Only applicable on Desktop. + + This is useful when compared to Autofill.BetterAuth.OptInPromoUserDecision, + to see what percentage of users are interacting with the dialog. Also, when + an opted-out user receives the preflight call before selecting a card (which + is recorded by the first bucket in + Autofill.BetterAuth.UserPerceivedLatencyOnCardSelection.OptedOut), then the + promo should eventually show if the user selects a masked card and + successfully authenticates through CVC. + {AutofillCreditCardWebauthnOptInOrigin} + + + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + Tracks the user response to the opt-in promo for using FIDO authentication + for card unmasking. The user can either accept the promo and proceed to + perform user-verification, can decline the promo immediately, or first + accept the promo but then decline while the challenge is being fetched. Only + applicable on Desktop. {AutofillCreditCardWebauthnOptInOrigin} + + + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + Tracks the number of times UpdateAutofillUserPreference has been called with + the intention of opting out from FIDO authentication using the toggle switch + on the payments section on the settings page. + + This will be useful when compared to values in + Autofill.BetterAuth.OptInCalled to give an idea of what percentage of users + decide to opt-out. + + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + The GetDetailsForGetRealPan call is made when card suggestions are shown. + This metric logs the duration of the perceived latency when the response for + this call is received after a card is chosen by an opted-in user. After + waiting a set number of seconds without receiving a response, Chrome will + fall back to CVC authentication. + + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + The GetDetailsForGetRealPan call is made when card suggestions are shown. If + an opted-in user selects a card before the response is returned, latency is + perceived. Given that the user perceives latency, this metric logs whether + the request timed out and fell back to CVC or if the request was completed + and continued to WebAuthn. + + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + The GetDetailsForGetRealPan call is made when card suggestions are shown. + This metric tracks whether the response is received before or after a card + is chosen by the user. For an opted-in user, a late response would imply + perceived latency. For an opted-out user, a late response would imply that + opt-in may not have been offered. {AutofillFidoAuthenticationEnabledState} + + + + + + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + Tracks how long it takes to check that the user is verifiable through + WebAuthn's IsUserVerifiablePlatformAuthenticatorAvailable() call. This check + is done before deciding to make a GetDetailsForGetRealPan call to Payments. + + + + + jsaul@google.com + siyua@chromium.org + autofill-auth-team@google.com + + This metric tracks the result of the WebAuthn prompt when the user attempts + to either opt-in for FIDO authentication or unmask a card using FIDO + authentication. {AutofillFidoUserVerificationFlow} + + + + + + + + + + + jsaul@google.com + siyua@chromium.org + payments-autofill-team@google.com + + Events tracking the usage of the cardholder name fix flow prompt. This + prompt is triggered whenever cardholder name must be explicitly requested + from the user in order to upload the card to Google Payments. + + + + + jsaul@google.com + siashah@chromium.org + longsheng@chromium.org + payments-autofill-team@google.com + + Records the initial state of the ScreenLockCheckBox. The ScreenLockCheckBox + is the checkbox shown to the user as part of the CardUnmaskPrompt. This + histogram will be logged only when the CardUnmaskPrompt is initialized. This + is only available on Android. + + + + + jsaul@google.com + siashah@chromium.org + longsheng@chromium.org + payments-autofill-team@google.com + + Records the check/uncheck action from users on the ScreenLockCheckBox. The + ScreenLockCheckBox is the checkbox shown to the user as part of the + CardUnmaskPrompt. This histogram will be updated whenever the user + clicks/unclicks the checkbox. This is only available on Android. + + + + + siyua@chromium.org + jsaul@google.com + siashah@chromium.org + + Records the result of the Card Unmask Authentication Selection Dialog, such + as user cancelation before/after selecting a challenge option, or automatic + dismissal after a server success/failure for a selected option was returned. + The metric is recorded any time the dialog is dismissed. + + + + + + Deprecated in M109. Subsumed by + Autofill.CardUnmaskAuthenticationSelectionDialog.Shown2. + + siyua@chromium.org + jsaul@google.com + siashah@chromium.org + + Records true every time the card unmask challenge option selection dialog + was shown. This dialog is shown when a user needs to select a challenge + option to authenticate a card for payments autofill. + + + + + siyua@chromium.org + jsaul@google.com + siashah@chromium.org + vinnypersky@google.com + + On every show of the card unmask challenge option selection dialog, this + histogram records a count (with a maximum of 10) for the number of challenge + options that were shown. This dialog is shown when a user needs to select a + challenge option to authenticate a card for payments autofill. + + + + + jsaul@google.com + siyua@chromium.org + payments-autofill-team@google.com + + Whether upload was offered upon detecting a form submission with credit card + data, a detailed reason if upload was offered even with some missing fields + and detailed reasons if it wasn't. + + + + + jsaul@google.com + aneeshali@google.com + + Detailed reasons why (or why not) card upload was enabled. When a user + submits a form, this check is triggered to decide whether to ask the user if + she wants to upload the card. + + + + + jsaul@google.com + chrome-autofill-alerts@google.com + + Tracks whether Credit Card Autofill is enabled on page load for a page + containing forms. + + + + + jsaul@google.com + chrome-autofill-alerts@google.com + + Tracks whether Credit Card Autofill is enabled when Chrome launches. + + + + + schwering@google.com + chrome-autofill-alerts@google.com + + Records for each credit card form the quality of the fill. + {AutofillSeamlessnessFillability} {AutofillSeamlessnessMeasurementTime} + {AutofillSeamlessnessVisibility} + + The fields in question are: cardholder name (full, or first and last), + credit card number, expiration date (MM/YY, MM/YYYY, MM and YY, or MM and + YYYY), and CVC. + + Each bucket represents a minimal set of fields that must be autofilled. + Lower numbers are better: + + Bucket 0 = name & number & exp. date & CVC = Full fill :-D + + Bucket 1 = number & exp. date & CVC = Optional name missing :-) + + Bucket 2 = name & number & exp. date = Optional CVC missing :-) + + Bucket 3 = number & exp. date = Optional name and CVC missing :-) + + Bucket 4 = name & number & CVC = Full fill but exp. date missing :-| + + Bucket 5 = all other scenarios = Partial fill :-( + + Any form that contains at least one credit card field counts as credit card + form. + + + + + + + + schwering@google.com + chrome-autofill-alerts@google.com + + Records for each credit card form the quality of the fill. + {AutofillSeamlessnessFillability} {AutofillSeamlessnessMeasurementTime} + {AutofillSeamlessnessVisibility} + + The emitted value is a non-zero bitmask whose bits have the following + meaning, from highest to lowest bit: + + Bit #4 is true iff a cardholder name was filled. + + Bit #3 is true iff a card number was filled. + + Bit #2 is true iff an expiraton date was filled. + + Bit #1 is true iff a CVC name was filled. + + + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + The latency between an Autofill credit card suggestion being shown, and when + it was selected, in milliseconds. Logged immediately when a card is selected + by the user if the card has an issuer id, and it is broken down by whether + the selected card has card metadata available. This is also broken down by + card issuer id. This helps identify whether showing the card metadata has + potential impact on latency for selecting a particular card. + + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + The latency between Autofill credit card suggestion dropdown being shown, + and when a suggestion was selected, in milliseconds. Logged immediately when + a card suggestion is selected by the user. Broken down by whether any card + (not necessarily the selected card) in the suggestion list has card metadata + available. This helps identify whether showing the card metadata has + potential impact on assisting card selection in general. + + + + + + + Deprecated 01/23 and replaced by + Autofill.CreditCard.SelectionLatencySinceShown.AnyCardWithMetadata.{CardMetadataVisible}. + + siyua@chromium.org + payments-autofill-team@google.com + + The latency between Autofill credit card suggestion dropdown being shown, + and when a suggestion was selected, in milliseconds. Logged immediately when + a card suggestion is selected by the user, on the condition that any card + (not necessarily the selected card) in the suggestion list has card metadata + available (even if the metadata is not shown). This helps identify whether + showing the card metadata has potential impact on assisting card selection + in general. + + + + + + vishwasuppoor@chromium.org + payments-autofill-team@google.com + + Emits true if a {CardIssuer}: + + 1. shown in Autofill suggestions had metadata + + 2. selected from Autofill suggestions had metadata + + Emits false if: + + 1. every {CardIssuer} shown in Autofill suggestions did not have metadata + + 2. a {CardIssuer} selected from Autofill suggestions did not have metadata + + Histograms without "Once" are logged every time Autofill + suggestions that are shown or selected have an issuer id. Histograms with + "Once" are logged once per page load. + + + + + + + + + + + + jsaul@google.com + battre@chromium.org + chrome-autofill-alerts@google.com + + The relative frequency with which users accept, deny, or ignore the Autofill + credit card assisted filling infobar prompt. + + + + + jsaul@google.com + battre@chromium.org + chrome-autofill-alerts@google.com + + The relative frequency with which users accept, deny, or ignore the Autofill + credit card info bar prompt. {AutofillCreditCardInfoBarSaveType} + + + + + + + + + + Deprecated 10/2022. Will not launch save card Message UI. + + lazzzis@google.com + jsaul@google.com + chrome-autofill-alerts@google.com + + The relative frequency with which users accept, deny, or ignore the Autofill + credit card message prompt when card is saved to server and users see the + dialog prompt followed by the Message UI. Message prompt is an alternative + UI to info bar prompt. + + + + + + + + + + + + + + + Deprecated 10/2022. Will not launch save card Message UI. + + lazzzis@google.com + jsaul@google.com + chrome-autofill-alerts@google.com + + The relative frequency with which users accept, deny, or ignore the Autofill + credit card message prompt when card is saved to {SaveDestination} and it is + {SaveSituation}. Message prompt is an alternative UI to info bar prompt. + + + + + + + + + + + + + + + + + jsaul@google.com + chrome-autofill-alerts@google.com + + The relative frequency with which users accept, deny, or ignore the Autofill + credit card prompt when card is saved to for a {SaveDestination} save, + {SaveSituation}. Note that this metric concerns the result of final save, + rather than the CTR of the prompt, and this metric should record when a + decision of whether card will be saved or not is made. + + + + + + + + + + + + + + battre@chromium.org + jsaul@google.com + chrome-autofill-alerts@google.com + + The number of credit card deleted during a major version upgrade because + they have not been used recently enough and are expired. + + + + + battre@chromium.org + jsaul@google.com + chrome-autofill-alerts@google.com + + The number of credit card suggestions not shown in the Autofill popup + because they have not been used recently enough and are expired. Note that + suppression only applies when the user has not typed any text into the + field. If any text is in the field, all matching cards are displayed, + regardless of how recently they have been used and their expiration status. + + + + + + Deprecated 11/22. The feature is not going to be launched. + + siyua@chromium.org + jsaul@google.com + + Records when credit card upload provides feedback on its status to the user. + + + + + vinnypersky@google.com + payments-autofill-team@google.com + + Emits true when a CVC authentication starts and does not emit any value + otherwise. Broken down into sub-histograms based on the type of the card, + for example virtual card or server card. + + + + + + vinnypersky@google.com + payments-autofill-team@google.com + + Logs the result of the OTP authentication, broken down into sub-histograms + by card type. The different possible results can be found in the + AutofillCvcAuthEvent enum, with the exception of any retriable failure, + which is logged in a separate histogram. This histogram is 1:1 with + Autofill.CvcAuth.{CardType}.Attempt + + + + + + vinnypersky@google.com + payments-autofill-team@google.com + + Logs any retryable failure that occurs during the CVC authentication flow. + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Logs the number of days that have passed since the credit card was last + used. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Logged at the time of autofill address use, this histogram captures the + number of days that have passed since the address was last used. I.e., the + distribution of time between uses of an "active" autofill address. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + + + Logs the number of days that have passed since each credit card belonging to + a given Chrome Profile was last used. This is logged for each Autofill + credit card once per Chrome User Profile load. + + + + + qihuizhao@google.com + jsaul@google.com + payments-autofill-team@google.com + + Logs the number of days that have passed since each IBAN belonging to a + given Chrome Profile was last used. This is logged for each Autofill IBAN + once per Chrome User Profile load. + + + + + + + Deprecated in M111. Subsumed by + Autofill.DaysSinceLastUse.StoredProfile.Legacy. + + battre@chromium.org + chrome-autofill-alerts@google.com + + This histogram captures the number of days that have passed since each + stored address profile belonging to a given Chrome Profile was last used. + This is logged for each Autofill address profile once per Chrome User + Profile load. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + This histogram captures the number of days that have passed since each + stored address profile belonging to a given Chrome Profile was last used. + This is logged for each Autofill address profile of the given category once + per Chrome User Profile load. + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Measures the adoption of the HTML autocomplete type hint specification (see + http://is.gd/whatwg_autocomplete for more details). For each fillable form + detected, logs whether that form includes author-specified type hints. + + + + + koerber@google.com + battre@google.com + + Total number of fields at submission time that were autofilled and have or + have not been editing by the user afterwards. + + + + + koerber@google.com + battre@google.com + + Total number of fields at submission time of a specific type that were + autofilled and have or have not been editing by the user afterwards. + + + + + koerber@google.com + battre@google.com + + On submission time, this metric tracks for every field that was autofilled + if the filling was accepted or subsequently corrected. This metric is + aggregated over all field types. + + + + + koerber@google.com + battre@google.com + + On submission time, this metric tracks for every field that was autofilled + if the filling was accepted or subsequently corrected. This metrics resolves + the field type. + + + + + siyua@chromium.org + siashah@chromium.org + jsaul@google.com + + Log when an autofill error dialog is shown to the user along with its type. + + + + + vinnypersky@google.com + siyua@chromium.org + payments-autofill-team@google.com + + Logs when an autofill error dialog is shown to the user with server returned + text, along with its type. + + + + + siashah@google.com + jsaul@google.com + payments-autofill-team@google.com + + Events tracking the usage of the expiration date fix flow prompt. This + prompt is triggered whenever expiration date must be explicitly requested + from the user in order to upload the card to Google Payments. + + + + + siashah@google.com + jsaul@google.com + payments-autofill-team@google.com + + The number of times the expiration date fix flow prompt is shown. + + + + + + The experiment has been launched in 04/2022. + + evih@google.com + schwering@google.com + chrome-autofill-alerts@google.com + + In UpdateFormCache(), we compare FormData structs to re-extract changed + ones. This metric records: + + - the number of times the shallow comparison is enough to identify a + difference between the forms; + + - the number of times the deep comparison finds a difference between the + forms, but the shallow does not; + + - the number of times none of the comparisons find a difference, i.e. the + forms are equal. + + The metric takes into account every comparison of FormData structs in + UpdateFormCache(). + + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + Cache state for when a given origin and form signature are checked for their + Fast Checkout trigger form capability. + + + + + vizcay@google.com + chrome-autofill-alerts@google.com + + The http response code or net error code returned on a query. + + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + Parsing result of the response body of a Fast Checkout capabilities fetch. + + + + + vizcay@google.com + chrome-autofill-alerts@google.com + + Response time for fetching FastCheckout capabilities. The time is recorded + for both successful and failed fetches. + + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + The outcome of a Fast Checkout run. It is recorded when a run is completed, + successfully or not, or when the run got cancelled, e.g. by the user closing + the tab. + + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + The outcome of an attempt to trigger a FastCheckout bottomsheet for a user + that has the feature enabled and a form on a site for which FastCheckout is + known to be available. + + + + + vidhanj@google.com + chrome-autofill-alerts@google.com + + Number of context menu impressions on fields by their autocomplete attribute + value. Recorded on the form submission. + + + + + vidhanj@google.com + chrome-autofill-alerts@google.com + + Number of context menu impressions on fields by their autofill type. + Recorded on the form submission. + + + + + kolos@chromium.org + battre@chromium.org + chrome-autofill-alerts@google.com + Number of fields in a form that Autofill encounters. + + + + koerber@google.com + chrome-autofill-alerts@google.com + + For {AutofillFormType} logs an histogram of the number of fields with the + {FillingStatus} at submission time. The non-aggregated FillingStatuses are + mutually exclusive and each field can only contribute to one of + corresponding histograms. However, the combined histograms that are prefixed + with Total are not mutually exclusive and a single field can contribute to + multiple of those. + + + + + + + + + + + + + + + + + + + + + + fleimgruber@google.com + chrome-autofill-alerts@google.com + + Logs the index of the phone number grammar that matched. Emitted when + parsing forms using local heuristics. Additionally logs whether the special + case handling matched a suffix field. This pair is encoded as + 2*grammar_index + matched_suffix + 1. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Aggregate Autofill field-type prediction outcomes. See + https://en.wikipedia.org/wiki/Confusion_matrix for an explanation of the + values. {AutofillFieldPredictionSource} + + + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Autofill field-type prediction outcomes, broken down by field type. See + https://en.wikipedia.org/wiki/Confusion_matrix for an explanation of the + values. {AutofillFieldPredictionSource} + + + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Predicted and actual form field type. This is a computed sparse histogram + where the value is ((predicted << 16)| actual). Predicted and actual + are taken from the autofill::ServerFieldType enumeration. + {AutofillFieldPredictionSource} + + + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Time elapsed between the user's first interaction with a form and the form's + submission, for an autofilled form. An interaction requires changing a form + control's value manually or via autofill. The interaction can happen on a + different form than the one which is submitted. {AutofillFormType} + + + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Time elapsed between the user's first interaction with a form and the form's + submission, for a non-autofilled form. An interaction requires changing a + form control's value manually or via autofill. The interaction can happen on + a different form than the one which is submitted. {AutofillFormType} + + + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Time elapsed between form load and form submission, for an autofilled form. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Time elapsed between form load and form submission, for a non-autofilled + form. + + + + + + The experiment has been launched in 05/2022. + + evih@google.com + schwering@google.com + chrome-autofill-alerts@google.com + + Records the time spent to determine if a form control element, given by its + unique renderer id, is in the DOM. It is done by measuring the time it takes + for FindFormControlElementByUniqueRendererId() to execute. + + Note that histogram samples for clients without high-resolution clocks are + dropped. + + + + + + The experiment has been launched in 05/2022. + + evih@google.com + schwering@google.com + chrome-autofill-alerts@google.com + + Records the time spent to determine if a vector of form control elements, + given by their unique renderer ids, is in the DOM. It is done by measuring + the time it takes for FindFormControlElementsByUniqueRendererId() to + execute. + + Note that histogram samples for clients without high-resolution clocks are + dropped. + + + + + battre@google.com + chrome-autofill-alerts@google.com + + Records for each submitted form that is affected by our "lax local + heuristic rule" whether the user accepted filling an autofill + suggestion. The "lax local heuristic rule" is that we require at + least 3 fields to be classified by the local heuristic to propagate that + classification - but we don't require 3 distinct field types, which would be + the "stricter local heuristic rule". A form is affected if any + field type would be different if we applied the stricter rule. + {AutofillFormType} + + + + + + battre@google.com + chrome-autofill-alerts@google.com + + Records for each submitted form that is affected by our "lax local + heuristic rule" whether the user edited an autofilled field. The + "lax local heuristic rule" is that we require at least 3 fields to + be classified by the local heuristic to propagate that classification - but + we don't require 3 distinct field types, which would be the "stricter + local heuristic rule". A form is affected if any field type would be + different if we applied the stricter rule. {AutofillFormType} + + + + + + + The experiment has been launched in 04/2022. + + evih@google.com + schwering@google.com + chrome-autofill-alerts@google.com + + Records the peak number of the form cache size. The peak size is reached + when navigating to a new page or when the page is refreshed. The metric is + counted once for every loaded frame. + + + + + vidhanj@google.com + chrome-autofill-alerts@google.com + + Number of fields on form where the context menu was shown. Recorded on the + form submission. + + + + + battre@chromium.org + jsaul@google.com + + Autofill form events for address forms. These are recorded when the user + interacts with a form requesting an address. {AutofillDataAvailability} + + Important caveat about submission metrics: - Submission using autofill data + is determined by simply evaluating if there was a fill operation in this + page. So, if the user filled with local data, completed erased or modified + the data after and then submitted, we would only emit one "Submitted + with server suggestion filled (once)"; - The submission segmentation + works by checking what kind of data was last filled for this type of form in + the page load. So, if a user initially filled with local data and after that + filled with server, we will only emit "Submitted with server suggestion + filled (once)". + + + + + + + + siyua@chromium.org + jsaul@google.com + + Autofill form events for credit card forms. These are recorded when the user + interacts with a form requesting a credit card, a dropdown of suggestions is + shown and at least one of the suggestions has a linked credit card offer. + + + + + jsaul@google.com + battre@chromium.org + + Autofill form events for credit card forms. These are recorded when the user + interacts with a form requesting a credit card. {AutofillDataAvailability} + + Important caveat about submission metrics: - Submission using autofill data + is determined by simply evaluating if there was a fill operation in this + page. So, if the user filled with local data, completed erased or modified + the data after and then submitted, we would only emit one "Submitted + with server suggestion filled (once)"; - The submission segmentation + works by checking what kind of data was last filled for this type of form in + the page load. So, if a user initially filled with local data and after that + filled with server, we will only emit "Submitted with server suggestion + filled (once)". + + + + + + + + tmartino@chromium.org + bling-transactions@google.com + chrome-autofill-alerts@google.com + + Records whether the form was successfully filled by Autofill on iOS. + + + + + schwering@google.com + chrome-autofill-alerts@google.com + + Records the time it takes to retrieve a browser form for a given renderer + form. (A renderer form is a single frame's form, whereas a browser form may + or may not transcend multiple frames.) This corresponds to the duration of + FormForest::GetBrowserFormOfRendererForm() and is emitted per each + execution. Note that histogram samples for clients without high-resolution + clocks are dropped. + + + + + schwering@google.com + chrome-autofill-alerts@google.com + + Records the time it takes to retrieve the renderer forms for a given browser + form. (A renderer form is a single frame's form, whereas a browser form may + or may not transcend multiple frames.) This corresponds to the duration of + FormForest::GetRendererFormsOfBrowserForm() and is emitted per each + execution. Note that histogram samples for clients without high-resolution + clocks are dropped. + + + + + schwering@google.com + chrome-autofill-alerts@google.com + + Records the time it takes to update Autofill's form/frame tree. This + corresponds to the duration of FormForest::UpdateTreeOfRendererForm() and is + emitted per each execution. Note that histogram samples for clients without + high-resolution clocks are dropped. + + + + + schwering@google.com + chrome-autofill-alerts@google.com + + Records nodes visited on a form/frame tree. This is emitted per each call of + FormForest::UpdateTreeOfRendererForm() that actually does an entire tree + traversal. + + + + + rhalavati@chromium.org + chrome-privacy-core@google.com + + This histogram records the browser profile type when an autofill form is + submitted. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + The autofill state related to a submitted form. + + + + battre@chromium.org + kolos@chromium.org + nepper@chromium.org + + Counts whether users accepted any autofill suggestion that was shown to them + for a given form. + + This metric is only recorded if a suggestion for the given form type (see + histogram name) was shown at least once. This is recorded once per form. If + the user accepts one suggestion, this is reported as "User chose to + fill" once. It does not matter if the user clears the filled values nor + if the user accepts a different suggestion later. {AutofillFormType} + + + + + + battre@chromium.org + kolos@chromium.org + nepper@chromium.org + + Counts whether users interacted with a form of a certain type. + + Focusing a field is sufficient to consider a form as being interacted with. + The user does not need to type anything. Note that some forms may get + focused on page load. + + This metric is recorded once per form observed by Autofill, but only for + forms that Autofill classifies to be of the type indicated by the histogram + name. If a form changes dynamically, Autofill interprets the forms before + and after the change as two different forms and records two values. If a + form did not have features that classify it as a form of a certain type + (e.g. an address form or payment form), then nothing is recorded. + {AutofillFormType} + + + + + + battre@chromium.org + kolos@chromium.org + nepper@chromium.org + + Counts whether a form was parsed/interpreted to be of the type indicated in + the histogram name. + + This metric is recorded once for each form observed by Autofill. If a form + changes dynamically, then Autofill treats the different versions of the form + as different forms. {AutofillFormType} + + + + + + battre@chromium.org + kolos@chromium.org + nepper@chromium.org + + Counts whether users submitted a form that was filled via autofill. + + This metric is recorded once for each form observed by Autofill but only for + forms that the user filled via Autofill. {AutofillFormType} + + + + + + battre@chromium.org + kolos@chromium.org + nepper@chromium.org + + Counts whether users were shown suggestions to fill the form, given that + they have already interacted with the form. + + This metric is recorded only for forms that users interacted with. It is + recorded only once per form, meaning that it does not matter how often the + user sees suggestions. If a form changes dynamically, then Autofill treats + the different versions of the form as different forms. {AutofillFormType} + + + + + + + The experiment has been launched in 05/2022. + + evih@google.com + schwering@google.com + chrome-autofill-alerts@google.com + + Records the time it takes to get the unowned form field elements. This is + done by measuring the time it takes for GetUnownedFormFieldElements() to + execute. + + Note that histogram samples for clients without high-resolution clocks are + dropped. + + + + + + The experiment has been launched in 05/2022. + + evih@google.com + schwering@google.com + chrome-autofill-alerts@google.com + + Records the time spent to determine if there is a password field in the web + frame. It is done by measuring the time it takes for HasPasswordField() to + execute. + + Note that histogram samples for clients without high-resolution clocks are + dropped. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Logs when a hidden or presentational field is autofilled. The hidden or + presentational fields are only autofilled for 'select' fields to support + synthetic fields. + + + + + qihuizhao@google.com + jsaul@google.com + payments-autofill-team@google.com + + These metrics are relevant to the IBAN suggestions popup, such as when it is + shown or when a suggestion is selected. The IBAN-based suggestions popup + gets displayed when a form's field that can be autofilled with an IBAN is + selected, and the user has at least one IBAN saved. The metric is recorded + upon each action, such as IBAN suggestions being shown or selected. + + + + + + The metric has been not produced meaningful results. + + schwering@google.com + chrome-autofill-alerts@google.com + + Counts per form submission the number of frames across which the form's + autofilled credit card fields are distributed. + + A field is an "autofilled credit card field" if it is autofilled + at submission time and its field type belongs to the credit card group. + + For example, emits 1 if all fields are in the same frame, and emits 2 if the + fields live in two different frames. Never emits 0. + + + + + + The metric has been not produced meaningful results. + + schwering@google.com + chrome-autofill-alerts@google.com + + Counts per form submission the number of frames across which the form's + detected credit card fields are distributed. + + A field is a "detected credit card field" if its field type + belongs to the credit card group. + + For example, emits 1 if all fields are in the same frame, and emits 2 if the + fields live in two different frames. Never emits 0. + + + + + + The metric has been not produced meaningful results. + + schwering@google.com + chrome-autofill-alerts@google.com + + Counts per form submission the number of frames across which the form's + detected fields are distributed. + + A field is "detected" if its field type is neither EMPTY_TYPE or + UNKNOWN_TYPE. + + For example, emits 1 if all fields are in the same frame, and emits 2 if the + fields live in two different frames. Never emits 0. + + + + + vishwasuppoor@chromium.org + siyua@chromium.org + payments-autofill-team@google.com + + Logs the roundtrip latency for fetching an image in AutofillImageFetcher. It + is logged when the fetch request for image is completed. + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Record the image fetch result of one image. If true, then the image was + fetched successfully. + + + + + jsaul@google.com + battre@chromium.org + chrome-autofill-alerts@google.com + + This includes Autofill.Address.IsEnabled.PageLoad and + Autofill.CreditCard.IsEnabled.PageLoad, and tracks whether either profile + Autofill or payment Autofill is enabled on page load for a page containing + forms. It helps deduce the overlap by showing what percentage of users have + one type of Autofill enabled but not the other. + + + + + jsaul@google.com + battre@chromium.org + chrome-autofill-alerts@google.com + + This includes Autofill.Address.IsEnabled.Startup and + Autofill.CreditCard.IsEnabled.Startup, and tracks whether either profile + Autofill or payment Autofill is enabled when Chrome launches. It helps + deduce the overlap by showing what percentage of users have one type of + Autofill enabled but not the other. + + + + + + The experiment has been launched in 05/2022. + + evih@google.com + schwering@google.com + chrome-autofill-alerts@google.com + + Records the time spent to determine if at least one form control element + among the given ones is visible and is in the web frame. It is done by + measuring the time it takes for IsSomeControlElementVisible() to execute. + + Note that histogram samples for clients without high-resolution clocks are + dropped. + + + + + + Deprecated in July 2022. Subsumed by + Autofill.IsValueNotAutofilledOverExistingValueSameAsSubmittedValue2. + + vidhanj@google.com + koerber@google.com + chrome-autofill-alerts@google.com + + Records, for each field, that did not get autofilled due to a prefilled + value, whether the submitted field value is the same as the non-empty value + that could have been autofilled in the field. This metric is recorded on + form submission. + + + + + vidhanj@google.com + koerber@google.com + chrome-autofill-alerts@google.com + + This metric is recorderd on form submission for each field that had an + initial value on page load and was edited by the user later on. The result + of the equality comparison between the submitted field value and supposedly + autofillable value is emitted by this metric. + + + + + battre@chromium.org + kolos@chromium.org + nepper@chromium.org + + Counts for submitted forms whether users accepted the suggestion to fill + values. This is counted as 'yes' if the user accepted such a suggestion at + any time, regardless whether other suggestions were ignored or whether the + accepted suggestion was reverted afterwards. {AutofillFormType} + + + + + + battre@chromium.org + kolos@chromium.org + nepper@chromium.org + + Counts for submitted forms whether the user filled any fields via Autofill. + + If the user reverts the filling, the form is still counted as filled. + + This metric is different from Autofill.KeyMetrics.FillingAcceptance in the + sense that the latter is only recorded if the user has actually seen a + prompt to fill data. {AutofillFormType} + + + + + + battre@chromium.org + kolos@chromium.org + nepper@chromium.org + + Counts for submitted and autofilled forms whether users edited at least one + filled value before submitting the form. {AutofillFormType} + + + + + + battre@chromium.org + kolos@chromium.org + nepper@chromium.org + + Counts for submitted forms whether Chromium had any address or payments data + to fill. + + It does not matter whether the user actually requested to fill the data. It + does not matter either whether the data available for filling corresponded + to the submitted data. {AutofillFormType} + + + + + + battre@chromium.org + kolos@chromium.org + nepper@chromium.org + + Counts for filled (by Autofill) forms whether users submitted those forms. + + This is only recorded for forms that the user filled via Autofill. It does + not matter if the user reverted the filling afterwards. + + This is recorded once Autofill stops tracking the form (e.g. due to a + navigation or due to removal from the DOM). {AutofillFormType} + + + + + + battre@chromium.org + kolos@chromium.org + nepper@chromium.org + + Counts for not filled (by Autofill) forms whether users submitted those + forms. + + This is only recorded for forms into which the user typed anything but did + not fill anything. It does not matter if the user reverted what they typed. + + This is recorded once Autofill stops tracking the form (e.g. due to a + navigation or due to removal from the DOM). {AutofillFormType} + + + + + + fleimgruber@google.com + chrome-autofill-team@google.com + + Logs how a <label for=x> element was assigned to an input. Emitted + once per inferred label (and thus potentially multiple times per field) + during label inference. + + + + + fleimgruber@google.com + chrome-autofill-team@google.com + + Logs how/if the label of an input was derived. Emitted once per field during + label inference. + + + + + koerber@google.com + fleimgruber@google.com + chrome-autofill-team@google.com + + Logs the number of kLocalOrSynable profiles that are a strict superset of + some kAccount profile. This corresponds to the number of profiles that + cannot be automatically deduplicated, since no profiles should be silently + deleted from the account storage. Emitted when the Chrome user profile is + loaded. + + + + + koerber@chromium.org + fleimgruber@chromium.org + chrome-autofill-team@google.com + + Like Autofill.KeyMetrics.FillingAssistance.Address, but split by profile + category. + + + + + koerber@chromium.org + fleimgruber@chromium.org + chrome-autofill-team@google.com + + Like Autofill.KeyMetrics.FillingCorrectness.Address, but split by profile + category. + + + + + + + + + + + siyua@chromium.org + jsaul@google.com + + Record events related to bubble showing. Logged when bubble is requested or + is actually shown to users. + + + + + + siyua@chromium.org + jsaul@google.com + + Records whether and how the local card migration bubble was accepted or + closed. + + + + + + siyua@chromium.org + jsaul@google.com + Record how bubble is closed by different user interactions. + + + + sujiezhu@google.com + siyua@chromium.org + jsaul@google.com + + Record the decisions made when determining if local card migration should be + offered. + + + + + siyua@chromium.org + jsaul@google.com + + Record duration of the local card migration dialog being visible to users. + {AutofillLocalCardMigrationDialogDurationWithCloseEvent} + + + + + + + + + + + siyua@chromium.org + jsaul@google.com + + Record events related to showing the local card migration dialog. + + + + + siyua@chromium.org + jsaul@google.com + + Record user interactions related to local card migration dialog. + + + + + siyua@chromium.org + jsaul@google.com + + Record the percentage of cards selected by the user in the migration dialog. + + + + + siyua@chromium.org + jsaul@google.com + + Records when local card migration prompts are shown and/or accepted. + {AutofillLocalCardMigrationOrigin} + + + + + + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The number of log events of type {LogEventTypes} which have been recorded + until the FieldInfo metric is recorded into UKM at form submission or form + destruction time (whatever comes first). + + + + + + + + + + + + + + + + jsaul@google.com + siyua@chromium.org + + The frequency of user interactions with the Manage Cards prompt. + {AutofillManageCardsPrompt} + + + + + + + + + + + Deprecated in M109 as this migration never applied to ChromeOS ASH. + + msarda@google.com + payments-autofill-team@google.com + + This metric is recorded when the bit that indicates the user is opted in to + wallet sync transport is migrated (part of the migration from using email to + using Gaia ID as the account identifier). + + + + + koerber@google.com + chrome-autofill-alerts@google.com + + For each {NameType} in a given AutofillProfile, the verification status of + the corresponding non-empty type is recorded when a profile is used to fill + a form. + + + + + + + + + + + + + jihadghanna@google.com + chrome-autofill-alerts@google.com + + Logs whether a street address merge operation favored the new or old address + because of the feature `kAutofillConvergeToExtremeLengthStreetAddress`. + + + + + koerber@google.com + chrome-autofill-alerts@google.com + + The {AcceptanceStatus} autofilled fields in a form after receiving a form + submission event. + + + + + + + + + + koerber@google.com + chrome-autofill-alerts@google.com + + The {AcceptanceStatus} of autofilled fields with an unrecognized + autocomplete attribute in a form after receiving a form submission event. + + + + + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The number of autofilled fields that were subsequently edited prior to the + form being submitted. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The number of Autofill profiles that have been considered for deduplication. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The number of Autofill profiles that have been removed during deduplication. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Records whether the number of fillable form elements matches the number of + fields in the form's description. Instances where this is recorded as False, + denote cases where autofill failed to preview/fill an autofill suggestion. + This can happen when a fields is filtered out of a formless form. + + + + + koerber@google.com + chrome-autofill-alerts@google.com + + Logs that a field with a heuristic prediction for an NUMERIC_QUANTITY + collides with a server prediction. The metric is emitted on form submission. + + + + + siyua@chromium.org + jsaul@google.com + + When at least one of the cards in the Autofill suggestions list has a linked + offer and the user selects a suggestion, this metric records whether or not + the selected suggestion had a linked offer. Nothing is recorded if none of + the cards suggested have linked offers. + + + + + + Deprecated in June 2022. Subsumed by + Autofill.Offer.StoredOfferCount.{OfferType}. + + siyua@chromium.org + payments-autofill-team@google.com + + Tracks the number of autofill offers data a user has stored, measured at + Chrome profile launch time. + + + + + + Deprecated in August 2022. Subsumed by + Autofill.Offer.StoredOfferCount2.{OfferType}. + + siyua@chromium.org + payments-autofill-team@google.com + + Tracks the number of Autofill offers a user has stored, separated by offer + type, and measured at Chrome profile launch time. + + + + + + siyua@chromium.org + jsaul@google.com + + Tracks the number of Autofill offers a user has stored (including if the + user has zero offers), separated by offer type, and measured at Chrome + profile launch time. + + + + + + siyua@chromium.org + jsaul@google.com + + Tracks the number of the credit cards an autofill card linked offer data is + related to, measured at Chrome profile launch time. + + + + + + Deprecated in August 2022. Subsumed by + Autofill.Offer.StoredOfferRelatedMerchantCount.{OfferType}. + + siyua@chromium.org + payments-autofill-team@google.com + + Tracks the number of the merchants an autofill offer data is related to, + measured at Chrome profile launch time. + + + + + siyua@chromium.org + jsaul@google.com + + Tracks the number of the merchants an autofill offer data is related to, + separated by offer type, and measured at Chrome profile launch time. + + + + + + siyua@chromium.org + jsaul@google.com + + When at least one of the cards in the Autofill suggestions list has a linked + offer and the user submits the form, this metric records whether or not the + form was submitted using the card with a linked offer. Nothing is recorded + if none of the cards suggested have linked offers. + + + + + siyua@chromium.org + jsaul@google.com + + When the user is shown the Autofill suggestions list, this metric records + whether or not a credit card that is linked to an offer is shown as part of + the suggestions. + + + + + + Deprecated August 2022. Subsumed by Autofill.Offer.Suggestion2.{OfferType}. + + vinnypersky@google.com + jsaul@google.com + + This metric is recorded every time an event related to an individual offer + suggestion in the offers suggestions popup gets triggered. The offers + suggestions popup gets displayed when a form's field that can be autofilled + with an offer is selected. + + + + + + vinnypersky@google.com + jsaul@google.com + + This metric is recorded every time an event related to an individual offer + suggestion in the offers suggestions popup gets triggered. The offers + suggestions popup gets displayed when a form's field that can be autofilled + with an offer is selected, and there is no promo code already filled into + the field. + + This histogram is different from Autofill.Offer.Suggestion.{OfferType} + because Autofill.Offer.Suggestion.{OfferType} logged that suggestions were + shown when a promo code was already filled into the field and the field was + clicked again, but in this case suggestions would not have been shown due to + the field already having a full value. Since we updated the logic for when + this histogram is logged to, we also needed to create a new histogram. + + + + + + + Deprecated August 2022. Subsumed by Autofill.Offer.SuggestionsPopupShown2. + + vinnypersky@google.com + jsaul@google.com + + This metric records two enums, one for every time the offers suggestions + popup is shown, and another for that same event, but only one per unique + field. The offers suggestions popup is shown when a form's field that can be + autofilled with an offer is selected. + + + + + vinnypersky@google.com + jsaul@google.com + + This metric records two enums, one for every time the offers suggestions + popup is shown, and another for that same event, but only one per unique + field. The offers suggestions popup is shown when a form's field that can be + autofilled with an offer is selected, and there is no promo code already + filled into the field. + + This histogram is different from Autofill.Offer.SuggestionsPopupShown + because Autofill.Offer.SuggestionsPopupShown logged that suggestions were + shown when a promo code was already filled into the field and the field was + clicked again, but in this case suggestions would not have been shown due to + the field already having a full value. Since we updated the logic for when + this histogram is logged to, we also needed to create a new histogram. + + + + + siyua@chromium.org + jsaul@google.com + + Tracks whether the offer data is valid or not, measured whenever offer data + is synced down via Sync. + + + + + siyua@chromium.org + jsaul@google.com + payments-autofill-team@google.com + + Records whether the offer notification bubble is the first such offer that + the user has been shown or is reshown due to user actions. The metric is + recorded when the bubble is shown. + + + + + + jsaul@google.com + siyua@chromium.org + payments-autofill-team@google.com + + Records when the copy promo code button for an offer notification bubble is + clicked by the user. The subhistogram is the type of offer shown, such as + GPay promo code offer or free-listing coupon offer. + + + + + + siyua@chromium.org + jsaul@google.com + payments-autofill-team@google.com + + Records the reason for closing the offer notification bubble. Recorded when + the bubble is closed. + + + + + + + jsaul@google.com + yuezhanggg@chromium.org + siyua@chromium.org + payments-autofill-team@google.com + chrome-shopping@google.com + + Records when the offer notification bubble should show but gets suppressed + due to reasons like show frequency rate control. The subhistogram is the + type of offer shown, such as GPay promo code offer or free-listing coupon + offer. + + + + + + siashah@chromium.org + siyua@chromium.org + payments-autofill-team@google.com + + Emits true when the offer notification infobar is displayed and does not + emit any value otherwise. + + + + + + siashah@chromium.org + siyua@chromium.org + payments-autofill-team@google.com + + Records the reason for closing the offer notification infobar for + {OfferType}. Recorded when the infobar is closed. + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Emits true when an OTP authentication starts and does not emit any value + otherwise. + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Logs the roundtrip latency of the SelectChallengeOptionRequest in the OTP + authentication. + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Logs the roundtrip latency of the UnmaskCardRequest in the OTP + authentication. + + + + + + siyua@chromium.org + payments-autofill-team@google.com + Logs the result of the OTP authentication. + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Logs any retriable failure before the OTP authentication completes. + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Logs the type of the error when any temporary error is shown in the card + unmask OTP dialog. + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Emits true when the "Get New Code" button is clicked and a new OTP + is requested. Doesn't emit any other value. + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Logs the reason of the closure when the card unmask OTP dialog is closed. + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Logs the reason of the closure when the card unmask OTP dialog is closed. + This breaks down on whether any temporary error happened before the card + unmask OTP dialog was closed. + + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Emits true when the card unmask OTP dialog is shown. Doesn't emit any other + value. + + + + + + meiliang@chromium.org + chrome-shopping@google.com + + Emits true if the offer notification icon is currently being shown in the + omnibox after a page navigation for {OfferType}. Doesn't emit any other + value. + + + + + + koerber@google.com + chrome-autofill-team@google.com + + Tracks whether the visible page language was translated or not upon form + submission. + + + + + koerber@google.com + chrome-autofill-alerts@google.com + + For a form of type {FormType}, log at submission time if the filling + experience was perfect. In a perfect filling experience, all non-empty + fields have been autofilled without subsequent corrections. Note that the + {FormType} is not mutually exclusive. If a single form contains both address + and credit card information, the metric is recorded for each {FormType}. In + such a combined form, both the address and the credit card information needs + to be filled perfectly, in order to record perfect filling. + + + + + + + + + koerber@google.com + mamir@chromium.org + + This tracks the reasons for which the Autofill popup disappers or cannot be + displayed. Recorded everytime an Autofill popup disappears or cannot be + displayed. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The profile action that took place when a form was submitted. + + + + + fleimgruber@google.com + chrome-autofill-team@google.com + + Logs that a given field type was removed on import, due to being setting + inaccessible in the imported profile's country. Emitted on profile import. + + + + + fleimgruber@google.com + chrome-autofill-team@google.com + + Logs if at least one field was removed on import, due to being setting + inaccessible in the imported profile's country. Emitted on profile import. + + + + + koerber@google.com + fleimgruber@google.com + src/components/autofill/OWNERS + + Logs the user's decision for migrating a stored profile with source + AutofillProfile::Source::kLocalOrSyncable to the account storage. This + metric is emitted at the end of an import process once the user-provided + import decision is final. + + + + + koerber@google.com + fleimgruber@google.com + src/components/autofill/OWNERS + + Logs that a specific type was edited in a profile migration prompt. This + metric is emitted once the user-provided import decision is final. + + + + + koerber@google.com + fleimgruber@google.com + src/components/autofill/OWNERS + + Logs the number of fields that have been edited by the user in the process + of succesfully migrating a profile after an observed form submission. + + + + + koerber@google.com + src/components/autofill/OWNERS + + Logs the user's decision for storing a new address profile observed in a + form submission. This metric is emitted at the end of an import process once + the user-provided import decision is final. + + + + + koerber@google.com + src/components/autofill/OWNERS + + Logs that a specific type was edited in a new profile save prompt that was + shown to the user when a new address profile is observed in a form + submission. This metric is emitted once the user-provided import decision is + final. + + + + + fleimgruber@google.com + chrome-autofill-team@google.com + + Logs the number of fields with an unrecognized autocomplete attributed that + were considered for the import due to AutofillFillAndImportFromMoreFields. + Emitted at the end of an import process, once the user-provided import + decision is final. + + + + + koerber@google.com + src/components/autofill/OWNERS + + Logs the number of fields that have been edited by the user in the process + of succesfully importing a new profile after an observed form submission. + + + + + fleimgruber@google.com + chrome-autofill-team@google.com + + Logs if a phone number was parsed successfully on profile import. Only + emitted when a number is present in the submitted form. + + + + + koerber@google.com + src/components/autofill/OWNERS + + The type of an import of an address that is observed in a form submission. + This metric is emitted once the import decision is final. This does not + necessarily mean that the user was prompted. + + + + + koerber@google.com + src/components/autofill/OWNERS + + The type of an import of an address that is observed in a form submission + when the form does not satisfy profile import requirements. This metric is + emitted once the import decision is final. + + + + + koerber@google.com + src/components/autofill/OWNERS + + Logs that a specific type would have changed in a profile update process + that received a specific {Decision}. The update was shown to the user + because a profile similar to an already existing profile was observed in a + form submission. Note that this metric collects the changed types before the + user potentially applies additional edits. The metric is recorded on form + submission once the user decision is final. + + + + + + + + + + + + + + + + + + + koerber@google.com + src/components/autofill/OWNERS + + Logs the user's decision for editing an already existing address after a + similar profile was observed in a form submission. This metric is emitted at + the end of an import process once the user-provided import decision is + final. + + + + + koerber@google.com + src/components/autofill/OWNERS + + Logs that a specific type was edited in a profile update prompt that was + shown to the user when a profile similar to an already existing profile was + observed in a form submission. This metric is emitted once the user-provided + import decision is final. + + + + + koerber@google.com + src/components/autofill/OWNERS + + Logs the number of fields that would be changed by an accepted update for + any possible Decision. Note that this metric collects the number of changed + fields before the user potentially applies additional edits. The metric is + recorded on form submission once the user decision is final. + + + + + + + + + + + + + + + + + + + fleimgruber@google.com + chrome-autofill-team@google.com + + Logs the number of fields with an unrecognized autocomplete attributed that + were considered for the update due to AutofillFillAndImportFromMoreFields. + Emitted at the end of an update process, once the user-provided update + decision is final. + + + + + koerber@google.com + src/components/autofill/OWNERS + + Logs the number of fields that have been edited by the user in the process + of succesfully updating an existing profile after an observed form + submission. + + + + + battre@chromium.org + src/components/autofill/OWNERS + + This metric is recorded when the autofill-use-improved-label-disambiguation + experiment is enabled and profile suggestions are available. This metric + measures how often suggestions were created with and without a formatter. + Warning: this histogram was expired from 2020-09-30 to 2022-04-07; data may + be missing. + + + + + siashah@chromium.org + siyua@chromium.org + jsaul@google.com + payments-autofill-team@google.com + + Records the result of the progress dialog, which can either be canceled + (user canceled while it was in progress) or not canceled (user waited until + confirmation). This dialog is shown in between other dialogs in a flow to + provide a progress state to the user. If the user does not cancel it, after + its related background task completes it moves on to the next dialog in the + flow that it is a part of. The metric is recorded when this dialog is + dismissed, and the result that gets logged is false if the user waited until + confirmation or true if the user canceled the dialog. + + + + + + siashah@chromium.org + siyua@chromium.org + jsaul@google.com + payments-autofill-team@google.com + + Records true every time the progress dialog is shown. This dialog is shown + in between other dialogs in a payments autofill flow to provide a progress + state to the user. If the user does not cancel it, after its related + background task completes it moves on to the next dialog in the flow that it + is a part of. + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + For credit card forms that are queried for Autofill, a ratio of how many are + within secure contexts (which includes mixed passive content). + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The delay of a network request for a query due to exponential backoff. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The number of bytes that were sent in a query that subsequently failed. This + is to help determine the appropriate threshold at which autofill queries + should switch from GET to POST, and if there are certain sizes of queries + which are prone to failure. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The http response code or net error code returned on a query. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + The HTTP method used to query the autofill server. + + + + battre@chromium.org + chrome-autofill-alerts@google.com + The duration of a network request for a query. + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Was the autofill query response retrieved from the HTTP cache. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The quality of fields rationalization, putting rationalization result into + good/ok/bad categories. + + + + + jsaul@google.com + payments-autofill-team@google.com + + If the cardholder name fix flow is shown when credit card upload is offered, + records if the cardholder name textfield was prefilled with the name from + the user's Google Account. + + + + + jsaul@google.com + payments-autofill-team@google.com + + If the cardholder name fix flow is shown during credit card upload and the + user accepts upload, logs whether the final cardholder name was changed from + its prefilled value or not. + + + + + jsaul@google.com + siyua@chromium.org + payments-autofill-team@google.com + + Records the reason expiration date was explicitly requested from the user + during credit card save. + + + + + jsaul@google.com + siyua@chromium.org + payments-autofill-team@google.com + + The relative frequency with which the Autofill save credit card prompt is + shown or not. Logged when the flow is triggered and the prompt should be + shown. {AutofillSaveCreditCardPromptDestination} + + + + + + + + jsaul@google.com + siyua@chromium.org + payments-autofill-team@google.com + + The relative frequency with which users accept or deny the Autofill save + credit card prompt. Logged when users interacted with the prompt. + {AutofillSaveCreditCardPromptDestination} + + + + + + + + qihuizhao@google.com + jsaul@google.com + payments-autofill-team@google.com + + Records every time the save IBAN bubble or omnibox icon (due to maxstrike + reached) is offered to the user, broken down by destination and show type. + + + + + + + jsaul@google.com + payments-autofill-team@google.com + + Records when the user accepts the bubble to save an IBAN, with or without + nickname. + + + + + + qihuizhao@google.com + jsaul@google.com + payments-autofill-team@google.com + + Records when the user makes a decision on the save IBAN bubble, broken down + by destinations. + + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + Whether a credit card scan was completed or cancelled. + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + How long a credit card took to scan. {CreditCardScanSuccess} + + + + + + + + + + battre@chromium.org + jsaul@chromium.org + chrome-autofill-alerts@google.com + Usage of the "Scan card" control item. + + + + fleimgruber@google.com + schwering@google.com + chrome-autofill-alerts@google.com + + The number of fields per section after sectioning a form using + kAutofillUseParameterizedSectioning. Emitted once per section every time + sectioning is done. + + + + + fleimgruber@google.com + schwering@google.com + chrome-autofill-alerts@google.com + + The number of sections after sectioning a form using + kAutofillUseParameterizedSectioning. Emitted every time sectioning is done. + + + + + jsaul@google.com + battre@chromium.org + chrome-autofill-alerts@google.com + + Logged when the user clicks on the server credit card link in the settings + page. + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Emits true when a server card unmasking process starts and does not emit any + value otherwise. + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Emits true when a form is submitted with information fetched in a server + card unmasking process, and does not emit any value otherwise. + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Logs the result of a server card unmasking process when the unmasking is + finished (whether it succeeded or otherwise reason of the failure). It + includes the type of the card to be unmasked and the flow type (what + authentication used) in the unmasking. + + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + The usefulness of Autofill server information. + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Tracks whether Autofill server had at least some prediction data for a given + form at query response time. + + + + + vishwasuppoor@chromium.org + siashah@chromium.org + payments-autofill-team@google.com + + Emits true whenever {Button} is clicked in the mobile {CardType} edit page. + Never emits false. + + + + + + + + + + + cfroussios@google.com + chrome-autofill-team@google.com + + 3-way comparison between {SourcePair} and the value that was in a field on + submission. This is emitted after an autofillable form has been submitted. + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Records whether an autofill operation was skipped because the number of + fields to be filled is different than that number of fields registered in + the form cache. + + + + + siashah@chromium.org + jsaul@google.com + payments-autofill-team@google.com + + Emits true when the action button on the autofill snackbar is clicked and + does not emit any value otherwise. + + + + + + siashah@chromium.org + jsaul@google.com + payments-autofill-team@google.com + + Emits true when the autofill snackbar is displayed and does not emit any + value otherwise. + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + + + The number of credit cards a user has stored, measured at Chrome profile + launch time. + + + + + siyua@chromium.org + payments-autofill-team@google.com + + The number of server cards with a valid card art image, measured at Chrome + profile launch. + + + + + siyua@chromium.org + payments-autofill-team@google.com + + The number of server cards with virtual card metadata, measured at Chrome + profile launch. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + + + The number of disused credit cards a user has stored, measured at Chrome + profile launch time. This is only reported for users who have at least one + stored credit card. + + + + + qihuizhao@google.com + jsaul@google.com + payments-autofill-team@google.com + + The number of local IBANs a user has stored, measured at Chrome profile + launch time. It's logged once per profile loaded. + + + + + + qihuizhao@google.com + jsaul@google.com + payments-autofill-team@google.com + + The number of local IBANs with nickname a user has stored, measured at + Chrome profile launch time. It's logged one per profile loaded. + + + + + + qihuizhao@google.com + jsaul@google.com + payments-autofill-team@google.com + + The number of disused IBANs a user has stored, measured at Chrome profile + launch time. This is only reported for users who have at least one stored + IBAN. + + + + + + + Deprecated in M111. Subsumed by Autofill.StoredProfileCount.Legacy. + + battre@chromium.org + chrome-autofill-alerts@google.com + + The number of Autofill addresses a user has stored, measured at launch time. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The number of Autofill addresses a user has stored of the given category, + measured at launch time. + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The number of Autofill addresses a user has stored, measured when an + autofillable form is submitted. + + + + + + Deprecated in M111. Subsumed by Autofill.StoredProfileDisusedCount.Legacy. + + battre@chromium.org + chrome-autofill-alerts@google.com + + The number of stored Autofill address profiles which have not been used in a + sufficiently long time for autofill to consider them disused. Measured once + per Chrome user profile launch. This metric is only recorded if the user has + at least one profile. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The number of stored Autofill address profiles of the given category, which + have not been used in a sufficiently long time for autofill to consider them + disused. Measured once per Chrome user profile launch. This metric is only + recorded if the user has at least one profile of that category. + + + + + + + Deprecated in M111. Subsumed by Autofill.StoredProfileUsedCount.Legacy. + + koerber@google.com + chrome-autofill-alerts@google.com + + The number of stored Autofill address profiles which are not in the disused + state. Measured once per Chrome user profile launch. This metric is only + recorded if the user has at least one profile. + + + + + koerber@google.com + chrome-autofill-alerts@google.com + + The number of stored Autofill address profiles of the given category, which + are not in the disused state. Measured once per Chrome user profile launch. + This metric is only recorded if the user has at least one profile of that + category. + + + + + + + Deprecated in M111. Subsumed by Autofill.StoredProfileUsedPercentage.Legacy. + + koerber@google.com + chrome-autofill-alerts@google.com + + The percentage of stored Autofill address profiles which are not in the + disused state. Measured once per Chrome user profile launch. This metric is + only recorded if the user has at least one profile. + + + + + koerber@google.com + chrome-autofill-alerts@google.com + + The percentage of stored Autofill address profiles of the given category, + which are not in the disused state. Measured once per Chrome user profile + launch. This metric is only recorded if the user has at least one profile of + that category. + + + + + + fleimgruber@google.com + chrome-autofill-alerts@google.com + + The number of Autofill profiles of type kLegacyOrSyncable without a country + a user has stored, measured at launch time. This metric is only recorded if + the user has at least one kLegacyOrSyncable profile. + + + + + jsaul@google.com + payments-autofill-team@google.com + + Records when credit card save is not offered (either at all on mobile or by + simply not showing the bubble on desktop) due to the candidate card having + too many strikes. + + + + + qihuizhao@google.com + jsaul@google.com + payments-autofill-team@google.com + + Records when IBAN save prompt is not offered due to the candidate IBAN + having too many strikes. It is recorded when offering IBAN save to user and + detects the max strikes has been reached. + + + + + jsaul@google.com + payments-autofill-team@google.com + + Records when local card migration is not offered due to the candidate's + LocalCardMigration strike count reaching maximum strikes. + + + + + jsaul@google.com + payments-autofill-team@google.com + + Records the number of "strikes" a particular feature has when a + new strike is added for that feature. {AutofillStrikeDatabaseProjectType} + + + + + + + + jsaul@google.com + payments-autofill-team@google.com + + When a StrikeDatabase fails to initialize, records the number of consecutive + failed initialization attempts. + + + + + qihuizhao@google.com + jsaul@google.com + payments-autofill-team@google.com + + Records the number of "strikes" a given IBAN had when a user + decided to save it. It is recorded right after the user clicks the Accept + button. + + + + + + jsaul@google.com + payments-autofill-team@google.com + + Records the number of "strikes" a user has when local card + migration is accepted. + + + + + jsaul@google.com + payments-autofill-team@google.com + + Records the number of "strikes" a given card had when a user opted + to save the card to Chrome. + + + + + jsaul@google.com + payments-autofill-team@google.com + + Records the number of "strikes" a given card had when a user + successfully uploaded the card to Google Payments. + + + + + jsaul@google.com + payments-autofill-team@google.com + + Records the number of "strikes" present in a StrikeDatabase entry + when a strike expires. {AutofillStrikeDatabaseProjectType} + + + + + + + + jsaul@google.com + siyua@chromium.org + payments-autofill-team@google.com + + Records the number of "strikes" a given card had when a user + successfully enrolled in a virtual card. + + + + + jsaul@google.com + siyua@chromium.org + payments-autofill-team@google.com + + Records and emits true when virtual card enrollment is not offered due to + the candidate's strike count reaching maximum strikes. + + + + + jsaul@google.com + siyua@chromium.org + payments-autofill-team@google.com + + Records and emits true when virtual card enrollment is not offered due to + the required delay not yet passing since candidate's last strike. + + + + + jsaul@google.com + payments-autofill-team@google.com + + Metric to measure credit card state when form is submitted, specifically if + it had a valid card number and/or expiration date. + + + + + jsaul@google.com + payments-autofill-team@google.com + + Metric to measure if a submitted card's expiration date matches the same + server card's expiration date (unmasked or not). Cards are considered to be + the same if they have the same card number (if unmasked) or if they have the + same network and last four digits (if masked). + + + + + battre@chromium.org + jsaul@google.com + koerber@google.com + + Metric to measure if a submitted form contains any recognizable value + patterns (e.g., Unified Payment Interface Virtual Payment address (UPI + VPA)). Reported for every submitted non-empty visible field observed by + Autofill. + + + + + rhalavati@chromium.org + chrome-privacy-core@google.com + + Records acceptance of autofill suggestions in regular and off-the-record + modes. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The index of the accepted Autocomplete suggestion in the popup. Due to + crbug.com/966411, the iOS data is incorrect. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The index of the accepted Autofill suggestion in the popup. Due to + crbug.com/966411, the iOS data is incorrect. + {AutofillSuggestionAcceptedIndexSuggestionType} + + + + + + + + + + + + The experiment has been launched in 08/2022. + + schwering@chromium.org + chrome-autofill-alerts@google.com + + Records whether a click was ignored (because it came too early after the + popup was shown) or accepted. An accepted click was either normally accepted + or followed an ignored click. Every click falls into one of the three + categories. Recorded on each click on an Autofill popup suggestion. + + + + + rhalavati@chromium.org + chrome-privacy-core@google.com + + Records showing of autofill suggestions in regular and off-the-record modes. + + + + + pkotwicz@chromium.org + chrome-autofill-alerts@google.com + + Recorded when a "Manage..." suggestion is selected from autofill + popup. Records the type of the "Manage..." suggestion (ex + "Manage Credit Cards"). + + + + + schwering@chromium.org + kenjitoyama@chromium.org + battre@chromium.org + chrome-autofill-alerts@google.com + + Number of milliseconds passed between the start and end of + {AutofillTimedFunction}. + + + + + + + + + + + + + + + + + mlerman@google.com + tchudakov@google.com + vykochko@google.com + chrome-autofill-team@google.com + + Records whether a user has still used autofill after dismissing the payments + bottom sheet. There is a fallback to still allow the user to autofill the + form after dismissing the bottom sheet, that is to use the keyboard + accessory suggestion. This metric is recorded when submitting the form: true + - if there is at least one autofilled field in the submitted form and the + payments bottom sheet was shown and dismissed by user, false - otherwise. + The metrics is recorded only if the payments bottom sheet was displayed for + the form submitted. + + + + + mlerman@google.com + tchudakov@google.com + vykochko@google.com + chrome-autofill-team@google.com + + For the Payments bottom sheet (Touch To Fill for credit cards), tracks + whether or not the user has edited at least one of the autofilled fields + before submitting the form. The metric is recorded on form submission. + + + + + mlerman@google.com + tchudakov@google.com + vykochko@google.com + chrome-autofill-team@google.com + + The number of credit cards shown in the Touch To Fill bottom sheet. Recorded + when showing the bottom sheet. + + + + + mlerman@google.com + tchudakov@google.com + vykochko@google.com + chrome-autofill-team@google.com + + Records the outcome with which the bottom sheet was closed: credit card + selected, virtual card selected, go to payment settings, scan new credit + card or dismissed with no action. The metric is recorded right after user + has done the action: the credit card selection or some other option (which + always leads to the bottom sheet being closed) or swiped the sheet to close + it. See the TouchToFillCreditCardMediator.java for details. Note that + "Go to payment settings" click is also considered as the outcome, + although it doesn't close the Touch To Fill. So in this case there will be a + double count for one bottom sheet showing. This histogram contains a bug of + not accounting all users' manual bottom sheet dismissal. It should be + removed after M114 is rolled out. + + + + + mlerman@google.com + tchudakov@google.com + vykochko@google.com + chrome-autofill-team@google.com + + Records the outcome with which the bottom sheet was closed: credit card + selected, virtual card selected, go to payment settings, scan new credit + card or dismissed with no action. The metric is recorded right after user + has done the action: the credit card selection or some other option (which + always leads to the bottom sheet being closed) or swiped the sheet to close + it. See the TouchToFillCreditCardMediator.java for details. Note that + "Go to payment settings" click is also considered as the outcome, + although it doesn't close the Touch To Fill. So in this case there will be a + double count for one bottom sheet showing. This fixes the bug introduced in + Autofill.TouchToFill.CreditCard.Outcome and counts all user bottom sheet + dismissals. The old histogram should be removed after M114 is rolled out. + + + + + mlerman@google.com + tchudakov@google.com + vykochko@google.com + chrome-autofill-team@google.com + + For the Payments bottom sheet (Touch To Fill for credit cards), logs at + submission time if the filling experience was perfect or not. In a perfect + filling experience, all non-empty fields have been autofilled without + subsequent corrections. The metric is logged on form submission. + + + + + mlerman@google.com + tchudakov@google.com + vykochko@google.com + chrome-autofill-team@google.com + + The index of the selected credit card in the Touch To Fill bottom sheet. + Recorded when user selects a credit card from the list. + + + + + mlerman@google.com + tchudakov@google.com + vykochko@google.com + chrome-autofill-team@google.com + + Records the outcome of the attempt to trigger Touch To Fill for credit + cards. It is recorded only when the touch to fill feature is enabled and the + form is parsed as a credit card form by autofill. + + + + + koerber@google.com + chrome-autofill-team@google.com + + The visible page language (best guess of the original or the translated + language, if translation was used) upon form submission. This is a sparse + histogram where the integer value represents the language code as described + by the ISO 639 standard. + + + + + jsaul@google.com + siyua@chromium.org + + Duration of the interaction with the UnmaskPrompt since it was shown until + it was closed. This prompt is triggered when a user selects a masked card in + an autofill dropdown. {AutofillUnmaskPromptCloseReasonEvents} + + + + + + + + + + + + + Deprecated in M109. Subsumed by Autofill.UnmaskPrompt.{CardType}.Events. + + jsaul@google.com + siyua@chromium.org + + Events tracking the usage of the unmasking prompt. This prompt is triggered + when a user selects a masked card in a autofill dropdown. + + + + + jsaul@google.com + siyua@chromium.org + + Duration of the GetRealPan API call. This API call is triggered by the + unmasking prompt when the user types information to verify their ownership + of the card being fetched. + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Duration of the GetRealPan API call. This API call is triggered by the + unmasking prompt when the user types information to verify their ownership + of the card being fetched. Broken down by the type of the card being fetched + and the result. + + + + + + + jsaul@google.com + siyua@chromium.org + + Tracks the result of the GetRealPan API call. This API call is triggered by + the unmasking prompt when the user types information to verify their + ownership of the card being fetched. + + + + + jsaul@google.com + siyua@chromium.org + payments-autofill-team@google.com + + Tracks the result of the GetRealPan API call. This API call is triggered by + the unmasking prompt when the user types information to verify their + ownership of the card being fetched. Broken down by type of the card being + fetched. + + + + + + jsaul@google.com + siyua@chromium.org + + Time the user waited before abandoning an unmasking operation. In such a + scenario, the user is cancelling a pending unmasking operation (possibly + because it is taking too long). The time measured here corresponds to the + time between the user clicking the "Verify" button and then + clicking "Cancel". + + + + + jsaul@google.com + siyua@chromium.org + + Duration between the user clicking the Verify button within the unmasking + prompt until we get a response back from the server. This prompt is + triggered when a user selects a masked card in an autofill dropdown. + + + + + jsaul@google.com + siyua@chromium.org + + Duration between the user clicking the Verify button within the unmasking + prompt until we get a response back from the server. This prompt is + triggered when a user selects a masked card in an autofill dropdown. Broken + down by the type of the card being fetched and the result. + + + + + + + vinnypersky@google.com + jsaul@google.com + siyua@chromium.org + payments-autofill-team@google.com + + Events tracking the usage of the unmasking prompt, recorded for {CardType}. + This prompt is triggered when a user selects a masked card in a autofill + dropdown. + + + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The delay of a network request for an upload due to exponential backoff. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The number of bytes that were sent in an upload that subsequently failed. + This is to help determine if there are certain upload sizes which are prone + to failure. + + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + The http response code or net error code returned on an upload. + + + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + The duration of a network request for an upload. + + + + + + jsaul@google.com + + Measures if a card for which upload was accepted is already stored as a + local card on the device or if it has not yet been seen. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Whether or not an upload was sent after having been triggered by a form + submission or proxy-form-submission. {AutofillUploadEvents} + + + + + + + + + + + + + + + + + + jsaul@google.com + + Measures if a card for which upload was offered is already stored as a local + on the device or if it has not yet been seen. + + + + + siyua@chromium.org + jsaul@google.com + payments-autofill-team@google.com + + Records the number of times that the cache for unmasked server cards has + been accessed for a given card. For example, if the cache is being accessed + and it has already been accessed for the card twice before, then + "3" is recorded. + + + + + siyua@chromium.org + jsaul@google.com + payments-autofill-team@google.com + + Records the number of times that the cache for virtual cards has been + accessed for a given card. For example, if the cache is being accessed and + it has already been accessed for the card twice before, then "3" + is recorded. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Measures the frequency of various events in the Autofill user interaction + flow. By comparing frequencies, we can compute several interesting + "user happiness" metrics. {AutofillFormType} + + + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Emits true whenever a virtual card Enroll request is sent. It is broken down + by the source of the request (i.e., Upstream, Downstream, settings page). + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Emitted whenever a virtual card Enroll response is received. It is broken + down by the source of the request (i.e., Upstream, Downstream, settings + page) and logged based on whether the request suceeded. + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Emits true whenever a virtual card GetDetailsForEnrollment request is sent. + It is broken down by the source of the request (i.e., Upstream, Downstream, + settings page). + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Records the latency for the GetDetailsForEnrollment roundtrip call. The + timer starts when a GetDetailsForEnrollment request is sent. It is recorded + (the timer stops) when a GetDetailsForEnrollment response is received. + + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Emits whenever a virtual card GetDetailsForEnrollment response is received. + It is broken down by the source of the request (i.e., Upstream, Downstream, + settings page) and logged based on whether the request suceeded. + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + The number of times that virtual card metadata is propagated via Chrome + Sync. It is logged based on whether the metadata is for an existing card or + a new card. + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Emits true whenever a virtual card Unenroll request is sent. It is broken + down by the source of the request (i.e., Upstream, Downstream, settings + page). + + + + + + siyua@chromium.org + payments-autofill-team@google.com + + Emitted whenever a virtual card Unenroll response is received. It is broken + down by the source of the request (i.e., Upstream, Downstream, settings + page) and logged based on whether the request suceeded. + + + + + + vishwasuppoor@chromium.org + siashah@chromium.org + payments-autofill-team@google.com + + Emits true when a user accepts {Dialog} in the mobile virtual card edit + page. Emits false if the user declines. + + + + + + vishwasuppoor@chromium.org + siashah@chromium.org + payments-autofill-team@google.com + + Records which link is clicked whenever a user clicks on links in {Dialog} in + the mobile virtual card edit page. The links are the education text link, + Google legal message link, and issuer legal message link. + + + + + + alexandertekle@google.com + payments-autofill-team@google.com + + This metric emits true if the card art image is available for use in the + virtual card enroll bubble for the {EnrollmentSource} and false if it is not + available. Recorded when bubble is shown. + + + + + + alexandertekle@google.com + payments-autofill-team@google.com + + This metric emits true when a user clicks on virtual card enrollment link + from flows that start from the {EnrollmentSource}. + + + + + + + vinnypersky@google.com + alexandertekle@google.com + siyua@chromium.org + payments-autofill-team@google.com + + Logs the latency between Save Card Bubble accepted and the timestamp for + when the Virtual Card Enroll Bubble is shown. This metric is logged right + before the Virtual Card Enroll Bubble is shown, but if web contents are + unavailable it will be logged before waiting for web contents to become + available. + + + + + vinnypersky@google.com + alexandertekle@google.com + siyua@chromium.org + payments-autofill-team@google.com + + This metric is recorded every time the virtual card enrollment bubble would + have been offered but is not offered due to the maximum number of strikes + being reached. It logs the source for the flow where the bubble would have + been shown, if the strike limit did not block it (for example, upstream i.e. + the save card flow). + + + + + alexandertekle@google.com + siyua@chromium.org + payments-autofill-team@google.com + + Records the reason for closing the virtual card enroll bubble for flows that + start from the {EnrollmentSource}. ShowType ({ShowType}) indicates whether + the bubble is a first time show or a reshow triggered by the user. A + subcategory indicating ({PreviousStrikes}) is also logged. Recorded when the + bubble is closed. + + + + + + + + alexandertekle@google.com + siyua@chromium.org + payments-autofill-team@google.com + + Records the reason for starting the virtual card enroll bubble for flows + that start from {EnrollmentSource}. Recorded when the bubble is shown. + Records false the first time the bubble is shown, true for subsequent bubble + shows. + + + + + + alexandertekle@google.com + payments-autofill-team@google.com + + Logged when a strike is registered in the virtual card enrollment strike + database because a user rejects the bubble, or when strikes are cleared + because the user accepted enrollment. + + + + + + siyua@chromium.org + jsaul@google.com + payments-autofill-team@google.com + + Records which field in the virtual card manual fallback bubble was selected + by the user and had its contents copied to the clipboard. Recorded on every + click of a field in the bubble. + + + + + siyua@chromium.org + jsaul@google.com + payments-autofill-team@google.com + + Records the reason for closing the virtual card manual fallback bubble. + Recorded when the bubble is closed. + + + + + + siyua@chromium.org + jsaul@google.com + payments-autofill-team@google.com + + This metric is recorded whenever the virtual card manual fallback bubble is + shown, after the user has just unmasked and autofilled a virtual card. It + records whether the bubble has just appeared for the first time (false) or + if it is being reshown due to user actions (true). + + + + + battre@chromium.org + chrome-autofill-team@google.com + + Logs the impact of the AutofillVoteForSelectOptionValues experiment. Metrics + are only recorded for submitted forms (not for blur votes) to prevent double + counting. + + + + + battre@chromium.org + chrome-autofill-alerts@google.com + + Tracks how the different wallet addresses are converted to local autofill + profiles. + + + + + yigu@chromium.org + battre@chromium.org + web-identity-eng@google.com + + Time elapsed between the user's first interaction with a form and the form's + submission, for form with autocomplete="one-time-code". An + interaction requires changing a form control's value manually or via + autofill. The interaction can happen on a different form than the one which + is submitted. This is recorded once per form submission. + + + + + yigu@chromium.org + battre@chromium.org + web-identity-eng@google.com + + Time elapsed between form load and form submission, for forms with + autocomplete="one-time-code". This is recorded once per form + submission. + + + + + yigu@chromium.org + battre@chromium.org + web-identity-eng@google.com + + Records whether a frame has ever used autocomplete="one-time-code" + during its lifecycle. i.e. it's only recorded once per frame. In addition, + we only record it if the frame has parsed forms. + + + + + yigu@chromium.org + battre@chromium.org + web-identity-eng@google.com + + Records whether a frame collects phone number based on the field + classification. It records once per frame only if it has parsed forms. + + Note that the field types may not be calculated if there are less than 3 + fields in the form unless an autocomplete attribute is provided. e.g. if the + form has only a single field regarding phone number without specifiying + autocomplete="phone", a sample with "false" will be + reported. + + + + + yigu@chromium.org + madjivp@chromium.org + web-identity-eng@google.com + + Records whether a document collected phone number, and/or used WebOTP, + and/or used OneTimeCode (OTC) during its lifecycle. i.e. it's recorded in + the browser process when a document is destroyed. + + + + + battre@chromium.org + src/android_webview/OWNERS + Records the state of an autofill session. + + + + battre@chromium.org + src/android_webview/OWNERS + + Records whether Autofill with Google is the current Android autofill + service. It is recorded on AutofillProvider initialization. Only recorded in + Android P and beyond. + + + + + battre@chromium.org + src/android_webview/OWNERS + Whether the autofill is created by activity context. + + + + battre@chromium.org + src/android_webview/OWNERS + + Whether the autofill service is enabled in Android platform. + + + + + pkotwicz@chromium.org + chrome-autofill-alerts@google.com + + Counts whether users filled the form, given that they have already + interacted with the form. + + This metric is recorded on Android WebView, only for forms that users + interacted with. It is recorded only once per form, meaning that it does not + matter if the user fills the form multiple times. If a form changes + dynamically, then Autofill treats the different versions of the form as + different forms. {AutofillFormType} + + + + + + pkotwicz@chromium.org + chrome-autofill-alerts@google.com + + Counts whether users interacted with a form of a certain type. + + Focusing a field is sufficient to consider a form as being interacted with. + The user does not need to type anything. Note that some forms may get + focused on page load. + + This metric is recorded once per form observed by Autofill on Android + WebView, but only for forms that Autofill classifies to be of the type + indicated by the histogram name. If a form changes dynamically, Autofill + interprets the forms before and after the change as two different forms and + records two values. If a form did not have features that classify it as a + form of a certain type (e.g. an address form or payment form), then nothing + is recorded. {AutofillFormType} + + + + + + pkotwicz@chromium.org + chrome-autofill-alerts@google.com + + Counts whether a form was parsed/interpreted to be of the type indicated in + the histogram name. + + This metric is recorded once for each form observed by Autofill on Android + WebView. If a form changes dynamically, then Autofill treats the different + versions of the form as different forms. {AutofillFormType} + + + + + + pkotwicz@chromium.org + chrome-autofill-alerts@google.com + + Counts whether users submitted a form that was filled via autofill. + + This metric is recorded once for each form observed by Autofill on Android + WebView but only for forms that the user filled via Autofill. + {AutofillFormType} + + + + + + pkotwicz@chromium.org + chrome-autofill-alerts@google.com + + Counts for submitted forms whether the user filled any fields via Autofill. + + If the user reverts the filling, the form is still counted as filled. + + This metric is different from Autofill.WebView.KeyMetrics.FillingAcceptance + in the sense that the latter is only recorded if the user has actually seen + a prompt to fill data. {AutofillFormType} + + + + + + pkotwicz@chromium.org + chrome-autofill-alerts@google.com + + Counts for submitted and autofilled forms on Android WebView whether users + edited at least one filled value before submitting the form. + {AutofillFormType} + + + + + + pkotwicz@chromium.org + chrome-autofill-alerts@google.com + + Counts for filled (by Autofill) forms whether users submitted those forms. + + This is only recorded for forms that the user filled via Autofill on Android + WebView. It does not matter if the user reverted the filling afterwards. + + This is recorded once Autofill stops tracking the form (e.g. due to a + navigation or due to removal from the DOM). {AutofillFormType} + + + + + + pkotwicz@chromium.org + chrome-autofill-alerts@google.com + + Counts for not filled (by Autofill) forms whether users submitted those + forms. + + This is only recorded for Android WebView. It is only recorded for forms for + which the user typed anything but did not fill anything. It does not matter + if the user reverted what they typed. + + This is recorded once Autofill stops tracking the form (e.g. due to a + navigation or due to removal from the DOM). {AutofillFormType} + + + + + + battre@chromium.org + src/android_webview/OWNERS + + Records whether Autofill with Google has suggestions and if the user selects + any suggestion. It is recorded when the form is submitted. Only recorded in + Android P and beyond. + + + + + battre@chromium.org + src/android_webview/OWNERS + + Records whether the server prediction of any field isn't NO_SERVER_DATA. + This histogram is recorded when the server prediction is available for the + current form, and only if AndroidAutofillQueryServerFieldTypes feature is + enabled. + + + + + battre@chromium.org + src/android_webview/OWNERS + + Records whether and when the server prediction response of current autofill + session is available even if query failed or there is no server data. This + histogram is recorded when the prediction becomes available or the new + session starts, and only if AndroidAutofillQueryServerFieldTypes feature is + enabled. + + + + + battre@chromium.org + src/android_webview/OWNERS + Records the source of form submission. + + + + battre@chromium.org + src/android_webview/OWNERS + The time taken to display suggestion. + + + + battre@chromium.org + src/android_webview/OWNERS + Whether the user changed autofilled field. + + + + jihadghanna@google.com + chrome-autofill-alerts@google.com + + Records at submission time for each autofilled {FieldType} field where + precedence was granted to heuristics over {AutocompleteStatus} Autocomplete + whether the user edited the autofilled value or not. + + + + + + + + + + + + + + + + + + + + + diff --git a/histograms/metadata/background/OWNERS b/histograms/metadata/background/OWNERS new file mode 100644 index 000000000000..4e9e86e41cc1 --- /dev/null +++ b/histograms/metadata/background/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +rayankans@chromium.org diff --git a/histograms/metadata/background/histograms.xml b/histograms/metadata/background/histograms.xml new file mode 100644 index 000000000000..7acc22e7a58a --- /dev/null +++ b/histograms/metadata/background/histograms.xml @@ -0,0 +1,388 @@ + + + + + + + + + + + + + + + + + + peter@chromium.org + rayankans@chromium.org + + Records the Service Worker status code that caused a Background Fetch API + event to fail dispatching whilst trying to dispatch an event on the active + Service Worker. {BackgroundFetchEvents} + + + + + + peter@chromium.org + rayankans@chromium.org + + Records the Service Worker status code that caused a Background Fetch API + event to fail dispatching whilst trying to find the Service Worker. + {BackgroundFetchEvents} + + + + + + peter@chromium.org + rayankans@chromium.org + + Records the Service Worker status code that caused a Background Fetch API + event to fail dispatching whilst trying to start the active Service Worker. + {BackgroundFetchEvents} + + + + + + peter@chromium.org + rayankans@chromium.org + + Records the result of dispatching one of the Background Fetch API events to + the Service Worker associated with the event. {BackgroundFetchEvents} + + + + + + peter@chromium.org + rayankans@chromium.org + + Records whether the fetch requests contains any duplicate URLs. This is + called after the provided requests are verified, but before the fetch is + started. + + + + + nator@chromium.org + rayankans@chromium.org + peter@chromium.org + + Records whether the background fetch contains any requests with a body. + Called before the fetch is started. + + + + + rayankans@chromium.org + peter@chromium.org + + Records the duration of the mojo call for the exposed BackgroundFetchManager + APIs. {BackgroundFetchManagerAPIsDuration} + + + + + + + + + + mvanouwerkerk@chromium.org + rdevlin.cronin@chromium.org + + Logged during BackgroundModeManager's initialization. Indicates the state of + the kBackgroundModeEnabled pref on startup. + + + + + nator@chromium.org + rayankans@chromium.org + + Records the number of `sync` events which were fired in a batch. A batch is + defined as the set of `sync` events dispatched at the same time by the + BackgroundSyncManager. One-shots usually run individually (a batch of one), + unless the device was offline and multiple are waiting for the device to go + back online. + + + + + nator@chromium.org + rayankans@chromium.org + + Records whether the fired `sync` events upon completion orginated from a + background wakeup task or the foreground. + + + + + nator@chromium.org + rayankans@chromium.org + + Records whether a `sync` event succeeded or failed and whether the sync + event finished in the foreground or background. + + A `sync` event finished in the foreground if the associated Service Worker + Registration has a client at the time that the event finished. + + + + + nator@chromium.org + rayankans@chromium.org + + Records whether a one-shot sync started firing in the foreground or + background. Called shortly before the event is fired. + + + + + nator@chromium.org + rayankans@chromium.org + peter@chromium.org + + Records whether a periodic sync event succeeded or failed and whether the + sync event finished in the foreground or background. + + A sync event finished in the foreground if the associated Service Worker + Registration has a client at the time that the event finished. + + + + + nator@chromium.org + rayankans@chromium.org + peter@chromium.org + + Records whether a periodic sync event started firing in the foreground or + background. Called shortly before the event is fired. + + + + + nator@chromium.org + rayankans@chromium.org + + Time taken to execute a batch of one-shot sync events. A batch is defined as + the set of sync events dispatched at the same time by the + BackgroundSyncManager. One-shots usually run individually (a batch of one), + unless the device was offline and multiple are waiting for the device to go + back online. + + + + + nator@chromium.org + rayankans@chromium.org + + Records whether Google Play Services is available to the Background Sync + system on Android, for scheduling future sync events when the browser is not + running. This will be logged at most once per run. + + + + + nator@chromium.org + rayankans@chromium.org + + Records whether the browser has sufficient permissions to create a + BackgroundSyncNetworkObserver object on Android, at the point when it tries + to create it. This should never be false, but is being tracked in order to + help resolve crbug.com/545473. + + + + + nator@chromium.org + peter@chromium.org + rayankans@chromium.org + + Records time elapsed since the soonest expected wake-up time. Recorded + whenever a periodic Background Sync Chrome wake-up task is called after + loading the native parts of the browser. + + + + + nator@chromium.org + rayankans@chromium.org + + Records the result of attempting to register a one-shot sync. + + + + + nator@chromium.org + rayankans@chromium.org + + Records the result of attempting to register a one-shot sync in a situation + where the sync could fire immediately. + + + + + nator@chromium.org + rayankans@chromium.org + peter@chromium.org + + Records whether the dispatched sync event succeeded at the completion of the + one-shot Background Sync registration. + + + + + nator@chromium.org + rayankans@chromium.org + + Records whether a one-shot sync registration exactly duplicates an existing + registered sync. + + + + + nator@chromium.org + rayankans@chromium.org + + Records the number of times a sync event was dispatched for a one-shot + Background Sync registration before it succeeded. + + + + + nator@chromium.org + rayankans@chromium.org + + Records the result of attempting to register a periodic sync. This is called + at each successful registration. + + + + + nator@chromium.org + rayankans@chromium.org + + Records whether a periodic sync registration duplicates the tag of an + existing registered sync. Recorded upon each successful periodic Background + Sync registration. + + + + + nator@chromium.org + rayankans@chromium.org + + Records the minInterval requested, in seconds, when a periodic sync is + successfully registered. + + + + + nator@chromium.org + platform-capabilities@chromium.org + + Records the result of attempting to unregister a periodic sync. + + + + + nator@chromium.org + peter@chromium.org + rayankans@chromium.org + + If BackgroundSync uses BackgroundTaskScheduler to wake up Chrome, this + records the time elapsed since the soonest expected wake-up time. Recorded + whenever a BackgroundSync background task is called after loading the native + parts of the browser. + + + + + nator@chromium.org + peter@chromium.org + rayankans@chromium.org + + If Chrome is woken up by the one shot Background Sync Background task, this + records whether any sync events were fired as a result. Recorded whenever + Chrome is woken up to process one-shot Background Sync registrations on + Android. + + + + + nator@chromium.org + peter@chromium.org + rayankans@chromium.org + + If Chrome is woken up by the periodic Background Sync Background task,this + records whether any periodicsync events were fired as a result. Recorded + whenever Chrome is woken up to process periodic Background Sync + registrations on Android. + + + + + ssid@chromium.org + Records the reason for unwind failues in sampling profiler. + + + + + diff --git a/histograms/metadata/blink/OWNERS b/histograms/metadata/blink/OWNERS new file mode 100644 index 000000000000..7fb5433b11f0 --- /dev/null +++ b/histograms/metadata/blink/OWNERS @@ -0,0 +1,10 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +iclelland@chromium.org +# For BlinkGC.* and related changes. +mlippautz@chromium.org +toyoshim@chromium.org +# For Blink Sms related changes. +yigu@chromium.org diff --git a/histograms/metadata/blink/histograms.xml b/histograms/metadata/blink/histograms.xml new file mode 100644 index 000000000000..09a1eafe05fc --- /dev/null +++ b/histograms/metadata/blink/histograms.xml @@ -0,0 +1,3849 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + aleventhal@chromium.org + chrome-a11y-core@chromium.org + + Records how many tree updates were queued at the time updates are being + processed after layout. If we are trying to process too many updates at + once, we should investigate how we might be able to merge similar updates + without losing important information. + + + + + + + + + + + ikilpatrick@chromium.org + layout-dev@chromium.org + + Time spent updating accessibility in the Blink document lifecycle. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent computing IntersectionObserver observations in the Blink document + lifecycle where the observation is for gathering information about anchor + elements within the visible viewport. Recorded when an intersection + observation attributed to anchor element metrics is updated. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent processing main frame animations during a main frame update. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note that the histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes + before 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful + when aggregating or comparing these histograms across the version. + + + + + smcgruer@chromium.org + animations-dev@chromium.org + + Reasons an Animation is not suitable for running on the compositor thread. + + Note that a given Animation may have more than one reason, so this histogram + cannot be used to determine the overall rate of 'composited' vs + 'noncomposited' animations. + + + + + sisidovski@chromium.org + chikamune@chromium.org + kouhei@chromium.org + + Records if the frame is eligible for automatic lazy-load mechanisms. This is + recorded when each frame having a url in the page is created. + + + + + sisidovski@google.com + kouhei@chromium.org + + Records if the automatic lazy-load for selected performance problematic + iframes is applied or not. This is recorded when each frame having a url in + the page is created. See HTMLFrameOwnerElement::LazyLoadIfPossible() for + more details. + + Note: There are two groups that lazy-load isn't applied. One group is simply + the feature itself is disabled, another groupd is that feature is enabled, + but there are no targeted frames on the page. + + + + + lizeb@chromium.org + fserb@chromium.org + + When a compressed hibernated 2D canvas snapshot is decompressed, duration in + ms. Reported each time a canvas snapshot is decompressed. + + + + + lizeb@chromium.org + fserb@chromium.org + + When a hibernated 2D canvas snapshot is compressed, the compression ratio + achieved. Reported each time a canvas snapshot is compressed. + + + + + lizeb@chromium.org + fserb@chromium.org + + When a hibernated 2D canvas snapshot is compressed, the size before + compression. Reported each time a canvas snapshot is compressed. + + + + + aaronhk@chromium.org + junov@chromium.org + + Records the state of the willReadFrequently flag upon creation of a Canvas2D + layer bridge, as this is the moment when it determines whether the canvas + will be accelerated. + + + + + fserb@chromium.org + juanmihd@chromium.org + + Records if a Canvas is being printed as a vector or as an image. + + + + + sky@chromium.org + junov@chromium.org + + Records the effectiveness of the canvas color cache. The value is a + percentage of requests for a color where the color was in the cache. For + example, a value of 25% means 1 out of every 4 requests for a color was + available. As this code may be called extensively, the value is logged on + every 1000th request to the cache. This means the last 0-999 values are not + recorded, and similarly, if the cache is accessed less than 1000 times + nothing is logged. + + + + + aaronhk@chromium.org + fserb@chromium.org + + Records whether the contents in the canvas buffer needed to be preserved via + a copy when replacing the target buffer for drawing a new frame. This metric + is recorded each time the target buffer needs to be replaced. It's recorded + once per frame. + + + + + fserb@chromium.org + aaronhk@chromium.org + + The source from which an ImageBitmap is created by a createImageBitmap call. + + + + + aaronhk@chromium.org + junov@chromium.org + + Records the state of the willReadFrequently flag during Canvas2D readback. + + + + + aaronhk@chromium.org + fserb@chromium.org + Logs the occurrences of canvas fallback from GPU to CPU. + + + + aaronhk@chromium.org + fserb@chromium.org + + Records if the canvas has been rendered at least once. Recorded on disposal. + + + + + aaronhk@chromium.org + fserb@chromium.org + + Records the occurrence of events related to 2D canvas GPU resource + hibernation. + + + + + aaronhk@chromium.org + fserb@chromium.org + + Reports the maximum number or canvas resources used at any one time by a + canvas resource provider. Logged in the destructor of + CanvasResourceProvider. + + + + + junov@chromium.org + fserb@chromium.org + + Reports the maximum depth of the state stack over the lifetime of a 2d + rendering context. Metric is recorded once per instance of + CanvasRenderingContext2D, OffscreenRenderingContext2D, and + PaintRenderingContext2D; at context destruction time. + + + + + aaronhk@chromium.org + fserb@chromium.org + + When a Document is shutdown, reports the number of canvases on that page. + + + + + junov@chromium.org + fserb@chromium.org + + Counts 2d canvas draw operations that trigger the overdraw optimization. + + + + + aaronhk@chromium.org + fserb@chromium.org + + Records the CPU, GPU and combined raster time for a random sampling of + canvas frames for accelerated and deferred canvases. Records wall time for a + random sampling of unaccelerated canvases. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. {BlinkCanvasRasterDurationType} + + + + + + + + + + + + fserb@chromium.org + aaronhk@chromium.org + + Records the occurence of image file formats passed into toDataURL and toBlob + functions in canvas. {CanvasRequestedImageMimeTypeFunctions} + + + + + + + + + + aaronhk@chromium.org + fserb@chromium.org + Logs if the canvas resource provider is accelerated or not. + + + + aaronhk@chromium.org + fserb@chromium.org + Records the type of resource provider used for a canvas. + + + + aaronhk@chromium.org + fserb@chromium.org + + Records the requested resource usage for a canvas resource provider. + + + + + aaronhk@chromium.org + fserb@chromium.org + + Stores the square root of the number of pixels in a new or resized offscreen + canvas. Emitted from CanvasRenderingContextHost::RecordCanvasSizeToUMA. + + + + + fserb@chromium.org + aaronhk@chromium.org + + Records the status of the idle task when finishing a toBlob call. + + In addition, metric values from OffscreenCanvas.convertToBlob API call are + also gathered into this histogram, because the logic flow is exactly the + same as canvas.toBlob. It's worth to note that the values can come from idle + tasks on either main or worker thread. + + + + + aaronhk@chromium.org + fserb@chromium.org + + A new version of "Blink.Canvas.ToBlob.InitiateEncodingDelay" + (which will be allowed to expire) which allows for times >10ms. + + This metric measures the time spent from initiating image encoding (jpeg or + png) on idle task to the actual execution time of initiation, as part of a + canvas.toBlob API call. + + This metric is useful in helping us adjust the IdleTaskStartTimeoutDelay in + canvas.toBlob. When the initialization idle task is delayed for longer than + IdleTaskStartTimeoutDelay, the browser will switch to a non-idle task to + force initialization and encoding to occur on the main thread. + + In addition, metric values from OffscreenCanvas.convertToBlob API call are + also gathered into this histogram, because the logic flow is exactly the + same as canvas.toBlob. It's worth to note that the values can come from idle + tasks on either main or worker thread. + + Note: This metric drops reports on clients with low-resolution clocks, which + means these reports will be biased against a portion of the population on + Windows. See Windows.HasHighResolutionTimeTicks for the affected sample. + + + + + + + + + fserb@chromium.org + aaronhk@chromium.org + + Time in microseconds spent on the 2D canvas toBlob API call, divided by the + square root of the total number of pixels of the canvas. + + In addition, metric values from OffscreenCanvas.convertToBlob API call are + also gathered into this histogram, because the logic flow is exactly the + same as canvas.toBlob. It's worth to note that the values can come from idle + tasks on either main or worker thread. + + Note: This metric drops reports on clients with low-resolution clocks, which + means these reports will be biased against a portion of the population on + Windows. See Windows.HasHighResolutionTimeTicks for the affected sample. + {BlinkCanvasToBlobType} + + + + + + + + + + aaronhk@chromium.org + fserb@chromium.org + + A new version of "Blink.Canvas.ToBlob.InitiateEncodingDelay" + (which will be allowed to expire) which allows for times >10ms. + + This metric measures the total time spent on completing encoding all the + rows of an image (jpeg or png), as part of a canvas.toBlob API call. + Encoding occurs during one or more idle periods on the main thread and the + waiting time of the next idle period is included in the measurement. If the + code has swtiched to force encoding path, we will not measure the delay in + this metric. + + This metric is useful in helping us adjust the IdleTaskCompleteTimeoutDelay + in canvas.toBlob. When the encoding idle task is delayed for longer than + IdleTaskCompleteTimeoutDelay, the browser will switch to a non-idle task to + force encoding to happen on the main thread. + + In addition, metric values from OffscreenCanvas.convertToBlob API call are + also gathered into this histogram, because the logic flow is exactly the + same as canvas.toBlob. It's worth to note that the values can come from idle + tasks on either main or worker thread. + + Note: This metric drops reports on clients with low-resolution clocks, which + means these reports will be biased against a portion of the population on + Windows. See Windows.HasHighResolutionTimeTicks for the affected sample. + + + + + + + + + fserb@chromium.org + aaronhk@chromium.org + + Time spent on 2D canvas toDataURL API call divided by the square root of the + total number of pixels of the image. Smaller is faster. + + The idea behind this unit is that the bigger the area of a canvas the longer + the operation ToDataURL takes, so we want a way to measure the overall + performance regardless of the size of the canvas. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. {BlinkCanvasToDataURLMimeType} + + + + + + + + + + junov@chromium.org + fserb@chromium.org + aaronhk@chromium.org + + The reason why printing a 2D canvas failed to use vector printing. + + + + + magchen@chromium.org + enga@chromium.org + graphics-dev@chromium.org + + The maximum number of total unused recyclable WebGPU resources since last + clean-up. Logged in the WebGPU recyclable resouce clean-up timer function. + + + + + magchen@chromium.org + enga@chromium.org + graphics-dev@chromium.org + + The maximum size of total unused recyclable WebGPU resources in KB since + last clean-up. Logged in the WebGPU recyclable resouce clean-up timer + function. + + + + + magchen@chromium.org + enga@chromium.org + graphics-dev@chromium.org + + The number of stale recyclable WebGPU canvas resources released and logged + in the WebGPU recyclable resouce clean-up timer function. + + + + + asully@chromium.org + snianu@microsoft.com + chrome-owp-storage@google.com + + Records if a transient user activation is present or not when the web + authors execute the async clipboard read/write call. + + + + + brianosman@chromium.org + mcasas@google.com + ccameron@chromium.org + Gamut properties of destination color space. + + + + brianosman@chromium.org + mcasas@google.com + ccameron@chromium.org + Gamma properties of destination color space. + + + + brianosman@chromium.org + mcasas@google.com + ccameron@chromium.org + + The L-infinity error (in 8-bit values) of the numerical approximation of + table-based ICC profile transfer functions for all channels combined, when + the nonlinear approximation converged. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent updating and pushing layers at the end of the paint step in the + Blink document lifecycle. This is implemented by PaintArtifactCompositor. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent updating compositing inputs in the Blink document lifecycle. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + ricea@chromium.org + yhirano@chromium.org + + Compression format passed to the constructor of the JavaScript API + "CompressionStream", which is used for lossless compression of + arbitrary binary data. Recorded once per call to the constructor. This + measures which compression formats are most commonly used in the wild. + + + + + ricea@chromium.org + yhirano@chromium.org + + Compression format passed to the constructor of the JavaScript API + "DecompressionStream", which is used for lossless decompression of + arbitrary binary data. Recorded once per call to the constructor. This + measures which compression formats are most commonly used in the wild. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent preparing the document for a canvas draw, SVG image draw or + plugin during a main frame update. Includes time spent in style update and + layout. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + flackr@chromium.org + blink-interactions-team@google.com + + The depth of the discovered image node in the hit test list when performing + a penetrating image selection search. + + Only recorded when a user long presses or right clicks a document (and an + image is found). + + + + + flackr@chromium.org + blink-interactions-team@google.com + + The amount of time it took to iterate through the dom looking for an image + node. + + Only recorded when a user long presses or right clicks a document. + + Note: This metric drops reports on clients with low-resolution clocks, which + means these reports will be biased against a portion of the population on + Windows. See Windows.HasHighResolutionTimeTicks for the affected sample. + + + + + flackr@chromium.org + blink-interactions-team@google.com + + The outcome of an image selection search that may or may not trigger the + context menu. + + Only recorded when a user long presses or right clicks a document (and an + image is found). + + + + + flackr@chromium.org + blink-interactions-team@google.com + + The outcome of a follow up retrieval of an image node after a selection has + occurred, which occurs asynchronously and thus could be unsuccessful due to + changes that may occur between the initial hit test and the retrieval. + + Only recorded when a user long presses or right clicks a document (and an + image is found). + + + + + xidachen@chromium.org + kevers@chromium.org + + Records if a CSS Paint is painted on the compositor thread or has fallen + back to the main thread. + + + + + gjc@chromium.org + loading-dev@chromium.org + blink-network-dev@chromium.org + + Time spent for parsing the stylesheet. Recorded when the stylesheet finishes + loading and does not have cached stylesheet contents. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + + + + gjc@chromium.org + loading-dev@chromium.org + blink-network-dev@chromium.org + + Time spent for tokenizing the stylesheet. Recorded when the response body of + the stylesheet is received. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + + + + pdr@chromium.org + wangxianzhu@chromium.org + paint-dev@chromium.org + + Time spent updating the cull rect in the Blink document lifecycle. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + + + + jyrki@google.com + compression-dev@google.com + + The compressed image size in KiB per image density measured in 0.01 bits per + pixel. This is logged once per image load after the whole image is loaded + and only for AVIFs with at least 100 pixels on the smallest dimension (width + or height). The reported count for a sample represents the image size + rounded to the nearest KiB. + + + + + jyrki@google.com + compression-dev@google.com + + The compressed image size in KiB per image density measured in 0.01 bits per + pixel. This is logged once per image load after the whole image is loaded + and only for JPEGs with at least 100 pixels on the smallest dimension (width + or height). The reported count for a sample represents the image size + rounded to the nearest KiB. + + + + + jyrki@google.com + compression-dev@google.com + + The compressed image size in KiB per image density measured in 0.01 bits per + pixel. This is logged once per image load after the whole image is loaded + and only for WebPs with at least 100 pixels on the smallest dimension (width + or height). The reported count for a sample represents the image size + rounded to the nearest KiB. + + + + + mcasas@chromium.org + andrescj@chromium.org + + WebP file format parsed during Blink's header parsing phase (which should + happen only once per image). + + + + + urvang@chromium.org + + Image codec inferred during decode. The histogram is incremented when enough + of the image has been downloaded to infer its width and height. Animated + images are counted only once, regardless of how many frames there are. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent computing IntersectionObserver observations in the Blink document + lifecycle where the observation is for Display Locking. Recorded when an + intersection observation is made for the Display Locking reason. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + pdr@chromium.org + paint-dev@chromium.org + + The EffectiveZoom as reported by ComputedStyle in a Blink renderer. The + value is reported each time the effective zoom is set to a new value. The + maximum zoom reported is 400% to keep the histogram of reasonable size. + + + + + carlscab@google.com + woa-performance@google + + Whether a GetCookiesString request for a document returned the same result + as the previous one. This is an experiment to determine the usefulness of a + cookie cache in the Renderer. + + A sample is recorded for every GetCookiesString request sent from the + Document owned CookieJar. + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records whether an IDP returns an approved clients list in the response. + Records at most one sample per API call. + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records the size of the approved clients list returned by IDP if applicable. + Records at most one sample per API call. + + + + + npm@chromium.org + yigu@chromium.org + web-identity-eng@google.com + + Records whether the FedCM auto re-authn call is blocked because the auto + re-authn content settings permission is disabled. Records at most one sample + per FedCM API with auto re-authn enabled: some failures could occur before + this metric is recorded. + + + + + npm@chromium.org + yigu@chromium.org + web-identity-eng@google.com + + Records whether the FedCM auto re-authn call is blocked because the auto + re-authn is under embargo, i.e. due to cooldown. Records at most one sample + per FedCM API with auto re-authn enabled: some failures could occur before + this metric is recorded. + + + + + npm@chromium.org + yigu@chromium.org + web-identity-eng@google.com + + Records whether there was zero, one, or multiple returning accounts when a + site calls the FedCM API with autoReauthn: true. Records at most one sample + per failed API call: some failures could occur before this metric is + recorded. + + + + + npm@chromium.org + yigu@chromium.org + web-identity-eng@google.com + + Records whether auto re-authn checks succeeded or not. The count would + provide roughly the number of FedCM re-authn attempts, the true count would + provide the number of times the re-authn UI is shown to the user, and the + false count would provide the number of attempts where auto re-authn was + blocked for some non-network related reason. Records at most one sample per + FedCM API with auto re-authn enabled: some failures could occur before this + metric is recorded. + + + + + npm@chromium.org + yigu@chromium.org + web-identity-eng@google.com + + Records the amount of time that has passed from the time the FedCM auto + re-authn API was embargoed to the time in which the next call occurs. Only + records a sample when there is an auto re-authn FedCM API call which is + blocked due to embargo. Samples are exponentially bucketed, with a max + bucket of 10 minutes, the embargo duration (see + `kFederatedIdentityAutoReauthnEmbargoDuration`). + + + + + pkotwicz@chromium.org + web-identity-eng@google.com + + Records the reason that the FedCM dialog was closed (ex user clicked the + dialog close button). Recorded when the FedCM dialog is closed without the + user selecting an account. This includes instances where the close action is + less intentional such as the virtual keyboard showing trigerring the dialog + close. + + + + + npm@chromium.org + web-identity-eng@google.com + + Records the type of FedCM Android UI sheet that is being displayed when the + user manually closes it. Records when the user closes this dialog, so at + most once per API call that results in UI being shown. + + + + + npm@chromium.org + web-identity-eng@google.com + + Records the type of FedCM desktop UI sheet that is being displayed when the + user manually closes it. Records when the user closes this dialog, so at + most once per API call that results in UI being shown. + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records whether the UI that a user is closing is the verify sheet or not on + Android. Records at most one sample per API call. + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records whether the UI that a user is closing is the verify sheet or not on + desktop. Records at most one sample per API call. + + + + + cbiesinger@chromium.org + web-identity-eng@google.com + + Whenever we receive an IDP sign-in header (Google-Accounts-SignIn or + IdP-SignIn-Status: action=signin) in response to a non-worker HTTP request, + this records whether there was a transient user activation as indicated by + ResourceRequest::has_user_gesture. + + + + + cbiesinger@chromium.org + web-identity-eng@google.com + + Whenever we receive an IDP sign-in header (Google-Accounts-SignOut or + IdP-SignIn-Status: action=signout) in response to a non-worker HTTP request, + this records whether there was a transient user activation as indicated by + ResourceRequest::has_user_gesture. + + + + + tanzachary@chromium.org + web-identity-eng@google.com + + Records whether the FedCM request is made before or after the start of the + window onload event. Records once per API call when the + FedCmMultipleIdentityProviders flag is disabled. + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records whether the user selected account is for sign-in or not. Records at + most one sample per API call. + + + + + npm@chromium.org + web-identity-eng@google.com + + Records the NetError from the accounts list endpoint. This histogram is only + recorded when the IDP Sign-In Status of an IDP is marked as signout as a + result of the accounts list endpoint not returning any accounts. + + + + + pkotwicz@chromium.org + web-identity-eng@google.com + + Recorded each time that the privacy-policy link in the FedCM prompt is + clicked. + + + + + pkotwicz@chromium.org + web-identity-eng@google.com + + Recorded each time that the terms-of-service link in the FedCM prompt is + clicked. + + + + + cbiesinger@chromium.org + web-identity-eng@google.com + Records the result of CSP checks in the FedCM API. + + + + pkotwicz@chromium.org + web-identity-eng@google.com + + Records whether the browser's knowledge of whether the user is signed-in to + the IDP based on observing signin/signout HTTP headers matches the + information returned by the accounts endpoint. Recorded at most once per + navigator.credentials.get() call after sending the request to the accounts + endpoint. + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records the status of a request token call to the FedCM API. + + + + + + Revoke is deprecated. Removed in June 2022. + + yigu@chromium.org + web-identity-eng@google.com + Records the status of a revoke call to the FedCM API. + + + + tanzachary@chromium.org + web-identity-eng@google.com + + Records whether user sign-in states between IDP and browser match. Records a + sample after browser receives an account list from IDP prior to showing UI. + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records the time from when the accounts dialog is shown to when the user + explicitly closes the dialog without selecting any account. Only records a + sample when the user sees and *explicitly* closes the dialog. For instance, + the accounts dialog being closed as a result of the user focusing a + different part of the browser UI does not count as explicitly closing the + dialog. + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records the time from when the accounts dialog is shown to when the user + presses the Continue button. Only records a sample when the user sees and + taps the "Continue" button on the dialog. + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records the time from when the user presses the Continue button to when the + token response is received. Only records a sample when the token response is + received. + + + + + tanzachary@chromium.org + web-identity-eng@google.com + + Records the duration from when RequestToken is called directly in + navigator.credentials.get to when RequestToken would be called if invoked + through a posted task. Records once per API call when the + FedCmMultipleIdentityProviders flag is disabled and RequestToken is called + during or after the window onload event. If RequestToken is called before + the window onload event, Blink.FedCm.Timing.WindowOnloadDelayDuration is + recorded instead. + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records the time from when a call to the API was made to when the accounts + dialog is shown. Only records a sample when the dialog is shown. + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records the overall time from when the API is called to when the token + response is received. Only records a sample when the token response is + received. + + + + + tanzachary@chromium.org + web-identity-eng@google.com + + Records the duration from when RequestToken is called directly in + navigator.credentials.get to when RequestToken would be called if invoked + through a window onload event listener. Records once per API call when the + FedCmMultipleIdentityProviders flag is disabled and RequestToken is called + prior to the start of the window onload event. If RequestToken is called + during or after the window onload event, + Blink.FedCm.Timing.PostTaskDelayDuration is recorded instead. + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records whether the WebContents is visible when the browser is ready to show + the accounts dialog to the user. Records at most one sample per API call. + + + + + shivanisha@chromium.org + dom@chromium.org + lbrady@google.com + + Records creation and navigation outcomes for a fenced frame. This is written + either when a fenced frame navigates successfully, or when some issue causes + either the creation or navigation of a fenced frame to stop. + + + + + shivanisha@chromium.org + dom@chromium.org + lbrady@google.com + + If a fenced frame failed to load due to incorrectly set sandbox flags, + records whether or not the fenced frame was attempting to be created in a + top-level frame. This is written whenever a fenced frame creation fails due + to sandbox flags not being permissive enough. + + + + + shivanisha@chromium.org + dom@chromium.org + lbrady@google.com + + Records if a fenced frame's size is set after the size had been frozen. The + size of a fenced frame is frozen once it navigates to a page, and results in + the inner contents being scaled to fit the new dimensions without telling it + the frame's new size. This is only logged up to one time throughout a fenced + frame's life, and will not be logged if the size is never set after being + frozen. + + + + + shivanisha@chromium.org + dom@chromium.org + lbrady@google.com + + Records whether an opaque-ads fenced frame's size was changed because the + provided size was not in the list of allowed sizes. This will not log + anything for a default mode fenced frame. This will log when an opaque-ads + fenced frame has its size frozen (which is triggered when it navigates to + its first page). + + + + + shivanisha@chromium.org + dom@chromium.org + lbrady@google.com + + If a fenced frame failed to load due to incorrectly set sandbox flags, + records which sandbox flags that should be unsandboxed ended up being + sandboxed, causing the load to fail. This is written whenever a fenced frame + creation fails due to sandbox flags not being permissive enough. If multiple + sandbox flags are incorrectly set, it will log every sandbox flag that was + not set correctly for each failed load. + + + + + miketaylr@chromium.org + victortan@chromium.org + potassium-katabolism@google.com + + Whether the User-Agent header that was sent for a subresource request had a + reduced user agent string value. The reduced user agent string is only sent + in the presence of a valid UserAgentReduction origin trial token. This + histogram is recorded when a frame's subresource fetch request is being + prepared. + + + + + cduvall@chromium.org + csharrison@chromium.org + + The total microseconds spent in ResourceFetcher::requestResource for + {Scheme}. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time it takes to fetch queued subresource preloads for a + document in a {FrameType}. Logged every time preloads need to be fetched + after the {IsInitial} preload scan. + + + + + + + + + + + + + gjc@chromium.org + blink-network-dev@chromium.org + + Time spent for decoding the fonts. Recorded when a font resource creates its + decoded data. This histogram is only logged in platforms with + high-resolution clocks. + + + + + drott@chromium.org + layout-dev@chromium.org + + Percentage of emoji clusters of all emoji clusters going through shaping + calls that are shaped as either .notdef/tofu glyphs or are shapes as more + than one glyph, which usually indicates that an emoji sequence was not + shaped correctly due to the emoji font not supporting it. Recorded per + page/worker and on page unload if the page contained emoji. + + + + + drott@chromium.org + layout-dev@chromium.org + + Tracks adoption ratio of variable fonts compared to conventional (in the + sense of non-variable) web fonts. Recorded at the time of instantiating a + Skia SkTypeface from the successfully decoded web font blob. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent computing layouts due to Javascript value requests. Specifically, + time spent in Blink Document::UpdateStyleAndLayout. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + Android only: The time spent by the renderer main thread to collect and send + back to the browser process a web page's canonical link. This is recorded + every time the renderer fulfills a request for this information. This + histogram is only logged in platforms with high-resolution clocks. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent processing rAF-aligned input during a main frame update. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent preparing the document for hit testing during a main frame + update. It does not compute the actual hit test time, rather the style, + layout, compositing, etc time to prepare for the test. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + sky@chromium.org + tebbi@chromium.org + dom-dev@chromium.org + + Number of bytes after which the html fast-path parser aborted. This does not + count the bytes the fast-path parser did not look at. We measure this since + aborting the fast-path and falling back to the normal parser is wasted + effort. This is recorded after every invocation of Element::setInnerHTML. + + + + + sky@chromium.org + tebbi@chromium.org + dom-dev@chromium.org + + The amount of time the innerHTML fast-path parser took before reaching input + it could not handle. This is recorded when Element::setInnerHTML is called, + and at the moment when the input it can't handle is reached. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + sky@chromium.org + tebbi@chromium.org + dom-dev@chromium.org + + Captures the result of the innerHTML fast-path parser. This is recorded + every time Element::setInnerHTML is called and only if the innerHTML + fast-path parser is enabled. + + + + + sky@chromium.org + tebbi@chromium.org + dom-dev@chromium.org + + Number of bytes successfully parsed by the innerHTML fast-path parser. This + is recorded if the innerHTML fast-path parser completes successfully and is + logged at the end of parsing the content supplied to Element::setInnerHTML. + + + + + sky@chromium.org + tebbi@chromium.org + dom-dev@chromium.org + + The time it takes for the innerHTML fast-path parser to complete processing + text from Element::setInnerHTML. This is recorded if fast-path innerHTML is + enabled, and completes successfully. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + sky@chromium.org + tebbi@chromium.org + dom-dev@chromium.org + + The total time it takes to complete parsing of Element::setInnerHTML. This + includes the time taken by the fast-path parser (even if it failed). This is + recorded after every invocation of Element::setInnerHTML. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + sky@chromium.org + tebbi@chromium.org + dom-dev@chromium.org + + This is logged if the innerHTML fast-path parser fails because an {Type} tag + is encountered. This value is an aggregate (bitmask) that identifies which + {Type} groupings were encountered. Ideally a single bitmask would be logged, + but the dashboard doesn't deal well with large bitmasks. The individual + groupings are recorded via one of Blink.HTMLFastPathParser.*.Mask0-3 (* is + one of UnsupportedContextTag or UnsupportedTag). + + + + + + + + + sky@chromium.org + tebbi@chromium.org + dom-dev@chromium.org + + See description of Blink.HTMLFastPathParser.*.CompositeMask for an overview + of this including when it is logged. The value is a bitmask that identifies + which tags were encountered: + + {MaskBit} + + + + + + + + + + + + + + masonf@chromium.org + dom-dev@chromium.org + + The number of chunks parsed while loading a page. Each chunk represents a + piece of the HTML content that can be loaded without blocking or yielding. + This is only reported for http/https urls. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + masonf@chromium.org + dom-dev@chromium.org + + The number of characters processed while parsing a document during page + load. This is computed as the sum of all the characters appended to the + input string sequence for the parser. This is only reported for http/https + urls. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + masonf@chromium.org + dom-dev@chromium.org + + While parsing a page, the maximum time used to parse a single chunk before + being blocked, yielding or completing, in microseconds. This does not + include time spent executing script. This is only reported for http/https + urls. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + masonf@chromium.org + dom-dev@chromium.org + + While parsing a page, the minimum time used to parse a single chunk before + being blocked, yielding or completing, in microseconds. This does not + include time spent executing script. This is only reported for http/https + urls. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + masonf@chromium.org + dom-dev@chromium.org + + While parsing a page, the total amount of time spent in the + HTMLDocumentParser performing parsing, in microseconds. This does not + include time spent executing script. This is only reported for http/https + urls. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + sky@chromium.org + dom-dev@chromium.org + + The time between when the first content has been received by the + HTMLDocumentParser and when parsing begins. This is effectively measuring + the time between when SchedulePumpTokenizer() is called, and when the task + runs that does the parsing. This is only reported for http/https urls. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + masonf@chromium.org + dom-dev@chromium.org + + While parsing a page, the average number of tokens parsed across all chunks. + This is only reported for http/https urls. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + masonf@chromium.org + dom-dev@chromium.org + + While parsing a page, the maximum number of tokens parsed as a chunk. This + is only reported for http/https urls. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + masonf@chromium.org + dom-dev@chromium.org + + While parsing a page, the minimum number of tokens parsed as a chunk. This + is only reported for http/https urls. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + masonf@chromium.org + dom-dev@chromium.org + + While parsing a page, the total number of tokens parsed across all chunks. + This is only reported for http/https urls. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + masonf@chromium.org + dom-dev@chromium.org + + While parsing a page, the average time between parsing of two chunks, in + microseconds. Will not be recorded if only one chunk was parsed. This is + only reported for http/https urls. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + masonf@chromium.org + dom-dev@chromium.org + + While parsing a page, the maximum time between parsing of two chunks, in + microseconds. Will not be recorded if only one chunk was parsed. This is + only reported for http/https urls. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + masonf@chromium.org + dom-dev@chromium.org + + While parsing a page, the minimum time between parsing of two chunks, in + microseconds. Will not be recorded if only one chunk was parsed. This is + only reported for http/https urls. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + vmpstr@chromium.org + khushalsagar@chromium.org + + This histogram records whether an image has been decoded by a single client + or by multiple clients during decoding. For an image to be decoded, it is + always requested by a client with a client_id. If an image has been + requested by multiple clients, it would be decoded more than once. The + histogram value is recorded at most two times per image (once per bucket). + There will be overlap for two buckets, but we can get the the number of an + image decodeded by only one client with the difference between two buckets. + This helps us to know how often images get duplicated decoding in real life. + + + + + andrescj@chromium.org + chromeos-gfx@google.com + + For JPEG and WebP images, whether all image data has been received before + decoding begins or whether we are still receiving data and will need to send + partial image data to the decoder and pause/resume decoding until complete. + + It is emitted when the DeferredImageDecoder is about to create the first + DecodingImageGenerator for an image. + + + + + andrescj@chromium.org + src/third_party/blink/renderer/platform/image-decoders/OWNERS + + Number of pixels in a decoded JPEG image. Recorded after decoding is done by + Blink's JPEG decoder (as opposed to, possibly, a hardware decode + accelerator). Tracking the image area may include degenerate cases, e.g., an + image with area = 10000 and dimensions = 1x10000. However, it is reasonable + to assume these cases are relatively rare and the area of the image can + serve as a proxy of how useful a decode accelerator can be (the larger the + area, the better). + + + + + andrescj@chromium.org + mcasas@chromium.org + + JPEG color space of a decoded image as guessed by libjpeg_turbo. Recorded + after decoding is done by Blink's JPEG decoder (as opposed to, possibly, a + hardware decode accelerator). When the color space is YCbCr, the chroma + subsampling is also recorded. + + + + + nigeltao@chromium.org + scroggo@google.com + + Number of pixels in a completely decoded PNG image frame. + "Complete" and "First" mean the same things as for the + Blink.ImageDecoders.Png.FirstDecode.Time histogram. + + + + + nigeltao@chromium.org + scroggo@google.com + + Time taken to completely decode an image frame of the {Type} file format. + This includes time spent in codec implementations but excludes time spent + waiting for the network or file cache to deliver the source bytes. + + For incremental decoding, e.g. the source bytes involve multiple network + events, only the final event (producing a complete image frame) triggers a + histogram record, but that record holds the total time spent on that frame. + + Incomplete (partially decoded) image frames (e.g. navigating away from the + web page before any of its images fully loaded) are not recorded here, but + they still might be recorded in the separate Blink.DecodedImageType + histogram if the partial decoding was able to determine width and height. + + An image's frames may be decoded more than once. If so, {Index} + distinguishes whether every decode of every frame is tracked or just the + first (not repeated) decode of the first (not later) frame. + + For an example of repeated (not first) decodes, when switching between tabs + or scrolling a web page, a previously decoded frame may be discarded so that + the backing memory can be re-used elsewhere. When that image comes back into + view, its frame may need decoding again. + + For an example of later (not first) frames, animated images may produce + multiple frames from a single img tag. Looping animations may be able to + cache all of the decoded frames after the first playthrough but, if too big + to cache, playing the loop continually may keep adding Every histogram + records as uncached frames are repeatedly decoded. + + The Every {Index} correlates more with "how much CPU time (which + correlates with battery consumption) is spent overall in {Type} + decoding". The First {Index} correlates more with "how long until + First Contentful Paint". + + + + + + + + + + + + + + + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent updating layers in the compositor thread during a + ProxyMain::BeginMainFrame. It is the actual work time, excluding time spent + waiting for the compositor thread to begin. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + jbroman@chromium.org + domenic@chromium.org + + Whether (non-standard) JSON comments occur in an importmap script element. + Logged each time it is parsed as valid JSON. + + + + + + Cursor Control feature is launched, the metrics is no longer needed. Removed + in March 2022. + + ctzsm@chromium.org + changwan@chromium.org + input-dev@chromium.org + Records if a GestureScrollBegin is for cursor control. + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent computing IntersectionObserver observations in the Blink document + lifecycle. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + + + + + + + szager@chromium.org + paint-dev@chromium.org + + Number of IntersectionObserver computations for blink-internal consumers + that were performed during the course of a single main frame. + + + + + + + + + + + szager@chromium.org + paint-dev@chromium.org + + Number of IntersectionObserver computations for javascript consumers that + were performed during the course of a single main frame. + + + + + torne@chromium.org + src/android_webview/OWNERS + Records the Java/JS bridge method invocation errors. + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent preparing the document to answer a Javascript API query or + request. Examples include scrool offset requests, queries of layout + dimensions, SVG path queries, etc. Includes time spent in style update and + layout, or via EnsurePaintLocationDataValidForNode. Some of these calls may + be servicing internal needs, but we have no way to disambiguate those from + JS driven activity. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent computing IntersectionObserver observations in the Blink document + lifecycle where the observation is due to a Javascript request. Recorded + when an intersection observation is made for the Javascript reason. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + joedow@chromium.org + garykac@chromium.org + + Records each call to the navigator.keyboard{Lock|Unlock} methods. + + + + + pdr@chromium.org + ikilpatrick@chromium.org + layout-dev@chromium.org + + Time spent in PaintLayer::UpdateLayerPositionsAfterLayout. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + + + + + + + + + + pdr@chromium.org + layout-dev@chromium.org + + Time spent updating layout in the Blink document lifecycle. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + pdr@chromium.org + paint-dev@chromium.org + + Total network response size for each lazy loaded image that has loaded. This + is recorded at the point that the image element completes loading. This + includes all entries in `Blink.LazyLoadedImageBeforeDocumentOnLoad.Size` as + well as lazy loaded images that load after document load. + + + + + pdr@chromium.org + paint-dev@chromium.org + + Total network response size for each lazy loaded image that has loaded + before the document has finished loading. This is recorded at the point that + the image element completes loading. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent computing IntersectionObserver observations in the Blink document + lifecycle where the observation is due to a Lazy Image Loading request. + Recorded when an intersection observation is made to determine when a lazy + loaded image should be loaded. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + yhirano@chromium.org + loadingg-dev@chromium.org + + The amount of time taken to get a cached response. Recorded when the + response arrives, and recorded only when both of the response and the code + cache were cached. + + + + + yhirano@chromium.org + loading-dev@chromium.org + + The amount of time taken to get a code cache. Recorded when the response + arrives, and recorded only when both of the response and the code cache were + cached. + + + + + pdr@chromium.org + paint-dev@chromium.org + + Reports if a local frame root ever receives a FirstContentfulPaint signal. + Only recorded for local frame roots that run at least one main frame update. + + + + + pdr@chromium.org + paint-dev@chromium.org + + Reports if the main frame ever receives a FirstContentfulPaint signal. Only + recorded for main frame local frame roots that run at least one main frame + update. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time between a BeginMainFrame and paint results commit in Blink. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent computing IntersectionObserver observations in the Blink document + lifecycle where the observation is for a media element. Recorded when an + intersection observation is made attributed to a media element (such as + video auto-play). + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + gjc@chromium.org + blink-network-dev@chromium.org + + Type of cached non-static resources reused across Documents when loading a + new document in the same renderer. Recorded by the ResourceFetcher when a + resource is requested for a new document and is not static. If the resource + is available from the memory cache and previously loaded by a different + document, the resource will be considered as reused. Repetitive requests to + the same url in a document will be counted only once. + + Warning: an unexpected reorder happened in Apr 2021 + (https://crrev.com/c/2798954). Please do not trust older reports. + + + + + gjc@chromium.org + blink-network-stack@chromium.org + + Size of the resource strong references saved to the memory cache. Recorded + when the user navigates to a newpage under the same origin. Recorded only + with feature flag MemoryCacheStrongReference. + + + + + bashi@chromium.org + blink-network-dev@chromium.org + + Records whether a cached response exists in another renderer that has the + same process isolation policies. Recorded when ResourceFetcher fetches a + resource from network. This histogram is for `{Destination}` destination. + + + + + + bashi@chromium.org + blink-network-dev@chromium.org + + Records the time between when a renderer receives an IPC to look for cached + response and when another renderer receives the response of that IPC. The + IPC is sent when ResourceFetcher fetches a resource from network. Recorded + when the renderer receives the response. + + Note: This histogram is not recorded on low-resolution clock clients. + + + + + + + + + + bashi@chromium.org + blink-network-dev@chromium.org + + Records the time between when a renderer sends an IPC to look for cached + response and when another renderer receives that IPC. The IPC is sent when + ResourceFetcher fetches a resource from network. Recorded when the renderer + receives the response. + + Note: This histogram is not recorded on low-resolution clock clients. + + + + + + + + + + hiroshige@chromium.org + lizeb@chromium.org + gjc@chromium.org + loading-dev@chromium.org + + RevalidationPolicy used for non-preloading requests of async and defer + scripts. https://crbug.com/1043679 https://crbug.com/1376866 Warning: this + histogram was expired from 2021/10/25 to 2022/12/09; data may be missing. + + + + + hiroshige@chromium.org + gjc@chromium.org + loading-dev@chromium.org + + RevalidationPolicy used for requests that hit Resource only referenced from + MemoryCache for each resource type ({ResourceType}). + https://crbug.com/579496 Requests counted by this are also counted by + Blink.MemoryCache.RevalidationPolicy or + Blink.MemoryCache.RevalidationPolicy.Preload. https://crbug.com/1376866 + + Warning: this histogram was expired from 2021-04-21 to 2022-12-09; data may + be missing. This histogram's {ResourceType} was broken until 2023-03-09; + data before the date may not be stored. + + + + + + shivanisha@chromium.org + privacy-sandbox-dev@chromium.org + + RevalidationPolicy used for requests for each resource type. Logged only if + the resource is found in the memory cache and if the same top-frame site had + loaded this resource earlier. + + + + + + hiroshige@chromium.org + gjc@chromium.org + loading-dev@chromium.org + + RevalidationPolicy used for preloading requests for each resource type + ({ResourceType}). https://crbug.com/579496 https://crbug.com/1376866 + + Warning: this histogram was expired from 2021-04-21 to 2022-12-09; data may + be missing. This histogram's {ResourceType} was broken until 2023-03-09; + data before the date may not be stored. + + + + + + hiroshige@chromium.org + gjc@chromium.org + loading-dev@chromium.org + + RevalidationPolicy used for non-preloading requests for each resource type. + https://crbug.com/579496 https://crbug.com/1376866 + + Warning: this histogram was expired from 2021-04-21 to 2022-12-09; data may + be missing. This histogram's {ResourceType} was broken until 2023-03-09; + data before the date may not be stored. + + + + + + kumagi@google.com + gaul@google.com + paint-dev@google.com + + Whether element extraction phase succeed without consuming entire 4ms time + budget in MobileFriendlinessChecker::ComputeBadTapTargetsRatio() evaluation. + This metric recorded at 5 seconds after first MainFrame's commit and + periodically every 1 minutes after that. + + + + + kumagi@google.com + gaul@google.com + paint-dev@google.com + + The time taken in MobileFriendliness::ComputebadTapTargetsRatio evalution. + This metric recorded at 5 seconds after first MainFrame's commit and + periodically every 1 minutes after that. + + The histogram does not record metric on machines with low-resolution clocks. + + + + + miketaylr@chromium.org + victortan@chromium.org + potassium-katabolism@google.com + + Whether the navigator.userAgent and navigator.appVersion JavaScript getters + returned a reduced user agent string value. The reduced user agent string is + only returned in the presence of a valid UserAgentReduction origin trial + token. This histogram is recorded when the navigator.userAgent and + navigator.appVersion JavaScript APIs are invoked. + + + + + cduvall@chromium.org + jam@chromium.org + + The time taken to query the notification permission status. This is recorded + each time a sync call is made. + + + + + aaronhk@chromium.org + fserb@chromium.org + + Records the creation of a new offscreen canvas in OffscreenCanvas::Create. + + + + + aaronhk@chromium.org + fserb@chromium.org + + Stores the square root of the number of pixels in a new or resized offscreen + canvas. Emitted from CanvasRenderingContextHost::RecordCanvasSizeToUMA. + + + + + aaronhk@chromium.org + fserb@chromium.org + Records a call to transfer a canvas offscreen. + + + + aaronhk@chromium.org + fserb@chromium.org + + Records when an offscreen canvas has been transferred from the main thread + to a worker. + + + + + khushalsagar@chromium.org + vmpstr@chromium.org + + Computes the area of img, video or canvas elements which is painted outside + the content rect if 'overflow' property is respected on these elements. + + + + + pdr@chromium.org + rego@chromium.org + paint-dev@chromium.org + + Records the first reason to set PaintArtifactCompositor as needing update. + + + + + pdr@chromium.org + rego@chromium.org + paint-dev@chromium.org + + Records the reason to set PaintArtifactCompositor as needing update. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent updating paint in the Blink document lifecycle. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + + + + + + + cduvall@chromium.org + jam@chromium.org + + Time spent parsing style sheets for a document. Only recorded when the + CSSParserContext has a document available. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time it takes to update the plugin list. This can happen, for + example, during Navigator.plugins.get. + + + + + jbroman@chromium.org + + Categorizes MIME types of responses to "prefetch" links. Intended + to gather data about whether this feature is used mainly for documents, + subresources, or both. Emitted once per resource fetched (which may be more + than one per page). + + + + + cduvall@chromium.org + swarm-team@google.com + + Measures the time from the creation of a PreloadRequest to when + PreloadRequest::Start is called. Logged for each PreloadRequest::Start call. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent updating paint properties and paint invalidation in the Blink + document lifecycle. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time from when a resource request completes to when the + renderer is notified. Logged for every resource request. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time from when a redirect from a resource request happens to + when the renderer is notified. Logged for every resource request redirect. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time from when a response from a resource request is started to + when the renderer is notified. Logged for every resource request. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time from when the renderer starts a resource request to when + it is actually started on the network. Logged for every resource request. + + + + + + + sullivan@chromium.org + mmocny@chromium.org + speed-metrics-dev@chromium.org + + The duration of a single user interaction: + https://web.dev/better-responsiveness-metric/#group-events-into-interactions + + This metric is emitted once for every interaction in the web contents + {InteractionType} + + + + + + + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time it takes to scan and preload subresources for a document + in a {FrameType}. Logged every time the {IsInitial} preload scan is + performed. + + + + + + + + + + + + + haraken@chromium.org + + Duration of time taken to scan pending activities of all V8 wrappers in a + worker thread. + + + + + dom@chromium.org + chrome-loading@google.com + + The total number of async scripts associated with a document at the time + parsing has finished. + + + + + chikamune@chromium.org + hiroshige@chromium.org + sisidovski@chromium.org + + Number of synchronous scripts that were deferred for a mainframe by the + ForceDeferScriptIntervention. This includes both inline scripts and external + scripts that had their execution deferred until after parsing completes. + Recorded at the end of parsing when ForceDeferScriptIntervention is enabled. + + + + + chikamune@chromium.org + hiroshige@chromium.org + sisidovski@chromium.org + + Number of external synchronous scripts that were deferred for a mainframe by + the ForceDeferScriptIntervention. Recorded at the end of parsing when + ForceDeferScriptIntervention is enabled. + + + + + chikamune@chromium.org + hiroshige@chromium.org + sisidovski@chromium.org + + Number of synchronous scripts that were deferred for a subframe by the + ForceDeferScriptIntervention. This includes both inline scripts and external + scripts that had their execution deferred until after parsing completes. + Recorded at the end of parsing when ForceDeferScriptIntervention is enabled. + + + + + chikamune@chromium.org + hiroshige@chromium.org + sisidovski@chromium.org + + Number of external synchronous scripts that were deferred for a subframe by + the ForceDeferScriptIntervention. Recorded at the end of parsing when + ForceDeferScriptIntervention is enabled. + + + + + kouhei@chromium.org + hiroshige@chromium.org + chikamune@chromium.org + + Number of script elements for each scheduling type, recorded when each + script loading reaches the #prepare-a-script state defined in the spec, with + http or https request. + + Warning: this histogram was expired from 2018-12-31 to 2022-05-25; data may + be missing. + + + + + cduvall@chromium.org + jam@google.com + + The time spent generating the source text for a script resource. Logged when + the source text is accessed for the first time. Emitted at most once per + script resource. + + Note that clients without high-resolution clocks will report 0 for very + short times. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent preparing the document to service browser driven behaviors. + Examples include accessibility, intersection observer, display locking and + spell checking. Includes time spent in style update and layout. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records how often the verification backend is unavailable for the WebOTP API + and the corresponding reason. This is recorded once per OTP request. + + + + + yigu@chromium.org + web-identity-eng@google.com + + SmsFetcher subscribes to incoming SMSes with origins from SmsProvider. This + metric records the number of pending origins that are not unsubscribed when + the SmsFetcher subscribes to new origins. + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records the reason why using the WebOTP API on desktop failed on the sharing + path. It records one sample per invocation of the API. + + + + + yigu@chromium.org + goto@chromium.org + web-identity-eng@google.com + + Records how many times the infobar was called and how many times the infobar + replaced a keyboard. + + + + + yigu@chromium.org + goto@chromium.org + web-identity-eng@google.com + Records the result of a call to the WebOTP API. + + + + yigu@chromium.org + web-identity-eng@google.com + + Records the status of parsing an incoming SMS when using the WebOTP API. It + records one sample per incoming SMS. + + Note: This metric does not cover cross-devices WebOTP. + + + + + yigu@chromium.org + goto@chromium.org + web-identity-eng@google.com + + Records the duration from when the API is called to when the request is + cancelled by the service due to duplicated requests or lack of delegate. + + + + + yigu@chromium.org + goto@chromium.org + web-identity-eng@google.com + + Records the duration from when the keyboard was replaced with an infobar + until when the user clicked the cancel button. + + + + + yigu@chromium.org + goto@chromium.org + web-identity-eng@google.com + + Records the time from when a successful SMS was retrieved to when the user + presses the Cancel button. + + + + + yigu@chromium.org + goto@chromium.org + web-identity-eng@google.com + + Records the time from when a successful SMS was retrieved to when the user + presses the Continue button. + + + + + yigu@chromium.org + goto@chromium.org + web-identity-eng@google.com + + Records the duration from when the API is called to when an SMS has been + successfully received. + + + + + yigu@chromium.org + goto@chromium.org + web-identity-eng@google.com + + Records the duration from when the API is called to when the user + successfully receives the SMS and presses continue to pass the incoming SMS + to the site and proceed with the SMS verification flow. + + + + + yigu@chromium.org + goto@chromium.org + web-identity-eng@google.com + + Records the duration from when the API is called to when the user + successfully receives the SMS and presses "Deny" to terminate the + SMS verification flow. + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records whether the web contents that receives the OTP is visible or not for + the UserConsent backend. Recorded at most once per API call when Chrome sees + the OTP from the expected origin. + + + + + jbroman@chromium.org + src/third_party/blink/renderer/core/speculation_rules/OWNERS + + The amount of time between when a fetch of speculation rules is started and + when it is finished. Recorded each time such a fetch occurs. + + + + + jbroman@chromium.org + src/third_party/blink/renderer/core/speculation_rules/OWNERS + + Outcome of an attempt to load a speculation rule set. Recorded once per + attempt, whether triggered by a response header, by the parser or by script. + + + + + + + + + + + pdr@chromium.org + layout-dev@chromium.org + + Time spent updating style in the Blink document lifecycle. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent updating a SVG image once all data is received. + + This histogram does not record metrics on machines with low-resolution + clocks. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent computing geometry information about iframes from the perspective + of their embedding document. This time is also included in the + Blink.IntersectionObservation.UpdateTime metric. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + + + + + chasej@chromium.org + feature-control@chromium.org + + Records usage of animated CSS properties used on a page, either statically + or dynamically, from the time the page is initialised to when it is closed + or navigated away from. Each property is counted at most once per page per + view via PageLoadMetricsObserver. + + This histogram counts CSS properties only when they are animated by a CSS + Animation. Refer to Blink.UseCounter.CSSProperties for more details. + + As of M69, Blink.UseCounter.AnimatedCSSProperties is moved from the blink + side to the browser side. + + Not recorded if the page is prerendered and cancelled. + + + + + + + + + chasej@chromium.org + feature-control@chromium.org + + Records usage of CSS properties used on a page, either statically or + dynamically, from the time the page is initialised to when it is closed or + navigated away from. Each property is counted at most once per page per view + via PageLoadMetricsObserver. + + The first time a CSS property is parsed on a page, the histogram is updated + to increment the counter. Each histogram bucket corresponds to a CSS + property (eg. width, border-radius). The exception is the 'Total pages + measured' bucket - this counts the number of pages that CSS properties were + counted on. When a page navigation occurs the page count bucket is + incremented and tracking of the set of which properties have been seen is + reset. + + These numbers give the percentage of pages that use a CSS property. For + example, if the 'border-radius' histogram bucket has a count of 250, and the + page count bucket (i.e. bucket number 1) has a count of 1000 - this means + that 1000 pages were recorded, and border-radius was used on 25% of those + pages. + + Note that CSS properties used inside of SVG images are tracked separately in + the Blink.UseCounter.SVGImage.CSSProperties histogram. + + As of M57 this histogram supercedes WebCore.FeatureObserver.CSSProperties. + + As of M69, Blink.UseCounter.AnimatedCSSProperties is moved from the blink + side to the browser side. + + Not recorded if the page is prerendered and cancelled. + + + + + iclelland@chromium.org + feature-control@chromium.org + + Counts enforced DocumentPolicyViolationReport generated in a document. + + + + + iclelland@chromium.org + feature-control@chromium.org + + Counts the use of a specific document policy via the + "Document-Policy" HTTP response header. + + + + + iclelland@chromium.org + feature-control@chromium.org + + Counts the use of a specific document policy via the "policy" + attribute. Each policy is counted only once per page load. + + Not recorded if the page is prerendered and cancelled. + + + + + iclelland@chromium.org + feature-control@chromium.org + + Counts report only DocumentPolicyViolationReport generated in a document. + + + + + + + chasej@chromium.org + feature-control@chromium.org + + Count of how many page loads use various features for pages with a + chrome-extension:// URL only. The PageVisits bucket is incremented for each + page load, and the other buckets incremented at most once per PageVisit via + the WebCore::UserCounter class. + + Warning: This histogram represents pre-renderer metrics and so is flawed + under OOPIF. + + Warning: this histogram was expired from 2021-10-10 to 2022-07-12; data may + be missing. + + + + + iclelland@chromium.org + feature-control@chromium.org + + Counts the use of a specific feature policy via the + "Feature-Policy" HTTP response header. + + + + + + + + + chasej@chromium.org + feature-control@chromium.org + + Count of how many page loads use various features across all frames in a + page. The PageVisits bucket is incremented for each page load, and the other + buckets incremented at most once per PageVisit via blink::UseCounter and + UseCounterPageLoadMetricsObserver. + + Note that this histogram only counts page with HTTP/HTTPS URL scheme. + Feature used in pages with other URL schemes might be counted in other + histograms: "extension://" : Blink.UseCounter.Extensions.Features + "file://" : Blink.UseCounter.File.Features + + Not recorded if the page is prerendered and cancelled. + + + + + toyoshim@chromium.org + mparc-dev@chromium.org + + Similar to Blink.UseCounter.AnimatedCSSProperties, this records usage of + animated CSS properties used on a FencedFrame Page. Either statically or + dynamically, from the time the page is initialised to when it is closed or + navigated away from. Each property is counted at most once per page per view + via PageLoadMetricsObserver. + + This histogram counts CSS properties only when they are animated by a CSS + Animation. Refer to Blink.UseCounter.FencedFrames.CSSProperties for more + details. + + Not recorded if the page is prerendered and cancelled. + + + + + toyoshim@chromium.org + mparc-dev@chromium.org + + Similar to Blink.UseCounter.CSSProperties, this records usage of CSS + properties used on a FencedFrame Page. Either statically or dynamically, + from the time the page is initialised to when it is closed or navigated away + from. Each property is counted at most once per page per view via + PageLoadMetricsObserver. + + The first time a CSS property is parsed on a page, the histogram is updated + to increment the counter. Each histogram bucket corresponds to a CSS + property (eg. width, border-radius). The exception is the 'Total pages + measured' bucket - this counts the number of pages that CSS properties were + counted on. When a page navigation occurs the page count bucket is + incremented and tracking of the set of which properties have been seen is + reset. + + These numbers give the percentage of pages that use a CSS property. For + example, if the 'border-radius' histogram bucket has a count of 250, and the + page count bucket (i.e. bucket number 1) has a count of 1000 - this means + that 1000 pages were recorded, and border-radius was used on 25% of those + pages. + + Note that CSS properties used inside of SVG images are not tracked. + + Not recorded if the page is prerendered and cancelled. + + + + + toyoshim@chromium.org + mparc-dev@chromium.org + + Similar to Blink.UseCounter.Features, this counts how many page loads use + various features across all frames in a FencedFrame page. The PageVisits + bucket is incremented for each page load, and the other buckets incremented + at most once per PageVisit via blink::UseCounter and + UseCounterPageLoadMetricsObserver. + + Note that this histogram only counts FencedFrames page with HTTP/HTTPS URL + scheme. Feature used in pages with other URL schemes are not counted. + + Not recorded if the page is prerendered and cancelled. + + + + + toyoshim@chromium.org + mparc-dev@chromium.org + + Similar to Blink.UseCounter.MainFrame.Features, this counts how many page + loads use various features across in the main frame of a FencedFrame page. + The PageVisits bucket is incremented at the beginning of each page load and + the other buckets incremented at most once per PageVisit via + blink::UseCounter and UseCounterPageLoadMetricsObserver throughout the + lifetime of a page load metrics observer. + + This histogram counts usage of web features in FencedFrames' main frame + only. Refer to Blink.UseCounter.FencedFrames.Features for more details. + + Not recorded if the page is prerendered and cancelled. + + + + + lbrady@google.com + shivanisha@chromium.org + dom@chromium.org + + Similar to Blink.UseCounter.PermissionsPolicy.Allow2, this counts the use of + a specific permissions policy feature via the "allow" attribute on + iframes under FencedFrames root. Each policy is counted only once per page + load. But the page is limited only to FencedFrames pages. + + Not recorded if the page is prerendered and cancelled. + + + + + lbrady@google.com + shivanisha@chromium.org + dom@chromium.org + + Similar to Blink.UseCounter.PermissionsPolicy.Header2, this counts the use + of a specific permissions policy feature via both "Feature-Policy" + and "Permissions-Policy" HTTP response header. Each policy is + counted only once per page load. But the page is limited only to + FencedFrames pages. + + Not recorded if the page is prerendered and cancelled. + + + + + lbrady@google.com + shivanisha@chromium.org + dom@chromium.org + + Similar to Blink.UseCounter.PermissionsPolicy.Violation.Enforce, this counts + the actual enforced permissions policy violation. The metrics is triggered + when ExecutionContext::IsFeatureEnabled with ReportOptions::ReportOnFailure + as param returns false, at most once per page visit. But the page is limited + only to FencedFrames pages. + + Not recorded if the page is prerendered and cancelled. + + + + + yhirano@chromium.org + mkwst@chromium.org + + Count of how many `file:` URL page loads use various features across all + frames in the page. This histogram has the same semantics as + "Blink.UseCounter.Features", but applies only to `file:` URLs + (which that histogram does not include). + + Refer to "Blink.UseCounter.Features" for more details. + + This counter expired on 2021-01-28 and was re-enabled on 2022-12-19. + + + + + + + chasej@chromium.org + feature-control@chromium.org + + Count of how many page loads use various features across in the main frame + of a page. The PageVisits bucket is incremented at the beginning of each + page load and the other buckets incremented at most once per PageVisit via + blink::UseCounter and UseCounterPageLoadMetricsObserver throughout the + lifetime of a page load metrics observer. + + This histogram counts usage of web features in main frame only. Refer to + Blink.UseCounter.Features for more details. + + Not recorded if the page is prerendered and cancelled. + + + + + iclelland@chromium.org + feature-control@chromium.org + + Counts the use of a specific permissions policy feature via the + "allow" attribute on iframes. Each policy is counted only once per + page load. Version 2 fixes the mismatched histogram name with data + collected. + + Not recorded if the page is prerendered and cancelled. + + + + + iclelland@chromium.org + feature-control@chromium.org + + Counts the use of a specific permissions policy feature via both + "Feature-Policy" and "Permissions-Policy" HTTP response + header. Each policy is counted only once per page load. Version 2 fixes the + mismatched histogram name with data collected. + + Not recorded if the page is prerendered and cancelled. + + + + + iclelland@chromium.org + feature-control@chromium.org + + Counts the actual enforced permissions policy violation. The metrics is + triggered when ExecutionContext::IsFeatureEnabled with + ReportOptions::ReportOnFailure as param returns false, at most once per page + visit. + + Not recorded if the page is prerendered and cancelled. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent preparing the document to service user driven behaviors. Examples + include inspector, selection, editing, find-in-page and focus. Includes time + spent in style update and layout. + + Note: As of 04/2023, scroll updates are included in user driven behaviors. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + sclittle@chromium.org + rajendrant@chromium.org + pdr@chromium.org + + Records the effective connection type whenever a lazily loaded image that + was initially above the fold becomes visible before it finishes loading. + + + + + sclittle@chromium.org + rajendrant@chromium.org + pdr@chromium.org + + Records the effective connection type whenever a lazily loaded image that + was initially below the fold becomes visible before it finishes loading. + + + + + rajendrant@chromium.org + bengr@chromium.org + + Milliseconds spent waiting for an above the fold image element to load. 0ms + is recorded if the image is already loaded by the time user scrolls to it. + EffectiveConnectionType (2G, 3G, etc) is recorded as suffix to this + histogram. {BlinkVisibleLoadTimeSuffixes} + + + + + + rajendrant@chromium.org + bengr@chromium.org + + Milliseconds spent waiting for a below the fold image element to load. 0ms + is recorded if the image is already loaded by the time user scrolls to it. + EffectiveConnectionType (2G, 3G, etc) is recorded as suffix to this + histogram. {BlinkVisibleLoadTimeSuffixes} + + + + + + + + + + + + szager@chromium.org + paint-dev@chromium.org + + Elapsed time between when a widget first registers a state invalidation that + requires a visual refresh; and when the main thread begins a main frame that + will send the updated visual state to the compositor. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent waiting for the compositor thread to begin processing a layer + update inside ProxyMain::BeginMainFrame. + + Note: PreFCP metrics will be recorded even if FCP is not reached, whereas + AggregatedPreFCP metrics are only recorded if FCP is reached. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + Note: The histograms with PreFCP/PostFCP/AggregatedPreFCP suffixes before + 105.0.5175.0 were impacted by https://crbug.com/1330675. Be careful when + aggregating or comparing these histograms across the version. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Whether a given JavaScript ImageDecoder instance completed operation + successfully or not. Logged upon destruction of the instance. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Image codec provided to JavaScript ImageDecoder constructor. Logged once per + successful construction upon completion of construction. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + The codec type used with {AudioCodecApi}. Recorded for every successful + configure() call. + + + + + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + The final media::StatusCode for each {CodecApi} instance. The final status + code is either StatusCode::kOk or the first fatal error encountered. + Recorded once upon destruction for each codec type. + + + + + + + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + The codec type used with {VideoCodecApi}. Recorded for every successful + configure() call. + + + + + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time it takes to perform a {CookieOperation} operation from the + CookieJar when the CookieManager is {ManagerState}. Logged on every + operation from the CookieJar. + + + + + + + + + + + + + + junov@chromium.org + fserb@chromium.org + aaronhk@chromium.org + + Time spent executing a script task that draws content to a {Context} context + of a {Host}. + + Note: This metric drops reports on clients with low-resolution clocks, which + means these reports will be biased against a portion of the population on + Windows. See Windows.HasHighResolutionTimeTicks for the affected sample. + + + + + + + + + + + + + + + + + + + + + + + + + + + + junov@chromium.org + fserb@chromium.org + aaronhk@chromium.org + + Memory usage on the {Heap} heap in KB, sampled after the execution of script + tasks that render content to a {Host}, using a {Context} context. + + + + + + + + + + + + + + + + + + + + + + diff --git a/histograms/metadata/bluetooth/OWNERS b/histograms/metadata/bluetooth/OWNERS new file mode 100644 index 000000000000..375ec00d2ed4 --- /dev/null +++ b/histograms/metadata/bluetooth/OWNERS @@ -0,0 +1,11 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +chadduffin@chromium.org +crisrael@google.com +julietlevesque@google.com +khorimoto@chromium.org +reillyg@chromium.org +jackshira@google.com +dclasson@google.com diff --git a/histograms/metadata/bluetooth/histograms.xml b/histograms/metadata/bluetooth/histograms.xml new file mode 100644 index 000000000000..671bc754953f --- /dev/null +++ b/histograms/metadata/bluetooth/histograms.xml @@ -0,0 +1,2011 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + Tracks the latency of the BlueZ {MethodName} DBus method. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + Tracks the result for BlueZ {MethodName} DBus method calls. + + + + + khorimoto@chromium.org + cros-connectivity@google.com + + Records {ConnectionType}. Emitted when any succesful bluetooth device + connection occurs, or when a unique bluetooth device connection per session + is successful. + + + + + + + + + khorimoto@chromium.org + cros-connectivity@google.com + Emitted each time a Bluetooth device is disconnected. + + + + khorimoto@chromium.org + cros-connectivity@google.com + + Records how long it takes for the user to select a device either after they + open the UI and Bluetooth is on, or after Bluetooth turns on while the UI is + open. {DeviceSelectionUISurfaces} + + + + + + + + khorimoto@chromium.org + cros-connectivity@google.com + + Records how long it takes for the user to select a device either after they + open the UI and Bluetooth is on, or after Bluetooth turns on while the UI is + open. {DeviceSelectionUISurfaces}{BluetoothTransportTypes} + + + + + + + khorimoto@chromium.org + cros-connectivity@google.com + + Records how long it takes for the user to select a device either after they + open the UI and Bluetooth is on, or after Bluetooth turns on while the UI is + open. {DeviceSelectionUISurfaces}{BluetoothPairedStates} + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Breaks down why a account key write attempt to a device failed (see + 'Bluetooth.ChromeOS.FastPair.AccountKey.Result'). Suffixed by FastPair + pairing protocol type. Emitted on the OnWriteAccountKey event in the Fast + Pair flow. + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Breaks down why a written attempt to the account-key GATT characteristic of + a device failed if it was a result of a GATT error. Emitted following a + OnWriteRequest error in the FastPairGattServiceClient. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records success or failure of writing an account key to a device. Emitted on + the OnPairFailure event and the OnDevicePaired event in the Fast Pair flow. + + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records success or failure of writing an account key to a device, split per + protocol and per Model ID. Emitted on the OnPairFailure event and the + OnDevicePaired event in the Fast Pair flow. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes to write the account key GATT characteristic + of a device. Time is calculated as the difference between when the write to + characteristic occurs and when the OnAccountKeyWrite event is fired in the + GattServiceClient during the pairing protocol. Emitted when the + OnAccountKeyWrite event fires. If the account key write fails, then no value + is logged to this metric. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes after being asked to confirm a passkey from + the device for the Chromebook to confirm the passkey. Emitted on a + successful confirmation of the passkey. No metric is emitted on failure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of connecting to the device after a + successful key exchange. We use ConnectDevice to establish a connection to + the device when we have do not have a BluetoothDevice instance from the + adapter, and instead need to add ourselves as a PairingDelegate. Emitted + when we connect to the device to start the pairing procedure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of creating a BLE scan filter, which we use + to scan for Fast Pair devices. Emitted when the scan filter is created. + Creating a scan filter can fail if the provided parameters are invalid. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the HTTP response error code from a failed HTTP GET request. Emitted + when the HTTP call fails. No metric is emitted on success. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the network error code from a failed HTTP GET request. Emitted when + the HTTP call fails. No metric is emitted on success. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of fetching device metadata from the + repository. This metric is emitted when the metadata is fetched. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the FastPair version of the discovered device. Emitted when showing + the discovery notification to the user for a device. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records each step in the Fast Pair flow. Emitted when the discovery UI is + shown, the discovery UI is dismissed, pairing progress begins, pairing + fails, pairing succeeded, the error UI is dismissed, and/or when the setting + button on the error UI is pressed. + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records each step in the Fast Pair flow, split per protocol, per device + type, and per notification type of the device from its metadata. Emitted + when the discovery UI is shown, the discovery UI is dismissed, pairing + progress begins, pairing fails, pairing succeeded, the error UI is + dismissed, and/or when the setting button on the error UI is pressed. + TODO(b/262923607): Remove once structured metrics for Fast Pair are + implemented. + + + + + + + + + + + + + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records each step in the Fast Pair flow, split per protocol and per Model + ID. Emitted when the discovery UI is shown, the discovery UI is dismissed, + pairing progress begins, pairing fails, pairing succeeded, the error UI is + dismissed, and/or when the setting button on the error UI is pressed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records success or failure of creating the FastPairDataEncryptor during the + Fast Pair handshake process: exchanging the secret key with the device for + subsequent encryption used to write to the device. The handshake occurs on + the device discovery, before the user elects to begin the pairing process. + Emitted in the FastPair handshake (key exchange with the device) following + the async call to create the data encryptor. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes for a successful async creation of a + FastPairDataEncryptor (see + 'Bluetooth.ChromeOS.FastPair.FastPairDataEncryptor.CreateResult'). The time + is calculated as the difference between the start of the call to create the + data encryptor, and when the callback is invoked. If the creation is + unsuccessful, then no value is logged to this metric. Emitted in the + FastPairHandshake on the OnDataEncryptorCreateAsync callback call. This + metric helps us understand how much time in the flow is being sunk into the + creation of the data encryptor, who's construction is responsible for + creating the secret key using ECDH (see + 'Bluetooth.ChromeOS.FastPair.KeyGenerationResult'). + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records whether or not device metadata we retrieve is in the cache in the + repository. Records true when the metadata is in the cache, and false when + the metadata is not in the cache. Emitted in the FastPairRepository on a + GetDeviceMetadata request. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of a Delete request in the FootprintsFetcher. + A failure is considered no response from the server. A success is considered + a response that is able to be parsed. Emitted when the HTTP response is + received from the Footprints server. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of a Get request in the FootprintsFetcher. A + failure is considered either no response, or a response that is unable to be + parsed. A success is considered a response that is able to be parsed. + Emitted when the HTTP response is received from the Footprints server. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of a Post request in the FootprintsFetcher. A + failure is considered no response from the server. A success is considered a + response that is able to be parsed. Emitted when the HTTP response is + received from the Footprints server. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the HTTP response error from a failed HTTP call to the Footprints + server. Emitted when the HTTP {Method} request fails. No metric is emitted + on success. + + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the network error code from a failed HTTP call to the Footprints + server. Emitted when the HTTP {Method} request fails. No metric is emitted + on success. + + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the number of attempts needed for a successful GATT connection. + Currently the highest allowed attempt number is 3. Emitted following a + successful GATT connection. No metric is emitted on failure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the effective success rate of creating a GATT connection during the + Fast Pair pairing protocol. Emitted following the attempted creation of the + GATT connection and all retries during the key based pairing exchange. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the Connect error code from a failure to create a GATT connection + during the Fast Pair pairing protocol. Emitted following the attempted + creation of the GATT service client during the key based pairing exchange. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records success or failure of creating a GATT connection during the Fast + Pair pairing protocol. Emitted following the attempted creation of the GATT + service client during the key based pairing exchange. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the Fast Pair failure reason behind a GATT connection retry. Emitted + before we attempt to retry GATT connection. No metric is emitted on success, + or when it is the first time we attempt a GATT connection. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records reason behind the failure of the big picture Fast Pair Handshake + with a device (see 'Bluetooth.ChromeOS.FastPair.Handshake.Result'). Emitted + on Handshake failure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of the big picture Fast Pair Handshake with a + device. Possible failures include: creating a GATT connection, creating the + data encryptor, writing to the device, parsing the response bytes from the + device. Success is considered when we receive a valid response from the + device. Emitted when the Handshake reaches a terminal point. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records each step in the Fast Pair Handshake flow: emitted when we start the + Handshake procedure, when we have a successful GATT initialization, when we + receive bytes from the Key-based pairing characteristic, and when the + Handshake is completed successfully. Helps us identify drop-off points of + failures in our flow, and effective success metrics by comparing the + difference between starting the procedure and completing the procedure + successfully. + + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of decrypting the response from the key based + pairing characteristic. Emitted in the handshake flow after the response + bytes have been attempted to be decrypted. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes to decrypt a successful response from the + key based pairing characteristic. Emitted in the handshake flow after the + response bytes have been attempted to be decrypted, only after a successful + decryption. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes to be notified of the Key-based pairing GATT + characteristic of the device changing during the handshake. The time is + calculated as the difference between when the WriteRequest is sent to the + device, and when we are notified of a response. If the write request attempt + fails or takes longer than 5 seconds, no value is logged to this metric. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Breaks down why a written attempt to the Key-based pairing GATT + characteristic of a device failed if it was a result of a GATT error. + Emitted following a OnWriteRequest error in the FastPairGattServiceClient. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Breaks down why a written attempt to the Key-based pairing GATT + characteristic of a device failed (see + 'Bluetooth.ChromeOS.FastPair.WriteKeyBasedPairing.Result'). Emitted on the + OnWriteResponse event in the Fast Pair handshake. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records success or failure of writing to the key-based pairing GATT + characteristic of the device during the handshake. Emitted following the + writing request in FastPairHandshake. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records success or failure of key pair generation during the Fast Pair + pairing encryption process. Emitted following the creation of the data + encryptor. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the error reason that caused the failure of creating a RFCOMM + channel (creating the MessageStream). This metric is emitted after the + channel is failed to be created in the MessageStreamLookup in the + OnConnectError callback. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of attempted to create an RFCOMM channel to + the device (creating the MessageStream). The metric is emitted in the + success/failure callbacks. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes to create a successful RFCOMM channel + connection to the device. This metric is emitted after the channel is + successfully created, and it is not emitted on failure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the error reason that caused the failure of receiving data from a + socket in the Fast Pair MessageStream opened to the device. This metric is + emitted following an error to receive data from a socket, and no metric is + emitted on success. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of receiving data from a socket in the Fast + Pair MessageStream opened to the device. This metric is emitted after the + socket is attempted to be receive to in the MessageStream, either + ReceiveDataSuccess or ReceiveDataError callbacks. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of navigating to Bluetooth settings from the + error notification. Emitted when the user clicks 'Settings' on the error + notification when there is a pair failure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the reason for failure to connect to the device after a successful + key exchange. We use PairDevice to establish a connection to the device when + we have a BluetoothDevice instance from the adapter. Emitted when we fail to + connect to the device to start the pairing procedure, and no metric is + emitted on success. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of connecting to the device after a + successful key exchange. We use PairDevice to establish a connection to the + device when we have a BluetoothDevice instance from the adapter. Emitted + when we connect to the device to start the pairing procedure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Breaks down why a pairing attempt to a device failed (see + 'Bluetooth.ChromeOS.FastPair.Pairing.Result'). Suffixed by FastPair pairing + protocol type. Emitted on the OnPairFailure event in the Fast Pair flow. + + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records success or failure of a pairing attempt (initiated in the UI) to a + device after the user elects to begin the pairing process on the UI. Emitted + on the OnPairFailure event and the OnDevicePaired event in the Fast Pair + flow. + + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the count of eligible users who pair devices without Fast Pair and + with Fast Pair. This metric is emitted after a device pairing event to the + Bluetooth adapter, once verified that it is not a Fast Pair device pairing, + and that the pairing was to connect to the Bluetooth adapter, not to + disconnect from it. It is also emitted when the Fast Pair OnDevicePaired + event fires. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the count of the number of retry attempts needed for a successful + Fast Pair pairing, which can be zero if no retry was needed. Emitted + following the successful pairing. There are only three retry attempts before + failure is declared. No metric is emitted on failure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of decrypting the response from the passkey + characteristic. Emitted in the pairing protocol flow after the response + bytes have been attempted to be decrypted. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes to decrypt a successful response from the + passkey characteristic. Emitted in the pairing protocol flow after the + response bytes have been successfully decrypted. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes to be notified of the Passkey GATT + characteristic of the device changing during the pairing protocol. The time + is calculated as the difference between when the WritePasskey is sent to the + device, and when we are notified of a response. If the write passkey attempt + fails or takes longer than 5 seconds, no value is logged to this metric. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Breaks down why a written attempt to the Passkey GATT characteristic of a + device failed if it was a result of a GATT error. Emitted following a + OnPasskeyRequest error in the FastPairGattServiceClient. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Breaks down why a written attempt to the Passkey GATT characteristic of a + device failed (see 'Bluetooth.ChromeOS.FastPair.Passkey.Result'). Emitted on + the OnWritePasskey event in the FastPairPairer. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records success or failure of writing to the Passkey GATT characteristic of + the device during the pairing protocol. Emitted following the passkey + request in the FastPairPairer. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes after connecting to the device following the + secret key exchange for the Chromebook to be asked by the device to confirm + the passkey. Emitted during the pairing protocol when the BluetoothDevice + pairing delegate is prompted to confirm the passkey. This metric is only + emitted to following a successful connection to the device, not emitted on + failure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records each step in the Fast Pair flow for the retroactive pairing + scenario. Emitted when the associate account UI is shown, the associate + account UI is dismissed, the save to account button is pressed on the + associate account UI, and when the learn more button is pressed on the + associate account UI. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records each step in the Fast Pair flow for the retroactive pairing + scenario, per device type and per notification type from its metadata. + Emitted when the associate account UI is shown, the associate account UI is + dismissed, the save to account button is pressed on the associate account + UI, and when the learn more button is pressed on the associate account UI. + TODO(b/262923607): Remove once structured metrics for Fast Pair are + implemented. + + + + + + + + + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records each step in the Retroactive Pair flow, split per Model ID. Emitted + when the associate account UI is shown, the associate account UI is + dismissed, the save to account button is pressed on the associate account + UI, and when the learn more button is pressed on the associate account UI. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of retroactive pairings. This metric is + emitted after the account key is attempted to be written to the device in + the retroactive pairing scenario. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the number of Fast Pair devices saved to a user's account. Emitted + following parsing the data fetched from the Footprints server to determine + the number of active devices, if any. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of fetching a user's list of Saved Devices + and opt-in status from the Footprints server. The fetching is initiated when + a user opens the Saved Device Bluetooth sub-age. This metric is emitted + following the fetching data attempt in the FastPairRepository. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of removing a Fast Pair device from the + Footprints server. Emitted each time a remove attempt completes following + user action to "remove" in the Saved Devices Bluetooth Settings + sub-page. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the time necessary to load the Saved Devices Bluetooth Settings + sub-age to a terminal state with a list of devices, from the user's + perspective. Time is calculated as the difference between when the user + opens the Saved Devices sub-page and a load request is immediately sent to + the WebUI layer, and when the WebUI receives a response back from the server + with a list of devices (even if it is empty). The metric is emitted after + the response has been transformed into the appropriate data to be displayed + on the settings page, which involves decoding image URLs and parsing bytes + to transform them into string keys, and sent to the Settings UI layer for + immediate display. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records events that happen in the Fast Pair Saved Devices Settings UI, e.g. + when a surface is shown. This is emitted a single time for each event that + occurs. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of updating a user's opt-in status to + STATUS_OPTED_IN. Emitted each time an update attempt completes following + user pairing via a Fast Pair protocol: initial, subsequent, or retroactive. + + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the success or failure of starting a BluetoothLowEnergy scan session + in the Fast Pair scanner. Emitted on success or failure of starting the scan + session. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes to create a successful GATT connection to + the device. Time is calculated as the difference between when the GATT + connection is beginning to connect, and when it reaches the connection + state. If the connection attempt fails or takes longer than 5 seconds, no + value is logged to this metric, + + + + + + Deprecated April 2022. Use + Bluetooth.ChromeOS.FastPair.TotalUxPairTime.{FastPairPairingProtocol}2 + instead. + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the time necessary to reach a terminal Fast Pair pair state, either + success or failure, after pairing begins to a device, from the user's + perspective. Time is calculated as the difference between when the user + selects to pair a device via Fast Pair, and when it reaches a pair failure + or pair succeeded state. The metric is emitted after a final pairing state + has been reached. + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the time necessary to reach a terminal Fast Pair pair state, either + success or failure, after pairing begins to a device, from the user's + perspective. Time is calculated as the difference between when the user + selects to pair a device via Fast Pair, and when it reaches a pair failure + or pair succeeded state. The metric is emitted after a final pairing state + has been reached. + + + + + + + + + khorimoto@chromium.org + cros-connectivity@google.com + Emitted each time a device forget attempt completes. + + + + khorimoto@chromium.org + cros-connectivity@google.com + + Records how long it takes for a failed pairing attempt, initiated from + Bluetooth Settings or System Tray, to finish. If the user needed to go + through an auth process during pairing, the time the user took to confirm + that is not included. {BluetoothTransportTypes} + + + + + + + + khorimoto@chromium.org + cros-connectivity@google.com + + Records how long it takes for a successful pairing attempt, initiated from + Bluetooth Settings or System Tray, to finish. If the user needed to go + through an auth process during pairing, the time the user took to confirm + that is not included. {BluetoothTransportTypes} + + + + + + + + khorimoto@chromium.org + cros-connectivity@google.com + + Breaks down why a pairing attempt to a peripheral failed (see + 'Bluetooth.ChromeOS.Pairing.Result'). + + Suffixed by Bluetooth transport type. View the base histogram to see results + for all transport types aggregated together, and suffixed histograms for the + results of just that particular transport type. {BluetoothTransportTypes} + + + + + + + + khorimoto@chromium.org + cros-connectivity@google.com + + Breaks down why a pairing attempt to a peripheral failed (see + 'Bluetooth.ChromeOS.Pairing.Result'). Emits the result of pairing attempts + that have explicitly failed, filtering out results where the device was not + paired due to non-error reasons e.g. the user cancelled the pairing attempt. + + Suffixed by Bluetooth transport type. View the base histogram to see results + for all transport types aggregated together, and suffixed histograms for the + results of just that particular transport type. {BluetoothTransportTypes} + + + + + + + + khorimoto@chromium.org + cros-connectivity@google.com + + Records success or failure of a pairing attempt (initiated in the UI) to a + peripheral after the user taps that device in the list of discovered + peripherals in Bluetooth Settings or System Tray. + + Suffixed by Bluetooth transport type. View the base histogram to see results + for all transport types aggregated together, and suffixed histograms for the + results of just that particular transport type. {BluetoothTransportTypes} + + + + + + + + khorimoto@chromium.org + cros-connectivity@google.com + + An enumerated histogram which captures the transport type of devices which + are paired with. Reports of transport types other than classic, BLE, or dual + should be considered concerning and investigated. + + + + + khorimoto@chromium.org + cros-connectivity@google.com + + Metric emitted when the user logs in on a device which supports Bluetooth as + well as when the Bluetooth adapter powered state changes (i.e., from off to + on or vice versa). + + + + + khorimoto@chromium.org + cros-connectivity@google.com + Record emitted when an {Operation}. + + + + + + + + khorimoto@chromium.org + cros-connectivity@google.com + Emitted each time a nickname change attempt completes. + + + + khorimoto@chromium.org + cros-connectivity@google.com + Metric emmitted each time a UI surface is shown. + + + + khorimoto@chromium.org + cros-connectivity@google.com + + Emitted each time a user attempted disconnection completes. + {BluetoothTransportTypes} + + + + + + + + khorimoto@chromium.org + cros-connectivity@google.com + + Measures the amount of time taken to connect to a device when initiated via + user interaction with the UI. {BluetoothTransportTypes} + + + + + + + + khorimoto@chromium.org + cros-connectivity@google.com + + Measures the amount of time taken to connect to a device when initiated via + user interaction with the UI. {BluetoothTransportTypes} + + + + + + + + khorimoto@chromium.org + cros-connectivity@google.com + + Breaks down why a user-initiated reconnection attempt to a peripheral failed + (see 'Bluetooth.ChromeOS.UserInitiatedReconnectionAttempt.Result'). + + Suffixed by Bluetooth UI surface. View the base histogram to see results for + all UI surfaces aggregated together, and suffixed histograms for the results + of just that particular UI surfaces. {UserInitiatedReconnectionUISurfaces} + + + + + + + + khorimoto@chromium.org + cros-connectivity@google.com + + Records success or failure of a reconnection attempt to an already paired + peripheral after the user taps that device in the list of peripherals in + Bluetooth Settings or System Tray. Explicitly excludes automatic + reconnection attempts initiated by Chrome OS. + + Suffixed by Bluetooth UI surface. View the base histogram to see results for + all UI surfaces aggregated together, and suffixed histograms for the results + of just that particular UI surfaces. {UserInitiatedReconnectionUISurfaces} + + + + + + + + adlr@chromium.org + + Counts the number of simulataneously connected Bluetooth devices. Used to + direct testing efforts, and by our UI team to determine appropriate UI + sizes. + + + + + reillyg@chromium.org + deviceapi-team@google.com + + Records the outcome of calls to BluetoothDiscoverySession::Stop. Used to + prioritize efforts to fix failures of this function. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records a specific scenario in which we fail to establish a Bluetooth + Classic connection with a remote device that is considered to be bonded. + Emitted when the function completes. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Failure reason when attempting to initiate an outgoing Bluetooth Classic + connection. Emitted when function completes. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Result of attempting a call to mojom::Adapter::ConnectToServiceInsecurely(). + Emitted when function completes. + + + + + jonmann@chromium.org + cros-system-services-networking@google.com + + Records the number of milliseconds a pending connect request has been + waiting on/for the experimental bluetooth::mojom::Adapter implementation. + This metric is only recorded when the class is destroyed. + + + + + jonmann@chromium.org + cros-system-services-networking@google.com + + This metric is emitted when the Mojo Adapter is destroyed, with the value of + how many outgoing connections were active because they were pending on + service discovery. Service discovery should not take so long as to still be + active when the Mojo Adapter is being torn down, so significant counts of + values other than 0 in this metric are a strong signal of incorrect behavior + and should be investigated. + + + + + michaelfsun@google.com + chromeos-bt-kpi@google.com + + Records the name of the Bluetooth stack when Ash starts up. The stack may be + different depending on build configurations and flags. + + + + + cmumford@chromium.org + deviceapi-team@google.com + + Records the outcome of a call to characteristic.readValue(). Used to know + what types of errors users are seeing. The results will be used to determine + how common these errors are and if we need to provide better error messages + to the users. + + + + + cmumford@chromium.org + deviceapi-team@google.com + + Records the outcome of a call to characteristic.startNofications(). Used to + know what types of errors users are seeing. The results will be used to + determine how common these errors are and if we need to provide better error + messages to the users. + + + + + cmumford@chromium.org + deviceapi-team@google.com + + Records the outcome of a call to characteristic.writeValue(). Used to know + what types of errors users are seeing. The results will be used to determine + how common these errors are and if we need to provide better error messages + to the users. + + + + + reillyg@chromium.org + deviceapi-team@google.com + + Records the result of a device.gatt.connect() call. Used to understand what + errors developers are getting so we can target efforts toward the most + common ones. + + + + + reillyg@chromium.org + deviceapi-team@google.com + + Records the UUIDs used when getting a characteristic. The recorded value is + a 31-bit hash of the UUID. Used to know what types of characteristics to + target when building libraries that use the Web Bluetooth API. + + + + + reillyg@chromium.org + deviceapi-team@google.com + + Records the UUIDs used when getting characteristics. The recorded value is a + 31-bit hash of the UUID. Used to know what types of characteristics to + target when building libraries that use the Web Bluetooth API. + + + + + reillyg@chromium.org + deviceapi-team@google.com + + Records what GATT Services are used when connected. The record value is a + 31-bit hash of the Service UUID. This will help us know if we should build + an API for specific services rather than a general Bluetooth API. + + + + + reillyg@chromium.org + deviceapi-team@google.com + + Records what GATT Services are used when connected. The record value is a + 31-bit hash of the Service UUID. This will help us know if we should build + an API for specific services rather than a general Bluetooth API. + + + + + reillyg@chromium.org + deviceapi-team@google.com + + Raw RSSI values provided to chooser, before processing them for display in + the Web Bluetooth chooser. This histogram is used to choose the 4 threshold + points used to display signal strength. + + See //content/browser/bluetooth/bluetooth_device_chooser_controller.cc. + + + + + reillyg@chromium.org + deviceapi-team@google.com + + Displayed RSSI levels, after processing and as displayed to users in the Web + Bluetooth chooser. + + + + + reillyg@chromium.org + deviceapi-team@google.com + + Records what services are used from either required or optional sets. The + recorded value is a 31-bit hash of the Service UUID. These results will help + us better understand the uses of the API and make changes according to + developers' behavior. + + + + + + diff --git a/histograms/metadata/bookmarks/OWNERS b/histograms/metadata/bookmarks/OWNERS new file mode 100644 index 000000000000..84cc738f940d --- /dev/null +++ b/histograms/metadata/bookmarks/OWNERS @@ -0,0 +1,4 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. diff --git a/histograms/metadata/bookmarks/histograms.xml b/histograms/metadata/bookmarks/histograms.xml new file mode 100644 index 000000000000..9b0370a99a0b --- /dev/null +++ b/histograms/metadata/bookmarks/histograms.xml @@ -0,0 +1,773 @@ + + + + + + + + + + + + johntlee@chromium.org + chrome-analysis-team@google.com + + Logs when a user action triggers a command in the bookmark manager. Commands + can be triggered by keyboard shortcuts, menu items or other buttons in the + UI. + + Revised in M-76 when the "Open (double click/enter)" bucket was + split into two separate buckets, one for bookmarks and one for folders. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + johntlee@chromium.org + + Logs the number of bookmarks that were dragged simultaneously by a user. + + + + + johntlee@chromium.org + dbeam@chromium.org + + Records the time taken to load the bookmarks Web UI and render. This is + roughly equivalent to 'time to first meaningful paint' for the bookmark + manager. + + + + + rhalavati@chromium.org + chrome-privacy-core@google.com + UI>Browser>Bookmarks + + This histogram records when a bookmark is added sliced on profile type. + + This was not recorded for Android before M90. Reading list and partner + bookmarks aren't reported by it. + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + Records the average size of bookmark nodes on disk. Approximated by dividing + the total size on disk by the number of non-folder nodes. Recorded at + startup when the bookmark model is loaded from disk. + + + + + roagarwal@chromium.org + sideyilmaz@chromium.org + chrome-incognito@google.com + UI>Browser>Bookmarks + + This histogram records the count of tabs when a user bookmarks all open + tabs, in incognito mode. + + + + + roagarwal@chromium.org + sideyilmaz@chromium.org + chrome-incognito@google.com + UI>Browser>Bookmarks + + This histogram records the count of tabs when a user bookmarks all open + tabs, in regular mode. + + + + + dfried@chromium.org + chrome-desktop-ui-sea@google.com + + Records whether a bookmarks bar drag-drop is from a URL (e.g. from the + location bar) or from the bookmarks bar itself (which is effectively a + move). + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + UI>Browser>Bookmarks + + This records the Boomarks bar pref state and status when the reading list is + opened. This will help determine how often the reading list is accessed from + the NTP where the bookmarks bar is always visible and the bookmark bar pref + state for those from the NTP. (Desktop only). + + + + + johntlee@chromium.org + UI>Browser>Bookmarks + + Logs the number of bookmark items inside a folder every time a folder is + opened inside the bookmark manager. + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + Records the number of bookmarks that were selected when a clone operation + starts. It doesn't include the children included in folder copies. + + + + + + Logged on profile open, including for profiles that do not support + bookmarks. (We did not investigate thoroughly; we don't know what value + typically was logged. Presumably 0.) Replaced in M-107 with the histogram + Bookmarks.Count.OnProfileLoad3, which is similar but only emitted on + profiles that may support bookmarks. + + supertri@chromium.org + isherman@chromium.org + aidanday@google.com + mamir@chromium.org + UI>Browser>Bookmarks + + The total number of bookmarks a user has saved, excluding folders. Recorded + when a profile is opened - precisely, when bookmarks are loaded into storage + from disk. The count includes all bookmarks both in the "Bookmarks + Bar" and also under "Other Bookmarks". + + + + + mastiz@chromium.org + sky@chromium.org + UI>Browser>Bookmarks + + The number of bookmarks a user has saved with a {UniquenessCriterion} that + is also present in at least one other bookmark. This excludes not only + folders (which don't have a URL) but it also excludes one bookmark per + unique {UniquenessCriterion} (that is, all except one are considered + duplicates). Recorded when bookmarks are loaded into storage from disk if + there is at least one duplicate. + + + + + This histogram was fine. It is being replaced with a version + "3" for a simple reason. Some other + Bookmarks.Count.OnProfileLoad* histograms needed to switch to a version + 3. This one is making the switch so all these histograms have the same + suffix. + + + + + + This histogram was fine. It is being replaced with a version + "3" for a simple reason. Some other + Bookmarks.Count.OnProfileLoad* histograms needed to switch to a version + 3. This one is making the switch so all these histograms have the same + suffix. + + + + + + This histogram was fine. It is being replaced with a version + "3" for a simple reason. Some other + Bookmarks.Count.OnProfileLoad* histograms needed to switch to a version + 3. This one is making the switch so all these histograms have the same + suffix. + + + + + + + + mastiz@chromium.org + sky@chromium.org + UI>Browser>Bookmarks + + The number of unique {UniquenessCriterion}s among bookmarks saved by the + user. Recorded when bookmarks are loaded into storage from disk. + + Opening a guest session (guest profile) also causes an emit to this + histogram even though guest sessions don't typically allow bookmarks. (The + value emitted is typically zero.) Under certain enterpise configuration, + guest sessions can have bookmarks. + + + + + Logged on profile open, including for profiles such as system profiles + that never support profiles. (We did not investigate thoroughly; we + don't know what value typically was logged. Presumably 0.) Replaced in + M-107 with the histogram name with a "3" at the end, which is + similar but only emitted on profiles that could theoretically support + bookmarks. + + + + + + Logged on profile open, including for profiles such as system profiles + that never support profiles. (We did not investigate thoroughly; we + don't know what value typically was logged. Presumably 0.) Replaced in + M-107 with the histogram name with a "3" at the end, which is + similar but only emitted on profiles that could theoretically support + bookmarks. + + + + + + Logged on profile open, including for profiles such as system profiles + that never support profiles. (We did not investigate thoroughly; we + don't know what value typically was logged. Presumably 0.) Replaced in + M-107 with the histogram name with a "3" at the end, which is + similar but only emitted on profiles that could theoretically support + bookmarks. + + + + + + + + supertri@chromium.org + isherman@chromium.org + aidanday@google.com + mamir@chromium.org + UI>Browser>Bookmarks + + The total number of bookmarks a user has saved, excluding folders. Recorded + when a profile is opened - precisely, when bookmarks are loaded into storage + from disk. The count includes all bookmarks both in the "Bookmarks + Bar" and also under "Other Bookmarks". + + Opening a guest session (guest profile) also causes an emit to this + histogram even though guest sessions don't typically allow bookmarks. (The + value emitted is typically zero.) Under certain enterpise configuration, + guest sessions can have bookmarks. + + + + + dfried@chromium.org + mickeyburks@chromium.org + UI>Browser>Bookmarks + + Logs a UI location from which a bookmark is edited, after the user opts to + edit or rename a bookmark or folder via a context menu, and immediately + before displaying the edit dialog. + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + Records the edit action users take on their bookmarks. + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + Records the edit action users take on their bookmarks. + + + + ianwen@chromium.org + UI>Browser>Bookmarks + How users add a new bookmark. + + + + ianwen@chromium.org + UI>Browser>Bookmarks + Logs a UI location from which a bookmark is launched. + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + Records the time interval between the time the bookmark was added/opened. + + Recorded when multi-selection is opened from the bookmark manager. Possible + that the selection is only 1 bookmark. + + + + + + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + Logs whether the bookmark entry is a user bookmark or a partner bookmark + when it is opened. + + Recorded when multi-selection is opened from the bookmark manager. Possible + that the selection is only 1 bookmark. + + + + + roagarwal@chromium.org + chrome-incognito@google.com + UI>Browser>Bookmarks + + This records the number of times the bookmark manager is opened from regular + or Incognito tab. This histogram only records the count from + ChromeTabbedActivity where we actually have the Bookmark manager UI. + Recorded when the bookmark menu item is clicked in Android. + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + A new version of Bookmarks.OpenBookmarkTimeInterval.{BookmarkType}, to rule + out corrupted data introduced by a timestamp bug. + + + + + + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + Logs whether the bookmark entry is a user bookmark or a partner bookmark + when it is opened. + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + This histogram records when a bookmark is added sliced by when it was added. + + Prior to M111 this histogram was overcounting events, and the data shouldn't + be used. + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + This histogram records when a bookmark is added sliced by when it was last + used. + + Prior to M111 this histogram was overcounting events, and the data shouldn't + be used. + + + + + emshack@chromium.org + chrome-desktop-ui-sea@google.com + UI>Browser>Bookmarks + + This histogram records the parent folder added to whenever a bookmark is + created or moved. + + + + + shaktisahu@chromium.org + UI>Browser>Bookmarks + UI>Browser>Mobile>ReadingList + + Logs the total number of reading list items shown in the reading list on the + Android Bookmarks page when it is opened. + + + + + shaktisahu@chromium.org + UI>Browser>Bookmarks + UI>Browser>Mobile>ReadingList + + Logs the number of read items shown in the reading list on the Android + Bookmarks page when it is opened. + + + + + shaktisahu@chromium.org + UI>Browser>Bookmarks + UI>Browser>Mobile>ReadingList + + Logs the number of unread items shown in the reading list on the Android + Bookmarks page when it is opened. + + + + + dfried@chromium.org + mickeyburks@chromium.org + UI>Browser>Bookmarks + + Logs a UI location from which one or more bookmarks are removed, after the + user requests them to be removed via a menu and immediately before they are + actually removed. + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + Records the source when a bookmark is removed. + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + UI>Browser>Bookmarks + + Recorded when an action in the Bookmark icon menu is clicked. + + + + + + Logged on profile open, including for profiles that do not support + bookmarks. (We did not investigate thoroughly; we don't know what value + typically was logged. Presumably 0.) Replaced in M-107 with + Bookmarks.Storage.FileSizeAtStartup2, which is similar but only emitted on + profiles that may support bookmarks. + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + Size of the bookmarks file, recorded when the bookmarks model is loaded. + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + Size of the bookmarks file, recorded when the bookmarks model is loaded. + + Opening a guest session (guest profile) also causes an emit to this + histogram even though guest sessions don't typically allow bookmarks. (The + value emitted is typically zero.) Under certain enterpise configuration, + guest sessions can have bookmarks. + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + Time delta between bookmark file saves, recorded when a save occurs. + Recorded on the first save as the time since startup. + + + + + + Logged on profile open, including for profiles that do not support + bookmarks. (We did not investigate thoroughly; we don't know what value + typically was logged. Presumably something small.) Replaced in M-107 with + Bookmarks.Storage.TimeToLoadAtStartup2, which is similar but only emitted on + profiles that may support bookmarks. + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + Duration of loading the bookmarks file, recorded when the bookmark model is + loaded. + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + Duration of loading the bookmarks file, recorded when the bookmark model is + loaded. + + Opening a guest session (guest profile) also causes an emit to this + histogram even though guest sessions don't typically allow bookmarks. (The + value emitted is typically zero.) Under certain enterpise configuration, + guest sessions can have bookmarks. + + + + + + Logged on profile open, including for profiles that do not support + bookmarks. (We did not investigate thoroughly; we don't know what value + typically was logged. Presumably 0.) Replaced in M-107 with + Bookmarks.Times.OnProfileLoad.TimeSinceAdded3, which is similar but only + emitted on profiles that may support bookmarks. + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + Records the average number of days since each bookmark was added. Recorded + on profile load. + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + Records the average number of days since each bookmark was added. Recorded + on profile load. Records zero for profiles with no bookmarks. + + Opening a guest session (guest profile) also causes an emit to this + histogram even though guest sessions don't typically allow bookmarks. (The + value emitted is typically zero.) Under certain enterpise configuration, + guest sessions can have bookmarks. + + + + + rhalavati@chromium.org + chrome-privacy-core@google.com + UI>Browser>Bookmarks + + The number of times bookmarks are used in each profile type. Recorded when a + bookmark is clicked. + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + The percentage of bookmarks which have been used expressed as 0-100. + Recorded on profile load. + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + The total number of bookmarks that haven't been opened. Recorded on profile + load. + + + + + wylieb@chromium.org + chrome-collections@google.com + UI>Browser>Bookmarks + + The total number of bookmarks that have been opened. Recorded on profile + load. + + + + + wylieb@chromium.org + chrome-collections@google.com + + Tracks the interactions with the price-tracking toggle present when viewing + previously saved products. + + + + + wylieb@chromium.org + chrome-collections@google.com + + Tracks the interactions with the price-tracking toggle present when + initially saving products. + + + + + emshack@chromium.org + chrome-desktop-sea@google.com + UI>Browser>PowerBookmarks + + Logs when the power bookmarks side panel is shown, as well as when the + search bar is defocused as a proxy for performing a search. The CTR can be + calculated by computing "Searched" / "Shown". + + + + + emshack@chromium.org + chrome-desktop-sea@google.com + UI>Browser>PowerBookmarks + + Records the sort type when the side panel is shown or when the sort type + changes. + + + + + emshack@chromium.org + chrome-desktop-sea@google.com + UI>Browser>PowerBookmarks + + Records the view type when the side panel is shown or when the view type + changes. + + + + + wylieb@chromium.org + chrome-collections@google.com + + Size of the power bookmarks database directory, recorded when the database + is loaded. + + + + + wylieb@chromium.org + chrome-collections@google.com + + Errors that occur in Power Bookmarks database. Recorded by + SharedStorageDatabase::DatabaseErrorCallback() just before the SQLite + database determines whether the error is catastrophic and handles it + accordingly. + + + + + wylieb@chromium.org + chrome-collections@google.com + + Tracks the PowerType of a successful power bookmark api call. + + + + + + + + + + wylieb@chromium.org + chrome-collections@google.com + Tracks the success of a power bookmark api call. + + + + + + + + + + + diff --git a/histograms/metadata/borealis/OWNERS b/histograms/metadata/borealis/OWNERS new file mode 100644 index 000000000000..4f4165307fc3 --- /dev/null +++ b/histograms/metadata/borealis/OWNERS @@ -0,0 +1,2 @@ +# All GuestOSes share the same OWNERS +file:../crostini/OWNERS diff --git a/histograms/metadata/borealis/histograms.xml b/histograms/metadata/borealis/histograms.xml new file mode 100644 index 000000000000..23458c19bcf6 --- /dev/null +++ b/histograms/metadata/borealis/histograms.xml @@ -0,0 +1,242 @@ + + + + + + + + + + danielng@google.com + src/chrome/browser/ash/borealis/OWNERS + + The highest dirty page value observed in Borealis that day (taken + from`/proc/meminfo`). Reported daily. + + + + + danielng@google.com + src/chrome/browser/ash/borealis/OWNERS + + The amount of bytes used per an inode, on average, in Borealis. This is + recorded once during each startup, when maitred emits disk related metrics. + + + + + philpearson@google.com + src/chrome/browser/ash/borealis/OWNERS + Borealis stateful KiB read per day. Reported daily. + + + + philpearson@google.com + src/chrome/browser/ash/borealis/OWNERS + Borealis stateful KiB written per day. Reported daily. + + + + philpearson@google.com + src/chrome/browser/ash/borealis/OWNERS + Borealis swap file KiB read per day. Reported daily. + + + + philpearson@google.com + src/chrome/browser/ash/borealis/OWNERS + Borealis swap file KiB written per day. Reported daily. + + + + danielng@google.com + src/chrome/browser/ash/borealis/OWNERS + + The percent of space that the VM is using in comparison to the total size of + the disk (i.e VM_usage/total_disk_size). This is recorded once during each + startup, when maitred emits disk related metrics. + + + + + danielng@google.com + src/chrome/browser/ash/borealis/OWNERS + + The percent of space that the VM is using in comparison to the total amount + of space being used (i.e VM_usage/total_usage). This is recorded once during + each startup, when maitred emits disk related metrics. + + + + + lqu@google.com + src/chrome/browser/ash/borealis/OWNERS + + {Variant} Engagement time metrics, along with foreground and background + time, are only collected on users with Borealis enabled. All four metrics + are accumulated and recorded to UMA once a day. + + + + + + + + + + + danielng@google.com + src/chrome/browser/ash/borealis/OWNERS + + The number of Borealis installation attempts. This is recorded each time a + user tries to install Borealis. Specifically, this metric is recorded when a + user clicks on the install or retry button in the Borealis installer. It is + intended that this metric is compared against the sum of + Borealis.Install.Result as a way to measure silent failures. + + + + + danielng@google.com + src/chrome/browser/ash/borealis/OWNERS + + Time taken for a successful installation. An install starts when the + "install" or "retry" installer buttons are clicked and + ends when the install completes successfully, at which point this metric is + recorded. Note that retries are considered as their own individual + installation attempts. + + + + + danielng@google.com + src/chrome/browser/ash/borealis/OWNERS + + The installation result, for example, a successful install, a cancelled + install, or an error. This is recorded after an installation attempt has + ended. + + + + + + Code moved to GuestOs, no longer recorded. + + hollingum@google.com + src/chrome/browser/ash/borealis/OWNERS + + The number of times the borealis DLC installation was retried by the + installer. The main use of this is to determine if 1 and 2 appear often, and + significantly more often than 3 (the maximum), i.e. to see whether retrying + leads to success or changes nothing. + + + + + lqu@google.com + src/chrome/browser/ash/borealis/OWNERS + + Recording every attempt to exit Borealis given the that VM was launched. + Recorded regardless of if the shutdown is successful. + + + + + cpelling@google.com + src/chrome/browser/ash/borealis/OWNERS + + A record of post-startup failures in Borealis components. Buckets are + recorded to when we become aware that the corresponding component has + failed. + + + + + danielng@google.com + src/chrome/browser/ash/borealis/OWNERS + + Return code from running fsck during VM startup. This is recorded once + during each startup, when maitred emits disk related metrics. + + + + + danielng@google.com + src/chrome/browser/ash/borealis/OWNERS + + The time taken for fsck to complete during VM startup. This is recorded once + during each startup, when maitred emits disk related metrics. + + + + + danielng@google.com + src/chrome/browser/ash/borealis/OWNERS + Recording every attempt to start Borealis (via the UI). + + + + danielng@google.com + src/chrome/browser/ash/borealis/OWNERS + + Recording the time taken for each successful attempt to start Borealis (via + the UI). + + + + + danielng@google.com + src/chrome/browser/ash/borealis/OWNERS + + Recording the result of each attempt to start Borealis, whether it was + successful or the error that it faced. + + + + + + diff --git a/histograms/metadata/browser/OWNERS b/histograms/metadata/browser/OWNERS new file mode 100644 index 000000000000..24e85d002e74 --- /dev/null +++ b/histograms/metadata/browser/OWNERS @@ -0,0 +1,9 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# For Browser.PaintPreview.* histograms: +ckitagawa@chromium.org + +# For Browser.Tabs.* histograms: +joenotcharles@google.com + +# For other histograms use chromium-metrics-reviews@google.com. diff --git a/histograms/metadata/browser/histograms.xml b/histograms/metadata/browser/histograms.xml new file mode 100644 index 000000000000..bd250f5ac20a --- /dev/null +++ b/histograms/metadata/browser/histograms.xml @@ -0,0 +1,1107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3/2022; feature launched. + + manukh@chromium.org + jdonnelly@chromium.org + chrome-omnibox-team@google.com + The time elapsed decoding an image using BitmapFetcher. + + + + + 3/2022; feature launched. + + manukh@chromium.org + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + The time elapsed fetching an image from a URL using BitmapFetcher. + + + + + + M109; Replaced by "ChromeOS.HaTS.*". + + aalsum@chromium.org + jackshira@google.org + cros-telemetry@google.com + + Records the overall satisfaction score for HaTS, to be analyzed against + other OS metrics like performance or number of crashes. There is one score + per survey type. Emitted when a user answers the first question on a HaTS + survey. + + + + + + + + + + + + + + + + + + + + + + + aalsum@chromium.org + cros-telemetry@google.com + + Records the stage up to which the user interacted with the HaTS Chrome OS + survey. This is needed in addition to the Hats metrics data since Chrome OS + relies on client side logic to roll the dice for device selection. This is + recorded when the Hats pipeline ends processing, which is usually when the + controller is destroyed. + + + + + lgrey@chromium.org + robliao@chromium.org + + Whether the user's system is in dark mode, light mode, or if this choice is + unavailable due to lack of system support. Updated every UMA upload. + + + + + lbaraz@chromium.org + xuhong@chromium.org + src/components/reporting/OWNERS + + Recorded when ReportQueue::Enqueue is called to post an event to ERP. It + counts occurrences of the call returning success or each possible error + Status. + + + + + xuhong@chromium.org + lbaraz@chromium.org + cros-reporting-team@google.com + + {Param} informed by the Missive daemon. Updated every time the Missive + daemon requests uploading. + + + + + + + + + + jrhilke@chromium.org + lbaraz@chromium.org + cros-reporting-team@google.com + + Recorded when uploading records to the reporting server. Counts the number + of records batched into a single upload request. + + + + + xuhong@chromium.org + lbaraz@chromium.org + cros-reporting-team@google.com + + The size of ERP's response payload as a JSON string when upload is + successful. Updated every time when an upload succeeds AND at least one hour + has passed since the last update AND 9 more uploads have succeeded since the + last update. + + + + + xuhong@chromium.org + lbaraz@chromium.org + cros-reporting-team@google.com + + The size of ERP's request payload as a JSON string when upload is + successful. Updated every time when an upload succeeds. + + + + + vshenvi@google.com + cros-reporting-team@google.com + + Would only be true. Recorded whenever the generation id is reset in the + storage queue. The generation id is set up once during storage queue + initialization using the metadata file that matches the last sequencing id + used to track, deduplicate and confirm delivery by the server. The + generation id is reset when this file is missing or corrupted and the + sequencing is irreparably broken. + + + + + xuhong@chromium.org + lbaraz@chromium.org + cros-reporting-team@google.com + + Would only be true. Recorded whenever an unusual timestamp is encountered + when enqueuing a record, which will be rejected. + + + + + anasr@google.com + cros-reporting-team@google.com + + Status of a completed ERP upload request, either successful, with a failure + or with a server error. + + + + + xuhong@chromium.org + lbaraz@chromium.org + cros-reporting-team@google.com + + The accumulated size per hour of ERP's {Param} payload as JSON strings when + upload is successful. Updated every hour. + + + + + + + + + + + etienneb@chromium.org + gab@chromium.org + chrome-analysis-team@google.com + + This metric is emitted every 30 seconds after main message loop start, when + there is user activity. Each 30 second duration is divided into 100ms + intervals. This metric counts the number of these intervals that were + "congested". An interval is congested if during it the UI or IO + thread executes an "important" task that was queued more than 100 + ms ago, or a non-important task or a native event handler that started + executing more than 100 ms ago. See + https://docs.google.com/document/d/1vDSGFvJblh7yJ3U3RVB_7qZLubyfTbQdQjuN1GoUNkc/edit + for more details. + + This metrics graduated from + Browser.Responsiveness.JankyIntervalsPerThirtySeconds(1,2,3) and their + history might be useful to understand how we got here. + + Suffixed phases can be useful as diagnosis metrics. This phase represents: + {Phase} + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + + + + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records the size of a compressed on-disk capture for the paint preview after + a proto is written to disk if compressed. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records the number of frames captured by a paint preview if it succeeded. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records a boolean indicating whether a capture attempt was successful. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records the total time spent capturing a paint preview of a page. This + includes capture and serialization of all frames and IPC time. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records if the paint preview compositor process started correctly. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records the time it took to start the paint preview compositor process. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + Records when a link is clicked in the paint preview player. + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records the time taken to from the request to start the compositor process + to the first bitmap being loaded. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records the the reason for exiting the compositor process for the + TabbedPaintPreviewPlayer. Recorded when the compositor returns an error or + disconnects. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records the the reason for exiting TabbedPaintPreviewPlayer. Recorded when + paint preview is removed. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records whether paint preview was drawn before the tab finished loading. + Recorded when tab has finished loading. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records whether a paint preview exists. Recorded when attempting to show a + preview on startup. This in conjuction with CompositorFailureReason gives + the total number of failures to show a paint preview. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records the number of times that the upgrade snackbar was shown in a session + of TabbedPaintPreviewPlayer. Recorded when paint preview is removed. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records the time taken to from actvity creation to the first bitmap being + shown. Recorded on first paint preview paint event. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records the length of the time that a session of TabbedPaintPreviewPlayer + lasts. Recorded when paint preview is removed. + {TabbedPaintPreviewPlayerUptime} + + + + + + + + + + + + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + Records the total disk usage by the Paint Preview Tab Service at startup of + the profile keyed service. + + + + + gab@chromium.org + olivierli@chromium.org + + Similar to Browser.Responsiveness.IOJankyIntervalsPerMinute but sums janky + events across all foreground threads over the monitored minute rather than + considering each interval a boolean. This aims to cover a blind spot of + IOJankyIntervalsPerMinute as it cannot see an improvement where we unblock + 19/20 threads performing I/O. Not reported across system sleep. More details + @ https://bit.ly/chrome-io-jank-metric + + + + + gab@chromium.org + olivierli@chromium.org + + This metric is emitted every minute. It reports a number between 0 and 60 + which corresponds to the number of 1 second intervals during the monitored + minute to which a stalled foreground thread + ScopedBlockingCall(BlockingType::MAY_BLOCK) was attributed. A stalled call + is first attributed to the interval in which it began, and is attributed to + a number of intervals equal to the length of the call, rounded to the + nearest second. (Before http://crrev.com/c/2314873, the length was truncated + rather than rounded.) This aims to capture moments where the main thread is + responsive but the application is not (because things aren't loading). Not + reported across system sleep. More details @ + https://bit.ly/chrome-io-jank-metric + + + + + jonross@chromium.org + sky@chromium.org + + The time it takes for the browser to request a tab to be visible. Note that + this only measures the time from the browser deciding to make the tab + visible (after a click, or keyboard-shortcut to switch tabs), until the tab + is requested to become visible. The time it takes to actually make the tab + visible and show on screen is measured in a separate metric, in + Browser.Tabs.TotalSwitchDuration3. + + This metric uses UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES so only users with + high resolution clocks will report this metric. + + + + + fdoray@chromium.org + joenotcharles@google.com + catan-team@chromium.org + + Whether a frame was presented after a tab switch event. Recorded based on + the destination tab state when the tab switch starts: {TabSwitchingType} + + + + + + fdoray@chromium.org + jonross@chromium.org + joenotcharles@google.com + catan-team@chromium.org + + The time between a tab switch input event timestamp and when the tab is + hidden, if no frame is presented in the meantime. Recorded based on the + destination tab state when the tab switch starts: {TabSwitchingType} + + + + + + jonross@chromium.org + joenotcharles@google.com + catan-team@chromium.org + + + The time between the input event timestamp and the frame presentation time + on a tab switch. Recorded based on the destination tab state when the tab + switch starts: {TabSwitchingType} + + + + + + etienneb@chromium.org + sky@chromium.org + + For each attempt to write a theme pack on disk, counts whether the attempt + succeeded. + + + + + rhalavati@chromium.org + chrome-privacy-core@google.com + + Number of open guest windows at the same time. Recorded when a new guest + window is created. Please note that this metric double counts the lower + numbers, meaning that if user opens three windows (without closing any in + between), then buckets 1, 2, and 3 will all be incremented in turn. + + + + + rhalavati@chromium.org + chrome-privacy-core@google.com + + Number of open incognito windows at the same time. Recorded when a new + incognito window is created. Please note that this metric double counts the + lower numbers, meaning that if user opens three windows (without closing any + in between), then buckets 1, 2, and 3 will all be incremented in turn. + + + + + + + wfh@chromium.org + chrome-stability-core@google.com + + Count of renderer process terminations due to a code integrity failure, + grouped by type. This is only reported on Windows. + + + + + + + wfh@chromium.org + chrome-stability-core@google.com + Count of renderer process crashes grouped by type. + + + + + + wfh@chromium.org + chrome-stability-core@google.com + Count of renderer process kills grouped by type. + + + + + + oshima@chromium.org + chrome-stability-core@google.com + + Out of BrowserRenderProcessHost.ChildKills, numer of kills due to SIGKILL, + which is a strong signal of out of memory on Chrome OS, grouped by renderer + type. + + + + + + + wfh@chromium.org + chrome-stability-core@google.com + + The launch error codes for failed renderer process launches. + + + + + + + wfh@chromium.org + chrome-stability-core@google.com + Count of renderer process launch failures grouped by type. + + + + + + wfh@chromium.org + chrome-stability-core@google.com + + Count of renderer process crashes that we miscounted because we took the + exit code too early. Grouped by type. + + + + + creis@chromium.org + avi@chromium.org + + Reports false each time the Task Manager displays an unlabeled renderer + process using the fallback task provider, indicating that a type of renderer + process is missing a task provider, which is a bug. For comparison, this + reports true when renderer processes are properly labeled by a primary task + provider. These values are only reported when the Task Manager is open. This + can be removed when no unlabeled cases remain, per https://crbug.com/739782. + + + + + + 4/2023; the data has been collected, verifying that less than 1% of routing + ID space is used in practice. + + alexmos@chromium.org + dcheng@chromium.org + + Record the percentage of routing IDs ever used by a RenderProcessHost when + the C++ object is destroyed. The denominator is the range of all potentially + usable routing IDs—usually std::numeric_limits<int32_t>::max()—but may + be smaller (e.g. half that range). + + This histogram does not record data if the routing ID overflows; that event + is captured as a browser crash instead. + + + + + alexmos@chromium.org + lukasza@chromium.org + + Records what happens when an attempt is made to use a spare + RenderProcessHost - logs that either the attempt succeeded or why it failed. + + + + + + + wfh@chromium.org + chrome-stability-core@google.com + + Whether or not kernel-mode execution was recorded for a suspended renderer + process. This is recorded after process creation but before process + resumption. This is recorded for every sandboxed Renderer process launched + on Windows only. + + + + + + + wfh@chromium.org + chrome-stability-core@google.com + + Whether or not user-mode execution was recorded for a suspended renderer + process. This is recorded after process creation but before process + resumption. This is recorded for every sandboxed Renderer process launched + on Windows only. + + + + + peconn@chromium.org + peter@chromium.org + + Triggered when a TrustedWebActivity is paused, recording the time since it + had been resumed. + + + + + peconn@chromium.org + peter@chromium.org + + The result of Digital Asset Link verification performed when starting a + Trusted Web Activity. + + + + + peconn@chromium.org + peter@chromium.org + + Triggered when Trusted Web Activity verification completes. Records how long + it takes the device to realise it is offline and fall back to the cached + result. + + + + + peconn@chromium.org + peter@chromium.org + + Triggered when Trusted Web Activity verification completes. Records how long + verification took when online. + + + + + nicolaso@chromium.org + pastarmovj@chromium.org + + Records which browser the Legacy Browser Support feature is configured to + open (which defaults to IE). Recorded on browser startup, and when the value + changes. Only measured when Legacy Browser Support is enabled via the + BrowserSwitcher* policies. Desktop Chrome only. + + + + + nicolaso@chromium.org + pastarmovj@chromium.org + + Records whether the "AppData/Local/Google/BrowserSwitcher" + directory was successfully created. Windows only. + + + + + nicolaso@chromium.org + pastarmovj@chromium.org + + Records whether a temp file in + "AppData/Local/Google/BrowserSwitcher" the directory was + successfully created. Windows only. + + + + + nicolaso@chromium.org + pastarmovj@chromium.org + + Records whether the temp file in + "AppData/Local/Google/BrowserSwitcher" directory was successfully + moved to its final destination ("cache.dat") after writing its + contents. Windows only. + + + + + nicolaso@chromium.org + pastarmovj@chromium.org + + On navigation and redirect, whether to switch browsers or not. Only measured + when Legacy Browser Support is enabled via the BrowserSwitcher* policies. + When this is true, Chrome attempts to launch an alternative browser + (typically IE) with the navigation URL. Desktop Chrome only. + + + + + nicolaso@chromium.org + pastarmovj@chromium.org + + On navigation and redirect, records how long it took to compute a decision + (stay in Chrome/open in IE). Only measured when Legacy Browser Support is + enabled via the BrowserSwitcher* policies. Desktop Chrome only. + + + + + nicolaso@chromium.org + pastarmovj@chromium.org + + Number of rules that come from an external greylist XML file. Measured when + the sitelist is loaded during browser startup. Desktop Chrome only. + + + + + nicolaso@chromium.org + pastarmovj@chromium.org + + Number of rules that come from an external sitelist XML file. Measured when + the sitelist is loaded during browser startup. Desktop Chrome only. + + + + + nicolaso@chromium.org + pastarmovj@chromium.org + + Number of rules in the BrowserSwitcherUrlGreylist policy. Measured when the + policy is loaded. Desktop Chrome only. + + + + + nicolaso@chromium.org + pastarmovj@chromium.org + + Whether there is a wildcard ("*") rule in the + BrowserSwitcherUrlGreylist policy. Measured when the + BrowserSwitcherUrlGreylist policy gets updated. Desktop Chrome only. + + + + + nicolaso@chromium.org + pastarmovj@chromium.org + + Number of rules that come from Internet Explorer Enterprise Mode's sitelist. + Measured when the sitelist is loaded during browser startup. Windows only. + + + + + nicolaso@chromium.org + pastarmovj@chromium.org + + Records whether an attempt to launch an alternate browser failed or + succeeded. Desktop Chrome only. + + + + + nicolaso@chromium.org + pastarmovj@chromium.org + + Records how long it took to launch an alternate browser (regardless of + whether it failed or succeeded). Desktop Chrome only. + + + + + nicolaso@chromium.org + pastarmovj@chromium.org + + Number of rules in the BrowserSwitcherUrlList policy. Measured when the + policy gets updated. Desktop Chrome only. + + + + + nicolaso@chromium.org + pastarmovj@chromium.org + + Whether there is a wildcard ("*") rule in the + BrowserSwitcherUrlList policy. Measured when the BrowserSwitcherUrlList + policy gets updated. Desktop Chrome only. + + + + + swestphal@chromium.org + rayankans@chromium.org + + Records the number of fingerprints in assetlinks.json for every performed + Digital Asset Link validation with a valid `sha256_cert_fingerprints`-entry. + + + + + + + rkaplow@chromium.org + src/components/infobars/OWNERS + + Records how many times a particular infobar was shown to the user. On + Android, the infobar may be partially hidden due to stacking. On desktop, a + tab with a visible infobar will increment this histogram every time the user + switches away from the tab and back to it with the infobar still visible. + + + + + + + mdjones@chromium.org + + Records how many times a particular infobar was displayed in a hidden state + due to at least one other infobar existing. If there are no existing + infobars, but the user scrolls at the exact moment a new infobar is added, + the infobar may be hidden, but not recorded in this metric. Reliably + triggering and detecting this combination is tricky so it isn't done. Only + recorded on Android. + + + + + + + mdjones@chromium.org + + Records how many times a particular infobar was visible and hiding a new + infobar behind it. Only recorded on Android. + + + + + + + mdjones@chromium.org + + Records how many times a particular infobar was displayed in a visible state + due to no other infobars existing. If there are no existing infobars, but + the user scrolls at the exact moment a new infobar is added, the infobar may + be hidden, but recorded here as visible. Reliably triggering and detecting + this combination is tricky so it isn't done. Only recorded on Android. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + Records how long the side panel was open for (capped at 1 hour) starting + when the side panel is triggered to be opened. Note this might be different + than when the side panel becomes visible due to delays for loading content. + Recorded when the side panel is closed. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + Logs the UI location from which the side panel is triggered to be opened. + Recorded when the side panel is shown and a trigger is provided. + + + + + emshack@chromium.org + chrome-desktop-ui-sea@google.com + + Records the width of the side panel contents after the side panel was + resized. + + + + + emshack@chromium.org + chrome-desktop-ui-sea@google.com + + Records the width of the side panel contents as a percentage of the browser + window width after the side panel was resized. + + + + + emshack@chromium.org + chrome-desktop-ui-sea@google.com + + Records the width of the side panel contents after the side panel was + resized, while the {SidePanelEntry} side panel entry was displayed. + + + + + + emshack@chromium.org + chrome-desktop-ui-sea@google.com + + Records the width of the side panel contents as a percentage of the browser + window width after the side panel was resized, while the {SidePanelEntry} + side panel entry was displayed. + + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + Records how long the {SidePanelEntry} side panel entry was open for (capped + at 1 hour). This is recorded in SidePanelEntry::OnEntryHidden when the entry + is hidden (ie. switching entries or the side panel closing). + + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + Records how a side panel entry is triggered to be shown. (i.e. by toolbar + button, by commbobox selection). This is recorded when a new side panel + entry is triggered to be shown regardless any side panel entry is currently + open. + + + + + + + diff --git a/histograms/metadata/browsing_topics/OWNERS b/histograms/metadata/browsing_topics/OWNERS new file mode 100644 index 000000000000..84cc738f940d --- /dev/null +++ b/histograms/metadata/browsing_topics/OWNERS @@ -0,0 +1,4 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. diff --git a/histograms/metadata/browsing_topics/histograms.xml b/histograms/metadata/browsing_topics/histograms.xml new file mode 100644 index 000000000000..0c16dd3673b0 --- /dev/null +++ b/histograms/metadata/browsing_topics/histograms.xml @@ -0,0 +1,174 @@ + + + + + + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + Records the action type of the request. Recorded when a topics request is + handled in `BrowsingTopicsService`. Redirects (for fetch and xhr) will be + counted as separate histogram entries. + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + Records the load finish status of BrowsingTopicsState. Recored when the + state is loaded from the file at the start of each browser session. + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + Records the browsing topics calculation result status (i.e. success, or the + failure reason). Recored at the end of each (weekly) topics calculation. + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + Records the count of distinct history hosts that are eligible for topics + calculation. Recorded during each (weekly) topics calculation after the + observation domains are derived. In case of a calculation failure (e.g. + permission denied, etc.), this metric won't be recorded. + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + Records the count of topics derived from history hosts in the past epoch + (week). Recorded during each (weekly) topics calculation after the top + topics are derived. In case of a calculation failure (e.g. permission + denied, etc.), this metric won't be recorded. + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + Records the count of context domains for each of the calculated top topics. + This won't exceed the cap number + `kBrowsingTopicsMaxNumberOfApiUsageContextDomainsToKeepPerTopic`. Recorded + once for each calculated top topics, during each (weekly) topics calculation + after the observation domains are derived. In case of a calculation failure + (e.g. permission denied; candidate topic was blocked; etc.), this metric + won't be recorded. + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + Records the count of derived top topics before random ones are padded. + Recorded during each (weekly) topics calculation after the top topics are + derived. In case of a calculation failure (e.g. permission denied, etc.), + this metric won't be recorded. + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + Records the time it takes for document.browsingTopics() to resolve. Recorded + each time the promise is resolved. + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + When retrieving topics is a success, the number of those topics that were + returned (weren't filtered) that were fake (noised). + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + When retrieving topics is a success, the number of those topics that were + not returned because they were filtered due to the caller not having + observed the user on a site about that topic recently. + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + When retrieving topics is a success, the number of those topics that were + returned (weren't filtered) that were real topics (as opposed to noised). + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + Records the result of attempts to retrieve the user's Topics (either via + javascript or headers). The result is either success or an error. + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + Records initialization status of BrowsingTopics SiteDataStorage database. + Recored when the database is lazily initialised when the first operation is + encountered. + + + + + + diff --git a/histograms/metadata/bruschetta/OWNERS b/histograms/metadata/bruschetta/OWNERS new file mode 100644 index 000000000000..4f4165307fc3 --- /dev/null +++ b/histograms/metadata/bruschetta/OWNERS @@ -0,0 +1,2 @@ +# All GuestOSes share the same OWNERS +file:../crostini/OWNERS diff --git a/histograms/metadata/bruschetta/histograms.xml b/histograms/metadata/bruschetta/histograms.xml new file mode 100644 index 000000000000..29d5d5873659 --- /dev/null +++ b/histograms/metadata/bruschetta/histograms.xml @@ -0,0 +1,41 @@ + + + + + + + + + + davidmunro@google.com + src/chrome/browser/ash/bruschetta/OWNERS + The result of an attempt to install Bruschetta. + + + + davidmunro@google.com + src/chrome/browser/ash/bruschetta/OWNERS + The result of an attempt to launch Bruschetta. + + + + + diff --git a/histograms/metadata/chrome/OWNERS b/histograms/metadata/chrome/OWNERS new file mode 100644 index 000000000000..b1a2fcf36849 --- /dev/null +++ b/histograms/metadata/chrome/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +tbansal@chromium.org diff --git a/histograms/metadata/chrome/histograms.xml b/histograms/metadata/chrome/histograms.xml new file mode 100644 index 000000000000..b605e021ccb6 --- /dev/null +++ b/histograms/metadata/chrome/histograms.xml @@ -0,0 +1,407 @@ + + + + + + + + + + ajgo@chromium.org + anunoy@chromium.org + + Result of polling for the installed version of Chrome. Logged once at + startup then approximately every two hours. + + + + + behamilton@google.com + pauljensen@chromium.org + + Track execution of KAnonymity Service JoinSet requests for both normal + operation and errors. The kJoinSet enumeration is emitted when the service + is called and either kJoinSetSuccess or one of the error enumerations is + emitted at the end of the request. + + + + + behamilton@google.com + pauljensen@chromium.org + + Records the length of time the K-Anonymity service spends processing a + JoinSet request. This includes time taking waiting in the JoinSet queue, + getting a trust token (if necessary), performing the request, and waiting + for the response. This metric is only measured for successful requests. + + + + + behamilton@google.com + pauljensen@chromium.org + + Track execution of KAnonymity Service QuerySet requests for both normal + operation and errors. The kQuerySet enumeration is emitted when the service + is called and either kQuerySetsSuccess or one of the error enumerations is + emitted at the end of the request. + + + + + behamilton@google.com + pauljensen@chromium.org + + Records the length of time the K-Anonymity service spends processing a + QuerySet request. This includes time taking waiting in the QuerySet queue, + formatting the request, performing the request, waiting for the response, + and parsing the response. This metric is only measured for successful + requests. + + + + + behamilton@google.com + pauljensen@chromium.org + + Records the number of elements queried per call for each call to QuerySet. + + + + + behamilton@google.com + pauljensen@chromium.org + + Track execution of KAnonymityTrustTokenGetter requests for both normal + operation and errors. The kTryGetTrustTokenAndKey enumeration is emitted + when the service is called and either kGetTrustTokenSuccess or one of the + error enumerations is emitted at the end of the request. + + + + + behamilton@google.com + pauljensen@chromium.org + + Records how the length of time the K-Anonymity service spends fetching trust + tokens. This includes time taken waiting in the TrustTokenGetter queue, + getting the OAuth token, getting the key commitment, and requesting the + trust token. This metric is only measured for successful requests. + + + + + + This metric is reported on every dropped frame instead of every frame. It is + deprecated in favor of + Chrome.Lacros.Smoothness.PercentDroppedFrames_1sWindow2 + + xiyuan@chromium.org + chromeos-perfmetrics-eng@google.com + + Similar to Ash.Smoothness.PercentDroppedFrames_1sWindow but emitted for the + browser UI of lacros-chrome. + + + + + xiyuan@chromium.org + chromeos-perfmetrics-eng@google.com + + Similar to Ash.Smoothness.PercentDroppedFrames_1sWindow2 but emitted for the + browser UI of lacros-chrome. + + + + + gab@chromium.org + etienneb@chromium.org + + The result of every rendez-vous reported once per browser process launch. + + + + + gab@chromium.org + etienneb@chromium.org + The reason of remote hang processes termination. + + + + gab@chromium.org + etienneb@chromium.org + + Used to send the result of interaction with remote process as histograms in + case when remote process influences on start. + + + + + gab@chromium.org + etienneb@chromium.org + + The error code of remote process termination on Posix in case when remote + process hung. + + + + + gab@chromium.org + etienneb@chromium.org + + The error code of remote process termination on Windows in case when remote + process hung. + + + + + gab@chromium.org + etienneb@chromium.org + + Time it takes from TerminateProcess call to the moment when we stop waiting + for remote process switches to signal state. + + + + + gab@chromium.org + etienneb@chromium.org + + The error code of wating for remote process termination on Windows. + + + + + etienneb@chromium.org + gab@chromium.org + + Time it takes to grab the process singleton. Reported once per successful + attempt at obtaining the singleton. + + + + + etienneb@chromium.org + gab@chromium.org + + Time it takes to return an error from the process singleton algorithm (nor + succeeding in obtaining it, nor in generating a rendez-vous). This does not + include time spent in the fast notification path (chrome_exe_main_win.cc). + + + + + etienneb@chromium.org + gab@chromium.org + + Time it takes to find the process singleton owner and notify it. Reported + once per successful rendez-vous. This does not include time spent in the + fast notification path (chrome_exe_main_win.cc). + + + + + wfh@chromium.org + mmenke@chromium.org + + The platform-specific error code returned from a failed attempt to launch + the network service process sandboxed. This is recorded if an attempt is + made to launch a sandboxed network service process, and the launch fails. + See also ChildProcess.LaunchFailed.UtilityProcessErrorCode. + + + + + wfh@chromium.org + mmenke@chromium.org + + The Windows last error obtained from a call to GetLastError after a failed + attempt to launch the network service process sandboxed. This is recorded if + an attempt is made to launch a sandboxed network service process on Windows, + and the launch fails. See also ChildProcess.LaunchFailed.WinLastError. + + + + + wfh@chromium.org + mmenke@chromium.org + + The operational state of the network sandbox. This is recorded each time the + browser attempts to launch the network service process. This might be + recorded multiple times from the same client if the network service process + crashes or does not launch correctly. This is not recorded if the network + service is running in-process. + + + + + yichenz@chromium.org + chromeos-wmp@google.com + + Tracks the animation smoothness for the fade-in animation of tab hover card. + + + + + yichenz@chromium.org + chromeos-wmp@google.com + + Tracks the animation smoothness for the fade-out animation of tab hover + card. + + + + + yichenz@chromium.org + chromeos-wmp@google.com + + Tracks the animation smoothness of tab loading animation. A tracker starts + when the first tab loading animation starts and stops after the last one + stops for each browser window. The metric is emitted when the tracker stops. + + + + + gayane@chromium.org + yyushkina@chromium.org + + Records installed color id every time theme service is initialized from + prefs. Happens once per profile load. + + + + + pmonette@chromium.org + kristianm@chromium.org + + Records the NTSTATUS result that was returned when attempting to hook + NtMapViewOfSection during chrome_elf.dll initialization. Emitted + asynchronously shortly after startup. This histogram was expired between M82 + and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + Records the number of attempts needed before third-party DLL blocking was + properly set up. This is logged immediately after a successful setup. Only + recorded on Windows. This histogram was expired between M82 and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + Records the successes and failures when running the third-party DLL blocking + setup code, taking into account the safety beacon. Used to determine how + often the third-party DLL blocking is disabled because it failed to + initialize properly twice in a row. Only recorded on Windows. This histogram + was expired between M82 and M114. + + + + + wfh@chromium.org + ssmole@microsoft.com + + Records the outcome of the heuristic to selectively enable or disable the + ProcessExtensionPointDisablePolicy. Used to determine how often the policy + will be enabled in practice, as the heuristic detects the presence of third + party software. Only recorded on Windows. This histogram was expired between + M93 and M114. + + + + + + Retained for historical data. + + pmonette@chromium.org + kristianm@chromium.org + + Records the different status codes that are emitted by chrome_elf.dll while + initializing the NtMapViewOfSection hook used to blocked third-party DLLs. + Multiple status codes can be emitted per initialization since some of those + status codes represent non-fatal failures. E.g. Failure to clear the + previous failure codes. This also means that duplicates are possible. This + is recorded shortly after Chrome launches, since chrome_elf.dll doesn't have + access to the //base API. This histogram was expired between M82 and M114. + + + + + lizeb@chromium.org + + For Custom Tabs generated by Chrome itself instead of external apps, this + shows the time between the intent arrival in the CCT and the first + navigation start. Recorded when the page has finished loading. + + + + + lizeb@chromium.org + + For Custom Tabs generated by Chrome itself instead of external apps, this + shows time between the intent arrival in the CCT and the first "page + loaded" event, if the navigation is successful. + + + + + + diff --git a/histograms/metadata/chromeos/OWNERS b/histograms/metadata/chromeos/OWNERS new file mode 100644 index 000000000000..cbcd13f48edc --- /dev/null +++ b/histograms/metadata/chromeos/OWNERS @@ -0,0 +1,14 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +azeemarshad@chromium.org +chadduffin@chromium.org +crisrael@google.com +enlightened@chromium.org +gavinwill@chromium.org +jimmyxgong@chromium.org +jorgelo@chromium.org +julietlevesque@google.com +khorimoto@chromium.org +tsergeant@chromium.org diff --git a/histograms/metadata/chromeos/histograms.xml b/histograms/metadata/chromeos/histograms.xml new file mode 100644 index 000000000000..e75d6a5b7cde --- /dev/null +++ b/histograms/metadata/chromeos/histograms.xml @@ -0,0 +1,3262 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + jamescook@chromium.org + tbarzic@chromium.org + chromeos-launcher@google.com + + + jimmyxgong@chromium.org + zentaro@chromium.org + cros-peripherals@google.com + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + + + wmahon@chromium.org + chromeos-tango@google.com + + + jackshira@google.com + julietlevesque@google.com + chromeos-cross-device-eng@google.com + + + rsorokin@chromium.org + tomhughes@chromium.org + cros-oac@google.com + chromeos-fingerprint@google.com + + + rsorokin@chromium.org + cros-oac@google.com + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + + kenalba@google.com + chromeos-tango@google.com + + + kenalba@google.com + chromeos-tango@google.com + + + kenalba@google.com + chromeos-tango@google.com + + + kenalba@google.com + chromeos-tango@google.com + + + kenalba@google.com + chromeos-tango@google.com + + + kenalba@google.com + chromeos-tango@google.com + + + kenalba@google.com + chromeos-tango@google.com + + + kenalba@google.com + chromeos-tango@google.com + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + + kenalba@google.com + chromeos-tango@google.com + + + kenalba@google.com + chromeos-tango@google.com + + + kenalba@google.com + chromeos-tango@google.com + + + jamescook@chromium.org + tbarzic@chromium.org + chromeos-launcher@google.com + + + + + enlightened@chromium.org + chromeos-security-core@google.com + + Records the number of unique processes on the system that deviate from the + ChromeOS security posture based on a specific criteria. This metric tracks + processes that were flagged due to: {AnomalyType}. + + Processes are scanned for anomalies every thirty seconds, but the metric is + recorded every two hours on ChromeOS devices. If the metric is recorded + successfully, the process count is reset. So the metric represents the + number of anomalous processes found in a two-hour scan window or since the + last successful recording event. + + + + + + + + dominickn@chromium.org + melzhang@chromium.org + mxcai@chromium.org + + Records the response when the intent picker is shown to the user on Chrome + OS to allow them to open an external protocol in an app. + + + + + dominickn@chromium.org + melzhang@chromium.org + mxcai@chromium.org + + Records the response when users that are shown the intent picker accept + opening an external protocol in an app as well as whether the app is + persisted. + + + + + dominickn@chromium.org + melzhang@chromium.org + mxcai@chromium.org + + Records the response when users that are shown the intent picker reject + opening an external protocol in an app. + + + + + tsergeant@chromium.org + chromeos-apps-foundation-team@google.com + + Records the app platform shown as the result of link intent handling. + Recorded when the user makes a choice in the Intent Picker dialog, and when + the result of a previous user preference is applied during a link click. + + + + + dominickn@chromium.org + nancylingwang@chromium.org + + Records whether a notification matches multiple apps, when there is one or + multiple web apps matching a web page nonpersistent notification. + + + + + ajlinker@chromium.org + dominickn@chromium.org + mxcai@chromium.org + + Records the type of app sending a link to the browser to be opened. + + + + + cylai@chromium.org + cros-hwsec+umas@chromium.org + + Records the status of attestation flow. The value represents 6 flags in 6 + rightmost bits; starting from more significant bits they mean: 1. Has proxy. + 2. Is System proxy active. 3. Run the default flow. 4. The default flow + succeeds. 5. Run the fallback flow. 6. The fallback flow succeeds. + + + + + cylai@chromium.org + cros-hwsec+umas@chromium.org + + Records the status of `AttesttionClient::GetCertificate()` called by + `AttestationFlowIntegrated`. + + + + + kamesan@chromium.org + chromeos-camera-eng@google.com + + Records the average latency in running the detector during an Auto Framing + enabled camera session. Emitted when the camera session is closed. + + This metric is reported on ChromeOS devices with Auto Framing enabled. + + + + + kamesan@chromium.org + chromeos-camera-eng@google.com + + Records the rate that the detector successfully detects a subject in the + scene during an Auto Framing enabled camera session. Emitted when the camera + session is closed. + + + + + kamesan@chromium.org + chromeos-camera-eng@google.com + + Records the number of times that Auto Framing is toggled from off to on by + the user during a camera session. Emitted when the camera session is closed. + + + + + kamesan@chromium.org + chromeos-camera-eng@google.com + + Records the percentage of time that Auto Framing is turned on during a + camera session. Emitted when the camera session is closed. + + + + + kamesan@chromium.org + chromeos-camera-eng@google.com + + Records errors in Auto Framing that can break camera functionality or cause + frame drops. Emitted at most once for each error when the camera session is + closed. + + + + + kamesan@chromium.org + chromeos-camera-eng@google.com + + Records the median of sampled zoom ratios when Auto Framing zooms in camera + frames to the subject during a camera session. + + + + + + + wtlee@chromium.org + chromeos-camera-eng@google.com + + Records the resolution of output stream that is configured by Chrome OS + camera service. + + + + + wtlee@chromium.org + chromeos-camera-eng@google.com + + Records the process time of ConfigureStreams() method in Chrome OS camera + service. + + This metric is reported for all users and will not cause abnormal + distribution since the metric is Chrome OS specified. + + + + + skyostil@chromium.org + chromeos-camera-eng@google.com + + Records the first error encountered in a camera which uses effects. + + This metric is emitting once every hour if the camera session exceeds an + hour, and once at the end of every session. + + + + + skyostil@chromium.org + chromeos-camera-eng@google.com + + Records the number streams that required rendering effects in a camera + session which uses effects. + + This metric is emitting once every hour if the camera session exceeds an + hour, and once at the end of every session. + + + + + skyostil@chromium.org + chromeos-camera-eng@google.com + + Records the number streams in a camera session which uses effects. + + This metric is emitting once every hour if the camera session exceeds an + hour, and once at the end of every session. + + + + + skyostil@chromium.org + chromeos-camera-eng@google.com + + Records the number of still capture shots taken in a camera session which + uses effects. + + This metric is emitting once every hour if the camera session exceeds an + hour, and once at the end of every session. + + + + + jmpollock@chromium.org + chromeos-camera-eng@google.com + + Records a user enabling a camera effect. Emitted at most once per camera + effect chosen when the camera session is closed, or every hour if the + session duration exceeds an hour (and then at the end of the session). + + + + + jmpollock@chromium.org + chromeos-camera-eng@google.com + + Records average wall time interval between successfully processed frames + within the EffectsStreamManipulator for the different effect + stream type + combinations. + + This metric is reported on ChromeOS devices with an effect applied that does + not encounter an error during processing. It is emitted at the close of each + camera session, or every hour if the session duration exceeds an hour (and + then at the end of the session). + + + + + + + + + + + + + + jmpollock@chromium.org + chromeos-camera-eng@google.com + + Records the wall time taken to execute the EffectsStreamManipulator + ProcessCaptureResult method for the different effect + stream type + combinations. Calculated as the average processing time / latency over the + camera session. + + This metric is reported on ChromeOS devices with an effect applied that does + not encounter an error during processing. It is emitted at the close of each + camera session, or every hour if the session duration exceeds an hour (and + then at the end of the session). + + + + + + + + + + + + + + skyostil@chromium.org + chromeos-camera-eng@google.com + + Records the number of pixels in one frame of the largest stream in a camera + session which uses effects. + + This metric is emitting once every hour if the camera session exceeds an + hour, and once at the end of every session. + + + + + + + + + skyostil@chromium.org + chromeos-camera-eng@google.com + + Records the number of pixels in one frame of the smallest stream in a camera + session which uses effects. + + This metric is emitting once every hour if the camera session exceeds an + hour, and once at the end of every session. + + + + + + + + + wtlee@chromium.org + chromeos-camera-eng@google.com + + Records the type of the error which triggers the Notify() method in Chrome + OS camera service. + + + + + mojahsu@chromium.org + chromeos-camera-eng@google.com + + Records face auto exposure function status of the Chrome OS device. The + metric is reported when the camera is detected. + + + + + mojahsu@chromium.org + chromeos-camera-eng@google.com + + Records max number of detected faces of the camera session in Chrome OS + camera service. The metric is reported when the camera is closed. + + + + + wtlee@chromium.org + chromeos-camera-eng@google.com + + Records the camera facing of the camera session in Chrome OS camera service. + + + + + jcliang@chromium.org + chromeos-camera-eng@google.com + + Records the average auto exposure convergence latency in frame count + throughout a camera session that runs Gcam auto exposure. Emitted when the + camera session is closed. + + + + + jcliang@chromium.org + chromeos-camera-eng@google.com + + Records the average HDR ratio throughout a camera session that runs Gcam + auto exposure. Emitted when the camera session is closed. + + + + + jcliang@chromium.org + chromeos-camera-eng@google.com + + Records the average total exposure time (TET) throughout a camera session + that runs Gcam auto exposure. Emitted when the camera session is closed. + + + + + jcliang@chromium.org + chromeos-camera-eng@google.com + + Records the average CPU latency in running a given type of processing + throughout a HDRnet camera session. Emitted when the camera session is + closed. + + This metric is reported on all ChromeOS devices with HDRnet enabled. + + + + + + + + + + jcliang@chromium.org + chromeos-camera-eng@google.com + + Records whether there's an error that can compromise the HDRnet feature, + either causing frame drops or stops the pipeline from running completely, + throughout a HDRnet camera session. Emitted when the camera session is + closed. + + + + + jcliang@chromium.org + chromeos-camera-eng@google.com + + Records the maximum number of output buffers a HDRnet stream produces + (greater than 1 means there are multiple streams with the same aspect ratio) + throughtout a HDRnet camera session. Emitted when the camera session is + closed. + + + + + jcliang@chromium.org + chromeos-camera-eng@google.com + + Records the maximum size (in width * height pixels) of the HDRnet stream + configured for a given output in a HDRnet camera session. Emitted when the + camera session is closed. + + + + + + + + + jcliang@chromium.org + chromeos-camera-eng@google.com + + Records the number of concurrent HDRnet streams in a HDRnet camera session. + Emitted when the camera session is closed. + + + + + jcliang@chromium.org + chromeos-camera-eng@google.com + + Records the number of HDRnet-rendered still capture shots taken in a HDRnet + camera session. Emitted when the camera session is closed. + + + + + jcliang@chromium.org + chromeos-camera-eng@google.com + + Records the stream configuration including the number of streams, the type + of streams, and if the streams are of the same aspect ratio in a HDRnet + camera session. Emitted when the camera session is closed. + + + + + + + wtlee@chromium.org + chromeos-camera-eng@google.com + + Records the process time of the JDA (Jpeg Decode Accelerator) or JEA (Jpeg + Encode Accelerator) run on Chrome OS camera service. There are suffixes that + record the runner method (hardware/software), the runner type + (decode/encode). + + This metric is reported for all users and will not cause abnormal + distribution since the metric is Chrome OS specified. + + + + + + + wtlee@chromium.org + chromeos-camera-eng@google.com + + Records the resolution of the image that JDA/JEA process by Chrome OS camera + service. The resolution represents by the total pixels contained in the + image. There are suffixes that record the runner method (hardware/software), + the runner type (decode/encode). + + + + + lnishan@chromium.org + chromeos-camera-eng@google.com + + Records which client type (e.g., Chrome, Android) is opening a camera + device. + + + + + wtlee@chromium.org + chromeos-camera-eng@google.com + + Records the process time of OpenDevice() method in Chrome OS camera service. + + This metric is reported for all users and will not cause abnormal + distribution since the metric is Chrome OS specified. + + + + + wtlee@chromium.org + chromeos-camera-eng@google.com + Records the session duration in Chrome OS camera service. + + + + miersh@google.com + pmarko@chromium.org + + The amount of time it took the {CertProvisioningProtocolVersion} certificate + provisioning worker with scope {CertProvisioningScope} to sign a CSR. + Emitted after the sign is complete. + + + + + + + miersh@google.com + pmarko@chromium.org + + Number of times each event is reached during the + {CertProvisioningProtocolVersion} certificate provisioning flow with scope + {CertProvisioningScope}. + + + + + + + miersh@google.com + pmarko@chromium.org + + The amount of time it took the {CertProvisioningProtocolVersion} certificate + provisioning worker with scope {CertProvisioningScope} to generate one key + pair. Emitted after the generation is complete. + + + + + + + miersh@google.com + pmarko@chromium.org + + For final states (see the list in cert_provisioning::IsFinalState): number + of times the {CertProvisioningProtocolVersion} certificate provisioning + worker with scope {CertProvisioningScope} finished on every state. For other + states: number of times the worker failed on every state. + + + + + + + miersh@google.com + pmarko@chromium.org + + The amount of time it took the {CertProvisioningProtocolVersion} certificate + provisioning worker with scope {CertProvisioningScope} to build one Verified + Access response. Emitted after the response is built. + + + + + + + aalexand@google.com + gmx@chromium.org + cwp-team@google.com + + A count of successes and various failure modes related to collecting and + processing profile data obtained via "perf events" on Chrome OS. + + + + + aalexand@google.com + cwp-team@google.com + + Record the collection status (success or failure) when the Chrome process + and thread types are collected as part of the ChromeOS perf profile + collection. + + + + + gmx@chromium.org + cwp-team@google.com + + Records the status of collection attempts triggered by jankiness on Chrome + OS. + + Warning: this histogram was expired from 08/30/2020 to 03/30/2022; data may + be missing. + + + + + gmx@chromium.org + cwp-team@google.com + + A count of successes and various failure modes related to the parsing of + logical CPU frequencies on Chrome OS. Recorded when the browser process + starts. + + + + + shantuo@google.com + cwp-team@google.com + + A count of various locations gotten from parsing a Lacros binary path. This + is used to monitor any change to the Lacros path. Recorded when a Lacros + binary path was found when CWP collects browser processes. + + + + + shantuo@google.com + cwp-team@google.com + + A count of successes and various failure modes related to the parsing of PSI + CPU data on Chrome OS. Recorded after each perf collection. + + + + + raging@google.com + chromeos-memory@google.com + + A count of successes and various failure modes related to the parsing of PSI + Memory data on Chrome OS. Recorded after each perf collection. + + + + + raging@google.com + chromeos-memory@google.com + + Reports periodic memory pressure metrics, as seen ChromeOS-wide. Metrics + originally come from /proc/pressure/memory readings, expressed as a + percentage with 2 decimal points (99.99%), but expressed as p*100, in an + integer in the range (1-9999) meaning (00.01% to 99.99%). Underflow value 0 + means "no pressure" - 0%. + + + + + + + + + + + shantuo@google.com + cwp-team@google.com + + A count of the various outcomes related to recording the profile data + collected via "perf events" on Chrome OS. The histogram is + recorded when system-wide CPU profiling finishes and the collected data is + being saved to memory for later upload. + + + + + aalexand@google.com + gmx@chromium.org + cwp-team@google.com + + Records the number of "perf events" reports included in an UMA + upload on Chrome OS. + + + + + xiangdongkong@google.com + cros-feedback-app@google.com + + Records the total time it takes for each sub task of + LogTool::GetBigFeedbackLogs to complete. Recording happens on each call to + debugd's GetBigFeedbackLogs. + + + + + + + + + + + + + + + + + + + enlightened@google.com + jorgelo@google.com + chromeos-security-core@google.com + + Records the total time it takes for each call to LogTool::{FunctionName} to + complete. Recording happens on each D-Bus call to debugd. + + + + + + + + + + mnissler@chromium.org + src/chrome/browser/ash/settings/OWNERS + + Migration status for Chrome OS feature flags configuration in device + settings. This is intended to track migration progress in the field, so the + migration code can be removed when the old approach of storing bare flags is + no longer relevant in the field. + + + + + ashleydp@google.com + zentaro@chromium.org + cros-peripherals@google.com + + Records the ProbeError::ErrorType returned on request for + {ProbeErrorSourceStruct}. Recorded on the event a request to cros_healthd + probe service returns a ProbeError. + + + + + + + + + + + ashleydp@google.com + zhangwenyu@google.com + zentaro@chromium.org + cros-peripherals@google.com + + Records error type such as no data error, not a number error and expectation + not met error when receiving system information including battery info, + network info and system info. All errors are recorded. + + + + + + + + + + ashleydp@google.com + gavinwill@chromium.org + zentaro@chromium.org + cros-peripherals@google.com + + Records requested initial screen when opening the Diagnostics App. + + + + + dpad@chromium.org + michaelcheco@chromium.org + zentaro@chromium.org + cros-peripherals@google.com + + Records the duration that the user spent in the Keyboard Tester. Emitted + when the user closes the keyboard tester. + + + + + ashleydp@google.com + gavinwill@chromium.org + zentaro@chromium.org + cros-peripherals@google.com + + Records the duration that the Memory Routine took to complete. Emitted when + the routine completes successfully. + + + + + ashleydp@google.com + gavinwill@chromium.org + zentaro@chromium.org + cros-peripherals@google.com + + Records the duration that the Diagnostics App is open. emitted when the app + is closed. + + + + + ashleydp@google.com + gavinwill@chromium.org + zentaro@chromium.org + cros-peripherals@google.com + + Records the number of routines run while the Chrome OS Diagnostics App was + open. Begins at zero each time the app is open and recorded each time the + app is closed. + + + + + ashleydp@google.com + gavinwill@chromium.org + zentaro@chromium.org + cros-peripherals@google.com + + Records the duration that the Diagnostics App is open for a given page view. + Emitted when the active page changes or when the app is closed. Cumulatively + adds up to the total duration recorded by + "ChromeOS.DiagnosticsUi.OpenDuration" or + "ChromeOS.FeatureUsage.DiagnosticsUi.Usetime". + + + + + + + + + + ashleydp@google.com + gavinwill@chromium.org + zentaro@chromium.org + cros-peripherals@google.com + Records the result of the {RoutineType} Routine. + + + + + + + + + + + + + + + + + + + + + + + + rsorokin@chromium.org + cros-oac@google.com + + Records device eligibility, enabled status, and success rate for the + {FeatureName} feature. Different events are recorded at different times, as + described in the enum labels. + + + + + + rsorokin@chromium.org + cros-oac@google.com + + Records the duration of time (ms) a given {FeatureName} feature was used. + + + + + + jimmyxgong@chromium.org + zentaro@chromium.org + cros-peripherals@google.com + + Records the result of installing a firmware update. Recorded once per + install and the histogram is emitted either when an install is completed or + when a failure state is reached. An example failure state is if we're unable + to create a firmware update directory. + + + + + jimmyxgong@chromium.org + zentaro@chromium.org + cros-peripherals@google.com + + Records the total number of devices found. OnStartup is recorded when a user + first logs in and OnRefresh is recorded for any subsequent request. The + cases in which a subsequent request will be made are when the Firmware + Update SWA is launched, when an install is completed, and when we detect + that a device has been added or removed. + + + + + + + + + jimmyxgong@chromium.org + zentaro@chromium.org + cros-peripherals@google.com + + Records the total number of {Severity} firmware updates found for all of the + peripherals currently connected. The histogram is emitted once we've + received the list of updates (if any) for all peripherals. OnStartup is + recorded when a user first logs in and OnRefresh is recorded for any + subsequent request. The cases in which a subsequent request will be made are + when the Firmware Update SWA is launched, when an install is completed, and + when we detect that a device has been added or removed. + + + + + + + + + + + + bchikhaoui@google.com + cros-oac@google.com + + Records the amount of time spent by user to complete GAIA login. Recorded + during user sign-in when Chrome received all the signals from Gaia. + + + + + rsorokin@chromium.org + cros-oac@google.com + + Records whether or not {MessageName} was received during the {GaiaAuthFlow} + authentication on the login screen. Recorded on the successful online + authentication only. + + + + + + + + + + + + + antrim@chromium.org + cros-lurs@google.com + + Records events for the Gaia password flow. "Started" is recorded + on each password entry on the Gaia page. "Completed" is recorded + when Gaia authentication succeeds. Note: this is not recorded for SAML + flows. + + + + + + + itspeter@chromium.org + stimim@chromium.org + chromeos-runtime-probe@google.com + + Qualification status of each component types. This entry is generated by + hardware_verifier.conf at boot time. + + + + + itspeter@chromium.org + stimim@chromium.org + chromeos-runtime-probe@google.com + Aggregated result of hardware verifier check. + + + + itspeter@chromium.org + stimim@chromium.org + chromeos-runtime-probe@google.com + + The amount of time it takes to finish one hardware verification run. + + + + + itspeter@chromium.org + stimim@chromium.org + chromeos-runtime-probe@google.com + The amount of time it takes to probe hardware components. + + + + aalsum@chromium.org + jackshira@google.com + cros-telemetry@google.com + + Records the responses for HaTS questions, to be analyzed against other OS + metrics like performance or number of crashes. Emitted during the lifecycle + of a survey and when a user answers any question on a HaTS survey. + + + + + + + + + + + + weiluanwang@google.com + dennyh@google.com + cros-tdm-tpe-eng@google.com + + Records the diagnostic results from healthd to analyze the usage and the + pass rate. Emitted when a routine terminates. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + weiluanwang@google.com + dennyh@google.com + cros-tdm-tpe-eng@google.com + + Records the telemetry results from healthd to analyze the usage and error + rate. Emitted when the specific category is requested from a client. + + + + + + + + + + + + + + + + + + + + + + + + + + + + chenghaoyang@chromium.org + chromeos-sensors-eng@google.com + + Records the maximum number of concurrent sensor clients within an hour, + which indicates how many apps are using sensors. Recorded once every hour. + Might not be recorded for tail-end usage during a session. + + + + + chenghaoyang@chromium.org + chromeos-sensors-eng@google.com + + Records the maximum number of running observers within an hour to any + sensor. It indicates how widely used the sensor samples are. Recorded once + every hour. Might not be recorded for tail-end usage during a session. + + + + + chenghaoyang@chromium.org + chromeos-sensors-eng@google.com + + Records the number of opened observer within an hour, which indicates how + often sensors are enabled and disabled. Recorded once every hour. Might not + be recorded for tail-end usage during a session. + + + + + chenghaoyang@chromium.org + chromeos-sensors-eng@google.com + + Records the usage of the sensor within an hour with at least {Frequency} Hz. + Recorded once every hour. Might not be recorded for tail-end usage during a + session. + + + + + + + + + + + wmahon@google.com + chromeos-tango@google.com + cros-peripherals@google.com + + Records the device forms (Keyboard, Mouse, Pointing Stick, etc) of {Type} + devices, when they are connected. As one physical device can be multiple + forms at the same time (eg. a wireless dongle that identifies as both a + keyboard and mouse), multiple entries can be generated from a single + physical attachment event. + + + + + + + + + + + wmahon@google.com + chromeos-tango@google.com + cros-peripherals@google.com + + Records the connection types (Internal, Bluetooth, Usb, etc) of {Form} + devices, when they are connected. As one physical device can be multiple + forms at the same time (eg. a wireless dongle that identifies as both a + keyboard and mouse), multiple entries can be generated from a single + physical attachment event. + + + + + + + + + + + + + + dpad@chromium.org + cros-peripherals@google.com + + Records a hash of a keycode + modifier keys pressed everytime a user event + is repeated due to auto repeat. This also includes events which are + suppressed by downstream system such as the diacritics menu or wayland. + + See `RecordAutoRepeatUsageMetric` in //ui/events/ash/event_rewriter_ash.cc + for information on how to decode the values. + + + + + wangdanny@chromium.org + dpad@chromium.org + cros-peripherals@google.com + + Records the event rewriter latency metric every time a key is pressed. + + This metric is reported for all users and will not cause abnormal + distribution since the metric is ChromeOS specified. + + + + + dpad@google.com + cros-peripherals@google.com + + Records the number of times modifier keys are pressed before any modifier + remapping takes place on {KeyboardType} keyboards. + + + + + + + + + + + dpad@google.com + cros-peripherals@google.com + + Records the number of times modifier keys are pressed after modifier + remappings takes place on {KeyboardType} keyboards. + + + + + + + + + + + + + wmahon@google.com + chromeos-tango@google.com + + Records touchscreen usage time in {Mode}. A usage session is defined as a + set of subsequent touches where each touch occurred less than {TimePeriod} + after the previous. + + + + + + + + + + + + + + + + + + tsergeant@chromium.org + chromeos-apps-foundation-team@google.com + + The intent picker dialog is shown (either automatically, or though a page + action button) when the user navigates to a page whose URL can be handled by + an installed app. This metric is recorded when the dialog is closed and + records the user action which caused it to close. + + + + + tsergeant@chromium.org + chromeos-apps-foundation-team@google.com + + Records events associated with the intent picker icon in the omnibox. + Recorded when the icon is shown or interacted with. + + + + + + Replaced by ChromeOS.Intents.LinkCapturingEvent2 in M106. + + vpao@google.com + chromeos-apps-foundation-team@google.com + + Records when the link capturing entry point is shown, when a link is + successfully captured and results in opening an app, and when the user + changes their settings to automatically capture similar links in the future. + + + + + + Replaced by ChromeOS.Intents.LinkCapturingEvent2 in M106. + + vpao@google.com + chromeos-apps-foundation-team@google.com + + Records when the link capturing entry point is shown for the {AppType} app + type, when a link is successfully captured and results in opening a/ an + {AppType} app, and when the user changes their settings to automatically + capture similar links in the future. + + + + + + + + + vpao@google.com + chromeos-apps-foundation-team@google.com + + Records when the link capturing entry point is shown, when a link is + successfully captured and results in opening an app, and when the user + changes their settings to automatically capture similar links in the future. + + Replaces ChromeOS.Intents.LinkCapturingEvent, which incorrectly recorded + events when the user changed settings to stay in Chrome. + + + + + vpao@google.com + chromeos-apps-foundation-team@google.com + + Records when the link capturing entry point is shown for the {AppType} app + type, when a link is successfully captured and results in opening a/ an + {AppType} app, and when the user changes their settings to automatically + capture similar links in the future. + + Replaces ChromeOS.Intents.LinkCapturingEvent.{AppType}App, which incorrectly + recorded events when the user changed settings to stay in Chrome. + + + + + + + + + + + jamescook@chromium.org + lacros-team@google.com + + Recorded as part of the metrics session data to identify the lacros-chrome + browser binary. + + + + + omorsi@google.com + pmarko@google.com + + Counts the number of times the arc usage flags update started as well as the + number of times it succeeded and failed. + + + + + omorsi@google.com + pmarko@chromium.org + + Records the time taken to successfully update chaps with the new ARC usage + flags. + + + + + omorsi@google.com + pmarko@google.com + + Counts the number of times the migration started as well as the number of + times it succeeded and failed. It also counts the number of necessary + migrations. Necessary migrations are the ones that work on migrating + permissions for at least one key. Currently, some migration processes start + when there are 0 keys saved in preferences. + + + + + + Removed in M103 + + omorsi@google.com + pmarko@chromium.org + + Records the time taken to successfully migrate key permissions to chaps. + + + + + erikchen@chromium.org + tvignatti@igalia.com + lacros-team@google.com + + Time to load Lacros binary. The bulk of load time may be spent in mounting + Lacros browser binary through squashfs in the component manager. If the user + has explicitly specified a path for the Lacros browser binary though, load + time will very likely be insignificant. Recorded by ash each time the lacros + binary is started. + + + + + erikchen@chromium.org + lacros-team@google.com + + The release channel of the Chrome OS system on which Lacros is running. May + be different than the Lacros browser release channel. Recorded by the lacros + binary shortly after startup. + + + + + erikchen@chromium.org + lacros-team@google.com + + Time to start the lacros binary, specifically the time between when the + process is launched and the mojo connection is established between ash and + lacros. Recorded by ash each time the lacros binary is started. + + + + + claudiomagni@chromium.org + mlcui@google.com + dvallet@chromium.org + + Records which feature requested a Pack from Language Packs Manager; + specifically an entry is recorded each time GetPackState is called. + + + + + claudiomagni@chromium.org + mlcui@google.com + dvallet@chromium.org + + Records which language was requested from Language Packs Manager; + specifically an entry is recorded each time GetPackState is called. + + + + + claudiomagni@chromium.org + mlcui@google.com + dvallet@chromium.org + + Records which feature requested a BasePack from Language Packs Manager; + specifically an entry is recorded each time InstallBasePack is called. + + + + + + + claudiomagni@chromium.org + mlcui@google.com + dvallet@chromium.org + + Records whether a language pack installation was successful after a language + pack installation attempt. + + + + + claudiomagni@chromium.org + mlcui@google.com + dvallet@chromium.org + + Records the type of error that is received from DLC Service when an + installation is requested for Handwriting. No metric is emitted on success, + we only record an entry in case of error. + + + + + claudiomagni@chromium.org + mlcui@google.com + dvallet@chromium.org + + Records the type of error that is received from DLC Service when an + installation is requested for TTS. No metric is emitted on success, we only + record an entry in case of error. + + + + + claudiomagni@chromium.org + mlcui@google.com + dvallet@chromium.org + + Records whether a language pack installation was successful after a language + pack installation attempt, broken down by feature ID. + + + + + mlcui@google.com + cros-borders-eng@google.com + + Records the state of what state a base pack is in (whether it's installed or + not) when the language packs Mojo interface responds to an IPC. + + + + + mlcui@google.com + cros-borders-eng@google.com + + Records which feature was requested by callers of the language packs Mojo + interface's "GetPackInfo" IPC call. + + + + + mlcui@google.com + cros-borders-eng@google.com + + Records which feature was requested by callers of the language packs Mojo + interface's "InstallBasePack" IPC call. + + + + + mlcui@google.com + cros-borders-eng@google.com + + Records which feature was requested by callers of the language packs Mojo + interface's "InstallPack" IPC call. + + + + + mlcui@google.com + cros-borders-eng@google.com + + Records the state of what state a language pack is in (whether it's + installed or not) when the language packs Mojo interface responds to an IPC. + + + + + claudiomagni@chromium.org + mlcui@google.com + dvallet@chromium.org + + Records whether a language pack uninstallation was successful after a + language pack uninstallation attempt. + + + + + rtinkoff@google.com + xiyuan@google.com + + Reports the time (ms) elapsed between sending of a LivenessChecker ping and + receipt of the response. Recorded when LivenessChecker receives a ping + response. + + + + + iby@google.com + xiyuan@google.com + + Records whether the dbus liveness pings successfully go through. True is + recorded when the session manager daemon receives the pong back from chrome + in time. False is recorded when it times out waiting for the pong. + + + + + yoshiki@chromium.org + chromeos-velocity@chromium.org + + Metrics of the numbers of log entries recorded in {LogType}s. Recorded when + the daily job "chromeos-cleanup-logs" is executed. + + + + + + + + + yoshiki@chromium.org + chromeos-velocity@chromium.org + + File sizes of {LogType} files in megabytes. Recorded when the daily job + "chromeos-cleanup-logs" is executed. + + + + + + + + + + + + + yoshiki@chromium.org + chromeos-velocity@chromium.org + + Metrics of the number of maximum throughput (entries per minute) recorded in + {LogType}s within a day. Recorded when the daily job + "chromeos-cleanup-logs" is executed. + + + + + + + + + yoshiki@chromium.org + chromeos-velocity@chromium.org + + Total file sizes of {LogType} files in megabytes. Recorded when the daily + job "chromeos-cleanup-logs" is executed. + + + + + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + The number of seconds of uptime since the last time the Chrome OS machine-id + was regenerated. This is reported every time the machine-id is regenerated + except for the first time since reboot. + + NB: Data before M90 is incomplete. + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + Measures whether the MachineIdRegen script acquires the lock. Success / Fail + is recorded every time the script is invoked. This is to test if the locking + is working as expected. + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + The reason why the Chrome OS machine-id was regenerated. This is reported + when the machine-id is re-generated. + + NB: Data before M90 is incomplete. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + The cause of the scroll event by the user on the message center. Only the + first event after the message center opens is recorded. For example, the + user opens the message center and scrolls by mouse then by key, only the + mouse event is recorded. If the user closes and reopens the message center + before the second event, both events are recorded. + + + + + miersh@google.com + pmarko@google.com + chromeos-commercial-networking@google.com + + Records events related to the owner key generation, loading and usage. + + + + + erikchen@chromium.org + cros-hwsec+uma@chromium.org + + The result of a platform verification attempt for content protection on + Chrome OS, limited to the browser-specific checks. It's still possible for + platform verification to fail at later layers. + + + + + erikchen@chromium.org + cros-hwsec+uma@chromium.org + + The result of a platform verification attempt for content protection on + Chrome OS. Does not include browser-related failures. Those are tracked in + ChromeOS.PlatformVerification.BrowserResult. + + + + + pawliczek@chromium.org + bmgordon@chromium.org + project-bolton@google.com + + Total CPU time of all children processes started by foomatic_shell in a + single failed run. foomatic_shell is used for preparing input data for some + printers. + + + + + pawliczek@chromium.org + bmgordon@chromium.org + project-bolton@google.com + + Total CPU time of all children processes started by foomatic_shell in a + single successful run. foomatic_shell is used for preparing input data for + some printers. + + + + + cschlosser@chromium.org + chromeos-privacyhub@google.com + + PrivacyHub is a chrome://os-settings page that allows system wide control of + privacy settings. The Privacy Hub effort adds additional context to already + existing notifications for microphones and cameras in case there is a + physical switch on the device to disable one of these sensors. Prior there + was only the notification message informing the user about the current state + of the system. The notifciations now include a link to a support page where + this is explained in more detail. This histogram records which sensor being + disabled resulted in the notification button being clicked. + + + + + zauri@google.com + chromeos-privacyhub@google.com + + Records when the user visits the Privacy Hub page in system settings. + Capturing the origin where the user navigated from. + + + + + zauri@google.com + chromeos-privacyhub@google.com + + Records when the user changes the device-wide {FeatureName} access from the + {Source}. This can happen directly from the settings page + "Settings">"Security and Privacy">"Privacy + hub" or through notifications. + + + + + + + + + + + + + tengs@chromium.org + gzadina@google.com + + Record when the user toggles the integrated privacy screen on/off. See the + PrivacyScreenToggleUISurface enum for all UI surfaces for toggling the + feature. + + + + + michaelcheco@google.com + dpad@google.com + jimmyxgong@chromium.org + zentaro@chromium.org + cros-peripherals@google.com + + Records whether or not RGB keyboard is supported for the current device. + Most devices will return RgbKeyboardCapabilityType::None since RGB keyboard + is currently only supported on a handful of devices. We still include these + samples since it'll be useful for finding real failures, i.e, + RgbKeyboardCapabilityType::None is recorded for a device that supports RGB. + + + + + michaelcheco@google.com + dpad@google.com + jimmyxgong@chromium.org + zentaro@chromium.org + cros-peripherals@google.com + Records the source of RGB backlight change for a device. + + + + + + + + + + + + mslus@chromium.org + emaxx@chromium.org + + Records every online login authenticated purely with GAIA or with SAML. + + + + + mslus@chromium.org + rsorokin@chromium.org + + Records how often users are guided through the SAML in-session password + change flow, and how often it is completed succesfully. + + + + + mslus@chromium.org + mohammedabdon@chromium.org + + Records how often password sync token API is called. Tracks results of token + verify operation and API errors. + + + + + mslus@chromium.org + mohammedabdon@chromium.org + Records SAML provider when SAML login flow is used. + + + + mslus@chromium.org + emaxx@chromium.org + + The number of passwords that were scraped during a Chrome OS login via SAML. + This is set only when the Chrome Credentials Passing API is not used. + + + + + + Removed in M102 + + bartfab@chromium.org + + Whether one of the scraped passwords was successfully verified as the user's + password. This is set only when the Chrome Credentials Passing API is not + used. + + + + + enlightened@chromium.org + chromeos-security-core@google.com + + Records the status of the Landlock LSM on the system. Records true if + Landlock is enabled, and records false if it is disabled (not configured), + not supported by the kernel, or responding with an error. + + The state of Landlock is determined once per boot and the metric is also + recorded only once per boot. + + + + + rborzello@google.com + cros-enterprise-security@google.com + + Records whether the cros bootmode for the device was successfully found for + devices running the CrOS secagentd daemon. Emits either success or the + failure reason. When XDR reporting is enabled it will emit once per daemon + lifetime. + + + + + rborzello@google.com + cros-enterprise-security@google.com + + Records whether the bootparams file was successfully parsed for the UEFI + bootmode information for devices running the CrOS secagentd daemon. Emits + either success or the failure reason. When XDR reporting is enabled it will + emit once per daemon lifetime. + + + + + aashay@google.com + cros-enterprise-security@google.com + + Records the initialization status of the {Bpf} BPF used by the CrOS + secagentd daemon. Emits either a success or a specific error value. When XDR + reporting is enabled it will be recorded once per daemon lifetime. + + + + + + + + rborzello@google.com + cros-enterprise-security@google.com + + Records whether the processe's information was found in the cache for the + CrOS secagentd daemon. Emits either Cache Hit, Cache Miss or Cache Miss but + scraped procfs successfully. It will be recorded at most 3 times per XDR + event. + + + + + aashay@google.com + cros-enterprise-security@google.com + + Records whether the XDR event reporting policy was found enabled for a + device. Also provides an on-check enum for baseline. All of the + functionality of the CrOS secagentd daemon is gated by this enterprise + policy. + + Note that even though the daemon regularly polls device policy for updates, + it will emit exactly one on-check value and at most one enabled value during + its lifetime (generally per device per boot). + + + + + rborzello@google.com + cros-enterprise-security@google.com + + Records whether the Process {EventType} Event was correctly formed for the + CrOS secagentd daemon. Emits event was complete or the reason it was not. It + is recorded once per XDR event. + + + + + + + + + rborzello@google.com + cros-enterprise-security@google.com + + Records the status response of all events sent by the CrOS secagentd daemon. + Emits either a success or the failure reason. It is recorded once per XDR + event. + + + + + rborzello@google.com + cros-enterprise-security@google.com + + Records whether the TPM for the device was successfully found for devices + running the CrOS secagentd daemon. Emits either success or the failure + reason. When XDR reporting is enabled it will be recorded once per daemon + lifetime. + + + + + jorgelo@chromium.org + chromeos-security-core@google.com + + Records when an event representing a deviation from the ChromeOS security + posture happens. + + The list of writable+executable mounts is updated every thirty seconds, and + only new anomalous mounts are recorded. This list is cleared every two hours + so existing anomalies get recorded again after the two-hour window. + + Memfd execution attempts are checked every thirty seconds and new attempts + are recorded. memfd_create events are only recorded once per boot. Prior to + M111 memfd_create events were recorded up to ten times per boot. + + + + + jorgelo@chromium.org + chromeos-security-core@google.com + + Records the result (boolean success or failure) of attempting to report a + Chrome OS system as anomalous via the crash reporting service. + + Reporting is only attempted if one or more anomalies are detected (see the + previous histogram's description for the types of anomalies considered), + *and* once per boot, even if reporting fails. + + So this histogram will be recorded at most once per boot, and only if a + system is detected as anomalous (i.e. presents any of the tracked + anomalies.) + + + + + dpad@google.com + cros-peripherals@google.com + + Records the configured modifier remapping for the {Modifier} key when the + {KeyboardType} keyboard is updated. + + + + + + + + + + + + + + + + + + + dpad@google.com + cros-peripherals@google.com + + Records the configured modifier remapping for the {Modifier} key when the + {KeyboardType} keyboard is first initialized. + + + + + + + + + + + + + + + + + + + dpad@google.com + cros-peripherals@google.com + + Records the value of the {KeyboardSetting} setting when the {KeyboardType} + keyboard is updated. + + + + + + + + + + + + + + dpad@google.com + cros-peripherals@google.com + + Records the value of the {KeyboardSetting} setting when the {KeyboardType} + keyboard is first initialized. + + + + + + + + + + + + + + dpad@google.com + cros-peripherals@google.com + + Records the value of the sensitivity setting when the {TouchpadType} + touchpad settings are updated. + + + + + + + + + dpad@google.com + cros-peripherals@google.com + + Records the value of the sensitivity setting when the {TouchpadType} + touchpad is first initialized. + + + + + + + + + dpad@google.com + cros-peripherals@google.com + + Records the value of the {TouchpadSetting} settings when the {TouchpadType} + touchpad settings are updated. + + + + + + + + + + + + + + + dpad@google.com + cros-peripherals@google.com + + Records the value of the {TouchpadSetting} settings when the {TouchpadType} + touchpad is first initialized. + + + + + + + + + + + + + + + dpad@google.com + cros-peripherals@google.com + + Records if the {DeviceType} settings are set successfully. Set settings will + fail if the id or the settings object is invalid. + + + + + + + + + + + dpad@google.com + cros-peripherals@google.com + + Records the value of the sensitivity setting when the {Peripheral} device + settings are updated. The value ranges from 1 to 5. + + + + + + + + + dpad@google.com + cros-peripherals@google.com + + Records the value of the sensitivity setting when the {Peripheral} device is + is first initialized. The value ranges from 1 to 5. + + + + + + + + + dpad@google.com + cros-peripherals@google.com + + Records the value of the {PeripheralSetting} settings when the {Peripheral} + device settings are updated. + + + + + + + + + + + + + + dpad@google.com + cros-peripherals@google.com + + Records the value of the {PeripheralSetting} settings when the {Peripheral} + device is first initialized. + + + + + + + + + + + + + + dominickn@chromium.org + melzhang@chromium.org + + Records number of {AppType} apps found for a given intent in the Sharesheet + when the sharesheet is invoked. Has 100 exponential buckets. (The original + histogram had 1000 linear buckets). + + Warning: this histogram was expired from M95 to M96; data may be missing. + + + + + + + + + + melzhang@chromium.org + vpao@google.com + chromeos-apps-foundation-team@google.com + + Records the form factor when the Copy To Clipboard option is selected from + the sharesheet. + + + + + dominickn@chromium.org + melzhang@chromium.org + + Records the number of files a user is trying to share from the Sharesheet + when the sharesheet is invoked. + + + + + dominickn@chromium.org + melzhang@chromium.org + Records the form factor when the Sharesheet is invoked. + + + + dominickn@chromium.org + melzhang@chromium.org + + If the value is true, the data being shared from the Sharesheet is a folder + from Drive. Recorded when the sharesheet is invoked. + + + + + dominickn@chromium.org + melzhang@chromium.org + + If the value is true, the image preview was pressed during the current + invocation. Recorded when the sharesheet closes. + + + + + dominickn@chromium.org + melzhang@chromium.org + + Records the source from which the Sharesheet is invoked. + + Warning: this histogram was expired from M95 to M96; data may be missing. + + + + + dominickn@chromium.org + melzhang@chromium.org + + Records each action found for a given intent when the Sharesheet is invoked. + + Warning: this histogram was expired from M95 to M96; data may be missing. + + + + + dominickn@chromium.org + melzhang@chromium.org + Records user action on sharesheet invocations. + + + + melzhang@chromium.org + chromeos-apps-foundation-team@google.com + + Records the mime type of the content being copied at the {Location} point in + the Sharesheet flow. + + This histogram could record multiple times in a single share in the event + that the user shares data of mime types at once. However, a single share + will not record the same mime type twice. E.g. sharing 2 images in one share + will record the image mimetype once. + + + + + + + + + rsorokin@chromium.org + jamescook@chromium.org + cros-oac@google.com + + Tracks whether browser sync preferences were migrated to the new OS sync + feature (project SplitSettingsSync). Recorded once per session during login. + + + + + + + amehfooz@chromium.org + cros-status-area@google.com + + Tracks the animation smoothness for the collapse / expand animation of the + system tray. + + + + + amehfooz@chromium.org + cros-status-area@google.com + + Tracks the number of blocked notifiers in the system tray after the user + blocks one or multiple notifiers. Note that this metric records the number + of blocked notifiers *after* the update. + + + + + amehfooz@chromium.org + cros-status-area@google.com + + Tracks the number of blocked notifiers in the system tray when it is opened. + + + + + amehfooz@chromium.org + cros-status-area@google.com + + Records the first interaction the user has with the system tray, which can + be a click/tap on the quick settings or message center bubble. Note that + this interaction could be at any time after the user opens the tray (e.g. 30 + seconds later before the first click). + + + + + amehfooz@chromium.org + cros-status-area@google.com + + An enum value how system tray bubble is interacted e.g. by tap (touch + screen), or click (mouse, trackpad, etc.) Reported every time the region + inside system tray bubble is tapped or clicked. + + + + + amehfooz@chromium.org + cros-status-area@google.com + + If the value is true, SystemTray is expanded when it's opened. Otherwise, + it's closed when it's opened. + + + + + khorimoto@chromium.org + tjohnsonkanu@chromium.org + chadduffin@chromium.org + cros-connectivity@google.com + + This metric will record each action taken as a result of a user clicking a + Network from Network list within system tray. Metric emitted each time a + user clicks on a network list row. + + + + + khorimoto@chromium.org + tjohnsonkanu@chromium.org + chadduffin@chromium.org + cros-connectivity@google.com + + Records when different sections within the detailed network view in the + system tray shown. This metric is emitted each time a user opens the system + tray and each time a different network section is newly shown. + + + + + khorimoto@chromium.org + tjohnsonkanu@chromium.org + chadduffin@chromium.org + cros-connectivity@google.com + + Records the new value of the WiFi/Mobile toggle button in system tray. + Metric emitted each time a user clicks on the enable/disable WiFi or Mobile + toggle. + + + + + + + + + amehfooz@chromium.org + cros-status-area@google.com + + Records the number of notifications that are removed in a single clear all + action by the user. + + + + + amehfooz@chromium.org + cros-status-area@google.com + + The number of status area item pods (e.g. IME, Palette, Dictation, etc.) in + the shelf status area whenever a pod appears/disappears. This histogram is + only logged when the device is not in tablet mode, otherwise + ChromeOS.SystemTray.Tablet.ShelfPodCount is logged. + + + + + amehfooz@chromium.org + cros-status-area@google.com + + The number of status area item pods (e.g. IME, Palette, Dictation, etc.) in + the shelf status area whenever a pod appears/disappears. This histogram is + only logged when the device is in tablet mode, otherwise + ChromeOS.SystemTray.ShelfPodCount is logged. + + + + + tengs@chromium.org + gzadina@google.com + + The amount of time a user took from clicking on the button in status area, + to clicking on an item in the system tray bubble. (Obsolete M90 onwards). + + + + + amehfooz@chromium.org + cros-status-area@google.com + + The amount of time a user took after opening the system tray bubble, to + clicking on an item in the system tray bubble. + + + + + amehfooz@chromium.org + cros-status-area@google.com + + An enum value how system tray bubble is expanded or collapsed. It can be + toggled by the button and touch gesture. + + + + + pmalani@chromium.org + chromeos-power@google.com + + This value represents the speed of the USB Type-C cable which is connected + to a device. It is recorded every time a new peripheral is connected. + + + + + pmalani@chromium.org + chromeos-usb@google.com + + This value represents DisplayPort (DP) alternate mode entry success (or + failure) for USB Type-C peripherals that support this alternate mode. This + metric gets recorded by the Chrome OS Type-C system daemon (typecd) when a + peripheral that supports DP alternate mode is connected to the systems that + support this metric. + + + + + wonchung@google.com + chromeos-usb@google.com + + This value represents the location and order of a USB Type-C peripheral + (partner) which is connected to a device. It is recorded every time a new + peripheral is connected. + + + + + pmalani@chromium.org + chromeos-power@google.com + + This value represents the type of a USB Type-C peripheral (the Partner) + which is connected to a device. It is recorded every time a new peripheral + is connected. + + + + + wonchung@google.com + chromeos-usb@google.com + + This value represents the location and order of a USB Type-C power source + which is connected to a device. It is recorded every time a new power source + is connected. + + + + + pmalani@chromium.org + chromeos-power@google.com + + This value represents events where a USB Type-C peripheral couldn't be + configured correctly, or experienced some other unexpected behaviour. It is + recorded every time a new peripheral is connected. + + + + + jorgelo@chromium.org + tnagel@chromium.org + + The number of files with URL extended attributes found in the users' home + directories. This is emitted once per boot. See crbug.com/919486 and + crbug.com/939386 for more details. + + + + + allenwebb@chromium.org + jorgelo@chromium.org + mnissler@chromium.org + Timing and number of USB devices attached. + + + + wonchung@google.com + allenwebb@chromium.org + chromeos-usb@google.com + + Timing and number of external USB devices attached. This is emitted each + time an external device is attached via USB and when user logs in with an + external device attached. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + wonchung@google.com + chromeos-usb@google.com + + USB device class per {USBPortType}. This is emitted each time an external + device is attached via USB and when user logs in with an external device + attached. + + + + + + + + + wonchung@google.com + chromeos-usb@google.com + + USB device speed per {USBPortType}. This is emitted each time an external + device is attached via USB and when user logs in with an external device + attached. + + + + + + + + + bmalcolm@chromium.org + cros-client-wa@google.com + + This value is reported at the start of a user session, and is a 32-bit value + that reports the primary user account type and the device type (umanaged + user on managed device, K12 user on an education device, etc.). The upper + 16-bits represent the device type (found at http://shortn/_3iFWcdjy0P), and + the lower 16-bits represent the user type (found at + http://shortn/_uK3ZM4pC0a). So a nonprofit user (0x03) on an enterprise + device (0x02) would be 0x00020003 or 131075. + + + + + tsergeant@chromium.org + chromeos-apps-foundation-team@google.com + + Records the overall final state of a WebAPK {InstallType} operation on + ChromeOS. A WebAPK is generated and installed when a PWA which supports Web + Share Target is installed in the browser, and updated when the PWA's + manifest updates. + + + + + + + + + jorgelo@chromium.org + chromeos-security-core@google.com + + Records the number of writable+executable mounts on the system. The count + itself is updated every 30 seconds, but this metric is reported every two + hours of runtime. This metric is reported regardless of whether users are + logged in or not. This metric is only reported on Chrome OS. + + + + + erikchen@chromium.org + bgeffon@chromium.org + chromeos-memory@google.com + + This is a multi-dimensional metric that includes information from two + existing metrics: ChromeOS.Zram.OrigDataSizeMB and + ChromeOS.CWP.PSIMemPressure.Some. There are exactly 300 buckets. To + interpret the bucket label, divide the bucket by 20 to get OrigDataSizeMB. + The result is memory usage in gigabytes. The ranges are [0, 1), [1, 2), ..., + [14, infinity). Modulus the bucket by 20 to get PSIMemPressure.Some (ranges + of 0.05, 20 buckets). The metric is logged every 10 seconds. + + + + + ctshao@google.com + bgeffon@chromium.org + chromeos-memory@google.com + + Records {CountMetric}. Recorded every 10s from boot to shutdown. + + + + + + + + + + + + + + + + + + ctshao@google.com + raging@google.com + bgeffon@chromium.org + chromeos-memory@google.com + + Records the {HugePageActivityMetric} in a period of time. Recorded every 10s + from boot to shutdown. Period is the time between recordings (10s). + + + + + + + + + ctshao@google.com + bgeffon@chromium.org + chromeos-memory@google.com + + Records {PctMetric}. Recorded every 10s from boot to shutdown. + + + + + + + + + + ctshao@google.com + bgeffon@chromium.org + chromeos-memory@google.com + + Records {SizeMetric}. Recorded every 10s from boot to shutdown. + + + + + + + + + + + + + diff --git a/histograms/metadata/chromeos_hps/OWNERS b/histograms/metadata/chromeos_hps/OWNERS new file mode 100644 index 000000000000..25a2feaffa06 --- /dev/null +++ b/histograms/metadata/chromeos_hps/OWNERS @@ -0,0 +1,12 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +chadduffin@chromium.org +crisrael@google.com +jorgelo@chromium.org +julietlevesque@google.com +khorimoto@chromium.org +tby@chromium.org +tsergeant@chromium.org +jimmyxgong@chromium.org diff --git a/histograms/metadata/chromeos_hps/histograms.xml b/histograms/metadata/chromeos_hps/histograms.xml new file mode 100644 index 000000000000..2faca39739d0 --- /dev/null +++ b/histograms/metadata/chromeos_hps/histograms.xml @@ -0,0 +1,136 @@ + + + + + + + + + + evanbenn@chromium.org + avg@chromium.org + chromeos-hps-swe@google.com + + Measures the fraction of invalid images per thousand images, in ten minute + blocks. This will be recorded only when an HPS feature is enabled and at + least 30 images are inferenced. + + + + + evanbenn@chromium.org + avg@chromium.org + chromeos-hps-swe@google.com + + Records when users change the kQuickDim setting on the privacy page. + + + + + evanbenn@chromium.org + avg@chromium.org + chromeos-hps-swe@google.com + + Records when users change the kSnoopingProtectionEnabled setting on the + privacy page. + + + + + charleszhao@chromium.org + evanbenn@chromium.org + martis@chromium.org + chromeos-hps-swe@google.com + + Records when a potentially-flakey negative signal appears for snooping + protection. We may also log flakey positive signals in future. + + + + + martis@chromium.org + charleszhao@chromium.org + chromeos-hps-swe@google.com + + Measures the time of the SnoopingProction at the {Result} state. Recorded + when the snooping status changes. + + + + + + + + + martis@chromium.org + charleszhao@chromium.org + chromeos-hps-swe@google.com + + Records the new setting of kSnoopingProtectionNotificationSuppressionEnabled + when users change it on the privacy page. + + + + + evanbenn@chromium.org + avg@chromium.org + chromeos-hps-swe@google.com + + Reports the result of each attempt to turn the hps device on. + + + + + evanbenn@chromium.org + avg@chromium.org + chromeos-hps-swe@google.com + + Measures the time it took to turn on the device, when the result was + {Result}. + + + + + + + + + evanbenn@chromium.org + avg@chromium.org + chromeos-hps-swe@google.com + Measures the time it took to send an {Stage} update. + + + + + + + + + diff --git a/histograms/metadata/chromeos_settings/OWNERS b/histograms/metadata/chromeos_settings/OWNERS new file mode 100644 index 000000000000..8961bd822a3d --- /dev/null +++ b/histograms/metadata/chromeos_settings/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +xiaohuic@chromium.org diff --git a/histograms/metadata/chromeos_settings/histograms.xml b/histograms/metadata/chromeos_settings/histograms.xml new file mode 100644 index 000000000000..f65655c0540e --- /dev/null +++ b/histograms/metadata/chromeos_settings/histograms.xml @@ -0,0 +1,548 @@ + + + + + + + + + + josiahk@chromium.org + chromium-accessibility@chromium.org + + Records when a user changes the kFullscreenMagnifierFocusFollowing setting + on the Accessibility page. + + + + + josiahk@chromium.org + chromium-accessibility@chromium.org + + Recorded when a user changes the value of the + kFullscreenMagnifierMouseFollowingMode setting on the Accessibility page. + Records the value of the setting. + + + + + hsuregan@chromium.org + jimmyxgong@chromium.org + + Records when a user changes the kDoNotDisturbOnOff setting in the + Notifications subpage of the Apps section. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + Records when users change the kBluetoothOnOff setting on the Bluetooth page. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + The amount of time between when the settings window becomes blurred and when + the user focuses it again. + + + + + ckincaid@chromium.org + dmblack@google.com + cros-settings@google.com + + Records value of keyboard auto-repeat Enabled setting at session startup. + + + + + ckincaid@chromium.org + dmblack@google.com + cros-settings@google.com + + Records value of keyboard auto-repeat {Setting} setting at session startup. + + + + + + + + + jimmyxgong@chromium.org + zentaro@chromium.org + cros-peripherals@google.com + + Records when a user changes the kKeyboardFunctionKeys setting on the Device + page. + + + + + xiaohuic@chromium.org + cros-settings@google.com + + Records when users change the Touchpad Speed on the Device page. The value + saved is equal to the sensitivity value set on the slider, which ranges from + 1 to 5. + + + + + mlcui@google.com + cros-borders@google.com + + Records when users dismiss the shortcut reminder banner in Chrome OS' Inputs + OS settings page. The value saved indicates the keyboard shortcuts that were + previously shown in the banner before the user dismissed the banner. + + + + + dpad@google.com + cros-peripherals@google.com + + Records the configured modifier remapping set for all modifiers as a hash. + See //ash/system/input_device_settings/keyboard_modifier_metrics_recorder.cc + for an explanation of the storage method and how to convert the hash to get + modifier data. + + + + + dpad@google.com + cros-peripherals@google.com + + Records the configured modifier remapping for the {Modifier} key when a user + changes the setting in the Settings SWA. + + + + + + + + + + + + + + + + dpad@google.com + cros-peripherals@google.com + + Records the configured modifier remapping for the {Modifier} key when a user + session is started. Only emitted once per user per session. Default values + are not recorded. + + + + + + + + + + + + + + + + myy@chromium.org + essential-inputs-team@google.com + + Records when users interact with different element in the Chrome OS's + Languages OS settings page. + + + + + myy@chromium.org + essential-inputs-team@google.com + + Records when users check/uncheck "Offer to translate pages in this + language" checkbox in OS Settings + + + + + myy@chromium.org + essential-inputs-team@google.com + + Records when users visit a language settings support page for Chrome OS. + + + + + + + myy@chromium.org + essential-inputs-team@google.com + + Records when users interact with a toggle in the Chrome OS's Languages OS + settings page. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + The amount of time between the RenderFrameHost StartProvisionalLoad event + and the RenderFrameHost DocumentOnLoadCompleted event for the Chrome OS + settings page. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + The amount of time between the RenderFrameHost StartProvisionalLoad and + DidFinishDocumentLoad events for the Chrome OS settings page. + + + + + hsuregan@chromium.org + jimmyxgong@chromium.org + + Records when a user changes the notification permission of any app in the + Notifications subpage of the Apps section. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + The number of characters for queries used to fetch results from the Settings + Search Mojo API. + + + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + The number of clicks before changing a setting. + + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + The number of navigations before changing a setting. + + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + The number of searches before changing a setting. + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + The number of search results fetched each time a successful search request + is made to the Settings Search Mojo API. + + + + + + Removed as of 07/2022 (crbug/1231142). + + jamescook@chromium.org + cros-system-services@google.com + + Records whether the "try your Chrome OS settings" banner was shown + when the user opened a new Chrome browser settings tab and also records + interactions with the banner. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + Paths visited within chrome://os-settings. For evaluating popularity and + priorities for OS Settings UI. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + Records when users click the Add Account button on the People page. The + number of the account that would be added is saved, e.g. a sample of 2 means + the user entered the add account dialog for a 2nd account. + + + + + jimmyxgong@chromium.org + cros-peripherals@google.com + + Records when the users clicks on the Peripheral Data Access toggle. A true + value refers to the user enables peripheral data access protection (toggle + is turned on). + + + + + jpachara@google.com + pwg-cros@google.com + + Records when a user toggles the Enable Verified Access setting under the + Security and Privacy section. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + The time fetching search results from the Settings Search Mojo API. Recorded + when getSearchHandler().search() completes. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + The number of search requests made to the Settings Search Mojo API. For + search requests that succeeded with a response, the number of search + requests that had results which were discarded, and the number of search + requests that were shown to the user. Recorded when + getSearchHandler().search() completes. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + The number of search requests made to the Settings Search Mojo API in one + session of the settings app. + + + + + cowmoo@google.com + cros-settings@google.com + + External personalization search results clicked by user in the OS settings + search box. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + Section search results clicked by user in the OS settings search box. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + Setting search results clicked by user in the OS settings search box. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + Subpage search results clicked by user in the OS settings search box. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + Type of search results clicked by user in the OS settings search box. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + Records the the setting id when the user changes a setting. Note that some + of the values of the OsSetting enum aren't strictly settings (such as + kKeyboardShortcuts, which is just a hyperlink). All of the recorded values + appear in the settings page. + + + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + The time spent on the settings page before changing a setting. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + The time until the ChromeOS Settings WebUI is loaded, rendered, and + interactive for users (as in they can change a setting). Automatically + logged each time the app is opened (if not closed before interactive). + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + The user action taken when search results exist and are displayed. + + + + + jonmann@chromium.org + khorimoto@chromium.org + tnagel@chromium.org + cros-customization@google.com + cros-privacy-core@google.com + + Recorded when the user adds a WiFi network that has not been added before. + + + + + jonmann@chromium.org + khorimoto@chromium.org + tnagel@chromium.org + cros-customization@google.com + cros-privacy-core@google.com + + Recorded when the "Hidden" Wi-Fi network toggle is changed by the + user. + + + + + wesokuhara@google.com + xiaohuic@chromium.org + cros-settings@google.com + + The amount of time between when a Chrome OS settings window is opened and + when it is closed. + + + + + + diff --git a/histograms/metadata/commerce/DIR_METADATA b/histograms/metadata/commerce/DIR_METADATA new file mode 100644 index 000000000000..135b414c2bb7 --- /dev/null +++ b/histograms/metadata/commerce/DIR_METADATA @@ -0,0 +1,11 @@ +# Metadata information for this directory. +# +# For more information on DIR_METADATA files, see: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md +# +# For the schema of this file, see Metadata message: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto + +monorail { + component: "UI>Browser>Shopping" +} \ No newline at end of file diff --git a/histograms/metadata/commerce/OWNERS b/histograms/metadata/commerce/OWNERS new file mode 100644 index 000000000000..8dad1c65becf --- /dev/null +++ b/histograms/metadata/commerce/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +mdjones@chromium.org diff --git a/histograms/metadata/commerce/histograms.xml b/histograms/metadata/commerce/histograms.xml new file mode 100644 index 000000000000..30e6074529c5 --- /dev/null +++ b/histograms/metadata/commerce/histograms.xml @@ -0,0 +1,782 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + yuezhanggg@chromium.org + wychen@chromium.org + chrome-shopping@google.com + + Records how long it takes to decide if a focused element is an AddToCart + button. This is recorded everytime an element is focused on an eligible + website when the DOM-based heuristic is enabled. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Logged when cart content extraction is executed for ChromeCart. This + histogram records the elapsed time within the JavaScript, so script + parsing/compilation time is excluded. Commerce.Carts.ExtractionExecutionTime + is measured in native, and is the end-to-end elapsed time. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Logged when cart content extraction is executed for ChromeCart. This + histogram records the elapsed time between the start and the end of the + extraction JavaScript request execution. This includes script + parsing/compilation time and sleeping time. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Logged when cart content extraction is executed for ChromeCart. This + histogram records the time span of the longest task blocking the main thread + of the renderer process. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Record whether the cart content extraction has timed out. Logged when cart + content extraction is executed for ChromeCart. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Logged when cart content extraction is executed for ChromeCart. This + histogram records the time spent on execution, excluding sleeping time. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Records whether the form submission is a shopping transaction. This has 50% + chance randomized. Logged when there's a form submission. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Records whether the XHR is to add a product to a shopping cart. This has 50% + chance randomized. Logged when there's an XHR about to be sent. + + + + + yuezhanggg@chromium.org + wychen@chromium.org + chrome-shopping@google.com + + Cart extraction script could come from local resources or component updater. + This histogram is logged when we try to get the extraction script to record + from which source we are getting the script. The action of getting script is + triggered when users visit the cart page which would trigger extractions. + + + + + yuezhanggg@chromium.org + wychen@chromium.org + chrome-shopping@google.com + + Checkout URL pattern could come from Finch feature parameter or component + updater. This histogram is logged when we try to get checkout URL pattern to + record from which source we are getting the pattern. The action of getting + checkout URL pattern is triggered on every eligible navigation to decide if + users have visited the checkout page. + + + + + yuezhanggg@chromium.org + wychen@chromium.org + chrome-shopping@google.com + + Merchant name could come from local resources or component updater. This + histogram is logged when we try to get merchant name data to record from + which source we are getting the data. The action of getting merchant name is + triggered every time when a new abadoned cart is detected by ChromeCart, so + that we can look up merchant name for the abadoned cart merchant. + + + + + yuezhanggg@chromium.org + wychen@chromium.org + chrome-shopping@google.com + + Partner merchant pattern heuristics could come from Finch feature parameter + or component updater. This histogram is logged when we try to get partner + merchant pattern to record from which source we are getting the pattern. The + action of getting partner merchant pattern is triggered every time when we + need to decide if an abandoned cart in ChromeCart is from a partner + merchant, which could happen both with and without user actions. + + + + + yuezhanggg@chromium.org + wychen@chromium.org + chrome-shopping@google.com + + Product ID extraction pattern heuristics could come from Finch feature + parameter or component updater. This histogram is logged when we try to get + product ID extraction pattern to record from which source we are getting the + pattern. The action of getting product ID extraction is triggered every time + we try to load the cart extraction script for ChromeCart, which happens + after the user navigates to a cart page or updates the cart page. + + + + + yuezhanggg@chromium.org + wychen@chromium.org + chrome-shopping@google.com + + Skip product pattern heuristics could come from Finch feature parameter or + component updater. This histogram is logged when we try to get skip product + pattern to record from which source we are getting the pattern. The action + of getting skip product pattern is triggered every time when a new abadoned + cart is detected by ChromeCart, so that we can check if products in abadoned + cart need to be skipped. + + + + + ayman@chromium.org + mdjones@chromium.org + chrome-shopping@google.com + + Records whether a navigation is to a product details page and then whether + the information we retrieved about the page contains a product cluster ID. + + + + + + Deprecated in 06/2022. Replaced by Commerce.ShoppingService.ProductInfo.*. + + ayman@chromium.org + mdjones@chromium.org + + Records whick type of fallback data (javascript on-page heuristics) was used + when filling in gaps from Optimization Guide. This does not track whether + the page was actually bookmarked, it only indicates what information might + be missing or how often we get supplementary images when on a product page. + + + + + + Deprecated in 06/2022. Replaced by Commerce.ShoppingService.ProductInfo.*. + + ayman@chromium.org + mdjones@chromium.org + + Records whether fallback data (javascript on-page heuristics) was used to + supplement the data provided by Optimization Guide. This does not track + whether the page was actually bookmarked. + + + + + + Deprecated 12/2022. Replaced by Commerce.PDPStateOnNavigation. + + ayman@chromium.org + mdjones@chromium.org + + Records whether a particular navigation was determined to be a product page + by Optimization Guide. This doesn not track whether the page was actually + bookmarked. + + + + + + Deprecated in 11/2022. The validation logic became unnecessary with the new + subscriptions manager implementation. + + ayman@chromium.org + mdjones@chromium.org + chrome-shopping@google.com + + Records the result of validation of a user's subscribed products between the + bookmarks system and the subscriptions backend. This will tell us if a user + has a subscription that isn't backed by bookmark locally and if the client + has a bookmark that claims to be tracked but has no subscription on the + backend. This metric is recorded when the browser starts and whenever the + user enters the bookmark manager (each time validation occurs). + + + + + ayman@chromium.org + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records whether the price drop annotation is enabled. Recorded when user + enters the grid tab switcher. The record frequency is controlled by a + feature parameter and by default it is recorded at most once every day. + Implemented for Android. + + + + + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records whether the price drop notification channel is blocked by users. + Recorded when we initialize commerce subscriptions (For eligible users, we + initialize subscriptions when Chrome becomes foreground app but at most once + in a one-day moving window). Implemented for Android. + + + + + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records whether the price drop notification channel is created. Recorded + when we initialize commerce subscriptions (For eligible users, we initialize + subscriptions when Chrome becomes foreground app but at most once in a + one-day moving window). Implemented for Android. + + + + + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records whether the system notification is enabled by users. Recorded when + we initialize commerce subscriptions (For eligible users, we initialize + subscriptions when Chrome becomes foreground app but at most once in a + one-day moving window). Implemented for Android. + + + + + zhiyuancai@chromium.org + ayman@chromium.org + chrome-shopping@google.com + + The number of price drop notifications shown in the given time interval (one + day by default) for the specified management type. Emitted for clients in + our experiment when Chrome is foregrounded. Recorded at most once in a + one-day moving window. Implemented for Android. + + + + + + zhiyuancai@chromium.org + ayman@chromium.org + chrome-shopping@google.com + + Records whether the number of shown notifications in given window (one day + by default) has reached the cap limit for specified management type. + Recorded when we are trying to show any price drop notifications. + Implemented for Android. + + + + + + davidjm@chromium.org + ayman@chromium.org + dtrainor@chromium.org + + Records if a page contains a price, as determined by the commerce data + obtained to power the price drop feature. This data is acquired when the + user finishes navigating to a page. Recorded when the user + {LocationIdentifier}. Recorded for {TabUsageStatus}. + + + + + + + davidjm@chromium.org + ayman@chromium.org + dtrainor@chromium.org + + Records if a page contains a decrease in price for an offer, relative to the + previously seen price for the offer. This is determined by the commerce data + obtained to power the price drop feature. The data is acquired when the user + finishes navigating to a page. Recorded when the user {LocationIdentifier}. + Recorded for {TabUsageStatus}. + + + + + + + davidjm@chromium.org + ayman@chromium.org + dtrainor@chromium.org + + Records if a page is a product detail page, as determined by the commerce + data obtained to power the price drop feature. This data is acquired when + the user finishes navigating to a page. Recorded when the user + {LocationIdentifier}. Recorded for {TabUsageStatus}. + + + + + + + ayman@chromium.org + mdjones@chromium.org + chrome-shopping@google.org + + Records whether the user has price notification emails enabled. This count + is recorded daily (once every 24 hours) or the next time the browser starts + if more than 24 hours have passed since last recorded. If a user has not + tracked a product "not responded" will be recorded instead to help + differentiate users interacting with the feature. This metric is implemented + for all platforms. + + + + + ayman@chromium.org + mdjones@chromium.org + chrome-shopping@google.org + + Records the number of price tracked products for the user. This count is + recorded daily (once every 24 hours) or the next time the browser starts if + more than 24 hours have passed since last recorded. This metric is + implemented for all platforms. + + + + + yuezhanggg@chromium.org + mdjones@chromium.org + chrome-shopping@google.org + + Records every time we try to load an image in the price tracking side panel + UI. This histogram logs 'Success' when loading was successful and 'Failure' + when there was an error. + + + + + ayman@chromium.org + davidjm@chromium.org + + Records whether a bookmark is found when untracking a site in price drop + notifications upon receiving a price drop notification. It is expected that + a bookmark should be present if a notification has been received. This + metric is being recorded to confirm that assumption is valid. + + + + + ayman@chromium.org + davidjm@chromium.org + + Records whether untracking price drops for a site was successful or not + after selecting 'Untrack' from the long press menu upon receiving a price + drop notification. + + + + + ayman@chromium.org + mdjones@chromium.org + + Records whick type of fallback data (javascript on-page heuristics) was used + when filling in gaps from Optimization Guide. This does not track whether + the page was actually bookmarked, it only indicates what information might + be missing or how often we get supplementary images when on a product page. + + + + + ayman@chromium.org + mdjones@chromium.org + + Records whether fallback data (javascript on-page heuristics) was used to + supplement the data provided by Optimization Guide. This does not track + whether the page was actually bookmarked. + + + + + ayman@chromium.org + mdjones@chromium.org + + Records the availability of a product image for an offer. The image can be + provided by the server, provided locally, have both options available, or + neither. The goal is to see the overlap between server knowledge and what + can be provided locally. This histogram is available on any platform where + the shopping service's product info API is enabled and is recorded only + after the local, on-page fallback is run (since we need both server-provided + and local to record the right value). + + + + + + Deprecated in 01/2023. It's no longer needed. + + zhiyuancai@chromium.org + ayman@chromium.org + chrome-shopping@google.com + + Records the web and app activity status of user account. Emitted for clients + in our experiment when Chrome is foregrounded. Recorded at most once in a + one-day moving window. Implemented for Android. + + + + + zhiyuancai@chromium.org + ayman@chromium.org + chrome-shopping@google.com + + Records whether a tab is eligible for commerce subscriptions. True when the + tab has offer and the tab is stale (Last opened time between 1 and 90 days). + Recorded when we initialize commerce subscriptions (For eligible users, we + initialize subscriptions when Chrome becomes foreground app but at most once + in a one-day moving window). Implemented for Android. + + + + + zhiyuancai@chromium.org + ayman@chromium.org + chrome-shopping@google.com + + Records the result of a product tracking request in the subscriptions + manager. Recorded when the request finishes. + + + + + zhiyuancai@chromium.org + ayman@chromium.org + chrome-shopping@google.com + + Records the result of a product untracking request in the subscriptions + manager. Recorded when the request finishes. + + + + + + Deprecated in 01/2023. Replaced by + Commerce.PriceTracking.PriceTrackedProductCount. + + zhiyuancai@chromium.org + ayman@chromium.org + chrome-shopping@google.com + + The number of price tracking subscriptions stored in local storage for the + specified management type. Emitted for clients in our experiment when Chrome + is foregrounded. Recorded at most once in a one-day moving window. + Implemented for Android. + + + + + + ayman@chromium.org + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records the reason that the merchant trust bottom sheet is closed. Recorded + when the bottom sheet is closed. Implemented for Android. + + + + + ayman@chromium.org + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records the duration in milliseconds that the merchant trust bottom sheet is + left fully expanded. Implemented for Android. + + + + + ayman@chromium.org + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records the duration in milliseconds that the merchant trust bottom sheet is + left half expanded. Implemented for Android. + + + + + ayman@chromium.org + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records the duration in milliseconds that the merchant trust bottom sheet is + peeking. Implemented for Android. + + + + + ayman@chromium.org + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records whether the merchant trust bottom sheet is fully expanded. Recorded + when the bottom sheet is closed. Implemented for Android. + + + + + ayman@chromium.org + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records whether the merchant trust bottom sheet is half expanded. Recorded + when the bottom sheet is closed. Implemented for Android. + + + + + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records which ui the bottom sheet is opened from. Recorded when the bottom + sheet is opened. Implemented for Android. + + + + + ayman@chromium.org + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records why the prepared merchant trust message is cleared. Recorded when + the prepared message is cleared. Implemented for Android. In M96 and later + this includes MESSAGE_CONTEXT_NO_LONGER_VALID and + SWITCH_TO_DIFFERENT_WEBCONTENTS. + + + + + ayman@chromium.org + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records the reason that the merchant trust message is dismissed. Implemented + for Android. + + + + + ayman@chromium.org + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records the duration in milliseconds from the merchant trust message being + prepared to it being shown or cleared. Implemented for Android. + + + + + ayman@chromium.org + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records the duration in milliseconds that the merchant trust message is + shown. Implemented for Android. + + + + + zhiyuancai@chromium.org + ayman@chromium.org + chrome-shopping@google.com + + Records the user browsing time in milliseconds in a tab on the same host + after a message shows. Recorded when user navigates to another host or the + tab gets hid/closed. Recorded for all messages. Implemented for Android. + + + + + zhiyuancai@chromium.org + ayman@chromium.org + chrome-shopping@google.com + + Records the user browsing time in milliseconds in a tab on the same host + after a message shows. Recorded when user navigates to another host or the + tab gets hid/closed. Recorded for message with {MessageStarRating}. + Implemented for Android. + + + + + + zhiyuancai@chromium.org + ayman@chromium.org + chrome-shopping@google.com + + Records the user navigation count in a tab on the same host after a message + shows. Recorded when user navigates to another host or the tab gets + hid/closed. Recorded for all messages. Implemented for Android. + + + + + zhiyuancai@chromium.org + ayman@chromium.org + chrome-shopping@google.com + + Records the user navigation count in a tab on the same host after a message + shows. Recorded when user navigates to another host or the tab gets + hid/closed. Recorded for message with {MessageStarRating}. Implemented for + Android. + + + + + + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records whether the store info row is visible in page info. Recorded when + the page info is opened. Implemented for Android. + + + + + + diff --git a/histograms/metadata/companion/OWNERS b/histograms/metadata/companion/OWNERS new file mode 100644 index 000000000000..381d518e13fa --- /dev/null +++ b/histograms/metadata/companion/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +mcrouse@chromium.org +shaktisahu@chromium.org +tbansal@chromium.org diff --git a/histograms/metadata/companion/histograms.xml b/histograms/metadata/companion/histograms.xml new file mode 100644 index 000000000000..bc00bfea9faf --- /dev/null +++ b/histograms/metadata/companion/histograms.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + shaktisahu@chromium.org + + Records various events (e.g. displayed, accepted or rejected) on various + promo surfaces on the companion page. Recorded as soon as the event happens. + + + + + shaktisahu@chromium.org + + Records whether {UiSurface} was clicked by the user on the companion page. + Recorded as soon as the surface is clicked. + + + + + + shaktisahu@chromium.org + + Records whether {UiSurface} was shown on the companion page. Recorded as + soon as the surface is shown. + + + + + + + diff --git a/histograms/metadata/compositing/OWNERS b/histograms/metadata/compositing/OWNERS new file mode 100644 index 000000000000..b1a03c739c7b --- /dev/null +++ b/histograms/metadata/compositing/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +jonross@chromium.org diff --git a/histograms/metadata/compositing/histograms.xml b/histograms/metadata/compositing/histograms.xml new file mode 100644 index 000000000000..ffacfdc6fb51 --- /dev/null +++ b/histograms/metadata/compositing/histograms.xml @@ -0,0 +1,1419 @@ + + + + + + + + + + + + + + + pdr@chromium.org + animations-dev@chromium.org + + Time spent updating layers, in microseconds. Recorded when layers are + updated (in a browser process). + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent updating layer draw properties, in microseconds. Recorded when a + LayerTreeImpl's draw properties are updated (in a browser process). + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + pdr@chromium.org + paint-dev@chromium.org + + The number of layers in the active tree for each compositor frame. This is + logged once per frame, before the frame is drawn (in a browser process). + + + + + pdr@chromium.org + paint-dev@chromium.org + + The number of PictureLayers in the active tree for each compositor frame. + This is logged once per frame, before the frame is drawn (in a browser + process). + + + + + pdr@chromium.org + paint-dev@chromium.org + + The number of render surfaces in the render surface layer list. Recorded + each time the render surface layer list is constructed (in a browser + process). + + + + + khaslett@chromium.org + petermcneeley@chromium.org + graphics-dev@chromium.org + + The time since a BufferQueue's buffers were destroyed until they were + recreated. If this time is commonly very small, that is a problem. Recorded + when the buffer recreates buffers that were previously destroyed. For a + single BufferQueue this should be once per frame at worst. + + + + + cblume@chromium.org + khushalsagar@chromium.org + + Every time a frame is presented, record the generalized color gamut of that + frame. + + + + + wychen@chromium.org + + The turn around time taken for the async readback of pixels is measured + here. This should be marked as obsolete once some tests no longer rely on + this histogram. See crbug/1110961 for more details. + + + + + mmocny@chromium.org + paint-dev@chromium.org + + Reports whether an image decode was for an image that might be used as the + Largest Contentful Image, and then whether a missing tile at raster time + includes such an image. The goal is to get an approximate idea of how many + LCP candidate images miss their frame deadline, and hence how often we may + report LCP too soon. + + Recorded on every {DecodeMethod} + + + + + + + + + + szager@chromium.org + paint-dev@chromium.org + sky@chromium.org + + Recorded on every commit. Indicates whether the renderer's main thread was + blocked waiting for the impl thread to commit. True indicates the main + thread did block. + + + + + khaslett@chromium.org + kylechar@chromium.org + + Time spent processing quads to see which can be replaced with overlays. This + is logged once per frame, when a frame should be drawn. Only reported for + platforms supporting high resolution clocks. + + + + + vasilyt@chromium.org + backer@chromium.org + + The area of the display damage that was added to current frame damage after + all adjustments, including FrameBufferDamage from buffer queue and render + pass filters. + + This metric is reported once per frame only on platforms/devices that + support partial swap and does not include "empty swap" (no frame + damage) case. + + + + + vasilyt@chromium.org + backer@chromium.org + + The area of the display that was damaged since previous draw to this frame + buffer. + + This metric is reported once per frame only on platforms/devices that + support partial swap and does not include "empty swap" (no frame + damage) case. + + + + + vasilyt@chromium.org + backer@chromium.org + + The area of the display that was damaged in current frame. + + This metric is reported only on platforms/devices that support partial swap + and does not include "empty swap" (no frame damage) case. + + + + + vasilyt@chromium.org + backer@chromium.org + + The total area of the display that will be redrawn this frame. + + This metric is reported only on platforms/devices that support partial swap + and does not include "empty swap" (no frame damage) case. + + + + + magchen@chromium.org + ccameron@chromium.org + graphics-dev@chromium.org + + Whether all non-root render passes in a frame are skipped. Logged once per + frame during DrawFrame for the frames with non-root render passes. + + + + + magchen@chromium.org + ccameron@chromium.org + graphics-dev@chromium.org + + Logged for every non-root render pass in DrawRenderPass during DrawFrame. + True if there is no damages to the render pass and the rendering is skipped. + + + + + magchen@chromium.org + ccameron@chromium.org + graphics-dev@chromium.org + + Pixel size for a skipped nonroot render pass output surface. Recorded in Viz + DirectRenderer draw frame. + + + + + boliu@chromium.org + vasilyt@chromium.org + + This is logged once for every ADPF performance hint report, which is + generally once every frame on Android device that supports ADPF and ADPF is + enabled. It's the interval reported to ADPF, which is currently implemented + as the wall clock time from vsync frame time to swap_start. Only reported + for platforms supporting high resolution clocks. + + + + + yiyix@chromium.org + chromeos-gfx@chromium.org + + Time spent to remove invisible quads from the quad_list in CompositorFrame. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + backer@chromium.org + rjkroege@chromium.org + + This is logged once per frame, if the output surface provides timing + information. It measures the time from the display compositor starting a + draw on the Viz Compositor thread to issuing all related draw calls to the + driver on the Gpu Main thread. Only reported for platforms supporting high + resolution clocks. + + + + + khaslett@chromium.org + kylechar@chromium.org + + Logged zero or more times per frame, whether the first call to + HardwareDisplayController.TestPageFlip succeeded. + + + + + khaslett@chromium.org + kylechar@chromium.org + + Logged zero or more times per frame, the number of times TestPageFlip is + called on the HardwareDisplayController. + + + + + khaslett@chromium.org + kylechar@chromium.org + + Logged zero or more times per frame, the duration of calling TestPageFlip on + the HardwareDisplayController. Only reported for platforms supporting high + resolution clocks. + + + + + khaslett@chromium.org + kylechar@chromium.org + + Logged zero or more times per frame, the duration of + DrmThread::CheckOverlayCapabilitiesSync(). This is the total time spent on + the DRM thread to check a set of overlay candidates. Only reported for + platforms supporting high resolution clocks. + + + + + backer@chromium.org + rjkroege@chromium.org + + This is logged once per frame. It is the number of renderer passes after + flattening all possible render passes. If the value is more than one, then + an intermediate rendering target must be used during the rendering of the + frame for each render pass greater than one. + + + + + seanpaul@chromium.org + chromeos-gfx-compositor@chromium.org + + Logged once per frame, represents whether we could successfully schedule a + page flip, or what error we encountered along the way. Note: this metric was + expired from 2023-03-02 to 2023-04-13. + + + + + khaslett@chromium.org + kylechar@chromium.org + + Logged zero or one times per frame, the number of stale candidate ids we are + evicting from the OverlayCombinationCache this frame. If this number is high + the CandidateIds or the candidates proposed are likely less stable than they + should be. + + + + + khaslett@chromium.org + kylechar@chromium.org + + This is logged every time a new HardwareCapabilities is received from DRM + when display configuration may have changed. True iff the response received + is valid. + + + + + khaslett@chromium.org + kylechar@chromium.org + + This is logged every time a valid HardwareCapabilities is received from DRM + when display configuration may have changed. It records the number of + overlay planes we have available on this device including the primary plane. + + + + + khaslett@chromium.org + kylechar@chromium.org + + Logged zero or one times per frame, whether or not the candidate combination + being tested this frame was successfully promoted to overlays on the + previous frame. + + + + + khaslett@chromium.org + kylechar@chromium.org + + This is logged once per frame, the number of times CheckOverlaySupport is + called this frame. + + + + + khaslett@chromium.org + kylechar@chromium.org + + Logged zero or more times per frame, the time spent checking if a set of + candidates can be promoted to overlay. Only reported for platforms + supporting high resolution clocks. + + + + + zoraiznaeem@chromium.org + graphics-dev@chromium.org + + Records once per frame, whether we will attempt to promote any required + overlay or not in that frame. + + + + + zoraiznaeem@chromium.org + graphics-dev@chromium.org + + Records zero or once per frame, whether we attempted scaling any required + overlay. + + + + + khaslett@chromium.org + kylechar@chromium.org + chromeos-gfx-compositor@chromium.org + + Logged once per frame, the number of overlays {Counted}. Note: this metric + was expired from 2022-11-30 to 2023-04-13. + + + + + + + + + + khaslett@chromium.org + kylechar@chromium.org + + Logged once per frame, the number of quads considered for promotion to + overlay. + + + + + khaslett@chromium.org + kylechar@chromium.org + + Logged zero or one times per frame, whether we're using the + AttemptingMultipleOverlays codepath this frame or why we arent. + + + + + zoraiznaeem@chromium.org + graphics-dev@chromium.org + + Records the scale factor that is used to downscale successfully promoted + required candidates. It is only logged once per frame if a required overlay + is promoted. Note: The scale factor value is logged as `scale_factor * 100`. + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + + Records the count of pending swaps in the display scheduler. Length of the + swap chain can be used as a rough approximation for input latency. Recorded + before the swap executes. Refer to Display::DrawAndSwap for details. + + + + + vasilyt@chromium.org + backer@chromium.org + + This is logged once per frame, if the output surface provides timing + information. It measures delta between the time when display compositor draw + task's dependencies have been solved and the time when the Gpu Thread + started processing it. Only reported for platforms supporting high + resolution clocks. + + + + + vasilyt@chromium.org + backer@chromium.org + + This is logged once per frame if the output surface provides timing + information. It measures delta between the time when display compositor + scheduled first draw task for the current frame on Viz Compositor thread and + the time when the task's dependencies have been resolved and the task is + ready for the Gpu Thread to start processing it. Recorded when swap + completes. Only reported for platforms supporting high resolution clocks. + + + + + vasilyt@chromium.org + backer@chromium.org + + This is logged once per frame if the output surface provides timing + information. It measures delta between the time when display compositor + scheduled first draw task for the current frame on Viz Compositor thread and + the time when Gpu Thread started processing it. Recorded when swap + completes. Only reported for platforms supporting high resolution clocks. + + + + + szager@chromium.org + paint-dev@chromium.org + sky@chromium.org + + The time that the renderer's main thread blocked waiting for the impl thread + to commit. This is only reported if the main thread blocked. + + Drops reports on clients with low-resolution clocks, biasing to a portion of + the population on Windows. See Windows.HasHighResolutionTimeTicks for the + affected sample. + + + + + szager@chromium.org + pdr@chromium.org + paint-dev@chromium.org + + The time that ApplyCompositorChanges is blocked waiting for the impl thread + to commit. This is a subset of the total time spent in + Compositing.MainThreadBlockedDuringCommitTime. + + Drops reports on clients with low-resolution clocks, biasing to a portion of + the population on Windows. See Windows.HasHighResolutionTimeTicks for the + affected sample. + + + + + awogbemila@chromium.org + input-dev@chromium.org + + Records when we attempt to update an animation with a missing property node. + See crbug.com/1307498. We safely handle this case but until we find and fix + the root cause, this histogram allows us to keep track of the frequency at + this occurs. + + + + + magchen@chromium.org + ccameron@chromium.org + + The percentage of changed IOSurface number in all IOSurface per frame. + Recorded during the CALayer Tree commit to CoreAnimation on Mac. + + + + + magchen@chromium.org + ccameron@chromium.org + + The number of IOSurfaces changed per frame. Recorded during the CALayer Tree + commit to CoreAnimation on Mac. + + + + + magchen@chromium.org + ccameron@chromium.org + + Total IOSurfaces area size updated per frame. Recorded during the CALayer + Tree commit to CoreAnimation on Mac. + + + + + ccameron@chromium.org + graphics-dev@chromium.org + + The outcome of attempting to replace all renderer tiles with CALayers. + Either success, or the first reason why a DrawQuad couldn't be replaced by a + CALayer. + + + + + skobes@chromium.org + input-dev@chromium.org + + Records when the renderer compositor thread is hung (14 seconds) waiting to + run the commit after the main thread signalled that it is ready to commit. + + + + + jonross@chromium.org + chrome-gpu-metrics@google.com + + The cumulative time spent performing visual updates for the {Surface}. + + The time is measured in the Renderer. The result is reported in the Browser + when it is notified that the first Surface for a Renderer has been activated + by the GPU process. This is only reported for the first Surface that is + activated, and not for subsequent Surfaces. + + + + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Time spent updating layers, in microseconds. Recorded when layers are + updated (in a renderer process). + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + wangxianzhu@chromium.org + paint-dev@chromium.org + + Records the approximate kilo-pixels covered by text drawing operations by + LCD-text disallowed reasons. Hence the histogram value for each reason is + the approximate number of non-LCD kilo-pixels resulting from that reason. + Recorded when the renderer is idle, at minimum interval of the longer of 1 + minute and 500 begin frames for each local frame tree. + + + + + + wangxianzhu@chromium.org + paint-dev@chromium.org + + Records the number of layers containing text by LCD-text disallowed reasons. + Recorded along with Compositing.Renderer.LCDTextDisallowedReasonKPixels. + + + + + + pdr@chromium.org + paint-dev@chromium.org + + The number of layers in the active tree for each compositor frame. This is + logged once per frame, before the frame is drawn (in a renderer process). + + + + + pdr@chromium.org + paint-dev@chromium.org + + The number of PictureLayers in the active tree for each compositor frame. + This is logged once per frame, before the frame is drawn (in a renderer + process). + + + + + pdr@chromium.org + paint-dev@chromium.org + + The number of render surfaces in the render surface layer list. Recorded + each time the render surface layer list is constructed (in a renderer + process). + + + + + khushalsagar@chromium.org + vmpstr@chromium.org + graphics-dev@chromium.org + + Logged for every nested RenderPass to indicate whether it could have been + drawn directly because it has a single RPDQ and no other effect which would + require producing a render pass. + + + + + backer@chromium.org + penghuang@chromium.org + Records if the TileDrawQuad is rendered with RawDraw. + + + + magchen@chromium.org + ccameron@chromium.org + graphics-dev@chromium.org + + Logged for every RenderPassDrawQuad in the overlay list during + ScheduleOverlays. An Overlay RenderPassDrawQuad is skipped if there is no + damages to the render pass and the RenderPassDrawQuad settings are the same. + + + + + magchen@chromium.org + ccameron@chromium.org + graphics-dev@chromium.org + + Pixel size for a skipped overlay render pass draw quad. Recorded in + SkiaRenderer ScheduleOverlays. + + + + + kylechar@chromium.org + graphics-dev@chromium.org + + Time spent aggregating compositor frames from different surfaces in + microseconds. This is logged once per frame. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + kylechar@chromium.org + jonross@chromium.org + + The number of surfaces where the active CompositorFrame was copied into the + AggregateFrame during surface aggregation. This is logged once per frame. + + + + + kylechar@chromium.org + jonross@chromium.org + + Time spent copying quads during surface aggregation. This is a subset of the + time recorded for Compositing.SurfaceAggregator.AggregateUs and is logged + once per frame. + + Warning: This metric does not include reports from clients with + low-resolution clocks. + + + + + kylechar@chromium.org + jonross@chromium.org + + Time spent declaring resources as used during surface aggregation. This is a + subset of the time recorded for Compositing.SurfaceAggregator.AggregateUs + and is logged once per frame. + + Warning: This metric does not include reports from clients with + low-resolution clocks. + + + + + kylechar@chromium.org + jonross@chromium.org + + The number of surfaces that were looked at during the prewalk phase of + surface aggregation. This is logged once per frame. + + + + + kylechar@chromium.org + jonross@chromium.org + + Time spent doing prewalk during surface aggregation. This is a subset of the + time recorded for Compositing.SurfaceAggregator.AggregateUs and is logged + once per frame. + + Warning: This metric does not include reports from clients with + low-resolution clocks. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + The time between when a Surface has been Marked for Destruction, to when it + is actually Destroyed. + + This time denotes how long the Surface remains referenced by other Surfaces, + preventing deletion. This does not include the following time until the + associated resources are released, and their memory is freed. This is logged + once per destroyed Surface. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks the duration of various stages in the pipeline as a single frame goes + through the various stages in the compositor in the cases that there is no + damage from main thread. + + This metric uses base::Histogram::FactoryMicrosecondsTimeGet so only users + with high resolution clocks will report this metric. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Whether frame is dropped or presented meeting or missing the deadline or is + a compositor only frame. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks the duration of various stages in the pipeline as a single frame goes + through the various stages in the compositor {ReportType}. + + This metric uses base::Histogram::FactoryMicrosecondsTimeGet so only users + with high resolution clocks will report this metric. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jonross@chromium.org + yzshen@chromium.org + graphics-dev@chromium.org + + Measures the time duration between Exo sending a DidNotProduceFrame response + and the next frame arrival, if the next frame arrives before a new + BeginFrame request. Reported for clients with high-resolution clocks. + + This metric is used to measure whether the deadline Exo uses to wait for + frames is reasonable. Please note that a value is reported for each + DidNotProduceFrame. If (1) DidNotProduceFrame is issued when there are + already queued BeginFrame requests; or (2) a new BeginFrame request arrives + before the next frame, then the value reported is 0. + + + + + jonross@chromium.org + yzshen@chromium.org + graphics-dev@chromium.org + + Tracks the percent of BeginFrame requests that Exo receives and responds + with DidNotProduceFrame. + + A new value is reported for every 100 BeginFrame requests that a shell + surface receives. Note that this metric is reported only when there are + sufficient number of BeginFrame requests (>= 100). + + + + + jonross@chromium.org + yzshen@chromium.org + graphics-dev@chromium.org + + Tracks the percent of compositor frames that are submitted from Exo clients + and directly discarded without being sent to the GPU process. + + A new value is reported for every 100 frames that a shell surface submits. + Note that this metric is reported only when there are sufficient number of + frames (>= 100). + + + + + jonross@chromium.org + graphics-dev@chromium.org + + The percent dropped frame is calculated for each sliding window of 1 second + length and added to a histogram, and then the 95 percentile of that + histogram is reported as 95pctPercentDroppedFrames_1sWindow. + + The sliding windows cover the duration of page-load (From start of page-load + until user navigates away, or closes the tab/chrome, or when app goes to + background). Note that this means that this metric will bias toward tabs + that are closed more quickly, and might underreport tabs that remain open + for a long duration. + + PercentDroppedFrames is measured by tracking the number of frames which were + not displayed on screen out of the total number of frames expected to be + produced and displayed. In other words, the lower this number is, the + smoother experience. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks the percent of frames that were shown with checkerboards during a + particular sequence of frames (e.g. during scroll, animation, etc.). Note + that this is only recorded for sequences of length > 4. + + Checkerboarding is measured by tracking the number of times checkerboard + frames are displayed (as opposed to the number of checkerboard frames + produced), since the same checkerboard frame can be displayed more than + once. + + + + + jonross@chromium.org + mjzhang@chromium.org + graphics-dev@chromium.org + + Tracks the percent of janks for a particular sequence of frames (e.g. during + scroll, animation, etc.). This is reported in various sub-metrics with + suffixes describing the type of the sequence (e.g. TouchScroll etc.). + + Jank is measured by tracking the number of abrupt increases in frame + presentation interval, divided by the total number of frames expected to be + produced and displayed. The lower this number is, the less the smoothness + varies over time. + + Note that this metric is reported only when there are sufficient number of + frames (>= 100). If there are sequences with fewer frames, then these are + aggregated until there are enough frames to produce the metric. + + + + + jonross@chromium.org + mjzhang@chromium.org + graphics-dev@chromium.org + + Tracks the percent of janks for a particular frame sequence. {Type} + + Jank is measured by tracking the number of abrupt increases in frame + presentation interval, divided by the total number of frames expected to be + produced and displayed. The lower this number is, the less the smoothness + varies over time. + + Note that this metric is reported only when there are sufficient number of + frames (>= 100). If there are sequences with fewer frames, then these are + aggregated until there are enough frames to produce the metric. + + + + + + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks the percent of dropped frames for in a 1 second sliding window. + + PercentDroppedFrames is measured by tracking the number of frames which were + not displayed on screen out of the total number of frames expected to be + produced and displayed. In other words, the lower this number is, the + smoother experience. + + + + + jonross@chromium.org + mjzhang@chromium.org + graphics-dev@chromium.org + + Tracks the maximum staleness value for all presentations for a particular + sequence of frames (e.g. during scroll, animation, etc.). This is reported + in various sub-metrics with suffixes describing the type of the sequence + (e.g. TouchScroll etc.). + + Typically, a frame presentation is expected to last at least one vsync + cycle, plus any number of additional vsync cycles if no updates are expected + duration that time. If the presentation interval is prolonged due to reasons + other than listed above, then that prolonged portion will be considered + staleness for that frame. + + Note that this metric is reported only when there are sufficient number of + frames (>= 100). If there are sequences with fewer frames, then these are + aggregated until there are enough frames to produce the metric. + + + + + + + jonross@chromium.org + graphics-dev@chromium.org + chrome-analysis-team@google.com + + Tracks the percent of dropped frames for a sequence by aggregating all its + animations and interactions, where a sequence is a series of frames produced + which contain at least one of the animations/interactions. Such animations + and interactions encompass: Compositor-thread animations; Main-thread + animations; JS animations; scrolling; and pinch-gestures. + + PercentDroppedFrames is measured by tracking the number of frames which were + not displayed on screen out of the total number of frames expected to be + produced and displayed. In other words, the lower this number is, the + smoother the experience. + + Note that this metric is reported only when there are a sufficient number of + frames (>= 100). If there are sequences with fewer frames, then these are + aggregated until an additional sequence completes where there are (>= + 100) frames available in total. + + This is a new implementation of the older + Graphics.Smoothness.PercentDroppedFrames.AllInteractions metric. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks the percent of dropped frames for a sequence by aggregating all + {Sequence}, where a sequence is a series of frames produced which contain at + least one of the aforementioned effects. + + PercentDroppedFrames is measured by tracking the number of frames which were + not displayed on screen out of the total number of frames expected to be + produced and displayed. In other words, the lower this number is, the + smoother the experience. + + Note that this metric is reported only when there are a sufficient number of + frames (>= 100). If there are sequences with fewer frames, then these are + aggregated until an additional sequence completes where there are (>= + 100) frames available in total. + + This is a new implementation of the older + Graphics.Smoothness.PercentDroppedFrames.AllInteractions metric. + + + + + + + + + + + + + + + + + + + + + + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks the percent of frames that missed the deadline for a particular + sequence of frames (e.g. during scroll, animation, etc.). This is reported + in various sub-metrics with suffixes describing the type of the sequence + (e.g. TouchScroll etc.). + + PercentMissedDeadlineFrames is measured by tracking the number of frames + which were displayed on screen but missed the vsync interval. + + Note that this metric is reported only when there are sufficient number of + frames (>= 100). If there are sequences with fewer frames, then these are + aggregated until there are enough frames to produce the metric. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks the percent of frames that missed the deadline for a particular + sequence of frames for all animations. This metric is reported for all + animations (e.g. comositor-driven animations, main-thread driven animations, + and raf-driven animations). + + PercentMissedDeadlineFrames is measured by tracking the number of frames + which were displayed on screen but missed the vsync interval. + + Note that this metric is reported only when there are sufficient number of + frames (>= 100). If there are sequences with fewer frames, then these are + aggregated until there are enough frames to produce the metric. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks the percent of frames that missed the deadline for a particular + sequence of frames where a user-input (e.g. scroll, pinch) is active. This + metric is reported for all sources of user-input (i.e. both touchscreen and + touchpad/mouse-wheel). + + PercentMissedDeadlineFrames is measured by tracking the number of frames + which were displayed on screen but missed the vsync interval. + + Note that this metric is reported only when there are sufficient number of + frames (>= 100). If there are sequences with fewer frames, then these are + aggregated until there are enough frames to produce the metric. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks the percent of frames that missed the deadline for a particular + sequence of frames. This metric is reported for all animations and all + interactions. + + PercentMissedDeadlineFrames is measured by tracking the number of frames + which were displayed on screen but missed the vsync interval. + + Note that this metric is reported only when there are sufficient number of + frames (>= 100). If there are sequences with fewer frames, then these are + aggregated until there are enough frames to produce the metric. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks the Max of dropped frames percent of a sliding window of 1 second. + The metric is reported once per page-load when the page closes. + + PercentDroppedFrames is measured by tracking the number of frames which were + not displayed on screen out of the total number of frames expected to be + produced and displayed. In other words, the lower this number is, the + smoother experience. + + + + + jonross@chromium.org + mjzhang@chromium.org + graphics-dev@chromium.org + + Tracks the staleness value for each frame presentation for a particular + sequence of frames (e.g. during scroll, animation, etc.). This is reported + in various sub-metrics with suffixes describing the type of the sequence + (e.g. TouchScroll etc.). + + Typically, a frame presentation is expected to last at least one vsync + cycle, plus any number of additional vsync cycles if no updates are expected + duration that time. If the presentation interval is prolonged due to reasons + other than listed above, then that prolonged portion will be considered + staleness. + + Note that the reporting of this metric occurs as soon as a frame is + presented, and is not affected by the length of the frame sequence. + + + + + + diff --git a/histograms/metadata/content/OWNERS b/histograms/metadata/content/OWNERS new file mode 100644 index 000000000000..092ce6fb52af --- /dev/null +++ b/histograms/metadata/content/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +dewittj@chromium.org +harrisonsean@chromium.org +tbansal@chromium.org diff --git a/histograms/metadata/content/histograms.xml b/histograms/metadata/content/histograms.xml new file mode 100644 index 000000000000..705ce34e4b6d --- /dev/null +++ b/histograms/metadata/content/histograms.xml @@ -0,0 +1,2327 @@ + + + + + + + + + + + + + + + + + + + + + + + + + michaelbai@chromium.org + src/third_party/blink/renderer/core/content_capture/OWNERS + + The time between a change in content and when the new capture is sent to the + browser process. + + A specific content change is hard to track. This is roughly calculated as + the interval from the first content change after a prior capturing content + to the first content being sent after the next capture of content. + + + + + michaelbai@chromium.org + src/third_party/blink/renderer/core/content_capture/OWNERS + + The time taken to capture the on-screen content and group them by document. + + Note that this metrics is only recorded on clients on which a + high-resolution clock is available. + + + + + michaelbai@chromium.org + src/third_party/blink/renderer/core/content_capture/OWNERS + + The time taken to get the bounding box of the batch of captured content. + + Note that this metrics is only recorded on clients on which a + high-resolution clock is available. + + + + + michaelbai@chromium.org + src/third_party/blink/renderer/core/content_capture/OWNERS + + The time taken to send the content to the browser process in batch. + + Note that this metrics is only recorded on clients on which a + high-resolution clock is available. + + + + + michaelbai@chromium.org + src/third_party/blink/renderer/core/content_capture/OWNERS + The total number of content captures sent for a document. + + + + michaelbai@chromium.org + src/third_party/blink/renderer/core/content_capture/OWNERS + + The time taken for the task to start after it's scheduled. + + Note: The time of task that was scheduled for the retry wasn't measured + because it is always 500ms. + + + + + michaelbai@chromium.org + src/third_party/blink/renderer/core/content_capture/OWNERS + + The number of the times the task runs for a content capture session. + + A content capture session begins with capturing on-screen content and ends + in sending all changes. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures how long a sync call to ContentSettingsManager::AllowStorageAccess + takes. Logged each time a sync call is made that is not cached. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Count of how often a specific content setting is set for an embedded URL by + an extension. Only counts settings when the secondary pattern is different + to the primary pattern. Exactly one of this or + ContentSettings.ExtensionNonEmbeddedSettingSet will be emitted per call to + contentSettings.set(), if the arguments to the call are valid. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Count of how often a specific content setting is set when only a single + pattern is specified. Exactly one of this or + ContentSettings.ExtensionEmbeddedSettingSet will be emitted per call to + contentSettings.set(), if the arguments to the call are valid. + + + + + + Removed in Nov 2022. + + alancutter@chromium.org + src/chrome/browser/ui/page_action/OWNERS + + Counts which content setting buttons are pressed by the user. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The number of user defined hostname patterns for content settings at browser + start. Warning: this histogram was expired from 2022-08-28 to 2022-09-21; + data may be missing. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Number of times a given permission was requested by a website and the user + has the permission set to prompt (i.e. not blocked or allowed). + + Note this is probably not the metric you want - it does not correspond to + the total number of times websites request a permission. Also, because + specific permissions have code that can automatically block or grant + permissions based on things like incognito, installed extensions etc., this + does also not correspond to the number of times users are prompted to allow + permissions. + + For a better metric to track how often users are prompted, either use + ContentSettings.PermissionsActions*, or Permissions.Prompt.*. + + See https://crbug.com/638076 for more details. + + Warning: this histogram was expired from 2022-06-19 to 2022-09-21; data may + be missing. + + + + + charleszhao@chromium.org + lazzzis@google.com + src/components/blocked_content/OWNERS + + Tracks whether the popup content blocked puzzle piece was shown in the + Omnibox, and how the user interacted with it. + + + + + csharrison@chromium.org + lazzzis@google.com + src/components/blocked_content/OWNERS + + Counts of various events related to the popup blocker. Including blocked + popups and overridden (clicked through) popups. This is similar to the + ContentSettings.Popups but is at the per-popup layer rather than at the UI + layer. + + + + + csharrison@chromium.org + + Counts of various events related to the strong popup blocker (aka abusive + experience enforcement), that is triggered via safe browsing. + + + + + tungnh@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default permission setting for Background Sync at profile open. This + histogram is only recorded for regular profiles. + + + + + wenyufu@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default auto dark web content setting at profile open. Recorded for + Android only. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default autoplay setting at profile open. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default cookies setting at profile open. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default permission setting for idle detection at profile open. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default image setting at profile open. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default JavaScript setting at profile open. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default location setting at profile open. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default camera setting at profile open. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default microphone setting at profile open. Warning: this histogram was + expired from 2022-06-19 to 2022-09-21; data may be missing. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default MIDI permission setting on sysex (system exclusive) messages at + profile open. The default microphone setting at profile open. Warning: this + histogram was expired from 2022-08-21 to 2022-09-21; data may be missing. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default notification setting at profile open. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default popups setting at profile open. Warning: this histogram was + expired from 2022-08-21 to 2022-09-21; data may be missing. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + shuyng@google.com + twellington@chromium.org + + The request desktop site content setting at profile open. Recorded for + Android and iOS only. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default sound setting at profile open. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default subresource filter setting at profile open. Warning: this + histogram was expired from 2022-06-19 to 2022-09-21; data may be missing. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default permission setting for WebUSB at profile open. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + The default permission setting for Web Bluetooth at profile open. Warning: + this histogram was expired from 2022-08-21 to 2022-09-21; data may be + missing. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + + + lshang@chromium.org + dullweber@chromium.org + engedy@chromium.org + + The number of user defined content setting exceptions at browser start. + Suffixed with the name of content setting types. + + Histogram content setting type: {ContentSettingsType} + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rogerm@chromium.org + feed@chromium.org + + Whether the feed was fetched with activity logging enabled. This is logged + on every feed fetch. + + + + + adamta@google.com + sczs@chromium.org + feed@chromium.org + + When the NTP view hierarchy is fixed upon NTP creation, this hisotgram logs + which part was broken. Temporary log used to gather info for + crbug.com/1262536. + + + + + harringtond@chromium.org + thegreenfrog@chromium.org + feed@chromium.org + + Whether showing the Feed is permitted. The Feed can be shown if (A) profile + policies allow this, (B) the FeedAblationEnabled feature is disabled, and + (C) the user has not turned it off in Settings. + + Note that this does not denote (A) whether the Feed is visible at the time + the metric is emitted or (B) whether the Feed was ever visible during the + browser process lifetime. + + iOS only. Emitted when building a MetricsLog for the current session. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + Tracks the number of operations in a Feed mutation when database receive the + commit request. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + Android: The time since locally stored content was fetched from the server. + Reported when the feed surface is shown, and content is refreshed from the + network. This typically only happens when content is stale, so this is a + measurement of how stale content is before it's replaced by a blocking + refresh. Feed v2 only. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + Android: The time since locally stored content was fetched from the server. + Reported when the feed surface is shown, and the local persisted feed + content is loaded instead of a direct network refresh. This provides a + measure of how stale feed content is when the feed loads without a blocking + network request. Feed v2 only. + + + + + + Deprecated in 11/2022. Replaced by ContentDuplication2 metrics. + + jianli@chromium.org + feed@chromium.org + + Android: Reports whether the feed content at the specific position is + duplicate. It is reported when the feed content is received from the server. + + + + + + + + + + + Deprecated in 11/2022. Replaced by ContentDuplication2 metrics. + + jianli@chromium.org + feed@chromium.org + + Android: Reports the percentage of the duplicate contents received for a + range of cards. It is reported when the feed contents are received from the + server. + + + + + + + + + jianli@chromium.org + feed@chromium.org + + Android: Reports whether the feed content at the specific position is + duplicate to previous contents. The feed contents that are not viewed before + are not counted towards the duplication even if they show up again. It is + reported when the feed content is received from the server. + + + + + + + + + + jianli@chromium.org + feed@chromium.org + + Android: Reports the percentage of the duplicate contents received for a + range of cards. The feed contents that are not viewed before are not counted + towards the duplication even if they show up again. It is reported when the + feed contents are received from the server. + + + + + + + + + birnie@google.com + feed@chromium.org + + Android: The invalid age lifetime of content fetched from the server. + Reported when new content is served to the feed from the server. This + provides a measure of how stale feed content is from the client side. + + + + + birnie@google.com + feed@chromium.org + + Android: If the content lifetime of a feed response has a non zero invalid + age when fetched from the server. Reported when new content is served to the + feed from the server. This provides a measure of how stale feed content is + from the client side. + + + + + birnie@google.com + feed@chromium.org + + Android: The stale age lifetime of content fetched from the server. Reported + when new content is served to the feed from the server. This provides a + measure of how stale feed content is from the client side. + + + + + birnie@google.com + feed@chromium.org + + Android: If the content lifetime of a feed response has a non zero stale age + when fetched from the server. Reported when new content is served to the + feed from the server. This provides a measure of how stale feed content is + from the client side. + + + + + + + vincb@google.com + feed@chromium.org + src/components/feed/OWNERS + Actions related to the feed controls. + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + Android: The display status of the content suggestions when users open NTPs. + Whether content suggestions are disabled by policy (e.g. enterprise or + supervised users), enabled but collapsed, or enabled and expanded when a new + NTP is created. + + + + + sczs@chromium.org + tinazwang@chromium.org + feed@chromium.org + + Recorded when a signed out user triggered a sign-in related UI from feed + personalization control. iOS only. + + + + + sczs@chromium.org + tinazwang@chromium.org + feed@chromium.org + + Recorded when a user interacts with a Sync Promo inside the Feed, e.g.: + accepting the bottom sync promo, or closing the top Sync promos. iOS only. + + + + + harringtond@chromium.org + feed@chromium.org + + Android: Status of image fetches for the feed. Recorded for each image + fetch. Fetches happen when loading the feed or scrolling the feed. Fetched + images are cached, so subsequent loads may not fetch again. Feed v2 only. + + + + + harringtond@chromium.org + feed@chromium.org + + Latencies for individual steps taken to load the feed. This is reported at + most once per Chrome execution, and only reported for a Feed load operation + that ends with the Feed showing up on the UI. All steps added together tally + to the total time taken. + + Feed v2 only. + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + Status of loading additional Feed content onto the bottom of the stream. + Feed v2 only. + + + + + jianli@chromium.org + feed@chromium.org + + The interval between current pull-to-refresh time and last time when the + feed is refreshed (background refresh or pull-to-refresh), up to 1 day. This + is reported when the pull-to-refresh occurs. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + Android: The wire size (potentially compressed) of a {NetworkRequestType} + network response received by the Feed's networking host. Recorded when a + successful response is received. + + + + + + + + sczs@chromium.org + harringtond@chromium.org + feed@chromium.org + The amount of time a {NetworkEvent} network event took. + + + + + + + + + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + Android: the size in kb of gzip-compressed requests sent by the Feed's + networking host. Recorded when a request is sent. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + Android: The integer status code of network requests made by the feed + library's networking host. This code includes both protocol(1xx-5xx) and + non-protocol(-xxx) errors. Recorded when a request completes. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + Android: the uncompressed size in KB of responses received by the Feed's + networking host. Recorded when a successful response is received. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + The HTTP response status for a network request made by the Feed component. + + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + Android: failure reason when attempting to fetch an OAuth token for the + feed. Recorded when a token fetch completes. + + + + + vincb@google.com + feed@chromium.org + + Android: Reports whether the notice card for feed action reporting has been + fulfilled. Recorded when reading the response content of the feed query that + is successful (includes both load stream and load more queries). + + + + + vincb@google.com + feed@chromium.org + + Android: Reports whether the notice card for feed action reporting has been + fulfilled. Recorded when reading the response content of the load stream + query that is successful. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + The number of urls that have offline status requested per call. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + The number of milliseconds to round trip offline status for a set of URLs + from Offline Pages component. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + The time it takes for the Feed to commit operations from the storage. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + The number of milliseconds it takes for Feed content to be visible in the + UI. If content is not immediately available, this is conceptually the amount + of time a loading spinner is shown to the user. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + Android: The integer error code when Piet wants to report events that + occurred during Frame rendering. + + + + + edchin@google.com + sczs@chromium.org + feed@chromium.org + + Tracks triggers that ask the Discover engine to refresh the feed. However, a + network call may or may not occur based on configuration thresholds. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + Difference in age of content between feed and host. Recorded when the Feed + asks the scheduler how to behave when a NTP is opened. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + The match status between Feed and the host when the scheduler's + ShouldSessionRequestData method is called. This occurs whenever the NTP is + opened, and tries to track if the Feed and host state agrees or disagrees. + If the device already has content, new requests are not necessarily required + for a reasonable user experience. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + The match status between Feed and the host when the scheduler's + ShouldSessionRequestData method is called. This occurs whenever the NTP is + opened, and tries to track if the Feed and host state agrees or disagrees. + The type of request that could be outstanding is to fetch new or more news + articles, and when requests are outstanding new requests should not be + started. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + The scheduler watches for various triggers, which cause it to decide if a + refresh is currently warranted or not. This histogram is emitted when a + trigger causes a refresh. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + When NTP is opened, the scheduler host tells the Feed library how to act, if + the existing content should be shown, immediately or with timeout, and if a + refresh request should be started. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + When the Feed scheduler receives a refresh request, the scheduler will + decide to refresh or not depending on the scheduler status. Recorded when + the Feed scheduler receives the request. + + + + + carlosk@chromium.org + petewil@chromium.org + feed@chromium.org + Number of each type of feedback sent about the feed. + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + The reason for a server request from the Feed's prespective, when the + request is started. + + + + + edchin@google.com + sczs@chromium.org + feed@chromium.org + + The amount of time a user spends in the feed in a single session. A session + is measured only by user interactions or user scrolling events in the feed. + Two events are considered as being within the same session if they are at + most 5 minutes apart from each other. A series of events is likely to + constitute a single session. A user opening the feed but having no + interaction and not scrolling is not considered a session. A user tapping an + article then quickly returning to the feed is considered within the same + session. The time between sessions by definition will be longer than 5 + minutes. + + + + + birnie@google.com + feed@chromium.org + + Android: If the user triggers a sign in action from somewhere in the Feed we + track the status of the sign in as a boolean (successful=true, unsuccessful= + false). This provides a measure of how many users are signing in via the + Feed and features like Back of Card sign in promo vs other sign in avenues. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + How long it took from enqueuing the task to when it was run. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + How long it took from the task starting to when it finished executing. + + + + + edchin@google.com + sczs@chromium.org + feed@chromium.org + + The amount of time between user interactions or user scrolling in the feed. + + + + + edchin@google.com + sczs@chromium.org + feed@chromium.org + + The amount of time between user feed sessions, as defined in + |ContentSuggestions.Feed.SessionDuration|. This is by definition longer than + 5 minutes. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + How long a user used the Feed in one day (local time midnight to midnight). + Reported at most once per day. Usage reported is typically from the previous + day, but could be from several days ago if the user is not active. Time is + calculated starting with the first Feed interaction, until the Feed surface + is closed, or the user is idle (no scrolling or other actions) for 30 + seconds. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + How many top level features were in the continuation response, typically + clusters. Recorded when the fetch completes successfully. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + How many tokens were in the continuation response, typically ways to fetch + more articles. Recorded when the fetch completes successfully. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + When a token fails to complete, how many failures this token has seen. + Record when the fetch fails. + + + + + tbansal@chromium.org + harringtond@chromium.org + feed@chromium.org + + Records count of entries in the pref store after the store is initialized + (which happens during the feed service intiialization). The metric is + recorded after the store is cleaned up and conpacted (as part of store + initialization). + + + + + tbansal@chromium.org + harringtond@chromium.org + feed@chromium.org + + Recorded everytime when the user clicks a feed link article and an entry is + recorded to the user actions collector. The entry may not be recorded in + certain cases (not a complete list): the URL of the clicked link was not + valid, the MIDs was missing etc. + + + + + iwells@chromium.org + harringtond@chromium.org + feed@chromium.org + + Result of attempting to upload a batch of one or more actions. + + + + + iwells@chromium.org + harringtond@chromium.org + feed@chromium.org + + Result of an UploadActionsTask run in which zero or more batches of user + actions are uploaded. See ContentSuggestions.Feed.UploadActionsBatchStatus + for the status of a particular batch upload. + + + + + freedjm@google.com + feed@chromium.org + + Android: Reports whether the visibility log was uploaded successfully. + + + + + freedjm@google.com + feed@chromium.org + + Android: Reports whether the {LogType} log was uploaded successfully. + + + + + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + Counts of Feed user actions. e.g. (Open a Card, Hide the Feed, etc.). + Recorded when the user takes an explicit action related to the Feed. + + + + + harringtond@chromium.org + sczs@chromium.org + feed@chromium.org + + Recorded whenever an Elements commands has taken place which wasn't handled + explicitly by ContentSuggestions.Feed.UserActions. e.g. A new command to + added server side to "Report Content".(iOS only). + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + Time between the UI requesting additional stream content and failure by + either a 15 second timeout or a surface closure. + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + Time between the UI requesting additional stream content and the content + being provided within 15 seconds. Providing content entails showing either a + cached or newly fetched Feed card. + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + Reported when a user taps on a {Surface} card and the page is not loaded + successfully within 20 seconds. + + + + + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + The time between a user tapping on a {Surface} card and the page finishes + loading successfully. Only reported when loading takes less than 20 seconds. + + + + + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + The time between a {Surface} opening and either providing user content, or + failing to provide content. Providing content entails showing either a + cached or newly fetched Feed card within 15 seconds. Success is reported + upon view of the card. Failure is reported when either the surface is closed + or a timeout of 15 seconds expires. + + + + + + + + + + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + The state of some account settings that affect Feed users. Reported once at + startup (to a single bucket), for all users. Note that this histogram uses + data cached from the last time the Feed was fetched. Android only. + + + + + jianli@chromium.org + feed@chromium.org + + Tracks the number of cards viewed at the time of pull-to-refresh. This is + reported when the pull-to-refresh occurs. This is computed as the number of + cards that are viewed (2/3rds of card is in the viewport) since last time + when the feed is refreshed (background refresh or pull-to-refresh). + + + + + jianli@chromium.org + feed@chromium.org + + Tracks the percentage of cards viewed at the time of pull-to-refresh. This + is reported when the pull-to-refresh occurs. This is computed as the + percentage of cards that are viewed (2/3rds of card is in the viewport) + since last time when the feed is refreshed (background refresh or + pull-to-refresh). + + + + + freedjm@google.com + feed@chromium.org + + Android: Reports whether visibility logging is enabled when logging is + attempted. + + + + + harringtond@chromium.org + freedjm@chromium.org + feed@chromium.org + + Android: Time spent reading the page linked by an opened suggestion card. + This is a lower-bound time. Does not include time after Chrome is closed and + re-opened. Does not include time after the visited tab no longer has focus, + or after the tab is navigated. For the 'open in new tab' action, time starts + when the user switches to the new tab. If the user returns by tapping the + suggestion again, it will be recorded as another entry in this histogram. + + Feed v2 only. + + + + + harringtond@chromium.org + feed@chromium.org + + Android: The result of following a WebFeed when the Web Feed ID is known. + Reported when the follow is attempted, once per request. Triggered by a + user's request to follow a Web Feed. + + + + + harringtond@chromium.org + feed@chromium.org + + Replaced with the ContentSuggestions.{FeedType}.FollowCount.Engaged2 + histogram pattern because this one had a misleading name. It will be + effectively obsoleted in the future. + + Android: The number of web feeds the user is following. Reported at most + once per feed visit, when the user engages (FeedEngagementType.Engaged) with + either the For-You or Following Feeds. + + + + + harringtond@chromium.org + feed@chromium.org + + Android: The number of web feeds the user is following. Reported {Event}. + + + + + + + + + + + harringtond@chromium.org + feed@chromium.org + + Android: The result of following a WebFeed when the Web Feed ID is NOT + known. Reported when the follow is attempted, once per request. Triggered by + a user's request to follow a Web Feed. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + Android: The time spent by the renderer main thread to collect and send back + to the browser process a list of RSS/Atom links embedded in a web page. This + is recorded every time the renderer fulfills a request for these links, + currently only requested by the web feeds system. This histogram is only + logged in platforms with high-resolution clocks. + + + + + harringtond@chromium.org + feed@chromium.org + + Android: Reports the total number of {ContentOrder} cards in the Following + feed when data is successfully loaded to be presented to the user. Reported + after an initial load. Only one of 'Grouped' or 'ReverseChron' is reported + for each stream load. + + + + + + + + + harringtond@chromium.org + feed@chromium.org + + Change reason for the follow. + + Reported upon successfully following a web feed. Reported as 'true' if the + web feed was recommended, even if the user did not see or interact with + recommendation UI. + + + + + harringtond@chromium.org + feed@chromium.org + + Whether the followed web feed was recommended by the server. + + Reported upon successfully following a web feed. + + + + + carlosk@chromium.org + harringtond@chromium.org + feed@chromium.org + + Records the reason why the web feeds system is requesting information from + the renderer process about a loaded web page. + + + + + harringtond@chromium.org + feed@chromium.org + + Android: Reports which presentation of the post-follow dialog is shown. + Reported when the post-follow dialog is displayed, after the user follows a + Web Feed. + + + + + jeffreycohen@chromium.org + feed@chromium.org + + Android: Reports the result of a user's request to query a Web Feed. + Reported after the query attempt has completed, once per request. + + + + + harringtond@chromium.org + feed@chromium.org + + The content order requested when refreshing content on the Following feed. + Reported before sending a refresh request to the server. Not reported for + NextPage requests. + + + + + harringtond@chromium.org + feed@chromium.org + + Android: Reports the status of attempting to refresh the list of recommended + Web Feeds from the server. The refresh occurrs periodically when the + information is stale. + + + + + harringtond@chromium.org + feed@chromium.org + + Android: Reports the status of attempting to refresh the list of subscribed + Web Feeds from the server. {Kind} + + + + + + + + + adamta@google.com + sczs@chromium.org + feed@chromium.org + The sort type that was selected from the feed's sort menu. + + + + adamta@google.com + sczs@chromium.org + feed@chromium.org + + The currently selected sort type when the user has engaged with the + Following feed. + + + + + harringtond@chromium.org + feed@chromium.org + + Android: The result of attempting to unfollow a WebFeed. Reported when the + unfollow is attempted, once per request. Triggered by a user's request to + unfollow a Web Feed. + + + + + jianli@chromium.org + feed@chromium.org + + Android: records errors occurred during the video player initialization. The + embedded video player needs to be initialized before it can be used to play + a video in {PlayType} mode. In autoplay muted mode, the initialization may + kick off even before the video view is scrolled to become visible. In normal + unmuted mode, this happens when the user taps the video to launch the video + in fullscreen playing mode. + + + + + + + + + jianli@chromium.org + feed@chromium.org + + Android: records errors occurred during the video playing, in {PlayType} + mode. Upon the successful initialization of the embedded player, the video + starts to play and any error occurs since then is reported here. + + + + + + + + + jianli@chromium.org + feed@chromium.org + + Android: records events triggered during the video playing, in {PlayType} + mode. + + + + + + + + + jeffreyochen@chromium.org + creator@chromium.org + + Android: reports the entry point used to launch the single web feed view. + + + + + adamta@google.com + feed@chromium.org + + iOS: Before switching to a new feed type, logs the index of the last visible + card. + + + + + + + + + + + petewil@chromium.org + harringtond@chromium.org + feed@chromium.org + + Tracks user behavior with {FeedType}. Each bucket is one of two types of + metric. Per-visit metrics sample once per "visit", which is a + cluster of user activities separated by less than 5 minutes of inactivity. + Per-visit metrics record a sample at the moment that the visit's criteria + are first met. Per-interaction metrics are not clustered and report samples + immediately. In the UI, Bucket Proportion and Total Count are not meaningful + as these metrics are not independent. All buckets of this metric can be + moved by changes in the Discover service as well as by client changes. + go/discover-oncall describes how to get in touch with Discover oncall + engineers. + + + + + + + + + + + harringtond@chromium.org + feed@chromium.org + + Android: The number of web feeds the user is following. Reported at most + once per feed visit, when the user engages (FeedEngagementType.Engaged, + non-Simple) with {FeedType}. + + + + + + + + + + + jianli@chromium.org + harringtond@chromium.org + feed@chromium.org + + Android: Reports when {Action} has occurred for an info card. The type of + the info card was reported. + + + + + + + + + + + + + + + + + + Deprecated in 05/2022 since we removed feed notice card related codes. + + jianli@chromium.org + feed@chromium.org + + Android: Reports when an invalid notice key is received from the server. + + + + + + + + + harringtond@chromium.org + feed@chromium.org + + Android: Reports the total number of cards when the {FeedType} data is + successfully loaded to be presented to the user. Reported after an initial + load. Not reported after a NextPage request. When loading data from local + storage, previously fetched NextPage cards are counted though. + + + + + + + + + + rogerm@chromium.org + dewittj@chromium.org + feed@chromium.org + + The number of cards not yet scrolled into visibility at the moment the Feed + decides to load more content. + + + + + + + + + + rogerm@chromium.org + dewittj@chromium.org + feed@chromium.org + + The total number of cards in the feed stream at the moment the Feed decides + to load more content. + + + + + + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + Android: Status of loading new {FeedType} data in the background. Reported + any time Chrome attempts to fetch fresh Feed content in the background. This + is either due to a background fetch schedule, or when fetching the Web-Feed + while the For-You feed is active. + + + + + + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + Android: Status of loading the initial {FeedType} stream, which happens when + the {FeedType} surface is shown. Feed v2 only. + + + + + + + + + + harringtond@chromium.org + carlosk@chromium.org + feed@chromium.org + + Android: The status of loading the Feed from the local store. Reported when + loading the Feed for display. Recorded at the same time as + ContentSuggestions.{FeedType}.LoadStreamStatus.Initial to differentiate + between store errors and network fetch results. + + + + + + + + + + jianli@chromium.org + feed@chromium.org + + Android: status of pulling-to-refresh the {FeedType} stream per the user + request. Reported when the refresh completes. + + + + + + + + + + + Deprecated in 05/2022 since we removed feed notice card related codes. + + jianli@chromium.org + feed@chromium.org + + Android: Reports how the notice acknowledgement is reached. Reported when an + action, i.e. viewing, tapping or dismissing the notice, results in the + notice being acknowledged. + + + + + + + + + + + + + Deprecated in 05/2022 since we removed feed notice card related codes. + + jianli@chromium.org + feed@chromium.org + + Android: Reports whether an {Action} for an notice is performed. + + + + + + + + + + + + + + + + + + + + + freedjm@chromium.org + feed@chromium.org + + Android: The position of the {FeedType} card on it's surface, that is + clicked through to the host website of the content. We track the position + the card had in the list when it was first seen by the user. This tracked + position can be different from the position observed by the user, e.g. when + the user dismissed some suggestions from the list or requested more that got + inserted in the middle of the feed. + + + + + + + + + harringtond@chromium.org + feed@chromium.org + + Android: Reports the number of cards in the {FeedType}. Reported when the + last card of the {FeedType} is shown. Note that this is reported even if the + Feed is attempting to load additional content (LoadMore), as long as the + last card is 2/3rds shown before additional content loads. In this case, + this histogram can be reported multiple times without leaving the Feed + surface. + + + + + + + + + + harringtond@chromium.org + feed@chromium.org + + Android: Reports the total size in KB of the shared state for the + {FeedType}. Reported once when loading {FeedType} content for display, and + once each time additional pages of content are added. + + + + + + + + + + + + freedjm@chromium.org + feed@chromium.org + + Android: The position of a {FeedType} card that was shown on it's surface. A + card is considered shown when at least 2/3 of its height is visible on the + screen. For each card, at most one impression is recorded per instance. We + track the position the card had in the list when it was first seen by the + user. This tracked position can be different from the position observed by + the user, e.g. when the user dismissed some suggestions from the list or + requested more that got inserted in the middle of the feed. + + + + + + + + + harringtond@chromium.org + feed@chromium.org + + Android: Reports the total size in KB of all of the {FeedType} content (not + including shared state, or dynamically fetched media). Reported once when + loading {FeedType} content for display, and once each time additional pages + of content are added. + + + + + + + + + + + diff --git a/histograms/metadata/content_creation/OWNERS b/histograms/metadata/content_creation/OWNERS new file mode 100644 index 000000000000..90d8c7f28865 --- /dev/null +++ b/histograms/metadata/content_creation/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +sebsg@chromium.org \ No newline at end of file diff --git a/histograms/metadata/content_creation/histograms.xml b/histograms/metadata/content_creation/histograms.xml new file mode 100644 index 000000000000..a29cb26f41f1 --- /dev/null +++ b/histograms/metadata/content_creation/histograms.xml @@ -0,0 +1,628 @@ + + + + + + + + + + + + + + + + + sebsg@chromium.org + chrome-creation@google.com + + Records whether user created a note when they were in the creation flow of + the feature. + + + + + sebsg@chromium.org + chrome-creation@google.com + + Records the different states of the funnel that a user goes through in the + note creation feature. + + + + + sebsg@chromium.org + chrome-creation@google.com + Records whether the created note was shared or not. + + + + sebsg@chromium.org + chrome-creation@google.com + + Records the number of times the user changed templates when creating a note. + + + + + + Removed 2023-03 + + graysonlafleur@google.com + chrome-creation@google.com + + Records the ID of the template selected. Recorded only for dynamic templates + while NoteCreation.SelectedTemplate records selected template based on an + enum of hardcoded template IDs. This will replace + NoteCreation.SelectedTemplate. + + + + + + Removed 2023-03 + + graysonlafleur@google.com + chrome-creation@google.com + + Records the index of the template selected. Recorded only for dynamic + templates. Since we will no longer use an enum of template IDs, we will also + record the index of the template the user selects so that we can detect + where exactly the template was in the carousel. + + + + + sebsg@chromium.org + chrome-creation@google.com + + Records which template the user selected when creating their note. + + + + + sebsg@chromium.org + chrome-creation@google.com + + Records the destination type (first or third party) for the shared note. + + + + + sebsg@chromium.org + chrome-creation@google.com + + Records the amount of time taken to accomplish {action} from the time the + creation flow was started. + + + + + + + + + + + sebsg@chromium.org + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Records the status of the link generation when a user shares content using + the feature on Android. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Indicates number of iterations it took for AsyncFindBuffer to finish the + search. AsyncFindBuffer is used only for validating generated text fragment + selectors for Shared Highlighting. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Time it took in milliseconds for AsyncFindBuffer to finish the search. + AsyncFindBuffer is used only for validating generated text fragment + selectors for Shared Highlighting. + + + + + sebsg@chromium.org + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Records the type of shared highlighting link the user copied on desktop. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Records errors that caused text fragment selector generation to fail. + Recorded for all the failed link generation runs. This histogram is a + superset of |SharedHighlights.LinkGenerated.Error.Requested|. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Indicates number of iterations it took for the unsuccessful text fragment + selector generation run. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Records errors that caused text fragment selector generation to fail. + Recorded only for failure cases that were requested by users. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Time it took in millisecons for a failed text fragment selector generation + attempt. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Indicates number of iterations it took to successfully generate text + fragment selector. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Number of charaters in successfully generated text fragment selector. For + example, for #:=:text=sample%20text, it would be the + len("sample%20text") which is 13. Recorded only when selector + generation was successful. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Number of characters in the user selected text, that text fragment selector + is generated for. Recorded regardless of generation success. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Indicates which parameters were specified in a text fragment selector. + Recorded only when selector generation was successful. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Records the state of the link generation when link to text request is + received from the browser process. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + How long it took in milliseconds to successfully generate text fragment + selector. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Indicates whether text fragment selector generation was successful for + {Requested}. + + + + + + + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Records the status of link to text flow on Android for diagnostic purposes. + Intended to be temporary for debug purposes. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Records if obtaining reshare link was successful. Otherwise, it records the + failure reason. + + + + + + Removed 2022-05. + + bokan@chromium.org + chrome-shared-highlighting@google.com + + Whether an element-id based fragment was found in the document. Counted only + when a fragment was specified and it wasn't parsed into a |targetText| style + anchor. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Recorded for every navigation to a link with a valid text fragment selector + (e.g. #:=:text=SELECTOR). Indicates source type that navigation originated + from. It only know about search engines that come from the pre-populated + list installed with Chrome. If the user uses a search engine not on the + list, it will be recorded as Unknown. This is even true if the user have a + custom search engine. These custom search engines can be created by hand or + auto-generated. In either case, it's not going to count as a search engine. + Also, it only checks to see if the *referrer* is from a domain associated + with search engine. If someone posts a link somewhere on a web site that + happens to have a search engine known to Google and that links includes the + fragment tokens, then if a user clicks that link, it'll look like it came + from a search engine even thought they did not. + + + + + bokan@chromium.org + chrome-shared-highlighting@google.com + + Whether we found multiple matches for a selector. Recorded when + TextFragmentAnchor finishes searching once the page is loaded. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + + Removed 2022-05. + + bokan@chromium.org + chrome-shared-highlighting@google.com + + Whether the page did a non-zero scroll in order to scroll the match into + view. Only recorded if we found a match and scrolled it into view. Recorded + when TextFragmentAnchor finishes searching once the page is loaded. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + + Removed 2022-05. + + bokan@chromium.org + chrome-shared-highlighting@google.com + + The raw length of the directive in the URL (e.g. spaces count as the three + characters '%20'), regardless of how many text= terms there are. Recorded if + there was a text directive, regardless of whether a match was found. + Recorded when TextFragmentAnchor finishes searching once the page is loaded. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + + Removed 2022-05. + + bokan@chromium.org + chrome-shared-highlighting@google.com + + The length of the end parameter, in the case of a range match. Only recorded + if a match was found. Recorded when TextFragmentAnchor finishes searching + once the page is loaded. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + + Removed 2022-05. + + bokan@chromium.org + chrome-shared-highlighting@google.com + + The length of the matched text, in the case of an exact match. Only recorded + if a match was found. Recorded when TextFragmentAnchor finishes searching + once the page is loaded. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + + Removed 2022-05. + + bokan@chromium.org + chrome-shared-highlighting@google.com + + Whether the match was within a list item. Only recorded for exact text + fragments and only if a match was found. Recorded when TextFragmentAnchor + finishes searching once the page is loaded. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + bokan@chromium.org + chrome-shared-highlighting@google.com + + The percentage of selectors for which a match was found in the document. + Recorded when TextFragmentAnchor finishes searching once the page is loaded. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + + Removed 2022-05. + + bokan@chromium.org + chrome-shared-highlighting@google.com + + An enum indicating which parameters were specified in the text fragment + anchor. Only recorded if a match was found. Recorded when TextFragmentAnchor + finishes searching once the page is loaded. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + + Removed 2022-05. + + bokan@chromium.org + chrome-shared-highlighting@google.com + + The length of the matched text, in the case of a range match. Only recorded + if a match was found. Recorded when TextFragmentAnchor finishes searching + once the page is loaded. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + + Removed 2022-05. + + bokan@chromium.org + chrome-shared-highlighting@google.com + + Whether the scroll into view was cancelled by a user gesture or programmatic + scroll. Recorded when TextFragmentAnchor finishes searching once the page is + loaded. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + + Removed 2022-05. + + bokan@chromium.org + chrome-shared-highlighting@google.com + + The number of selectors in the text fragment anchor if it is present. + Recorded when TextFragmentAnchor finishes searching once the page is loaded. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + + Removed 2022-05. + + bokan@chromium.org + chrome-shared-highlighting@google.com + input-dev@chromium.org + + Whether or not a range-based text fragment match crosses any block + boundaries. That is, the start and end of the range are in different blocks + or in the same block but contain an intervening block. Only recorded for + range-based (start,end) text fragments. Only recorded on successful match. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + + Removed 2022-05. + + bokan@chromium.org + chrome-shared-highlighting@google.com + + The length of the start parameter, in the case of a range match. Only + recorded if a match was found. Recorded when TextFragmentAnchor finishes + searching once the page is loaded. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + + Removed 2022-05. + + bokan@chromium.org + chrome-shared-highlighting@google.com + + Whether the match was within a table cell. Only recorded for exact text + fragments and only if a match was found. Recorded when TextFragmentAnchor + finishes searching once the page is loaded. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + bokan@chromium.org + chrome-shared-highlighting@google.com + + The time between creating the TextFragmentAnchor (i.e. when it is parsed) + and scrolling the target into view. Only recorded if there is a match and we + tried to scroll it into view (it may already have been in view). Recorded + when TextFragmentAnchor finishes searching once the page is loaded. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + + Removed 2022-05. + + bokan@chromium.org + chrome-shared-highlighting@google.com + + The time between scrolling a match into view and the user scrolling back to + the top of the page. Used as a signal for whether a match was useful. Only + recorded if a match is scrolled into view and the user subsequently scrolled + back to the top of the page. Recorded when TextFragmentAnchor finishes + searching once the page is loaded. + + Recorded from text fragment links followed from {TextFragmentSource}. + + + + + + + diff --git a/histograms/metadata/cookie/OWNERS b/histograms/metadata/cookie/OWNERS new file mode 100644 index 000000000000..24bd1e4b3f53 --- /dev/null +++ b/histograms/metadata/cookie/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +bingler@chromium.org +cfredric@chromium.org diff --git a/histograms/metadata/cookie/histograms.xml b/histograms/metadata/cookie/histograms.xml new file mode 100644 index 000000000000..4d1d29402341 --- /dev/null +++ b/histograms/metadata/cookie/histograms.xml @@ -0,0 +1,885 @@ + + + + + + + + + + kyraseevers@chromium.org + bingler@chromium.org + + For each cookie expiry, logs true if the cookie would have been expired + without the addition of the skew time. Otherwise, logs false. This metric is + collected during CanonicalCookie::Create() in a helper function that + calculates cookie expiry. + + + + + kyraseevers@chromium.org + bingler@chromium.org + + For each cookie expiry, count the length of the clock skew (current_time - + server_time). {SkewDirection} This metric is collected during + CanonicalCookie::Create() in a helper function that calculates cookie + expiry. + + + + + + + + + + + + morlovich@chromium.org + + Recorded when a problem occurs trying to commit changes to the cookie store + back to disk, in the SQLite store. + + + + + estark@chromium.org + + Number of times a cookie was set with a name prefixed by + "__Secure-" or "__Host-" (prefixes reserved by + https://tools.ietf.org/html/draft-west-cookie-prefixes). + + + + + bingler@chromium.org + miketaylr@chromium.org + + Number of times a cookie was set with a name prefixed by a case variant of + "__Secure-" or "__Host-". + + This is recorded whenever a cookie is created with a case variant prefix. + I.e.: Non-variants will not be recorded in this metric nor will cookies + without a prefix. + + Case variant prefixes will case-insensitively match cookie prefixes, but + won't case-sensitively match. E.x.: "__SeCuRe-" or + "__HOST". + + + + + bingler@chromium.org + miketaylr@chromium.org + + Records whether or not a cookie prefix was a case variant or not. True + indicates a case variant. This is recorded whenever a cookie is created with + a cookie prefix. + + Case variant prefixes will case-insensitively match cookie prefixes, but + won't case-sensitively match. E.x.: "__SeCuRe-" or + "__HOST". + + + + + bingler@chromium.org + miketaylr@chromium.org + + Records whether or not a cookie prefix case variant meets the requirements + for a cookie prefix. E.x.: `__SECURE-foo=bar` would be rejected due to the + lack of the `Secure` attribute. True indicates the cookie's prefix was valid + (the cookie may still be invalid for other reasons). + + This is recorded whenever a cookie is created with a case variant prefix. + + Case variant prefixes will case-insensitively match cookie prefixes, but + won't case-sensitively match. E.x.: "__SeCuRe-" or + "__HOST". + + + + + bingler@chromium.org + miketaylr@chromium.org + + The scheme a cookie was set by and the scheme of the request that the cookie + was sent to. This is recorded once per cookie each time a URL request has + its headers set. + + + + + estark@chromium.org + + For each cookie added to the store, record whether its source URL has a + cryptographic scheme, broken down by Secure and not Secure. + + + + + bingler@chromium.org + miketaylr@chromium.org + + For each cookie added to the store, record the source URL's scheme. Schemes + we're unfamiliar with will be put into the "Other Scheme" bucket. + + + + + bingler@chromium.org + morlovich@chromium.org + + Number of cookies in the store (recorded every 10 minutes of active browsing + time), with a wider range than Cookie.Count. + + + + + bingler@chromium.org + miketaylr@chromium.org + + The SameSite attribute of a cookie whose inclusion is changed by considering + redirects as part of the same-site context calculation. I.e., this is logged + for cookies which are included if not considering redirects when calculating + the same-site context, but are excluded (solely due to the SameSite + attribute) if cross-site redirects can cause a request to be considered + cross-site. This is only recorded for cookies accessed over HTTP, since + redirects are not relevant for JS cookie accesses. This is logged for each + cookie (whose inclusion is changed) when it is {AccessType}, regardless of + whether the cookie was ultimately included. + + + + + + + + + bingler@chromium.org + miketaylr@chromium.org + + The age of the cookie within [0,30) minutes, rounded down to the nearest + minute, whose inclusion is changed by considering redirects as part of the + same-site context calculation. (See + Cookie.CrossSiteRedirectDowngradeChangesInclusion2's summary for more info.) + + This is only recorded for cookies accessed via an HTTP request and is logged + for each cookie whose inclusion was changed regardless of whether the cookie + was ultimately included or not. + + + + + bingler@chromium.org + miketaylr@chromium.org + + The HTTP method of the request for the cookie whose inclusion is changed by + considering redirects as part of the same-site context calculation. (See + Cookie.CrossSiteRedirectDowngradeChangesInclusion2's summary for more info.) + + This is only recorded for cookies accessed over HTTP and is logged for each + cookie whose inclusion was changed regardless of whether the cookie was + ultimately included or not. + + + + + bingler@chromium.org + miketaylr@chromium.org + + The type of redirects a cookie experienced before ultimately being accessed. + This metric is triggered whenever a cookie is attempted to be accessed by an + HTTP request or response. It does not matter if the access succeeds, only + that one was attempted. + + The metrics exists primarily to act as a denominator for + Cookie.CrossSiteRedirectDowngradeChangesInclusion2.{AccessType}. + + + + + + + + + arichiv@chromium.org + bingler@chromium.org + + Number of days since a cookie was updated, collected when cookies are loaded + into memory at browser start. This is used to track how many cookies are in + danger of expiring due to the proposed 400 day maximum expiration day limit. + + + + + johannhof@chromium.org + bingler@chromium.org + + Whether a site tried to set a cookie with a Domain attribute that has at + least one non-ASCII character in it. + + This metric is recorded everytime a cookie is created from a string (i.e. + when it is set via Set-Cookie or document.cookie write), regardless of + whether or not the cookie is ultimately stored. + + + + + bingler@chromium.org + miketaylr@chromium.org + + Was a cookie set with a Domain attribute. + + This metric is recorded once per included cookie on every set attempt. + + + + + bingler@chromium.org + miketaylr@chromium.org + + Records if a cookie has a double underscore prefixed name, excluding the + cookie prefixes. I.e.: __Secure- and __Host- prefixed names are ignored. + + This metric is recorded every time a cookie is successfully created using + CanonicalCookie::Create. + + + + + arichiv@chromium.org + bingler@chromium.org + + Number of days until a cookie expires when set (for values over the + rfc6265bis limit of 400 days). + + + + + arichiv@chromium.org + bingler@chromium.org + + Number of days until a cookie expires when set (for values under or equal to + the rfc6265bis limit of 400 days). + + + + + arichiv@chromium.org + kaustubhag@chromium.org + bingler@chromium.org + Number of minutes until non-Secure cookie expires when set. + + + + arichiv@chromium.org + kaustubhag@chromium.org + bingler@chromium.org + Number of minutes until Secure cookie expires when set. + + + + cfredric@chromium.org + chrome-first-party-sets@chromium.org + + This histogram keeps count of how many First-Party Sets are not successfully + parsed while initializing the First-Party Sets component, but do not cause a + fatal error. + + This metric is recorded by the FirstPartySetParser when it has successfully + finished processing all sets from its input stream, as passed by the + FirstPartySetsLoader. + + The metric is recorded during the startup of each client if it was able to + process the whole component without encountering a fatal error. It will be + recorded at most once each time the client starts up. + + + + + cfredric@chromium.org + chrome-first-party-sets@chromium.org + + This histogram keeps count of how many First-Party Sets are successfully + parsed while initializing the First-Party Sets component. + + This metric is recorded by the FirstPartySetParser when it has succesfully + finished processing all sets from its input stream, as passed by the + FirstPartySetsLoader. + + The metric is recorded during the startup of each client if it was able to + process the whole component without encountering a fatal error. It will be + recorded at most once each time the client starts up. + + + + + cfredric@chromium.org + chrome-first-party-sets@chromium.org + + This histogram records the (TimeTicks) latency of computing the + same-partiness of a given context. + + This metric is sampled every time a SamePartyContext is computed (e.g. when + computing the cookies for a URL request, once per request). Only sampled for + users with high-resolution clocks. + + + + + shuuran@chromium.org + kaustubhag@chromium.org + + The number of queries that were delayed for a browser context (i.e. answered + asynchronously instead of synchronously). + + Recorded once per profile during log-in when the First-Party Sets info is + ready for the network context. If the feature was disabled, 0 is recorded. + + + + + shuuran@chromium.org + kaustubhag@chromium.org + + The length of time between when the first asynchronous query was received, + and when asynchronous queries started to be answered for a browser context. + + Recorded once per profile profile during log-in when the First-Party Sets + info is ready in the network context. Recorded for all clients, even those + with low-resolution clocks. If the feature was disabled, 0 is recorded. + + + + + cfredric@chromium.org + kaustubhag@chromium.org + + The amount of time an asynchronous {QueryType} query was delayed before it + was answered. + + Recorded once for each query that is answered asynchronously, when the + callback is invoked. Recorded for all clients, even those with + low-resolution clocks. + + + + + + + + + + cfredric@chromium.org + chrome-first-party-sets@chromium.org + + This histogram records the (TimeTicks) latency of computing the owner of a + given domain. + + This metric is sampled every time an owner is computed. (E.g., a single time + when computing a partition key involving First-Party Sets; multiple times + when computing a SamePartyContext.) Only sampled for users with + high-resolution clocks. + + + + + cfredric@chromium.org + kaustubhag@chromium.org + + The amount of time taken until {Landmark} during First-Party Sets + initialization. Each sample is measured starting from the moment the + FirstPartySets instance is constructed. + + Each metric is recorded once when the First-Party Sets objects are + initialized in the Network Service. (Note that this may happen multiple + times during a single Chrome session, if the Network Service crashes and + restarts.) Recorded for all clients, even those with low-resolution clocks. + + + + + + + + + + + kaklilu@chromium.org + cfredric@chromium.org + chrome-first-party-sets@chromium.org + + This histogram keeps count of how many times the First-Party Sets were + queried in the browser process before the browser-global First-Party Sets + were initialized. + + This metric is recorded by the FirstPartySetsPolicyService when it has + completed its initialization flow, which is blocked until the service + receives its configuration from the FirstPartySetsHandler after the + browser-global sets have been initialized. + + Since each profile has its own instance of the FirstPartySetPolicyService + the client may record this metric more than once. This metric is recorded + for a profile even when First-Party Sets is disabled globally or for this + profile, and is recorded for all kinds of profiles. + + + + + cfredric@chromium.org + chrome-first-party-sets@chromium.org + + This histogram tracks whether the First-Party Sets component was able to + process all sets while starting up, or if it had to abort during the process + due to encountering a fatal error. + + The metric will be recorded at most once each time the client starts up. + + + + + cfredric@chromium.org + kaustubhag@chromium.org + + The number of queries that were delayed (i.e. answered asynchronously + instead of synchronously). + + Recorded once during initialization, for each context. (This means once per + browser-run in the browser process; and once each time the Network Service + is started.) The metric is emitted even when First-Party Sets is disabled. + + + + + + + + + cfredric@chromium.org + kaustubhag@chromium.org + + The length of time between when the first asynchronous query was received, + and when asynchronous queries started to be answered. + + Recorded once during initialization, for each context. (This means once per + browser-run in the browser process; and once each time the Network Service + is started.) Recorded for all clients, even those with low-resolution + clocks. + + If the context was initialized before any queries were made (including if + the feature is disabled entirely), 0 is recorded. + + + + + + + + + bingler@chromium.org + awillia@chromium.org + + If a canonical cookie has a valid name+value length. Logged whenever a + cookie is created FromStorage and if this cookie IsCanonical. + + + + + bingler@chromium.org + miketaylr@chromium.org + + If a cookie's {CookieField} field contains a non-ASCII character. + Informally, this indicates if the field contains a (non-ASCII) Unicode + character. Logged whenever a cookie is created via + CanonicalCookie::Create(). + + + + + + + + + bingler@chromium.org + miketaylr@chromium.org + + The value of the effective samesite for cookies that will be included in a + request. Logged once per successful inclusion. + + + + + bingler@chromium.org + miketaylr@chromium.org + + The value of the effective samesite for cookies that will be accepted from a + response. Logged once per successful inclusion. + + + + + dylancutler@google.com + bingler@chromium.org + + If a cookie line contains the Partitioned attribute, this histogram logs + whether it was used correctly (must have a __Host- prefix and must not have + the SameParty attribute). Logged whenever a cookie is created from a string + (from a Set-Cookie header or a write to document.cookie). + + + + + morlovich@chromium.org + + Recorded when a problem is recorded when loading the persistent cookie + store. + + + + + dylancutler@google.com + src/net/cookies/OWNERS + + Maximum number of SameSite=None cookies that belong to a single domain on + the client. This histogram will be used to inform the + per-partition-per-domain limit for partitioned cookies. Recorded every 10 + minutes of active browsing time. + + + + + bingler@chromium.org + awillia@chromium.org + + Records whether or not a cookie has internal HTABs in either its name or + value. Leading and trailing HTABs are ignored. + + This metric is recorded every time CanonicalCookie::Create is called, + regardless whether the cookie is successfully created or not. + + + + + cfredric@chromium.org + kaustubhag@chromium.org + + Records the number of distinct keys (eTLD+1's) that have any stored cookies + (which may or may not be expired). Recorded every 10 minutes of active + browsing time. + + + + + dylancutler@google.com + src/net/cookies/OWNERS + + This histogram records the number of cookie jar partitions. This metric is + only recorded when partitioned cookies are enabled. This count does not + include the unpartitioned cookie jar. Only counts cookie jar partitions with + at least one cookie. This metric is recorded every 10 minutes. + + + + + dylancutler@google.com + src/net/cookies/OWNERS + + This histogram records the number of cookies in the partitioned cookie jar. + This metric is only recorded when partitioned cookies are enabled. This + metric is recorded every 10 minutes. + + + + + dylancutler@google.com + src/net/cookies/OWNERS + + This histogram records the number of partitioned cookies in requests. Only + recorded when partitioned cookies are enabled to reduce noise. + + + + + cfredric@chromium.org + bingler@chromium.org + + This histogram records, for each (nontrivial) First-Party Set, the number of + cookies in the cookie store that belong to a member or owner of that set. + Recorded every 10 minutes of active browsing time. + + + + + bingler@chromium.org + miketaylr@chromium.org + + The port of the destination for a URL omnibox navigation when the + destination is localhost. Excludes navigations that are effectively reloads. + Also does not take into account any redirects that destination URL may do + before finally serving a page. In other words, it's the port of the first + request in a possible chain. Note that the effective port is recorded which + includes the default port, so if https://google.com is typed then 443 will + be recorded. + + Cookie.Port.OmniboxURLNavigation.RemoteHost records the non-localhost + version of this histogram. + + While the intent of this histogram is to inform cookie related design + decisions, the metric itself does not depend on cookies being sent or set. + + + + + bingler@chromium.org + miketaylr@chromium.org + + The port of the destination for a URL omnibox navigation when the + destination is anything but localhost. Excludes navigations that are + effectively reloads. Also does not take into account any redirects that + destination URL may do before finally serving a page. In other words, it's + the port of the first request in a possible chain. Note that the effective + port is recorded which includes the default port, so if https://google.com + is typed then 443 will be recorded. + + Cookie.Port.OmniboxURLNavigation.Localhost records the localhost version of + this histogram. + + While the intent of this histogram is to inform cookie related design + decisions, the metric itself does not depend on cookies being sent or set. + + + + + bingler@chromium.org + miketaylr@chromium.org + + This is the port a cookie is being read by: For network access via HTTP(S) + this value is the port of the origin the request is being sent to. For + script access via non-HTTP APIs this is the value of the port of the origin + of the frame the read call is made in. + + The "Localhost" variant of this metric is recorded only for + localhost origns. The "RemoteHost" variant is recorded for all + other origins. + + This metric is recorded once per included cookie on every read attempt. + + + + + + + + + bingler@chromium.org + miketaylr@chromium.org + + This records if a cookie is being read by the same port value that set it + (the source port). See Cookie.Port.Set.* and Cookie.Port.Read.* for more + information on how the port value for setting and reading (respectively) is + obtained. + + If the source port is unspecified (due to a cookie already existing before + we started to record this value) or invalid (due to corruption) then this + metric does not check for destination port equivalency. + + The "Localhost" variant of this metric is recorded only for + localhost origns. The "RemoteHost" variant is recorded for all + other origins. The "DomainSet" variant of this metric is recorded + for all cookies which have the Domain attribute set (localhost and IP + addresses cannot set the Domain attribute and therefore will not trigger + this metric. Put technically, the origin must have a non-empty registrable + domain to set the Domain attribute). + + This metric is recorded once per included cookie on every read attempt. + + + + + + + + + + bingler@chromium.org + miketaylr@chromium.org + + This is the port a cookie is being set by: For network access via HTTP(S) + this value is the port of the origin the response is being recieved from. + For script access via non-HTTP APIs this is the value of the port of the + origin of the frame the set call is made in. + + The "Localhost" variant of this metric is recorded only for + localhost origns. The "RemoteHost" variant is recorded for all + other origins. + + This metric is recorded once per included cookie on every set attempt. This + includes expired cookies which are immediately deleted. + + + + + + + + + bingler@chromium.org + morlovich@chromium.org + + The same-site context of a request, i.e. the relationship between the + request and the navigational environment. Logged on every request to access + a cookie. + + + + + bingler@chromium.org + miketaylr@chromium.org + + The value of the cookie's SameSite attribute, if any. This is logged once + per created cookie, upon parsing of the SameSite attribute from a string. + + + + + dylancutler@google.com + src/net/cookies/OWNERS + + Size of SameSite=None cookies in bytes. Counted whenever a cookie is set via + CookieMonster::SetCanonicalCookie. + + + + + nharper@chromium.org + + The amount of time (ms) between the cookie store load starting and + completing. + + + + + arichiv@chromium.org + bingler@chromium.org + + The amount of time (ms) to migrate a v17 cookie database to v18. Migration + occurs upon first startup of a browser version with v17 database code. + + + + + bingler@chromium.org + src/net/cookies/OWNERS + The amount of time (ms) to initialize the cookies database. + + + + bingler@chromium.org + awillia@chromium.org + + Measures which character caused the cookie string to be truncated. Logged + whenever a cookie is created via CanonicalCookie::Create(). + + + + + mkwst@chromium.org + For each cookie added to the store, record it's type(s). + + + + + diff --git a/histograms/metadata/cras/OWNERS b/histograms/metadata/cras/OWNERS new file mode 100644 index 000000000000..20475d63b8a6 --- /dev/null +++ b/histograms/metadata/cras/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +yuhsuan@chromium.org diff --git a/histograms/metadata/cras/histograms.xml b/histograms/metadata/cras/histograms.xml new file mode 100644 index 000000000000..258a3e93224c --- /dev/null +++ b/histograms/metadata/cras/histograms.xml @@ -0,0 +1,831 @@ + + + + + + + + + + hychao@chromium.org + chromeos-audio@google.com + + For each of bluetooth A2DP stream period, track the sum of all period + lengths of consecutive packet write failures observerd by CRAS that is + longer than 100ms. + + + + + hychao@chromium.org + chromeos-audio@google.com + + For each of bluetooth A2DP stream period, track the sum of all period + lengths of consecutive packet write failures observerd by CRAS that is + longer than 20ms. + + + + + hychao@chromium.org + chromeos-audio@google.com + + Track all different paths causing bluetooth A2DP drop from audio output + settings. Collect this metrics to help investigate possible issues and + monitor the trend to catch regressions. + + + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + For each audio thread running state, records the number of busyloops. + Busyloop means the audio thread doesn't sleep during more than two loops, + which may make the system busy. Depending on the time of running state, the + records is separated into three logs: ShortPeriod(shorter than 10 minutes), + MediumPeriod(between 10 and 60 minutes), LongPeriod(longer than 60 minutes). + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + When each busyloop stops, records the length of it. The lengths exceeding + 1000 are recorded as 1000. + + + + + hychao@google.com + chromeos-audio@google.com + + The configure time of {Direction} device {Device} in CRAS(ChromeOS audio + server). The configure time is the time taken for the device's own configure + function to execute and when it returns signaling that device is ready to + send/receive audio data. For wired audio devices this is expected to range + from 10ms to 100ms, while wireless headsets this could take longer than + 500ms. We collect this configure time to gather stats and track the + improvement on shortening this configure time. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The gain of a device which is recorded when closing a device. The original + value of UI gain scaler is between 0 to 10. The gain here has been + multiplied by 100. + + + + + + + johnylin@chromium.org + chromeos-audio@google.com + + Record the staus of Noise Cancellation (blocked/disabled/enabled) for the + supported device. It is recorded when the device is opened. + + + + + jrwu@google.com + chromeos-audio@google.com + + The runtime of {Direction} device {Device} in CRAS(ChromeOS audio server). + The runtime is the duration between opening and closing a device. The value + is recorded when the device is closed. For certain devices, more detailed + host/peripheral-capabilities are recorded. The aggregated runtime for each + level is accessible up to "Cras.DeviceRuntime". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + It is used for logging input device usage of ChromeOS users. The count + indicates the number of each input device has been used and is recorded when + a device is closed. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + It is used for logging output device usage of ChromeOS users. The count + indicates the number of each input device has been used and is recorded when + a device is closed. + + + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The volume of a device, which is recorded when closing a device. + + + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The longest additional time CRAS(Chrome OS audio server) ever waits for a + stream exceeding the timeout threshold. This value is recorded per stream + when it gets removed and used to investigate the audio glitch/skip problem + on Chrome OS. + + + + + enshuo@chromium.org + chromeos-audio@google.com + + For each HFP audio device record whether it supports battery indicator. + + + + + enshuo@chromium.org + chromeos-audio@google.com + + For each HFP battery level change event record if it comes from the command + defined by Apple's Spec or BT HFP spec. The count indicates how frequent + user might see this event and can help us decide which data source we prefer + to show if the headset supports both. + + + + + cranelw@google.com + chromeos-audio@google.com + + Record the status of Super Resolution for the bluetooth microphone audio. It + is recorded when the device is opened. + + + + + + + + + enshuo@chromium.org + chromeos-audio@google.com + + For each SCO connection record the returned event. The event indicates if + the setup of the connection is successful or not. + + + + + enshuo@chromium.org + chromeos-audio@google.com + + For each HFP audio device supporting WBS record how many packets are lost + per 1000 packets when the device is closed. This is for tracking how bad the + packet loss can be for WBS in real world. + + + + + hychao@chromium.org + chromeos-audio@google.com + + For each single connection of bluetooth HFP audio device record whether it + supports wideband-speech feature or not. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The highest hardware delay of input device in CRAS(ChromeOS audio server). + It is calculated by 1000 * highest_hw_level / largest_cb_level. The + highest_hw_level is the highest remaining frames in the device. The + largest_cb_level is the largest callback threshold of streams which have + attached to this device. The value is recorded when the device is removed. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The highest hardware delay of output device in CRAS(ChromeOS audio server). + It is calculated by 1000 * highest_hw_level / largest_cb_level. The + highest_hw_level is the highest remaining frames in the device. The + largest_cb_level is the largest callback threshold of streams which have + attached to this device. The value is recorded when the device is removed. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The highest hardware level of input device in CRAS(Chrome OS audio server). + The hardware level is the remaining frames in the device. For input device, + it can show the latency between capturing and actual reading. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The highest hardware level of output device in CRAS(Chrome OS audio server). + The hardware level is the remaining frames in the device. For output device, + it can show the latency between writing and actual playout. + + + + + gavinwill@chromium.org + yuhsuan@chromium.org + chromeos-audio@google.com + Records the source of a change to the input gain. + + + + gavinwill@chromium.org + yuhsuan@chromium.org + chromeos-audio@google.com + Records the source of muting/unmuting the input gain. + + + + hychao@chromium.org + chromeos-audio@google.com + + For each single connection of bluetooth HFP record the result of codec + negotiation, if supported. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The first time missed callbacks happened on input streams in CRAS (Chrome OS + audio server). In normal situation, audio thread should follow the callback + schedule to send frames to clients. However, sometimes it may miss schedule + because of some reasons. When the first time that audio thread misses + callback schedule, record how many seconds have passed since stream started + running. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The first time missed callbacks happened on output streams in CRAS (Chrome + OS audio server). In normal situation, audio thread should follow the + callback schedule to fetch frames from clients. However, sometimes it may + miss schedule because of some reasons. When the first time that audio thread + misses callback schedule, record how many seconds have passed since stream + started running. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The number of missed callbacks of input streams in a day after rescheduling. + It is calculated by number of the missed callbacks / runtime of the stream + after rescheduling. This value is recorded when the stream is removed. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The number of missed callbacks of output streams in a day after + rescheduling. It is calculated by number of the missed callbacks / runtime + of the stream after rescheduling. This value is recorded when the stream is + removed. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The number of missed callbacks of input streams in a day. It is calculated + by number of the missed callbacks / runtime of the stream. This value is + recorded when the stream is removed. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The number of missed callbacks of output streams in a day. It is calculated + by number of the missed callbacks / runtime of the stream. This value is + recorded when the stream is removed. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The second time missed callbacks happened on input streams in CRAS (Chrome + OS audio server). When the second time audio thread misses callback + schedule, record how many seconds have passed since the first time. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The second time missed callbacks happened on output streams in CRAS (Chrome + OS audio server). When the second time audio thread misses callback + schedule, record how many seconds have passed since the first time. + + + + + gavinwill@chromium.org + yuhsuan@chromium.org + chromeos-audio@google.com + + Records the source of enabling/disabling noise cancellation. + + + + + gavinwill@chromium.org + yuhsuan@chromium.org + chromeos-audio@google.com + Records the source of a change to the output volume. + + + + gavinwill@chromium.org + yuhsuan@chromium.org + chromeos-audio@google.com + Records the source of muting/unmuting the output volume. + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + After one webRTC stream is completed, the corresponding device pair will be + logged. The runtime shorter than 1s will be ignored. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The runtime of webRTC streams using input device {InDevice} and output + device {OutDevice}. This log will be logged after a stream is completed or + devices are changed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + hychao@chromium.org + chromeos-audio@google.com + + It is used to log the call to InputStream::SetOutputDeviceForAec() which + results different types of audio device being set as AEC referefence in + CRAS(Chrome OS audio server). Based on this metrics we can analyze the user + behavior in voice communication app. Note that CRAS_METRICS_DEVICE_NO_DEVICE + is tracking the case when the call sets a NULL device meaning to leave AEC + reference on system default. + + + + + hychao@chromium.org + chromeos-audio@google.com + + Record the errors happen when CRAS server adss a stream to its audio thread. + + + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The callback threshold of stream in CRAS(Chrome OS audio server). It is the + number of frames when to request more from the client. This value is + recorded when the stream is created. + + + + + + + pteerapong@chromium.org + chromeos-audio@google.com + + The channel count of stream in CRAS(Chrome OS audio server). This value is + recorded when the stream is created. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The client type of input stream in CRAS(Chrome OS audio server). This value + is recorded when the stream is created. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The client type of output stream in CRAS(Chrome OS audio server). This value + is recorded when the stream is created. + + + + + hychao@chromium.org + chromeos-audio@google.com + + Record the errors happen when CRAS server handles the client requests to + connect new streams. + + + + + hychao@chromium.org + chromeos-audio@google.com + Record the errors happen when CRAS server creats a stream. + + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The bit map of effects to be enabled on this stream. This value is recorded + when the stream is created. + + + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The flags of stream in CRAS(Chrome OS audio server). It is the special + handling for stream. This value is recorded when the stream is created. + + + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The runtime of stream in CRAS(ChromeOS audio server). The runtime is the + duration between creating and destroying a stream. The value is recorded + when the stream is destroyed. + + + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The sampling format of stream in CRAS(Chrome OS audio server). This value is + recorded when the stream is created. + + + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The sampling rate of stream in CRAS(Chrome OS audio server). This value is + recorded when the stream is created. + + + + + yuhsuan@chromium.org + chromeos-audio@google.com + + The number of underruns happened on one audio device. Underrun here means + there are no samples in device buffer while device is playing. It is + recorded when device is closed by CRAS(Chrome OS audio server). + + + + + hychao@chromium.org + chromeos-audio@google.com + + This histogram reports the peak RMS of the signal in the output of WebRTC's + Audio Processing Module run in CRAS, after all WebRTC audio processing. A + new value is reported every 10 seconds, and the peak is the RMS of the + strongest 10 ms block over the latest interval. The metric is negated dBFS, + meaning that 0 is a full-scale signal, while 127 corresponds to -127 dBFS + (very faint). + + + + + hychao@chromium.org + chromeos-audio@google.com + + This histogram reports the peak RMS of the signal coming in to WebRTC's + Audio Processing Module run in CRAS, prior to any WebRTC processing. A new + value is reported every 10 seconds, and the peak is the RMS of the strongest + 10 ms block over the latest interval. The metric is negated dBFS, meaning + that 0 is a full-scale signal, while 127 corresponds to -127 dBFS (very + faint). + + + + + hychao@chromium.org + chromeos-audio@google.com + + This histogram reports the average RMS of the signal in the output of + WebRTC's Audio Processing Module run in CRAS, after all audio WebRTC + processing. A new value is reported every 10 seconds, and the average is + over the latest interval. The metric is negated dBFS, meaning that 0 is a + full-scale signal, while 127 corresponds to -127 dBFS (very faint). + + + + + hychao@chromium.org + chromeos-audio@google.com + + This histogram reports the peak RMS of the signal in the output of WebRTC's + Audio Processing Module run in CRAS, after all WebRTC audio processing. A + new value is reported every 10 seconds, and the peak is the RMS of the + strongest 10 ms block over the latest interval. The metric is negated dBFS, + meaning that 0 is a full-scale signal, while 127 corresponds to -127 dBFS + (very faint). + + + + + + diff --git a/histograms/metadata/cros/OWNERS b/histograms/metadata/cros/OWNERS new file mode 100644 index 000000000000..caa22ff78b7b --- /dev/null +++ b/histograms/metadata/cros/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +nigeltao@chromium.org diff --git a/histograms/metadata/cros/histograms.xml b/histograms/metadata/cros/histograms.xml new file mode 100644 index 000000000000..aa0c698914d9 --- /dev/null +++ b/histograms/metadata/cros/histograms.xml @@ -0,0 +1,255 @@ + + + + + + + + + + drmasquatch@google.com + clumptini@google.com + + Logs attempts to write a user's opt-in status for Apps Sync to disk, as well + as failures. + + + + + charleszhao@chromium.org + tby@chromium.org + + This histogram is emitted each time when CrOSAction is recorded by the + CrOSActionRecorder. For each CrOSAction multiple values can be emitted, + corresponding to different events happened during the action processing by + CrOSActionRecorder. + + + + + fdegros@chromium.org + src/ui/file_manager/OWNERS + + Archive type that the ChromeOS cros-disks daemon is requested to mount. + + + + + fdegros@chromium.org + src/ui/file_manager/OWNERS + + Media type of removable device that the ChromeOS cros-disks daemon is + requested to mount. + + + + + fdegros@chromium.org + src/ui/file_manager/OWNERS + + File system type of external media that the ChromeOS cros-disks daemon is + requested to mount. + + + + + fdegros@chromium.org + src/ui/file_manager/OWNERS + + Error returned by the fuse-archive program, which is called every time a + user opens various archive files in ChromeOS Files App. + + + + + fdegros@chromium.org + src/ui/file_manager/OWNERS + + Error returned by the ZIP mounting program mount-zip, which is called every + time a user opens a ZIP archive in ChromeOS Files App. + + + + + fdegros@chromium.org + src/ui/file_manager/OWNERS + + Error returned by the RAR mounting program rar2fs, which is called every + time a user opens a RAR archive in ChromeOS Files App. + + + + + fdegros@chromium.org + src/ui/file_manager/OWNERS + + The error returned by the mount() system call when the ChromeOS cros-disks + daemon tries to mount a file system. + + + + + + + + + + + + + + + fdegros@chromium.org + src/ui/file_manager/OWNERS + + Error returned by a FUSE daemon that unexpectedly terminated (i.e. before + being requested by cros-disks to unmount and exit). + + + + + + + + + + + + + + + + fdegros@chromium.org + src/ui/file_manager/OWNERS + + File system type of external media that the ChromeOS cros-disks daemon had + to mount in read-only mode because there was an error when trying to mount + them in read-write mode. See crbug.com/1366204. + + + + + fdegros@chromium.org + src/ui/file_manager/OWNERS + + The error returned by the umount() system call when the ChromeOS cros-disks + daemon tries to unmount a file system. + + + + + + + + + + + + + + + + + + + + + + + austinct@chromium.org + src/ui/file_manager/OWNERS + + Error returned by the ChromeOS cros-disks daemon when formatting an external + drive. + + + + + austinct@chromium.org + src/ui/file_manager/OWNERS + + Time taken by the ChromeOS cros-disks daemon to format an external drive. + + + + + fdegros@chromium.org + src/ui/file_manager/OWNERS + + Error returned by the ChromeOS cros-disks daemon when mounting a file + system. + + + + + fdegros@chromium.org + src/ui/file_manager/OWNERS + + Combination of (mount type, mount error) returned by the ChromeOS cros-disks + daemon. + + + + + fdegros@chromium.org + src/ui/file_manager/OWNERS + + Time taken by the ChromeOS cros-disks daemon to mount a file system. + + + + + fdegros@chromium.org + src/ui/file_manager/OWNERS + + Error returned by the ChromeOS cros-disks daemon when unmounting a file + system. + + + + + fdegros@chromium.org + src/ui/file_manager/OWNERS + + Time taken by the ChromeOS cros-disks daemon to unmount a file system. + + + + + + diff --git a/histograms/metadata/cros_audio/OWNERS b/histograms/metadata/cros_audio/OWNERS new file mode 100644 index 000000000000..2c65f4fc35e9 --- /dev/null +++ b/histograms/metadata/cros_audio/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +gavinwill@chromium.org \ No newline at end of file diff --git a/histograms/metadata/cros_audio/histograms.xml b/histograms/metadata/cros_audio/histograms.xml new file mode 100644 index 000000000000..24c97492c4ce --- /dev/null +++ b/histograms/metadata/cros_audio/histograms.xml @@ -0,0 +1,114 @@ + + + + + + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Recorded when the user changes either the input or output audio device from + a WebUI, such as the OS Audio Settings page. Not recorded when the audio + device is programmatically changed. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the type of device selected when the user changes the input audio + device from a WebUI, such as the OS Audio Settings page. Not recorded when + the audio device is programmatically changed. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the input gain set by the user from a WebUI, such as the OS Audio + Settings page. To account for changes via a UI slider, the histogram is only + recorded after the user stops changing the gain for a predetermined amount + of seconds. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Recorded when the user changes the input audio mute state from a WebUI, such + as the OS Audio Settings page. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Recorded when the user enables/disables noise cancellation from a WebUI, + such as the OS Audio Settings page. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the type of device selected when the user changes the output audio + device from a WebUI, such as the OS Audio Settings page. Not recorded when + the audio device is programmatically changed. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Recorded when the user changes the output audio mute state from a WebUI, + such as the OS Audio Settings page. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the output volume set by the user from a WebUI, such as the OS Audio + Settings page. To account for changes via a UI slider, the histogram is only + recorded after the user stops changing the volume for a predetermined amount + of seconds. + + + + + + diff --git a/histograms/metadata/cros_ml/OWNERS b/histograms/metadata/cros_ml/OWNERS new file mode 100644 index 000000000000..e94d94072d92 --- /dev/null +++ b/histograms/metadata/cros_ml/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +tby@chromium.org diff --git a/histograms/metadata/cros_ml/histograms.xml b/histograms/metadata/cros_ml/histograms.xml new file mode 100644 index 000000000000..048403df7f74 --- /dev/null +++ b/histograms/metadata/cros_ml/histograms.xml @@ -0,0 +1,594 @@ + + + + + + + + + + + + + + + + + alanlxl@chromium.org + amoylan@chromium.org + cros-federated-team@google.com + + The events on FederatedService level, mainly about the fcp library loading. + + + + + alanlxl@chromium.org + amoylan@chromium.org + cros-federated-team@google.com + + The FederatedService storage related events, including DB connection, + disconnection and various errors. + + + + + amoylan@chromium.org + alanlxl@chromium.org + cros-federated-team@google.com + + CPU time (for one CPU core) of {Population} successful tasks. Reported for + all users; users without high-resolution clocks will report 0 for short + requests. + + + + + + alanlxl@chromium.org + amoylan@chromium.org + cros-federated-team@google.com + + The event of FederatedService population {Population}, including receiving + examples, task contributed/rejected and various failure reasons. + + + + + + + + amoylan@chromium.org + alanlxl@chromium.org + + CPU time (for one CPU core) of one Chrome OS ML Service request. Reported + for all users; users without high-resolution clocks will report 0 for short + requests. + + + + + alanlxl@chromium.org + amoylan@chromium.org + + Fraction of total CPU resources used by Chrome OS ML Service, sampled every + 5 minutes. + + + + + amoylan@chromium.org + alanlxl@chromium.org + + The result of CreateGraphExecutor, which can be OK or some specific error. + + + + + wtlee@chromium.org + chromeos-camera-eng@google.com + ml-service-team@google.com + + The result of DocumentScanner.{RequestName} request, which can be OK or + ERROR. + + + + + + + + + + amoylan@chromium.org + alanlxl@chromium.org + + The result of Execute, which can be OK or some specific error. + + + + + jiwan@chromium.org + amoylan@chromium.org + The result of grammar check, which can be OK or ERROR. + + + + jiwan@chromium.org + amoylan@chromium.org + + The result of load grammar model, which can be OK or some specific error. + The error code could be logged in machine learning service in chrome or in + chromeos when grammar model is not loaded successfully. + + + + + amoylan@chromium.org + alanlxl@chromium.org + charleszhao@chromium.org + + The result of load handwriting model, which can be OK or some specific + error. The error code could be logged in machine learning service in chrome + or in chromeos when handwriting model is not loaded successfully. + + + + + amoylan@chromium.org + alanlxl@chromium.org + charleszhao@chromium.org + + The result of handwriting recognition, which can be OK or some specific + error. + + + + + amoylan@chromium.org + alanlxl@chromium.org + + The error result of LoadModel in cases when the model name could not be + determined. See MachineLearningService.*.LoadModelResult.Event for the + result broken down by model name when the name is known. + + + + + amoylan@chromium.org + alanlxl@chromium.org + + The result of LoadModel, which can be OK or some specific error. + + + + + alanlxl@chromium.org + amoylan@chromium.org + + Events related to the connection and disconnection of the Mojo IPC channel + between Chrome and the Chrome OS ML Service. + + + + + alanlxl@chromium.org + amoylan@chromium.org + + Number of worker processes registered in ml-service. Only used in Chrome OS. + Sampled every 5 minutes. + + + + + alanlxl@chromium.org + amoylan@chromium.org + + Peak total (shared and non-shared) memory used by Chrome OS ML Service over + the last 24 hours. Sampled every 5 minutes, so may miss short-lived spikes. + + + + + amoylan@chromium.org + alanlxl@chromium.org + + Process handling errors of ml-service. Emitted when there is error in + process handling. For example, "failed to spawning worker process" + etc. Only used in Chrome OS. + + + + + amoylan@chromium.org + alanlxl@chromium.org + + The "errno" of waitpid calls used by ml-service's control process + to reap the worker processes. This is only recorded when waitpid meets error + and should be rare. This is a Chrome OS only metric. And we only record the + corresponding enum values of "ECHILD", "EINTR" and + "EINVAL" because according to the man page of waitpid, they are + the only possible errno. All the other "errno" are treated as + "unknown" error. + + + + + curtismcmullan@chromium.org + amoylan@chromium.org + + The result of a text suggester request, which can be OK or ERROR. + + + + + amoylan@chromium.org + alanlxl@chromium.org + + Memory usage increase caused by one Chrome OS ML Service request. + + + + + alanlxl@chromium.org + amoylan@chromium.org + + Total (shared and non-shared) memory used by Chrome OS ML Service, sampled + every 5 minutes. + + + + + amoylan@chromium.org + alanlxl@chromium.org + charleszhao@chromium.org + + The result of Web platform handwriting recognition, which can be either OK + or Error. + + + + + amoylan@chromium.org + alanlxl@chromium.org + charleszhao@chromium.org + + The result of load web platform handwriting model, which can be OK or some + specific error. The error code could be logged in machine learning service + in chrome or in chromeos when handwriting model is not loaded successfully. + + + + + amoylan@chromium.org + alanlxl@chromium.org + + The result of compute/inference based on a web platform model loaded, which + can be OK or some specific error. The error code could be logged in machine + learning service in chromeos when the computation fails. + + + + + amoylan@chromium.org + alanlxl@chromium.org + + The result of creating web platform model loader, which can be success or + some specific error. The error code could be logged in machine learning + service in chromeos when the model loader can not be created successfully. + + + + + amoylan@chromium.org + alanlxl@chromium.org + + The result of loading a web platform model, which can be OK or some specific + error. The error code could be logged in machine learning service in + chromeos when model can not successfully loaded. + + + + + alanlxl@chromium.org + amoylan@chromium.org + + The wall time used for the worker process to accept the mojo connection to + control process in ml-service. Only used in Chrome OS. + + + + + alanlxl@chromium.org + amoylan@chromium.org + + The wall time used by the control process to reap and cleanup the worker + processes in ml-service. Only used in Chrome OS. + + + + + alanlxl@chromium.org + amoylan@chromium.org + + The exit status of the worker processes of ml-service. Only used in Chrome + OS. This is only emitted when the worker process exits with non-zero status. + And theoretically, there can be 255 different types of status (from 1 to + 255). + + + + + amoylan@chromium.org + alanlxl@chromium.org + + The result of obsolete {ObsoleteRequestName} CreateGraphExecutor request. + + + + + + + + + amoylan@chromium.org + alanlxl@chromium.org + + The result of obsolete {ObsoleteRequestName} Execute request. + + + + + + + + + amoylan@chromium.org + alanlxl@chromium.org + + The result of obsolete {ObsoleteRequestName} LoadModel request. + + + + + + + + + amoylan@chromium.org + alanlxl@chromium.org + + Deprecated 07/2019, because we change to record total (shared+unshared) + memory rather than only private memory. Replaced by + MachineLearningService.{ObsoleteRequestName}.TotalMemoryDeltaKb. + + + + + + + + + + + + + + + + + + + + amoylan@chromium.org + alanlxl@chromium.org + + Memory usage increase caused by obsolete {ObsoleteRequestName} request. + + + + + + + + + + + + + + + + amoylan@chromium.org + alanlxl@chromium.org + + CPU time (for one CPU core) of {RequestName} request. Reported for all + users; users without high-resolution clocks will report 0 for short + requests. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + amoylan@chromium.org + alanlxl@chromium.org + + The result of {RequestName} CreateGraphExecutor request, which can be OK or + some specific error. + + + + + + + + + amoylan@chromium.org + alanlxl@chromium.org + + The result of {RequestName} Execute request, which can be OK or some + specific error. + + + + + + + + + amoylan@chromium.org + alanlxl@chromium.org + + The result of {RequestName} LoadModel request, which can be OK or some + specific error. + + + + + + + + + + + + amoylan@chromium.org + alanlxl@chromium.org + Memory usage increase caused by {RequestName} request. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/histograms/metadata/cross_device/OWNERS b/histograms/metadata/cross_device/OWNERS new file mode 100644 index 000000000000..a3e769bce86c --- /dev/null +++ b/histograms/metadata/cross_device/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +crisrael@google.com +hansberry@chromium.org +julietlevesque@google.com diff --git a/histograms/metadata/cross_device/histograms.xml b/histograms/metadata/cross_device/histograms.xml new file mode 100644 index 000000000000..8e1e2569c52b --- /dev/null +++ b/histograms/metadata/cross_device/histograms.xml @@ -0,0 +1,2419 @@ + + + + + + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Records effective final success/failure when trying to install Android + Messages for Web PWA. This is recorded once when any one of the installation + attempts succeed or when all attempts fails, irrespective of number of + retries. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Records message types for which all retry attempts failed when dispatching + to Android Messages for Web Service-Worker. This is recorded when using FCM + web push for background notificaitons. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Records message types for which a retry was attempted when dispatching to + Android Messages for Web Service-Worker. This is recorded when using FCM web + push for background notificaitons. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Records message types for which dispatching to Android Messages for Web + Service-Worker succeeded. This is recorded when using FCM web push for + background notificaitons. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Indicates the feature state of the Messages feature. This metric is emitted + to at the creation of the user session (when the user logs in), when any + multi-device feature state changes, and every 30 minutes. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Records the number of installations attempted for Android Messages for Web + PWA before succeeding. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Records installation result code for every installation attempt for Android + Messages for Web PWA initiated through Multidevice setup or settings. This + metric also includes installation result for every failed retry. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Records success/failure for when Android Messages for Web PWA is + uninstalled. The PWA is uninstalled when the messages URL changes, resulting + in the PWA being uninstalled at the old URL and reinstalled at the new URL. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Tracks the duration of time for which the Android Messages for Web Service- + Worker is handling background connection. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Tracks dispatch success/failure status of the start streaming message sent + to the Android Messages for Web Service-Worker. + + + + + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Indicates whether or not the device manufacturer name returned in the + hardware info is empty. Recored during the construction of a + ClientAppMetadata proto. + + + + + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Indicates whether or not the device model name returned in the hardware info + is empty. Recored during the construction of a ClientAppMetadata proto. + + + + + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Indicates the result of fetching an InstanceId token during the construction + of a ClientAppMetadata proto messages. + + + + + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Counts the number of times the InstanceId token fetch got retried because it + did not match with the expected InstanceId. Logged during the construction + of a ClientAppMetadata proto message. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + Indicates success of performing a DeviceSync. + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the async ClientAppMetadata retrieval performed during + initialization of the DeviceSync service. Recorded when the async callback + is invoked or when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the async ClientAppMetadata retrieval + performed during initialization of the DeviceSync service. Recorded when the + async callback is invoked or when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of GCM registration performed during + initialization of the DeviceSync service. Recorded when the async callback + is invoked. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of GCM registration performed during initialization of + the DeviceSync service. Recorded when the async callback is invoked. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the DeviceSync service initialization. + Recorded each time the DeviceSync service starts up, after initialization + succeeds. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Indicates that there was no issue retrieving supported and enabled software + features, or that there were enabled features which were not in the + supported feature set. See the histogram + "CryptAuth.DeviceSyncSoftwareFeaturesResult.Failures" for a + breakdown of failures by feature type. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Breaks down by feature type + "CryptAuth.DeviceSyncSoftwareFeaturesResult"'s count of enabled + features which were not in the supported feature set. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the async GetDevicesActivityStatus API call to + CryptAuth during multi-device setup. Recorded when the async callback is + invoked or when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the async GetDevicesActivityStatus API call + during multi-device setup. Recorded when the async callback is invoked or + when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the async BatchNotifyGroupDevices API call to + CryptAuth. Recorded when the async callback is invoked or when the call + times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the async BatchNotifyGroupDevices API call to + CryptAuth. Recorded when the async callback is invoked or when the call + times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the async device metadata decryption during the + CryptAuth v2 DeviceSync flow. Records a success if the operation did not + timeout; a separate metric, + CryptAuth.DeviceSyncV2.DeviceSyncer.MetadataDecryptionSuccess, tracks + individual encryption failures.Recorded when the async callback is invoked + or when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the async group private key decryption during the + CryptAuth v2 DeviceSync flow. Recorded when the async callback is invoked or + when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the async device metadata decryption during + the CryptAuth v2 DeviceSync flow. Recorded when the async callback is + invoked or when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the async group private key decryption during + the CryptAuth v2 DeviceSync flow. Recorded when the async callback is + invoked or when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not the group private key sent by CryptAuth matches the + existing group private key when they are expected to agree. Emitted during a + CryptAuth v2 DeviceSync if the group private key is not being rotated. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not the local device metadata agrees with that sent by + CryptAuth in the SyncMetadata response. Emitted during the CryptAuth v2 + DeviceSync flow, after device metadata is decrypted. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not device metadata sent by CryptAuth in the SyncMetadata + response was able to be decrypted. Emitted during the CryptAuth v2 + DeviceSync flow for each device metadata packet. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not device metadata sent by CryptAuth in the SyncMetadata + response was able to be parsed from a decrypted serialized byte string into + a proto. Emitted during the CryptAuth v2 DeviceSync flow for each device + metadata packet. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the async BatchGetFeatureStatuses API call during the + CryptAuth v2 DeviceSync flow. Recorded when the async callback is invoked or + when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not the expected number of devices were sent in the + BatchGetFeatureStatuses response. Emitted when a BatchGetFeatureStatuses + response is received from the CryptAuth server. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the async BatchGetFeatureStatuses API call + during the CryptAuth v2 DeviceSync flow. Recorded when the async callback is + invoked or when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not a device ID in the BatchGetFeatureStatuses response + has been seen already in the same response. Emitted for each device in the + BatchGetFeatureStatuses response. Emitted when a BatchGetFeatureStatuses + response is received from the CryptAuth server. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not the feature type strings returned in the + BatchGetFeatureStatuses response are known feature types. Emitted for each + feature type for each device in the BatchGetFeatureStatuses response. + Emitted when a BatchGetFeatureStatuses response is received from the + CryptAuth server. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not a feature is marked as enabled even though it is + listed as unsupported. This should never happen. Emitted for all feature + types, for each device in the BatchGetFeatureStatuses response. Emitted when + a BatchGetFeatureStatuses response is received from the CryptAuth server. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not a device in the BatchGetFeatureStatuses response was + included in the BatchGetFeatureStatuses request. Emitted for each device in + the BatchGetFeatureStatuses response. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the async BatchSetFeatureStatuses API call to + CryptAuth. Recorded when the async callback is invoked or when the call + times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the async BatchSetFeatureStatuses API call to + CryptAuth. Recorded when the async callback is invoked or when the call + times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the async ShareGroupPrivateKey API call during the + CryptAuth v2 DeviceSync flow. Recorded when the async callback is invoked or + when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the async group private key encryption during the + CryptAuth v2 DeviceSync flow. Records a success if the operation did not + timeout; a separate metric, + CryptAuth.DeviceSyncV2.GroupPrivateKeySharer.EncryptionSuccess, tracks + individual encryption failures. Recorded when the async callback is invoked + or when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not the group private key was able to be encrypted using + a device's encrypting key. Recorded during the ShareGroupPrivateKey phase of + the CryptAuth v2 DeviceSync flow. Recorded for each device with whom we + intend to share the group private key. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the async group private key encryption during + the CryptAuth v2 DeviceSync flow. Recorded when the async callback is + invoked or when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the async ShareGroupPrivateKey API call during + the CryptAuth v2 DeviceSync flow. Recorded when the async callback is + invoked or when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not a device's key used to encrypt the group private key + is empty. If the key is empty, the group private key cannot be encrypted and + shared with the device. Recorded during the ShareGroupPrivateKey phase of + the CryptAuth v2 DeviceSync flow. Recorded for each device with whom we + intend to share the group private key. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The clients' reasons for making CryptAuth v2 DeviceSync requests. Recorded + when a DeviceSync is requested. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the first async SyncMetadata API call during the + CryptAuth v2 DeviceSync flow. Recorded when the async callback is invoked or + when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the second async SyncMetadata API call during the + CryptAuth v2 DeviceSync flow. Recorded when the async callback is invoked or + when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the async group key creation during the CryptAuth v2 + DeviceSync flow. Recorded when the async callback is invoked or when the + call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the async local device metadata encryption during the + CryptAuth v2 DeviceSync flow. Recorded when the async callback is invoked or + when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the first async SyncMetadata API call during + the CryptAuth v2 DeviceSync flow. Recorded when the async callback is + invoked or when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the async group key creation during the + CryptAuth v2 DeviceSync flow. Recorded when the async callback is invoked or + when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the async local device metadata encryption + during the CryptAuth v2 DeviceSync flow. Recorded when the async callback is + invoked or when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the second async SyncMetadata API call during + the CryptAuth v2 DeviceSync flow. Recorded when the async callback is + invoked or when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not the device metadata packets sent by CryptAuth have + all of the necessary fields populated. Emitted for each device metadata + packet during the SyncMetadata phase of the CryptAuth v2 DeviceSync flow. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not the device ID from a device metadata packet sent by + CryptAuth in the SyncMetadata response has the same ID as a packet from the + same response. Emitted for each device metadata packet during the + SyncMetadata phase of the CryptAuth v2 DeviceSync flow. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the number of devices returned by a v1 DeviceSync. Only recorded + when v1 and v2 DeviceSync are running in parallel. Only recorded if a v1 and + v2 DeviceSync has ever previously occurred. Emitted when v1 and v2 devices + are merged together, which occurs after either a v1 or v2 DeviceSync. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the number of devices returned by a v2 DeviceSync. Only recorded + when v1 and v2 DeviceSync are running in parallel. Only recorded if a v1 and + v2 DeviceSync has ever previously occurred. Emitted when v1 and v2 devices + are merged together, which occurs after either a v1 or v2 DeviceSync. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the percentage of devices returned by a v2 DeviceSync that replace + their v1 counterparts. This will only occur if the v2 device has a decrypted + public key that matches a v1 device. Only recorded when v1 and v2 DeviceSync + are running in parallel. Only recorded if a v1 and v2 DeviceSync has ever + previously occurred. Emitted when v1 and v2 devices are merged together, + which occurs after either a v1 or v2 DeviceSync. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the percentage of devices returned by a v2 DeviceSync that have a + decrypted user public key. Only recorded when v1 and v2 DeviceSync are + running in parallel. Only recorded if a v1 and v2 DeviceSync has ever + previously occurred. Emitted when v1 and v2 devices are merged together, + which occurs after either a v1 or v2 DeviceSync. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the ratio of the number of devices returned by a v2 DeviceSync to + the number returned by a v1 DeviceSync. Devices returned by a v2 DeviceSync + should be a subset of the devices returned by a v1 DeviceSync, barring any + race conditions. This ratio should be greater than or equal to + PercentageOfV1DevicesReplacedByV2Devices because a v2 device can only + replace its v1 counterpart if it has a decrypted public key. Only recorded + when v1 and v2 DeviceSync are running in parallel. Only recorded if a v1 and + v2 DeviceSync has ever previously occurred. Emitted when v1 and v2 devices + are merged together, which occurs after either a v1 or v2 DeviceSync. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Indicates whether or not any device data in the device registry changed as a + result of the CryptAuth v2 DeviceSync attempt. Recorded when a DeviceSync + attempt finishes. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The CryptAuth v2 DeviceSync attempt results broken down by result code. + Recorded when a DeviceSync attempt finishes. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Indicates whether the CryptAuth v2 DeviceSync attempt succeeded, failed, or + finished with non-fatal errors. Recorded when a DeviceSync attempt finishes. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The top-level result of the CryptAuth device enrollment process. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the async EnrollKeys API call to CryptAuth during the + CryptAuth v2 Enrollment flow. Recorded when the async callback is invoked or + when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the async SyncKeys API call to CryptAuth during the + CryptAuth v2 Enrollment flow. Recorded when the async callback is invoked or + when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the result of the async key creation call during the CryptAuth v2 + Enrollment flow. Recorded when the async callback is invoked or when the + call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the async EnrollKeys API call to CryptAuth + during the CryptAuth v2 Enrollment flow. Recorded when the async callback is + invoked or when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the async key creation call during the + CryptAuth v2 Enrollment flow. Recorded when the async callback is invoked or + when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the execution time of the async SyncKeys API call to CryptAuth + during the CryptAuth v2 Enrollment flow. Recorded when the async callback is + invoked or when the call times out. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The clients' reasons for making CryptAuth v2 Enrollment requests. Recorded + when an enrollment is requested. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The CryptAuth v2 Enrollment attempt results broken down by result code. + Recorded when an enrollment attempt finishes. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The success or failure of CryptAuth v2 Enrollment requests. Recorded when an + enrollment attempt finishes. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The state--at system start time--of persisted user key pairs, generated + during CryptAuth v1 and/or v2 Enrollment: whether they exist and if they + agree. Recorded on CryptAuth v2 Enrollment manager construction. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records the multi-device feature type sent in a GCM message from CryptAuth + v2. Emitted when a GCM message with a feature type key/value pair is + received from CryptAuth. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not the DeviceSync group name sent in a GCM message from + CryptAuth is valid. Currently the only valid group name is + "DeviceSync:BetterTogether". Emitted when a GCM message with a + DeviceSync group name key/value pair is received from CryptAuth. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not the multi-device feature type sent in a GCM message + from CryptAuth v2 is recognized by the Chrome OS client. Emitted when a GCM + message with a feature type key/value pair is received from CryptAuth. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not the CryptAuth TargetService was specified in a GCM + message by both the CryptAuth v1 registration tickle type key/value pair as + well as the CryptAuth v2 target service key/value pair. Both key/value pairs + should not exist in same GCM message. Emitted when a GCM message is received + from CryptAuth. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The CryptAuth TargetService--Enrollment or DeviceSync--indicated by the + registration tickle type key/value pair of an incoming GCM message. The + registration tickle type is used in GCM messages sent by CryptAuth v1. + Emitted when a GCM message from CryptAuth is received. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The CryptAuth TargetService--Enrollment or DeviceSync--indicated by the + target service key/value pair of an incoming GCM message. This key/value + pair is used in GCM messages sent by CryptAuth v2. Emitted when a GCM + message from CryptAuth is received. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The time it takes the GCM driver to return the result of a GCM registration + request made by the CryptAuth GCM manager. CryptAuth registration with GCM + is only performed once, if successful, for a given user on a device as the + first step in CryptAuth v1 or v2 Enrollment. Recorded when the CryptAuth GCM + manager is notified by the GCM driver that the registration attempt + finished, successfully or not. The GCM driver might quietly retry failures + before notifying the CryptAuth GCM manager. The time recorded here + encompasses the possible retry attempts and delays from the GCM driver. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The result code from a GCM registration request made by the CryptAuth GCM + manager. CryptAuth registration with GCM is only performed once, if + successful, for a given user on a device as the first step in CryptAuth v1 + or v2 Enrollment. Recorded when the CryptAuth GCM manager is notified by the + GCM driver that the registration attempt finished, successfully or not. The + GCM driver might quietly retry failures before notifying the CryptAuth GCM + manager. This metric will not include results codes that were quietly + retried by the GCM driver. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not the loaded local-device has a non-trivial identifier. + We always expect a non-trivial ID. Emitted every time the DeviceSync client + tries to load local device data, typically during initialization, after an + Enrollment or after a DeviceSync. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not the DeviceSync client is fully set up/ready when + GetLocalDeviceMetadata() is invoked. We always expect the client to be ready + when GetLocalDeviceMetadata() is called. Emitted every time the DeviceSync + client tries to load local device data, typically during initialization, + after an Enrollment or after a DeviceSync. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Records whether or not the local-device-data request to the DeviceSync + client was successful. We expect this to always be successful. Emitted every + time applications, e.g., Smart Lock, request the local device data. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Indicates whether or not the Instance ID used by the CryptAuth client + differs from the previously retrieved ID. Recorded while fetching client app + metadata if a previous ID has been set. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Indicates whether or not the Instance ID token used by the CryptAuth client + differs from the previously retrieved token. Recorded while fetching client + app metadata if a previous token has been set. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Upon a successful Smart Lock unlock, records whether the user's phone was + locked during any point while the lock screen was up. This can be used to + get a sense for whether users are using Smart Lock for Chromebook without + something like Smart Lock for Android to keep their phones unlocked. + + + + + + Sign in with Smart Lock deprecated. + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Measures the use of Smart Lock on the sign-in screen: records whether a + Smart Lock login succeeded or failed; or if a password fallback was used, + the reason why. Recorded upon a login attempt for users who have the Smart + Lock feature enabled. + + + + + + Sign in with Smart Lock deprecated. + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Measures the time elapsed between the user focusing their user pod and + signing in using Smart Lock. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Measures the use of Smart Lock on the lock screen: records whether a Smart + Lock unlock attempt succeeded or failed; or if a password fallback was used, + the reason why. Recorded upon an unlock attempt for users who have the Smart + Lock feature enabled. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Measures the time elapsed between the lock screen being shown and the user + unlocking the device using Smart Lock. The lock screen is typically shown + when the user opens their Chromebook's lid (or otherwise wakes the + computer), but can also be shown when the user manually locks the device. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The hash of the phone model used to successfully sign in or unlock using + Smart Lock. + + This hash is calculated by taking the first 4 bytes of the MD5 hash of the + device model. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Measures the exponentially weighted rolling average of the received signal + strength indicator (RSSI) of the phone when the user successfully unlocks or + signs in using Smart Lock. + + The exponentially weighted averaging formula is: + + rollingRssi = (1 - weight) * rollingRssi + weight * currentRssi; + + RSSI readings are inherently noisy, so this averaging gives a smoothed RSSI + value to work with as a heuristic for proximity. + + If no RSSI was read, then a sentinel value of 127 will be recorded. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Whether a lock screen and a trust agent are enabled on the remote device + (Android phone) for Easy Unlock. Recorded once per status update message + from the remote device. A status update message is expected to be sent once + when the secure channel between the local and the remote device is + established, and also each time the user-presence status changes on the + remote side. + + + + + + Metric is no longer being collected. + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Provides a breakdown of how many times each possible Bluetooth advertisement + registration result occurs. + + The bucket "Unknown result" indicates that the Bluetooth platform + returned an unknown error code; if it has any counts, the client code should + be changed to account for the new error code. + + + + + + Metric is no longer being collected. + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Provides a breakdown of how many times each possible Bluetooth advertisement + unregistration result occurs. + + The bucket "Unknown result" indicates that the Bluetooth platform + returned an unknown error code; if it has any counts, the client code should + be changed to account for the new error code. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Provides the success rate of starting a Bluetooth discovery session. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Provides the success rate of stopping a Bluetooth discovery session. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Provides a top-level breakdown of the times a connection to a host has + failed. + + An "unknown error" is caused by the host returning an + "unknown error" response code. Tethering timing out and client + connection error are both broken down further in + InstantTethering.ConnectionToHostResult.Failure.TetheringTimeout and + InstantTethering.ConnectionToHostResult.Failure.ClientConnection, + respectively. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Breaks down the reasons why the client failed to connect to the hotspot, and + the number of times they occurred. + + Note that a client connection can be canceled by a user either via pressing + the Disconnect button or beginning a connection attempt to another host. The + "internal error" case is a general bucket that captures client + errors we don't expect to be significant failure causes. + + This histogram breaks down the "client connection error" count of + InstantTethering.ConnectionToHostResult.Failure. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Captures the number of times of whether or not first-time setup was required + when tethering timed out. + + Starting tethering on the host works like so: if first-time setup is + required on the host, a first-time setup UI is shown on the host; once the + user interacts with it, the provisioning app is called. If first-time setup + is not required, then the provisioning app is directly called. To be clear: + the provisioning app is always run. + + There are two possible ways for tethering to time out: either the + provisioning app flaked (crashed or hung, and never called back to Instant + Tethering), or the user never interacted with the first-time setup UI flow + (assuming first-time setup was required). + + Because it's very unlikely for the provisioning app to flake, we can read + the "was first-time setup" count as almost always indicative of + the user not interacting with the first-time setup UI. We expect the + "was not first-time setup" count to be low (because, as mentioned, + it's very unlikely for the provisioning app to flake). + + This histogram breaks down the "tethering timed out" count of + InstantTethering.ConnectionToHostResult.Failure. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Provides a breakdown of the times a connection to a host was either + unsuccessful due to provisioning failure (the carrier disallows tethering) + or "other" (this is captured under + InstantTethering.ConnectionToHostResult.SuccessRate.Background). + + This metric captures the rough percentage of connections which are + unsuccessful due to provisioning failure. It is separate from + InstantTethering.ConnectionToHostResult.SuccessRate.Background and the + metrics related to it because provisioning failure is neither truly a + success nor an error. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Captures the count of successful and failed connection attempts. + + This metric counts the top-level user action from beginning to connect, all + the way through success or failure of the connection (excluding any + programmatic retries within the connection attempt). + + This metric provides an immediate understanding of the Instant Tethering + connection success rate. The counts of failure are broken down in + InstantTethering.ConnectionToHostResult.Failure. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Breaks down the state of Instant Tethering during user sessions. All states, + except for 'Enabled', indicate that the feature was not active. This + histogram is emitted to each time a condition affecting Instant Tethering's + state, e.g. the user enabling or disabling the feature, or Bluetooth + becoming enabled or disabled. + + Note: The "Screen locked" bucket is obsolete, and should not have + any reports. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The duration of a batch of host scans. A batch is defined as a series of one + or host scans separated by no more than one minute. + + For example, if a scan occurs then stops and does not start back up again, + the metric logged would be the amount of time taken for that scan. However, + if a scan finishes and a new scan starts up again less than a minute after + the previous scan finished, the metric logged would be the time difference + between the start of the first scan and the finish of the second scan. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Provides a breakdown of the results of each host scan. This metric is + recorded after each host scan. + + Comparing the number of times no hosts were found against the other buckets + can help determine how often a host scan is useful. + + The sum of the buckets capturing that a notification was shown can be used + as a baseline of comparison against + InstantTethering.ConnectionToHostResult.ProvisioningFailureRate to roughly + measure engagement with the notification. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The duration of time between the start and end of a Tether connection. + Timing starts when the device connects to the Wi-Fi hotspot and ends when + the device becomes disconnected from the Wi-Fi hotspot. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Captures the count of successful and failed attempts to send a + 'KeepAliveTickle' message to the phone. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Indicates the feature state of the Instant Tethering feature. This metric is + emitted to at the creation of the user session (when the user logs in), when + any multi-device feature state changes, and every 30 minutes. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Counts the number of interactions a user has with each of the Instant + Tethering notifications. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The duration of time between when a client authenticates with a host, and + receives a ConnectTetheringResponse. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The duration of time it takes for the client to connect to the host, from + the moment the user taps 'Connect', until the client connects to the host's + hotspot. This does not include timeouts. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The duration of time it takes for the client to connect to the provided + hotspot after receiving a ConnectTetheringResponse. This does not include + timeouts. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The duration of time it takes for the client to send off a + DisconnectTetheringRequest. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The duration of time between when a client authenticates with a host, and + receives a KeepAliveTickleResponse. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The duration of time between when a client authenticates with a host, and + receives a TetherAvailabilityResponse. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Provides a breakdown of how each Tether session ended. A session begins when + a device is first connected to a host's hotspot, and ends when the device is + no longer connected to the hotspot. This metric is recorded at the end of + each session. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Provides the count of the number of users who have the Instant Tethering + toggle enabled vs. disabled on startup. This metric is logged each time a + user logs into a Chromebook. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Provides the count of the number of times users have enabled or disabled the + user preference for Mobile data. This metric is logged each time the value + is toggled. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + Indicates the feature state of the Better Together Suite feature. This + metric is emitted to at the creation of the user session (when the user logs + in), when any multi-device feature state changes, and every 30 minutes. + + + + + julietlevesque@google.com + chromeos-cross-device-eng@google.com + + Indicates the feature state of the Better Together Suite feature. This + metric is emitted to at the creation of the user session (when the user logs + in) with a 15-second delay to allow for the mojo client to be ready, and + when any multi-device feature state changes, and every 30 minutes. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + Result of trying to find eligible devices. + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + Breaks down the percentages of reasons when failure occurs on + FindEligibleDevices. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + Result for when ForceEnrollmentNow is called. + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + Result for when ForceSyncNow is called. + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + Breaks down which features failed when attempted to disable. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + Breaks down which features failed when attempted to enable. + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + Result of enabling and disabling features for devices. + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + Breaks down the percentages of reasons when failure occurs on + SetSoftwareFeatureState. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + Compares when the Forget Host Button is pressed and when setup completes. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + Provides a count of how many times each page of the MultiDevice setup flow + was reached. This allows analysis of user dropoff between subsequent pages. + + The formula "Success page" / "Start page" provides the + overall "success rate" of the MultiDevice setup flow, at a quick + glance. + + The sum of each bucket's count is not meaningful. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + A histogram measuring the success rate of authenticating a BLE channel once + a GATT connection has been established. This metric measures the effective + rate; i.e., a failure followed by a successful retry is counted as a + success. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + A time histogram measuring the time from the moment a GATT connection is + made to the remote device, to the moment that an authenticated channel is + established with the remote device. + + In this context, "background" refers to the BLE advertising scheme + under which the remote device is persistently advertising "in the + background" at low power. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + A time histogram measuring the time from the moment a background + advertisement is received, to the moment that a GATT connection is made to + the remote device. + + In this context, "background" refers to the BLE advertising scheme + under which the remote device is persistently advertising "in the + background" at low power. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + A time histogram measuring the time it takes to create a secure connection + to a remote device, from the moment a SecureChannelService client asks for a + new connection (start scanning), to the moment that an authenticated channel + is established with the remote device. + + In this context, "background" refers to the BLE advertising scheme + under which the remote device is persistently advertising "in the + background" at low power. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + A time histogram measuring the time it from the moment SecureChannelService + starts scanning for a background advertisement, to the moment that it + establishes a GATT connection to the remote device. + + In this context, "background" refers to the BLE advertising scheme + under which the remote device is persistently advertising "in the + background" at low power. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + A time histogram measuring the time it from the moment SecureChannelService + starts scanning for a background advertisement, to the moment that it + receives an advertisement from the expected remote device. + + In this context, "background" refers to the BLE advertising scheme + under which the remote device is persistently advertising "in the + background" at low power. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + A histogram measuring the success rate of authenticating a BLE channel once + an advertisement has been received. This metric measures the effective rate; + i.e., a failure followed by a successful retry is counted as a success. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + A histogram measuring the success rate of creating a GATT connection once an + advertisement has been received. This metric measures the effective rate; + i.e., a failure followed by a successful retry is counted as a success. + + + + + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Measures the connection medium used by Nearby Connections requested by + SecureChannel. These connections are always initiated using Bluetooth, then + can upgrade to WebRTC if both the Chrome OS device and the phone are online. + + One value is emitted when a connection is initially established, and another + value is emitted when a bandwidth upgrade occurs. + + + + + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Emits the result of attempting to establish a connection when the Nearby + Connections library finishes trying to connect. This measures the success + rate of establishing a connection via the Nearby Connections library. + Because a Nearby Connection is only attempted upon receiving the phone's + advertisement, this metric is only emitted if the phone was discovered. + + + + + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Tracks reasons why a Nearby Connection established via SecureChannel ends up + disconnecting. Includes a "Disconnection requested by client" + value emitted during intentional disconnections as well as several error + enum values. + + Emitted when a connection fails to become established, or emitted after it + is already established when it becomes disconnected. + + + + + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Measures the effective success rate for Nearby Connections attempts via + SecureChannel. In this context, "effective" means that (1) a + failure followed by a successful retry is counted as a success, and (2) + repeated failures (e.g., due to users stuck in an unrecoverable state due to + Bluetooth issues) are only counted as a single failure. + + Emitted upon each successful connection and one minute after a failed + connection with no subsequent successful retries. + + + + + jasonsun@google.com + chromeos-cross-device-eng@google.com + + Measures the reception of SecureChannel file payload transfers via the + Nearby Connections library. Emitted when the Nearby Connections library + receives an incoming file transfer. + + + + + jasonsun@google.com + chromeos-cross-device-eng@google.com + + Measures the completion of SecureChannel file payload transfers via the + Nearby Connections library. Emitted when a file tranfer has been completed + successfully, with failure, or canceled. + + + + + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Measures the completion of SecureChannel messages transfers via the Nearby + Connections library. Emitted when the Nearby Connections library either + sends or receives a message. + + + + + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Records the result of invoking Nearby Connection's {Function} API function + within SecureChannel. + + Emitted when the API call returns. + + + + + + + + + + + + + + + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Measures the success rate of sending a SecureChannel message via the Nearby + Connections library. Emitted when the Nearby Connections library sends a + message. + + + + + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Measures the amount of time taken between when a connection is accepted over + Bluetooth and when the connection upgrades bandwidth to WebRTC. Emitted + after this upgrade occurs. + + Note that this histogram is not emitted if an upgrade to WebRTC never occurs + during. + + + + + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Records whether or not the list of eligible host phones has duplicate + devices names. This list is shown to users during multi-device setup, and + duplicate device names can cause confusion. Metric emitted when the user + starts multi-device setup. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + Breaks down percentages of host statuses. This metric is emitted to at the + creation of the user session (when the user logs in), when host status + updates occur, and every 30 minutes. + + + + + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Records if a multi-device host device has all of the crypto data necessary + for secure communication via Bluetooth. This will be false if v2 DeviceSync + data is not yet decrypted, for instance. Emitted when checking if a host is + verified. This occurs only if there is an existing host, and the check + occurs during start-up, when the host changes, or when new devices are + synced from CryptAuth. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + Compares when the Verify Host Button is pressed to when setup completes. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + hsuregan@chromium.org + + Breaks down the percentage of users who either accepted or declined + MultiDevice OOBE setup. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + Counts the number of each MultiDevice setup notification clicked by a user. + This metric should be compared with MultiDeviceSetup_NotificationShown. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + Counts the number of each MultiDevice setup notification dismissed by a + user. This metric should be compared with + MultiDeviceSetup_NotificationShown. + + + + + hansberry@google.com + chromeos-cross-device-eng@google.com + + Counts the number of each MultiDevice setup notification shown to a user. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Provides a breakdown of how often each BLE Weave connection result occurs. + Emitted to when a Weave connection attempt finishes. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Provides a breakdown of how many times each possible Bluetooth GATT + connection result occurs. Emitted to when a GATT connection attempt + finishes. + + The bucket "Unknown result" indicates that the Bluetooth platform + returned an unknown error code; if it has any counts, the client code should + be changed to account for the new error code. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Provides a breakdown of how many times each possible Bluetooth GATT + "notify session" attempt result occurs. Emitted to when a + "notify session" attempt attempt finishes. + + The bucket "Unknown result" indicates that the Bluetooth platform + returned an unknown error code; if it has any counts, the client code should + be changed to account for the new error code. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Provides a breakdown of how many times each possible Bluetooth GATT + "write characteristic" attempt result occurs. Emitted to when a + "write characteristic" attempt attempt finishes. + + + + + + Sign in with Smart Lock deprecated. + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + Records the user's sign in method choice. + + + + + Sign in with Smart Lock deprecated. + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The state Smart Lock was in when the user chose to use their password to + sign into their device. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + Records the user's unlock method choice. + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + An enumerated histogram that breaks down what state Smart Lock was in when + the user chose to use their password to unlock their device. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Count of successful and failed attempts to unlock or sign in the Chromebook, + after the user selects their profile photo. + + + + + + Sign in with Smart Lock deprecated. + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Count of successful and failed attempts to sign in the Chromebook, after the + user selects their profile photo. + + + + + + Sign in with Smart Lock deprecated. + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Shows why a sign in attempt failed during the authentication phase. Breaks + down the failure bucket of SmartLock.AuthResult.SignIn. + + + + + + Sign in with Smart Lock deprecated. + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + An enumerated histogram that breaks down why the UserController could not + decrypt the account. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Count of successful and failed attempts to unlock the Chromebook, after the + user selects their profile photo. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Shows why an unlock attempt failed during the authentication phase. Breaks + down the failure bucket of SmartLock.AuthResult.Unlock. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + A count of the number of SmartLock devices which the user has enabled to + unlock the user's Chromebook, i.e., the device connected to in the SmartLock + setup flow. Logged each time the list of eligible devices is updated. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The state of the SmartLock feature for the current user, set at login. The + value is 'enabled' if the user has successfully enabled SmartLock via setup, + disabled if the user has explicitly disabled the feature after it has been + enabled, and unset if the feature is passively disabled, i.e., has never + been enabled by the user. + + + + + + Sign in with Smart Lock deprecated. + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The resolution of Smart Lock trying to find the host device during the + initial scan window at the signin screen. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The resolution of Smart Lock trying to find the host device during the + initial scan window at the lock screen. + + + + + cclem@google.com + chromeos-cross-device-eng@google.com + + The first status visible to the user. Emitted on the lock screen, only for + users with Smart Lock enabled, when the first non-trivial Smart Lock state + is detected by the Chromebook. + + + + + + Sign in with Smart Lock deprecated. + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Count of successful and failed attempts to get the 'remote status' of the + host device, i.e., determine if the Chromebook can be signed into. + + + + + + Sign in with Smart Lock deprecated. + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Shows why a sign in attempt failed during the connection phase. Breaks down + the failure bucket of SmartLock.ConnectionResult. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Count of successful and failed attempts to get the 'remote status' of the + host device, i.e., determine if the Chromebook can be unlocked. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Shows why an unlock attempt failed during the connection phase. Breaks down + the failure bucket of SmartLock.ConnectionResult. + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + Indicates the feature state of the SmartLock feature. This metric is emitted + to at the creation of the user session (when the user logs in), when any + multi-device feature state changes, and every 30 minutes. + + + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The duration of time between when Smart Lock successfully establishes a + secure channel connection to the host device, and receives the initial + remote status from it -- this informs if the device can be unlocked on the + first remote status (i.e., if the Smart Lock icon is yellow or green). + + Suffixed by the type of remote status which was the first to be received. + View the base histogram to see results for all remote status types + aggregated together, and suffixed histograms for the results of just that + particular remote status type. + + See SmartLock.GetRemoteStatus.Unlock for the success rate of fetching the + remote status from the host. + + + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The duration of time between when the user locks their screen or wakes their + device (either opening a clamshell device or waking up a tablet), and when + the user is first provided a visible indication of Smart Lock's status after + Smart Lock has communicated with the phone. + + Suffixed by the type of status which the user is first presented with. View + the base histogram to see results for all status types aggregated together, + and suffixed histograms for the results of just that particular remote + status type. + + See SmartLock.GetRemoteStatus.Unlock for the success rate of fetching the + remote status from the host. + + + + + + + hansberry@chromium.org + chromeos-cross-device-eng@google.com + + The duration of time between when Smart Lock begins to try to find the host + device, and receives the initial remote status from it -- this informs if + the device can be unlocked on the first remote status (i.e., if the Smart + Lock icon is yellow or green). + + Suffixed by the type of remote status which was the first to be received. + View the base histogram to see results for all remote status types + aggregated together, and suffixed histograms for the results of just that + particular remote status type. + + See + MultiDevice.SecureChannel.BLE.Performance.StartScanToAuthenticationDuration.Background + and + SmartLock.Performance.AuthenticationToReceiveFirstRemoteStatus.Unlock.Duration + for breakdowns of this metric. + + See SmartLock.GetRemoteStatus.Unlock for the success rate of fetching the + remote status from the host. + + + + + cclem@chromium.org + chromeos-cross-device-eng@google.com + + Emitted whenever Smart Lock is enabled/disabled in Settings using any of the + three toggles. Indicates which toggle was used and whether Smart Lock was + enabled or disabled. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Indicates the feature state of the Wifi Sync V2 feature. This metric is + emitted to at the creation of the user session (when the user logs in), when + any multi-device feature state changes, and every 30 minutes. + + + + + + diff --git a/histograms/metadata/crostini/OWNERS b/histograms/metadata/crostini/OWNERS new file mode 100644 index 000000000000..e5d00c7449d4 --- /dev/null +++ b/histograms/metadata/crostini/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +davidmunro@google.com +hollingum@google.com +danielng@google.com diff --git a/histograms/metadata/crostini/histograms.xml b/histograms/metadata/crostini/histograms.xml new file mode 100644 index 000000000000..9c636e8d8953 --- /dev/null +++ b/histograms/metadata/crostini/histograms.xml @@ -0,0 +1,659 @@ + + + + + + + + + + + + + + + + + + + + + davidmunro@google.com + clumptini@google.com + + Recorded each time a Crostini app is launched, recording whether the app is + the built in terminal, a registered app, or an unknown app. + + + + + davidmunro@google.com + clumptini@google.com + + The result of attempting to launch a Crostini app (including Terminal). + + + + + davidmunro@google.com + clumptini@google.com + The result of attempting to launch {Variant}. + + + + + + + + + davidmunro@google.com + clumptini@google.com + + The available disk space at the start of the crostini install flow, recorded + when installation was canceled. This is recorded any time the user cancels + the install before it finishes. This includes cases where e.g. they + previously tried installing and got an error. + + + + + davidmunro@google.com + clumptini@google.com + + The available disk space at the start of the crostini install flow, recorded + when installation returned an error. This is recorded any time the user + tries to install install crostini and gets an error. This includes cases + where e.g. they previously tried installing and got an error. + + + + + davidmunro@google.com + clumptini@google.com + + The available disk space at the start of the crostini install flow, recorded + when installation succeeded. This is recorded any time the user successfully + installs crostini. This includes cases where e.g. they previously tried + installing and got an error. + + + + + davidmunro@google.com + clumptini@google.com + Result of crostini backup. + + + + davidmunro@google.com + clumptini@google.com + + log base 2 of compressed container backup size in bytes, rounded to the + nearest integer. Value is between 0 and 50, to give good granularity for + common sizes, while maintaining a range that can support very large sizes. + + + + + davidmunro@google.com + clumptini@google.com + + log base 2 of uncompressed container image size in bytes, rounded to the + nearest integer. Value is between 0 and 50, to give good granularity for + common sizes, while maintaining a range that can support very large sizes. + + + + + davidmunro@google.com + clumptini@google.com + + 100 * compressed size / container size. The conventional compression ratio + of input / output has not been used as the resulting value is unbounded. + + + + + davidmunro@google.com + clumptini@google.com + Time taken for failed backup. + + + + davidmunro@google.com + clumptini@google.com + Time taken for successful backup. + + + + + Removed in M102 - no longer needed + + davidmunro@google.com + clumptini@google.com + + The result of a single run of CrostiniRestarter. This is the same as + Crostini.RestarterResult except only emitted in sessions that happen after a + clean start (e.g. after fresh login). Removed in Milestone 102. + + + + + davidmunro@google.com + clumptini@google.com + + Recorded each time a Crostini container is launched, recording the OS + version running inside the container. + + + + + drmasquatch@google.com + clumptini@google.com + Crostini stateful KiB read per day. Reported daily. + + + + drmasquatch@google.com + clumptini@google.com + Crostini stateful KiB written per day. Reported daily. + + + + drmasquatch@google.com + clumptini@google.com + Crostini swap file KiB read per day. Reported daily. + + + + drmasquatch@google.com + clumptini@google.com + Crostini swap file KiB written per day. Reported daily. + + + + davidmunro@google.com + clumptini@google.com + + Records the result (e.g. succeeded) whenever an attempt to resize a Crostini + disk finishes. + + + + + davidmunro@google.com + clumptini@google.com + + Recorded each time a user tries resizing a Crostini disk to infer attempts + that started but never finished (e.g. code bug missing a timeout). This + won't exactly line up with the total of Crostini.DiskResizeResult due to how + metrics work (e.g. start one day and result the next) but should be close. + + + + + davidmunro@google.com + clumptini@google.com + + Records the type (e.g. sparse qcow2) of the user's disk. Emitted often, you + probably want to look at the unique user numbers of this metric. Certain + disk types are vulnerable to disk corruption in certain scenarios so this + metric tracks our progress in moving people off them and tells us if we need + to do additional work to migrate users off. + + + + + davidmunro@google.com + clumptini@google.com + + {Variant} Engagement time metrics, along with foreground and background + time, are only collected on users with Crostini enabled. All four metrics + are accumulated and recorded to UMA once a day. + + + + + + + + + + + sidereal@google.com + davidmunro@google.com + clumptini@google.com + + Filesystem corruption events in the crostini VM, recorded every time + corruption is observed to affect the state of the system. + + + + + timloh@chromium.org + clumptini@google.com + + Breakdown of active input method by input method IDs. Recorded when a + Crostini window loses focus, including switching between Crostini windows + and some actions like opening the launcher. See InputMethod.ID2 for details + on the enum format. + + + + + + Removed in M105 - no longer needed + + sidereal@google.com + clumptini@google.com + + The source (component vs DLC) that was used to install termina. This is + recorded every time a CrostiniRestart succeeds at the termina install step + to measure the progress of the component->DLC migration. + + + + + davidmunro@google.com + clumptini@google.com + + Emitted when an invalid request to transition states during the Crostini + restarter flow is received. For example, when a container start signal is + received when the restarter is still waiting for the vm to finish launching. + The value is the state the restarter should have been in for the transition + to be legal (in this example StartContainer). + + + + + davidmunro@google.com + clumptini@google.com + + Recorded each time the CrostiniRecoveryView is show, on detecting that a VM + is still running after a Chrome crash. + + + + + davidmunro@google.com + clumptini@google.com + + Emitted whenever a run of CrostiniRestarter is triggered except during the + initial install. + + + + + davidmunro@google.com + clumptini@google.com + + The result of a single run of CrostiniRestarter. This is recorded every time + the crostini restart flow is triggered except for the initial install and + (from M104) multi-container creation. + + + + + timloh@google.com + clumptini@google.com + + The result of a single run of CrostiniRestarter. This is recorded once for + each restart triggered by the Crostini installer. + + + + + timloh@google.com + clumptini@google.com + + The result of a single run of CrostiniRestarter. This is recorded once for + each restart triggered for multi-container creation. + + + + + davidmunro@google.com + clumptini@google.com + + Base histogram for measuring how much time the restarter flow spends in the + {state} state, used to set timeouts. Note that this since this is for any + restarter run (no-op relaunch, installation, success/failed) the results are + expected to be multi-modal. This is emitted by CrostiniRestarter every time + a state completes or restart completes, but not for a state that's been + aborted. + + + + + + davidmunro@google.com + clumptini@google.com + Result of crostini restore. + + + + davidmunro@google.com + clumptini@google.com + Time taken for failed restore. + + + + davidmunro@google.com + clumptini@google.com + Time taken for successful restore. + + + + davidmunro@google.com + clumptini@google.com + victorhsieh@chromium.org + Record user's choice in Crostini Settings + + + + davidmunro@google.com + clumptini@google.com + + Emitted whenever a run of CrostiniRestarter is triggered during the initial + install. + + + + + davidmunro@google.com + clumptini@google.com + + Yes if we got an unknown result for the SetUpLxdContainerUser step, No + otherwise. Recorded by CrostiniManager after getting the result for the the + SetUpLxdContainerUser step so we can check if our hypothesis to the root + cause of crbug/1216305 is correct, and to measure how widespread it is. + + + + + davidmunro@google.com + clumptini@google.com + + Recorded each time the user completes the Crostini setup UI, recording the + result of the setup. From M104, Crostini.RestartResult.Installer provides + more granular failures metrics. + + + + + davidmunro@google.com + clumptini@google.com + + Recorded each time the user initiates the Crostini setup UI, recording the + UI surface that invoked the setup. + + + + + davidmunro@google.com + clumptini@google.com + + The result of mounting sshfs {Visibility}. Recorded when mounting a Crostini + directory using sshfs. + + + + + + + + + davidmunro@google.com + clumptini@google.com + + The time taken to mount sshfs (successfully or not, UserVisible or + Background). Recorded when mounting a Crostini directory using sshfs. + + + + + davidmunro@google.com + clumptini@google.com + + The result of unmounting sshfs. Recorded when removing a Crostini sshfs + mount. + + + + + davidmunro@google.com + clumptini@google.com + + The time taken to unmount sshfs (either successfully or failing). Recorded + when removing a Crostini sshfs mount. + + + + + davidmunro@google.com + clumptini@google.com + + A record of post-startup failures in crostini components. Buckets are + recorded to whenever we become aware that the corresponding component has + failed. + + + + + joelhockey@chromium.org + lxj@google.com + + Record which settings in terminal are changed by users. This is captured + each time terminal is launched and fetches the current settings, and not + just when settings are changed, in order to give the best information about + the current state of active users. + + + + + davidmunro@google.com + clumptini@google.com + + The time from a user setting up their device, to the user enabling Crostini. + + + + + davidmunro@google.com + clumptini@google.com + + The time taken for the crostini installer to be canceled by the user. This + is recorded any time the user cancels the install before it finishes. This + includes cases where e.g. they previously tried installing and got an error. + + + + + davidmunro@google.com + clumptini@google.com + + The time taken for the crostini installer to fail due to an error. This is + recorded any time the user tries to install install crostini and gets an + error. This includes cases where e.g. they previously tried installing and + got an error. + + + + + davidmunro@google.com + clumptini@google.com + + The time taken for the crostini installer to finish successfully. This is + recorded any time the user successfully installs crostini. This includes + cases where e.g. they previously tried installing and got an error. + + + + + + Removed in M102 - no longer needed + + davidmunro@google.com + clumptini@google.com + + The result of a single run of CrostiniRestarter. This is the same as + Crostini.RestarterResult except only emitted in sessions that happen after + an unclean restart (e.g. after a Chrome crash). Removed in milestone 102. + + + + + davidmunro@google.com + clumptini@google.com + + Recorded each time the user completes the Crostini uninstall UI, recording + the result of the uninstall. Error cases are broken down more in + Crostini.UninstallResult.Reason. + + + + + timloh@google.com + clumptini@google.com + + The result of a completed Crostini uninstallation. This is recorded when an + uninstall completes either successfully or unsuccessfully, including both + those manually triggered via the Crostini uninstaller, and those triggered + internally by cancelling a Crostini installation. + + + + + davidmunro@google.com + clumptini@google.com + + Recorded each time we display (or would display, see suffixes) a + notification that the user is trying to do something Crostini doesn't + support. + + + + + davidmunro@google.com + clumptini@google.com + + Recorded each time the user sees the Crostini upgrade Notifiation, recording + the action that closed the notification. + + + + + davidmunro@google.com + clumptini@google.com + + A collection of events that can occur while upgrading the crostini + container, recorded as they occur. + + + + + davidmunro@google.com + clumptini@google.com + + Recorded each time the user sees the Crostini upgrade UI, recording the UI + surface that initiated the upgrade. + + + + + + diff --git a/histograms/metadata/cryptohome/OWNERS b/histograms/metadata/cryptohome/OWNERS new file mode 100644 index 000000000000..259e426f100a --- /dev/null +++ b/histograms/metadata/cryptohome/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +emaxx@chromium.org +jorgelo@chromium.org diff --git a/histograms/metadata/cryptohome/histograms.xml b/histograms/metadata/cryptohome/histograms.xml new file mode 100644 index 000000000000..9f5490cec898 --- /dev/null +++ b/histograms/metadata/cryptohome/histograms.xml @@ -0,0 +1,1197 @@ + + + + + + + + + + + + + + + + + + + + + + zuan@chromium.org + cros-hwsec+uma@chromium.org + + Records the total running time of every async dbus calls of Cryptohome at + server side. + + + + + zuan@chromium.org + cros-hwsec+uma@chromium.org + + Records the total inqueue time of every async dbus calls of Cryptohome at + server side. Recorded when the first stage of this requests is served. + + + + + jadmanski@chromium.org + cros-hwsec+uma@chromium.org + + Records the current type of backing stores in use for storing Cryptohome + authentication factors. Recorded whenever a new auth session is started + which generally occurs whenever an operation requiring authentication + happens (e.g. verifying credentials, adding or updating credentials, + mounting the user home directory, et cetera). + + + + + apronin@chromium.org + cros-hwsec+uma@chromium.org + + Checksum status of critical persistent data used by Cryptohome. This status + is recorded every time the cryptohomed daemon reads a file. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + In low disk space scenarios, Cryptohome erases whole user profiles. This is + a number of user profiles deleted during cleanup. Only reported when + non-zero. + + + + + apronin@chromium.org + louiscollard@chromium.org + zuan@chromium.org + cros-hwsec+uma@chromium.org + + Records when a deprecated API function in cryptohome is called, so we know + which exposed DBus API can be removed without side effect. + + + + + dspaid@chromium.org + + The status of the user home directory migration from ecryptfs to + ext4-crypto. This is logged once at the end of each migration. + + + + + kinaba@chromium.org + + The error code of file operation by which the user home directory migration + from ecryptfs to ext4-crypto has failed. This is logged once the migration + encounters a file I/O error. + + + + + kinaba@chromium.org + + The type of file operation at which the user home directory migration from + ecryptfs to ext4-crypto has failed. This is logged once the migration + encounters a file I/O error. + + + + + kinaba@chromium.org + + The category of the path where the user home directory migration from + ecryptfs to ext4-crypto has failed. This is logged once the migration + encounters a file I/O error. + + + + + dspaid@chromium.org + + The total amount of free disk space on the system when the user started the + migration from ecryptfs to ext4-crypto. This is only logged when the user + encounters an insufficient space error. + + + + + dspaid@chromium.org + + The total amount of free disk space on the system when the user received an + insufficient space error during the migration from ecryptfs to ext4-crypto. + This is only logged when the user encounters an insufficient space error. + + + + + dspaid@chromium.org + + The total number of bytes of xattr data that we are trying to store on a + file when we receive an insufficient space error. This includes both xattr + data already present on the file as well as the new xattr we are trying to + set. This is only logged during ecryptfs to ext4-crypto migration if we + receive an insufficient space error when setting a new extended attribute. + + + + + dspaid@chromium.org + + The status of the user home directory migration from ecryptfs to + ext4-crypto. This is logged once at the start of each migration. + + + + + hashimoto@chromium.org + + The total byte count (MB) of the data in a user's home directory which is + being migrated from ecryptfs to ext4-crypto. This is logged once when a new + migration starts. + + + + + hashimoto@chromium.org + + The total file count in a user's home directory which is being migrated from + ecryptfs to ext4-crypto. This is logged once when a new migration starts. + + + + + dspaid@chromium.org + pmarko@chromium.org + + The status of the user home directory minimal migration from ecryptfs to + ext4-crypto. This is logged once at the end of each minimal migration. + + + + + dspaid@chromium.org + pmarko@chromium.org + + The status of the user home directory minimal migration from ecryptfs to + ext4-crypto. This is logged once at the start of each minimal migration. + + + + + vsavu@google.com + chromeos-disk-cleanup@google.com + + In low disk space scenarios, Cryptohome erases caches while target amount of + free disk space is not reached. It starts from low priority categories. This + histogram reports which topmost priority was reached to fulfill a cleanup + request. + + + + + vsavu@google.com + chromeos-disk-cleanup@google.com + Records the result of triggering disk cleanup. + + + + apronin@chromium.org + cros-hwsec+uma@chromium.org + Cryptohome errors. + + + + vsavu@google.com + chromeos-disk-cleanup@google.com + + This is an amount of Dmcrypt cache vault space (MB) which was evicted by + cryptohome due to shortage of remaining disk space. Reported only if + something was deleted (greater than zero). + + + + + vsavu@google.com + chromeos-disk-cleanup@google.com + + Background: In critically low disk space scenarios, cryptohome performs + cleanup before allowing login to proceed. If enough space is available, this + operation is skipped and nothing is reported. This cleanup is related to the + periodic cleanup cryptohome performes. + + This histogram records how many Mebibytes of space was freed in total every + time login cleanup is executed. + + + + + vsavu@google.com + chromeos-disk-cleanup@google.com + + Background: In low disk space scenarios, cryptohome performs cleanup + periodically. If enough space is available, this operation is skipped and + nothing is reported. + + This histogram records how many Mebibytes of space was freed in total every + time cleanup is executed. + + + + + vsavu@google.com + chromeos-disk-cleanup@google.com + + In low disk space scenarios, Cryptohome performs a lot of disk space + operations to erase data. This is a number of milliseconds taken to perform + a cleanup. Reported only if longer than 5 ms. Increased maximum and number + of buckets compared to FreeDiskSpaceTotalTime. + + + + + vsavu@google.com + chromeos-disk-cleanup@google.com + + This is an amount of Google Drive cache (MB) which was evicted by cryptohome + due to shortage of remaining disk space. Reported only if something was + deleted (greater than zero). + + + + + dspaid@chromium.org + + The encryption type used for a user's cryptohome directory. This is logged + each time the cryptohome is mounted. + + + + + yich@google.com + cros-hwsec+uma@chromium.org + + The errors resulting from interacting with the InvalidateDirCryptoKey + operation. + + + + + hcyang@google.com + cros-hwsec+uma@chromium.org + + How many log entries are used to reconstruct a stale hash tree, for Low + Entropy (LE) credential management. This reflects whether the log entries + stored at LE credential server side are sufficient for recovering situations + where the LE credential client and server are not synced. This is logged + every time the client loses sync with the server (might happen during + authentication and credential management operations), and attempts to use + the LogReplay command to sync server state again. + + + + + hcyang@google.com + cros-hwsec+uma@chromium.org + + Results of LogReplay events, which happen every time the client loses sync + with the server (might happen during authentication and credential + management operations). Categorized into 2 replay types, depends on whether + all of the log entries were used for replay, as this will result in + different error distributions. These are logged every time the client loses + sync with the server (might happen during authentication and credential + management operations), and attempts to use the LogReplay command to sync + server state again. + + + + + + + + + pmalani@chromium.org + apronin@chromium.org + allenwebb@chromium.org + cros-hwsec+uma@chromium.org + + Events related to Low Entropy (LE) credential management. Specifically, the + result of the {Action} action when doing the {Operation} LE operation. These + are logged every time an operation involving a LE credential (during + authentication and credential managerment actions) is performed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + hardikgoyal@chromium.org + cros-hwsec+uma@chromium.org + + This will report usage of {Location} paths to see if it is actually being + used or not to enable us to decide if we want to continue supporting + {Location} or not. + + + + + + + + vsavu@google.com + chromeos-disk-cleanup@google.com + + Records the amount of free space available (in MiB) on a device before login + cleanup is executed. Only recorded when login disk cleanup can run. + + + + + vsavu@google.com + chromeos-disk-cleanup@google.com + + When disk space is very low during login, cryptohome will remove other users + to ensure that the current user can successfully log in. This metric tracks + what was performed to free up space. + + cryptohomed reports what step was reached to fulfill a cleanup request. The + steps are described in CryptohomeLoginDiskCleanupProgress and are executed + in order. + + + + + vsavu@google.com + chromeos-disk-cleanup@google.com + + Records the result of triggering disk cleanup during login. Reports failure + when any error is encountered and skipped if enough disk space is already + available. + + + + + vsavu@google.com + chromeos-disk-cleanup@google.com + + When disk space is very low during login, cryptohome will remove other users + to ensure that the current user can successfully log in. This metric records + how long cleanup took before the user logged in. + + + + + benreich@chromium.org + src/ui/file_manager/OWNERS + + If the Downloads bind mount fails, files may be saved to ~/MyFiles/Downloads + directly and upon next login an attempt will be made to move these back into + ~/Downloads to perform a bind mount. This metric records the number of items + (as direct children of ~/MyFiles/Downloads) that get migrated on the next + successful cryptohome mount. + + + + + fukino@chromium.org + + The amount of consumed battery level during cryptohome encryption migration. + This is logged when the battery level decreases during migration, and the + data is used to check if the minimum battery level required to start + migration is appropriate. + + + + + fukino@chromium.org + + The first screen in the encryption migration UI, which is shown when a user + attempts to log in to the system and old encryption (eCryptfs) is detected. + + + + + fukino@chromium.org + + The result of encryption migration from eCryptfs to Ext4 dircrypto. The + recorded result is what the migration UI in Chrome side is notified from + cryptohomed. + + + + + fukino@chromium.org + + The result of the removal of user's cryptohome. When the migration UI is + notified that the migration failed, the UI tries to remove the user's + cryptohome to make sure that the user can create clean crytohome directory + in the next sign-in. + + + + + fukino@chromium.org + + User's choice when the system is ready to migrate encryption. The user can + start migration or skip it. It is used to know how many users have skipped + migration. + + + + + fukino@chromium.org + + How many times each screen in migration UI is shown to the user. A screen is + recorded as a visible screen when the screen is kept displayed at least for + a second. + + + + + betuls@chromium.org + cros-hwsec+uma@chromium.org + + The result of a cryptohome out-of-process mount cleanup. Recorded once per + logout. + + + + + betuls@chromium.org + cros-hwsec+uma@chromium.org + + The result of a cryptohome out-of-process mount operation. Recorded once per + login attempt. + + + + + zuan@chromium.org + cros-hwsec+uma@chromium.org + + How many tasks runs in parallel typically in the mount thread of cryptohome. + Recorded when a requests comes in. Counts of 1 will not reported. + + + + + betuls@chromium.org + jorgelo@chromium.org + + The result of a cryptohome restore SELinux context operation of user home + directory /home/.shadow/salted-hash and its subdirectories. Recorded once + per login attempt. + + + + + betuls@chromium.org + jorgelo@chromium.org + + The result of a cryptohome restore SELinux context operation of shadow + directory /home/.shadow and its subdirectories. Recorded on a user's first + login on a device or login after factory reset. + + WARNING: This histogram was expired from 2022-02-25 to 2022-04-22. + + + + + vsavu@google.com + chromeos-disk-cleanup@google.com + + The amount of time (s) between disk cleanup runs. If there is sufficient + disk space, nothing is reported. The first cleanup run after boot is not + reported. + + + + + hardikgoyal@google.com + betuls@google.com + + The amount of time (ms) for Chrome OS cryptohome daemon to verify the user's + password during an unlock operation. + + + + + thomascedeno@google.com + cros-hwsec+uma@chromium.org + + AuthSession is a DBus API for various operations dealing with credential + storage, processing, and authentication. This metrics record the time an + RemoveAuthFactor takes to complete for USS. The metric is emitted when the + respective RemoveAuthFactor is requested through the DBus API. + + + + + thomascedeno@google.com + cros-hwsec+uma@chromium.org + + AuthSession is a DBus API for various operations dealing with credential + storage, processing, and authentication. This metrics record the time an + RemoveAuthFactor takes to complete for VK. The metric is emitted when the + respective RemoveAuthFactor is requested through the DBus API. + + + + + dspaid@chromium.org + + The amount of time (ms) for the user's home directory to be migrated from + ecryptfs to ext4-crypto. If the migration is interrupted and subsequently + resumed (such as due to power loss) then no value is recorded for either + attempt. + + + + + dspaid@chromium.org + + The amount of time (ms) for the user's home directory to be migrated from + ecryptfs to ext4-crypto if the minimal migration method was used. If the + minimal migration is interrupted and subsequently resumed (such as due to + power loss) then no value is recorded for either attempt. + + + + + thomascedeno@google.com + cros-hwsec+uma@chromium.org + + AuthSession is a DBus API for various operations dealing with credential + storage, processing, and authentication. This metric records the amount of + time (ms) to create a persistent user. This is recorded when the AuthSession + is requested to create a persistent user in cryptohomed, through the DBUS + API. + + + + + yich@google.com + cros-hwsec+uma@chromium.org + + The amount of time (ms) for the ECC auth value generating process. It should + perform within a certain window: faster than the RSA implementation, but not + too fast (less than 100ms) to brute force. This metrics would be recorded + when user trying to login to the Chrome OS with the TPM ECC auth block and + only available on TPM2.0 devices. + + + + + apronin@chromium.org + cros-hwsec+uma@chromium.org + + The amount of time (ms) for Chrome OS cryptohome daemon to initialize the + PKCS#11. Initializations under 1 second represent checks on a previously + initialized PKCS#11, and should be discarded for analysis. + + + + + betuls@chromium.org + cros-hwsec+uma@chromium.org + + The amount of time for Chrome OS cryptohome to mount the encrypted home + directory. + + + + + apronin@chromium.org + cros-hwsec+uma@chromium.org + + The amount of time (ms) for Chrome OS cryptohome to mount the encrypted + guest home directory asynchronously. + + + + + betuls@chromium.org + cros-hwsec+uma@chromium.org + + The amount of time for Chrome OS cryptohome to mount the encrypted guest + home directory. + + + + + betuls@chromium.org + cros-hwsec+uma@chromium.org + + The amount of time cryptohome spends actively performing mounts when + creating an ephemeral user data directory. Does not include any process or + async dispatch overhead. + + + + + betuls@chromium.org + cros-hwsec+uma@chromium.org + + The amount of time cryptohome spends performing the mounts for the user's + encrypted home directory. Does not include any process or async dispatch + overhead. + + + + + thomascedeno@google.com + cros-hwsec+uma@chromium.org + + The amount of time cryptohome spends reading persistent storage to populate + an encrypted USS container flatbuffer, or the time + UserSecretStash::LoadPersisted() takes to complete. The metric is emitted + during user authentication in cryptohome, when an AuthFactor must be + authenticated and UserSecretStash must read the corresponding USS file. + + + + + thomascedeno@google.com + cros-hwsec+uma@chromium.org + + The amount of time cryptohome spends writing the USS container flatbuffer to + persistent storage. This metric records the time UserSecretStash::Persist() + takes to complete. The metric is emitted when a user adds, removes or + updates a means of authentication or AuthFactor. Manipulating an AuthFactor + requires UserSecretStash to write to the corresponding USS file. + + + + + afakhry@chromium.org + + The errors resulting from interacting with the Trusted Platform Module (TPM) + device. + + + + + hcyang@google.com + cros-hwsec+uma@chromium.org + + The number of retries before successfully fetching the USS experiment config + file. This is not reported if the fetching failed (including reaching retry + limit) at last, and reports 0 when the fetching succeeds on the first + attempt. This is so that we can monitor how many retries before a success + are needed in average on a normal working device. + + + + + hcyang@google.com + cros-hwsec+uma@chromium.org + + cryptohomed fetchs the USS experiment config from gstatic when it starts. + This metric tracks the fetch and parse result. If fetch and parse is + successful, and it determines that the experiment should be + enabled/disabled, it reports Enabled/Disabled respectively. Otherwise it + reports the kind of error it encountered. + + + + + hcyang@google.com + cros-hwsec+uma@chromium.org + + cryptohomed checks the USS experiment flag when a new user is created to + decide whether a USS-structured cryptohome should be created. This metrics + reports the value of the experiment flag when it checks it. Not found means + that the experiment config fetching failed or haven't complete when the flag + is checked. + + + + + thomascedeno@google.com + cros-hwsec+uma@chromium.org + + Any given ChromeOS user has some number of vault keysets to store file name + encryption keys, depending on registered authentication factors at the time. + This histogram records how many vault keysets with {VaultKeysetMetric} a + user has. Recorded once per a successful preparation (mount) of the user + home directory by the ChromeOS cryptohome daemon. + + + + + + + + + + + + + + + + + + jadmanski@chromium.org + cros-hwsec+uma@chromium.org + + Records a status value on every attempt to migrate a vault keyset backed + authentication factor to the User Secret Stash. The status will either + indicate success or an error, with different errors suggesting the general + class of failure that occured. + + Migration of a factor is attempted whenever said factor is successfully used + to authenticate a session; usually when you login or unlock. + + + + + tnagel@chromium.org + zauri@chromium.org + cros-hwsec+uma@chromium.org + pwg-cros@google.com + + Derivation types of the Cryptohome's wrapping key. Reporting happens when + the Cryptohome is being created or when the new keys are added to the + existing Cryptohome. Concretely during a user creation, password change, + registration of a new authentication method (e.g. PIN), migration from + scrypt to TPM/GSC (in case the security chip becomes available later). + + + + + tnagel@chromium.org + zauri@chromium.org + cros-hwsec+uma@chromium.org + pwg-cros@google.com + + Derivation types of the Cryptohome's wrapping key. Reporting happens mostly + when the Cryptohome is being mounted. Concretely the reporting happens + during a user creation, registration/removal of an authentication methods + (e.g. PIN), user login, password change, migration from scrypt to TPM/GSC + (in case the security chip becomes available later). + + + + + yich@google.com + cros-hwsec+uma@chromium.org + + The type of auth block that we {Action} in cryptohome. Recorded when + cryptohome accesses the auth block. + + + + + + + + + anastasiian@chromium.org + cros-lurs@google.com + cros-hwsec+uma@chromium.org + + Records the result of credentials revocation Revoke() method, which removes + the credential label from PinWeaver. Reported when an auth factor which uses + credentials revocation is deleted. + + + + + + anastasiian@chromium.org + cros-lurs@google.com + cros-hwsec+uma@chromium.org + + Records the result of PrepareForRemoval() call of an auth factor. Reported + when an auth factor is deleted. + + + + + + thomascedeno@google.com + cros-hwsec+uma@chromium.org + + AuthSession is a DBus API for various operations dealing with credential + storage, processing, and authentication. These metrics record the time an + {AuthSessionFunction} takes to complete. Each function is parameterized by + an {AuthBlockType}, or credential backend, which significantly influences + results. The metric is emitted when the respective {AuthSessionFunction} is + requested through the DBus API. + + + + + + + + + + + + + + + + + + + + + + + + + + + thomascedeno@google.com + cros-hwsec+uma@chromium.org + + The amount of time an AuthSession lives for after authentication and + overall. This is 5 minutes by default, but can be extended through the + ExtendAuthSession API call. This metric is emitted when the AuthSession is + destroyed, by either manually invalidating through the DBus API or through + an automatic timeout. + + + + + + + + + + + + + zuan@chromium.org + cros-hwsec+uma@chromium.org + + Background context on this histogram: A CryptohomeError in this context + refers to an error that occurred in response to a dbus request to selected + cryptohomed APIs. The set of APIs with this CryptohomeError is generally + those related to authentication, and contains CryptohomeErrorInfo field in + the dbus Reply protobuf. Currently that includes methods that are called + during login. A CryptohomeError consists of a linear stack of + ErrorLocations, each one of them is an actual line in the cryptohomed + codebase which the error passed through, and could have certain attributes, + known as ErrorAction attached to them. The ErrorLocation in the bottom of + the stack could optionally have a TPM Error Code associated, if the source + of error is TPM related. + + For this histogram, for every CryptohomeError that occurs, we individually + report each individual ErrorLocation's corresponding enum value when an + error ocurred. + + This histogram is also separated into several {ErrorBucket}s. The most + standard error bucket is 'Error', which collects the errors populated in + dbus responses. Other buckets are errors we collect in some subrountines, + like migration. Migration errors are not surfaced to dbus responses, but + silently fail instead. We collect those errors in separate buckets. + + This is useful to cryptohome developers in the sense that they'll be able to + know which lines that handle error in cryptohomed has been triggered due to + an error. + + + + + + + + + + zuan@chromium.org + cros-hwsec+uma@chromium.org + + Background context on this histogram: A CryptohomeError in this context + refers to an error that occurred in response to a dbus request to selected + cryptohomed APIs. The set of APIs with this CryptohomeError is generally + those related to authentication, and contains CryptohomeErrorInfo field in + the dbus Reply protobuf. Currently that includes methods that are called + during login. A CryptohomeError consists of a linear stack of + ErrorLocations, each one of them is an actual line in the cryptohomed + codebase which the error passed through, and could have certain attributes, + known as ErrorAction attached to them. The ErrorLocation in the bottom of + the stack could optionally have a TPM Error Code associated, if the source + of error is TPM related. + + For this histogram, for every CryptohomeError, we individually report all + ErrorLocation that has the kDevCheckUnexpectedState ErrorAction associated + with it. The kDevCheckUnexpectedState ErrorAction is used by developers when + the developer believes that this error should never occur, so from a + notification standpoint, it functions similar to a DCHECK(), except it never + crashes cryptohome and handles the error in a graceful manner. + + This histogram is also separated into several {ErrorBucket}s. The most + standard error bucket is 'Error', which collects the errors populated in + dbus responses. Other buckets are errors we collect in some subrountines, + like migration. Migration errors are not surfaced to dbus responses, but + silently fail instead. We collect those errors in separate buckets. + + This is useful to cryptohome developers because they'll be alerted when any + of the situations that the developers doesn't expect to occur occurs. + + + + + + + + + + zuan@chromium.org + cros-hwsec+uma@chromium.org + + Background context on this histogram: A CryptohomeError in this context + refers to an error that occurred in response to a dbus request to selected + cryptohomed APIs. The set of APIs with this CryptohomeError is generally + those related to authentication, and contains CryptohomeErrorInfo field in + the dbus Reply protobuf. Currently that includes methods that are called + during login. A CryptohomeError consists of a linear stack of + ErrorLocations, each one of them is an actual line in the cryptohomed + codebase which the error passed through, and could have certain attributes, + known as ErrorAction attached to them. The ErrorLocation in the bottom of + the stack could optionally have a TPM Error Code associated, if the source + of error is TPM related. + + For this histogram, we take the entire CryptohomeError's linear stack of + ErrorLocation, and hash the entire stack, then we report the hash. The + original stack of ErrorLocation is logged. + + This histogram is also separated into several {ErrorBucket}s. The most + standard error bucket is 'Error', which collects the errors populated in + dbus responses. Other buckets are errors we collect in some subrountines, + like migration. Migration errors are not surfaced to dbus responses, but + silently fail instead. We collect those errors in separate buckets. + + This is useful to cryptohome developers because we're able to classify the + CryptohomeError by the content of the stack, and identify new ways the error + can occur if they do occur. + + + + + + + + + + zuan@chromium.org + cros-hwsec+uma@chromium.org + + Background context on this histogram: A CryptohomeError in this context + refers to an error that occurred in response to a dbus request to selected + cryptohomed APIs. The set of APIs with this CryptohomeError is generally + those related to authentication, and contains CryptohomeErrorInfo field in + the dbus Reply protobuf. Currently that includes methods that are called + during login. A CryptohomeError consists of a linear stack of + ErrorLocations, each one of them is an actual line in the cryptohomed + codebase which the error passed through, and could have certain attributes, + known as ErrorAction attached to them. The ErrorLocation in the bottom of + the stack could optionally have a TPM Error Code associated, if the source + of error is TPM related. + + For this histogram, for every CryptohomeError that occurred, we report the + last ErrorLocation in the stack of ErrorLocation in the CryptohomeError, if + the last ErrorLocation does not have a TPM Error Code associated with it. + + This histogram is also separated into several {ErrorBucket}s. The most + standard error bucket is 'Error', which collects the errors populated in + dbus responses. Other buckets are errors we collect in some subrountines, + like migration. Migration errors are not surfaced to dbus responses, but + silently fail instead. We collect those errors in separate buckets. + + This is useful to cryptohome developers because frequently, the last + ErrorLocation in the stack would be able to uniquely identify the error, and + this histogram doesn't involve hashing, so it would be more convenient for + the developers. + + + + + + + + + + zuan@chromium.org + cros-hwsec+uma@chromium.org + + Background context on this histogram: A CryptohomeError in this context + refers to an error that occurred in response to a dbus request to selected + cryptohomed APIs. The set of APIs with this CryptohomeError is generally + those related to authentication, and contains CryptohomeErrorInfo field in + the dbus Reply protobuf. Currently that includes methods that are called + during login. A CryptohomeError consists of a linear stack of + ErrorLocations, each one of them is an actual line in the cryptohomed + codebase which the error passed through, and could have certain attributes, + known as ErrorAction attached to them. The ErrorLocation in the bottom of + the stack could optionally have a TPM Error Code associated, if the source + of error is TPM related. + + For this histogram, for every CryptohomeError that occurred, we report the + last ErrorLocation and the second last ErrorLocation in the CryptohomeError, + if the last ErrorLocation have a TPM Error Code associated with it. The + upper and lower 16-bit value of the reported value contains the second last + ErrorLocation and the TPM Error Code, correspondingly. + + This histogram is also separated into several {ErrorBucket}s. The most + standard error bucket is 'Error', which collects the errors populated in + dbus responses. Other buckets are errors we collect in some subrountines, + like migration. Migration errors are not surfaced to dbus responses, but + silently fail instead. We collect those errors in separate buckets. + + This is useful to cryptohome developers because frequently, the last and + second last ErrorLocation in the stack would be able to uniquely identify + the error, and this histogram doesn't involve hashing, so it woul dbe more + convenient for the developers. + + + + + + + + + + zuan@chromium.org + cros-hwsec+uma@chromium.org + + Records the time duration of every dbus outgoing calls issued from the + client of Crypthome in Chrome side. + + + + + + diff --git a/histograms/metadata/custom_tabs/OWNERS b/histograms/metadata/custom_tabs/OWNERS new file mode 100644 index 000000000000..3c73151a1b8f --- /dev/null +++ b/histograms/metadata/custom_tabs/OWNERS @@ -0,0 +1,8 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +eirage@chromium.org +lizeb@chromium.org +mvanouwerkerk@chromium.org +sinansahin@google.com \ No newline at end of file diff --git a/histograms/metadata/custom_tabs/histograms.xml b/histograms/metadata/custom_tabs/histograms.xml new file mode 100644 index 000000000000..bdf4d26969c1 --- /dev/null +++ b/histograms/metadata/custom_tabs/histograms.xml @@ -0,0 +1,869 @@ + + + + + + + + + + ranj@chromium.org + yfriedman@chromium.org + + + + Records the time duration in CustomTab Activity from onStart/onResume to + onStop/onPause, if that activity is opened by Webapp/WebApk/Trusted Web + Activity. + + + + + jinsukkim@chromium.org + twellington@chromium.org + cct-team@google.com + + Android: Duration in milliseconds of a custom tab session (between onResume + and onPause). This is logged for the sessions closed automatically without + user intervention. Sessions closed by user input (back press/close button) + will not be logged. + + Note that there can be user inputs that go undetected by the logic. So the + histogram can contain false positives i.e. session closed by user but + regarded as auto-closed. + + + + + wenyufu@chromium.org + chrome-connective-tissue@google.com + + For every CCT launch, Chrome will start an async task in the background + checking the last time branding is shown for the client app. Record whether + such branding check is canceled due to timeout when it is finished. Record + for Android CCT only. + + + + + wenyufu@chromium.org + chrome-connective-tissue@google.com + + For every CCT launch, Chrome will start an async task in the background + checking the last time branding is shown for the client app. Record the + duration of this background async task when it completes, regardless whether + it is canceled. Record for Android CCT only. + + + + + wenyufu@chromium.org + chrome-connective-tissue@google.com + + For every CCT launch, Chrome will start an async task in the background + checking the last time branding is shown for the client app. When such task + completed, a branding decision will be made based on the last time branding + was shown, and the task completion time. (e.g. show a "chrome logo + + text" combination on the toolbar). See go/clank-cct-branding-dd for + detail. + + Record what branding decision will be used for the current CCT session when + the branding check is finished or canceled. Record for Android CCT only. + + + + + wenyufu@chromium.org + chrome-connective-tissue@google.com + + For every CCT launch, Chrome will start an async task in the background + checking the last time branding is shown for the client app. Recorded + whether the package name of CCT client app can be found on device when the + async task is finished. Record for Android CCT only. + + If the client app is using CCT service connection, the client app package + name will be read from CCT service; otherwise the package name will be + parsed from the Activity#getReferrer of CustomTabsActivity. + + + + + wenyufu@chromium.org + chrome-connective-tissue@google.com + + For every CCT launch, Chrome will start an async task in the background + checking the last time branding is shown for the client app. Records the + number of package names of CCT client apps that had the branding shown after + each CCT launched. Record after the branding decision is made, on Android + CCT only. + + + + + yusufo@chromium.org + + Android: AppId declared by the launching application in EXTRA_APPLICATION_ID + in a custom tab. This histogram is used as a means to count the total + instances of custom tabs created meanwhile binning them across launching + apps that have identified themselves. Starting with M84 this is is also + recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA data. + + + + + roagarwal@chromium.org + chrome-incognito@google.com + cct-team@google.com + + Android: This histogram is used as a means to count the total instances of + Incognito custom tabs created meanwhile binning them across launching first + party apps. + + The launching first party apps are inferred by the package name they + provided when creating a custom tab connection and if we can't infer via + package name then as a fallback we rely on them declaring + EXTRA_APPLICATION_ID when launching Incognito custom tabs. If both fails, + then the launch is recorded in the Others entry. + + This metric is never recorded for 3P apps. + + + + + peconn@chromium.org + + src/chrome/android/java/src/org/chromium/chrome/browser/browserservices/OWNERS + + + Records whether the CustomTab/TrustedWebActivity "navigate to landing + page" algorithm for child tabs - e.g. tabs opened via window.open() - + produces the same behaviour (closes the current tab) as the webapp + "close current tab" algorithm. Recorded when the user clicks the + CustomTab/TrustedWebActivity close button on a child tab. Starting with M84 + this is is also recorded for webapps/WebAPKs. Filter the platform for just + CCT/TWA data. + + + + + jinsukkim@chromium.org + twellington@chromium.org + cct-team@google.com + + Android: The reason a custom tab is closed. Main interest is whether a + custom tab is triggered by user inputs like back press/close button click, + or it is automatically closed by the app that opened it. + + + + + peconn@chromium.org + peter@chromium.org + cct-team@google.com + + Android: Recorded whenever user closes the custom tab by hitting the close + button or back to return to the caller app. Keeps track of the connection + status and whether the app was using a KeepAlive connection. Recorded only + for AGSA. Starting with M84 this is is also recorded for webapps/WebAPKs. + Filter the platform for just CCT/TWA data. + + + + + peconn@chromium.org + peter@chromium.org + cct-team@google.com + + Android: Recorded whenever user closes the custom tab by hitting the close + button or back to return to the caller app. Keeps track of the connection + status and whether the app was using a KeepAlive connection. Recorded for + all apps other than AGSA. Starting with M84 this is is also recorded for + webapps/WebAPKs. Filter the platform for just CCT/TWA data. + + + + + lizeb@chromium.org + cct-team@google.com + + Time between the start of a detached resource request and its completion + (failure or success). Android only. Starting with M84 this is is also + recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA data. + + + + + lizeb@chromium.org + cct-team@google.com + + Reports the final status of the detached request, including success. + Recorded once per detached resource request. Android only. Starting with M84 + this is is also recorded for webapps/WebAPKs. Filter the platform for just + CCT/TWA data. + + + + + lizeb@chromium.org + cct-team@google.com + + Number of redirects followed by a detached resource request until success or + failure. Android only. Starting with M84 this is is also recorded for + webapps/WebAPKs. Filter the platform for just CCT/TWA data. + + + + + donnd@chromium.org + chrome-connective-tissue@google.com + + Records each feature of a Chrome Custom Tab when that feature is used. A + single key feature - "Sessions" - is logged once per CCT Session, + and no other feature enum may be logged more frequently. This provides a + single large list of features and their percentage usage (one or more times + per session) right in the UMA timeline. Recorded during a CCT Session. + Android only. + + + + + + Deprecated 2022-12. Replaced by CustomTabs.HadInteractionOnClose.Form and + CustomTabs.HadInteractionOnClose.Navigation + + wenyufu@chromium.org + chrome-connective-tissue@google.com + + Whether current CCT has seen any interactions. "Interactions" + includes any form entries for text / drop down, and whether a tab can go + forward / back when it is closed. Recorded when CCT tab is closed. + + + + + katzz@google.com + chrome-connective-tissue@google.com + + This histogram records true when the current CCT has seen any form + interactions (e.g. text entry, drop down entry) throughout the session and + false if there have been no form interactions at the time of closing the + CCT. If the tab is restored the previous form interactions will be reset. + + + + + katzz@google.com + chrome-connective-tissue@google.com + + This histogram records true when the current CCT has seen form interaction + (e.g. text entry, drop down entry) on the active page, and false if there + are no interactions in the active form, or if the interaction is reset (e.g. + navigation, form submission) at the time of closing the CCT. + + + + + katzz@google.com + chrome-connective-tissue@google.com + + This histogram records true when the current CCT has interactions with the + web contents (e.g. touch, scroll, fling), and the active tab can go back / + forward and false if there have not been web contents interactions or the + tab cannot go back / forward at the time of closing the CCT. If the tab is + restored the previous form interactions will be reset. + + + + + + Deprecated 2022-12. No longer needed. + + kgrosu@google.com + chrome-connective-tissue@google.com + + Android only. Recorded during Partial Custom Tab creation, if it has not + already been logged during the existing Chrome session. Returns true if the + value for "immersive_mode_confirmations" from Settings.Secure is + set to "confirmed", false otherwise. + + This is trying to approximate what percentage of Chrome sessions that run + PCCTs have already confirmed the dialog that shows up when an app enters + immersive mode (e.g. when hiding the navigation bar buttons or status bar). + Once the user has tapped on the dialog, it should never be displayed again. + This metric will be used to measure the impact that hiding the navigation + bar buttons would have. In the scenario where we hide the nav bar buttons + only when a PCCT is being resized, this confirmation dialog shows only while + the user is dragging the PCCT window, but disappears as soon as the finger + is lifted from the screen, giving no time for the user to confirm that they + are aware that they entered immersive mode. + + + + + roagarwal@chromium.org + chrome-incognito@google.com + cct-team@google.com + + This metrics records the caller of Incognito CCTs. For Chrome features, the + feature name is recorded, for external calls, either Google App or + Non-Google App categories are recorded. The metric is recorded when an + Incognito CCT opening intent is received. + + + + + lizeb@chromium.org + + Time between the intent arrival to a Custom Tab and the first navigation + commit. Recorded for every custom tabs intent when the page has finished + loading. + + + + + lizeb@chromium.org + + Time between the intent arrival to a Custom Tab and the navigation start. + Recorded when the page has finished loading. Non-"Herb" mode. + + + + + lizeb@chromium.org + + Time between the intent arrival in Chrome and the first "page + loaded" event, if the navigation is successful. Non-"Herb" + mode. + + + + + lizeb@chromium.org + + Android only. Which flavors of mayLaunchUrl() were used before a tab launch. + Can be low and/or high confidence. Recorded at the same time as + CustomTabs.WarmupStateOnLaunch for the buckets "Session, No Warmup, + Warmup called from another UID", "Session, No Warmup" and + "Session, Warmup". + + + + + lizeb@chromium.org + cct-team@google.com + + Recorded only on Android. Whether a parallel request was requested by the + calling application, and if so its initial status. Recorded once per handled + intent, when the request is initiated. Starting with M84 this is is also + recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA data. + + + + + kgrosu@google.com + chrome-connective-tissue@google.com + + Type of the Partial Custom Tab that has been created. A new entry will be + logged each time a PCCT is opened or when the user transitions from a type + of PCCT to another (e.g. on screen rotation if the type changes from + bottom-sheet to side-sheet). Multiple entries can be logged for each PCCT + that is being displayed. + + + + + sinansahin@google.com + jinsukkim@chromium.org + chrome-connective-tissue@google.com + + Android only. Recorded when the tab controlled by the CustomTabsSession + sends a postMessage. Always emits true. + + + + + sinansahin@google.com + jinsukkim@chromium.org + chrome-connective-tissue@google.com + + Android only. Recorded when the CCT client sends a postMessage request to + the tab. Always emits true. + + + + + sinansahin@google.com + jinsukkim@chromium.org + chrome-connective-tissue@google.com + + Android only. Recorded when the CCT client calls requestPostMessageChannel + to establish a two way postMessage channel. Emits true if the request is + successful and false otherwise. A true value emitted here doesn't mean the + request cannot fail later; and a false value may be the result of multiple + things, e.g. the warmup hasn't been called. + + + + + lizeb@chromium.org + + For Custom Tabs, records whether mayLaunchUrl() has been called, and if so, + whether the call was later matched by a URL launch. + + + + + lizeb@chromium.org + + When a URL prediction succeeds, time in ms between the prediction and the + actual launch. + + + + + + Deprecated 2022-11. Replaced by CustomTabs.ResizeType2 + + kgrosu@google.com + chrome-connective-tissue@google.com + + When a Partial Custom Tab has been resized by the user log if it is an + expansion or a minimization of the tab. + + + + + kgrosu@google.com + chrome-connective-tissue@google.com + + When a bottom-sheet Partial Custom Tab has been resized by the user log if + it is an expansion or a minimization of the tab. + + + + + wenyufu@chromium.org + chrome-connective-tissue@google.com + + When a CCT session is launched, if it is launched with same URL and has the + same package name or the same taskId + referrer combo, record the duration + between previous CCT closure and current CCT launch. Recorded on CCT launch. + + A CCT can be defined as retainable if 1) it is launching with the same URL + as the most recently closed CCT; 2) it is launched from the same embedded + app as the most recently closed CCT; 3) the most recently closed CCT had + user interactions. See "CustomTabs.HadInteractionOnClose.Form" and + "CustomTabs.HadInteractionOnClose.Navigation" for information on + interactions. + + The histogram suffix identifies whether the CCT is created with the same + intent Uri data and for the same embedded app, launching CCT with the same + taskId and package name. The package name identifier to use will depend on + whether the client app is using CustomTabService. If app is using the CCT + service, the package name will be read from CCT service; otherwise the + package name is read from the referrer of CCT activity. + + This histogram is recorded for {IdentifierType} + + + + + + + + + + + kgrosu@google.com + chrome-connective-tissue@google.com + + Recorded only for Android. Record information about the state of the client + app, custom tab and system in the moment the connection between the client + and the custom tab is terminated. With this, we are trying to understand how + often a connection is terminated (the client app dies/is killed/is closed) + while a custom tab is in foreground. Also, if the EXTRA_KEEP_ALIVE is set, + we want to understand if it reduces the number of connections being + terminated. The aim is that CT_FOREGROUND and CT_FOREGROUND_KEEPALIVE are + logged as little as possible, while the rest of the states are expected ways + in which a connection may be terminated. + + *CT_FOREGROUND*/*CT_BACKGROUND* - an enum value that contains this text + reflects if the custom tab was in the foreground/background when the + connection was terminated. + + *KEEP_ALIVE* - an enum value that contains this text reflects that the + EXTRA_KEEP_ALIVE intent extra was specified and that the custom tab binds to + the service provided by it in order to increase the priority of the client + app to foreground. + + *LOW_MEMORY* - an enum value that contains this text reflects that the + system was low on memory when the connection was terminated. This does not + mean that this was indeed the reason for the connection being terminated, + but it might be a good indicator of it. + + UNKNOWN - if this is logged then there is probably a bug in the code as we + have a state we can be in that we don't currently account for. + + + + + sophey@chromium.org + src/components/send_tab_to_self/OWNERS + + Records the location of the share option in the Custom Tab. Recorded when + the share option is added while the Custom Tab is being constructed. + + + + + kgrosu@google.com + chrome-connective-tissue@google.com + + Resize type of the Partial Custom Tab that's either an expansion or + minimization. Recorded when the PCCT has been maximized/minimized by the + user. + + + + + lizeb@chromium.org + + Recorded only for Android. How a speculation was started or why it was + disallowed. This is recorded when a speculation of any kind is requested, + with either a "Speculation allowed" value, or a reason why it was + not allowed. If the speculation is allowed and is attempted to be started, + the status on start will be counted in addition: one of + "Prefetch", "Prerender", "Background Tab" or + "Prerender not started". The last case is when a prerender is + abandoned during start. Starting with M84 this is is also recorded for + webapps/WebAPKs. Filter the platform for just CCT/TWA data. + + + + + lizeb@chromium.org + + Recorded only for Android. Recorded when a speculation is requesting to swap + into a visible tab. Starting with M84 this is is also recorded for + webapps/WebAPKs. Filter the platform for just CCT/TWA data. + + + + + wenyufu@chromium.org + chrome-connective-tissue@google.com + + Recorded only for Android. Records the number of tabs closed when closing + all the tabs (e.g. via hitting the close button). Only recorded when closing + is initiated by the user, so if custom tab is killed while in the background + this will not be recorded. + + + + + wenyufu@chromium.org + chrome-connective-tissue@google.com + + Recorded only for Android. Records the number of unique tabs open in the + current custom tab session, when a new tab is opened. The count of this + histogram includes the initial tab being opened, and can be recorded more + than once in the same session. + + Do not record nor increase the count when switching into the previous tab + (e.g. create new tab, close, and land onto an existing tab). + + + + + sinansahin@google.com + chrome-connective-tissue@google.com + + Android only. Recorded when the RealtimeEngagementSignalObserver receives a + scroll-update signal after the scroll-end signal from the renderer. This is + the time it took to receive the scroll-update after the scroll-end signal in + milliseconds. + + + + + + + yusufo@chromium.org + src/base/metrics/OWNERS + + Recorded only for Android. Records on every metrics upload whether the + currently visible tab is a custom tab. The custom tab is launched by a + client app with customized UI. Some metrics like page load time will behave + differently for these tabs since it will be possible to warm up the browser + process and prepare resources for specific urls ahead of time via a service + connection. This histogram can be used to cluster these metric differently. + + As of M87, this histogram is logged on a log start, rather than log end to + tag more logs. + + + + + lizeb@chromium.org + + Recorded only on Android. Reports whether warmup() has been called when a + Custom Tabs Intent is received from an application, and if so, whether the + call could be matched with a session. Starting with M84 this is is also + recorded for webapps/WebAPKs. Filter the platform for just CCT/TWA data. + + + + + lizeb@chromium.org + + Android: When a CustomTabActivity creates its Tab, whether we use a + prerendered WebContents, a spare renderer or create a new WebContents. + + + + + peconn@chromium.org + peter@chromium.org + + Emits true if the user went to site settings from the dialog that is shown + after a Trusted Web Activity client app has had its data cleared. + + + + + peconn@chromium.org + peter@chromium.org + + Emits true if the user went to site settings from the dialog that is shown + after a Trusted Web Activity client app has been uninstalled. + + + + + peconn@chromium.org + peter@chromium.org + + Logs which kind of fallback for notification small icon was used for Trusted + Web Activity notification delegation. + + + + + mvanouwerkerk@google.com + peconn@chromium.org + + src/chrome/android/java/src/org/chromium/chrome/browser/browserservices/OWNERS + + + Records whether the extra command {command} called from + TrustedWebActivityClient resulted in success or failure. + + + + + + + + + eirage@chromium.org + peconn@chromium.org + + When a site running in Truested Web Activity is accessing geolocation, + records whether the last tracked focused Trusted Web Activity client app + enrolled location delegation. + + + + + eirage@chromium.org + peconn@chromium.org + + When a Trusted Web Activity client app's location permission is changed, + record the previous state and new stase. + + + + + eirage@chromium.org + peconn@chromium.org + + Records the boolean result (granted or not) from requesting a Trusted Web + Activity client app's location permission. + + + + + + Deprecated 2022-09. no longer needed. + + eirage@chromium.org + peconn@chromium.org + + Records an error code when we get a new location update or location error + from the Trusted Web Activity client app. Record + "LocationUpdateError.NONE" (value = 0) if there is no error and + the geoposition is valid. + + + + + mvanouwerkerk@chromium.org + peconn@chromium.org + + src/chrome/android/java/src/org/chromium/chrome/browser/browserservices/OWNERS + + + The result of a TWA notification permission request for the purpose of + notification delegation. This is logged when the + NotificationPermissionUpdater receives the result from the + TrustedWebActivityClient. + + + + + eirage@chromium.org + peconn@chromium.org + + When Trusted Web Activity launches or navigates to a site that violate the + quality criteria, records the violation type. + + + + + eirage@chromium.org + peconn@chromium.org + + When Trusted Web Activity launches or navigates to a site that violate the + quality criteria, and the CCT will be closed, records the violation type. + + This is similar to TrustedWebActivity.QualityEnforcementViolation but only + records when the violation will close the CCT. + + + + + peconn@chromium.org + peter@chromium.org + Recorded when data is shared via a Trusted Web Activity. + + + + peconn@chromium.org + peter@chromium.org + + Records whether or not a splash screen has been shown when launching a + Trusted Web Activity. + + + + + peconn@chromium.org + peter@chromium.org + + Time spent in a verified origin until navigating to an unverified one or + pausing the Trusted Web Activity. + + + + + peconn@chromium.org + peter@chromium.org + + Time spent out of verified origins until navigating back to a verified one + or pausing the Trusted Web Activity. + + + + + + diff --git a/histograms/metadata/data/DIR_METADATA b/histograms/metadata/data/DIR_METADATA new file mode 100644 index 000000000000..798c4cfec8ca --- /dev/null +++ b/histograms/metadata/data/DIR_METADATA @@ -0,0 +1,11 @@ +# Metadata information for this directory. +# +# For more information on DIR_METADATA files, see: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md +# +# For the schema of this file, see Metadata message: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto + +monorail { + component: "Internals>Network>DataProxy" +} \ No newline at end of file diff --git a/histograms/metadata/data/OWNERS b/histograms/metadata/data/OWNERS new file mode 100644 index 000000000000..194000ebd975 --- /dev/null +++ b/histograms/metadata/data/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +tbansal@chromium.org \ No newline at end of file diff --git a/histograms/metadata/data/histograms.xml b/histograms/metadata/data/histograms.xml new file mode 100644 index 000000000000..02487a413485 --- /dev/null +++ b/histograms/metadata/data/histograms.xml @@ -0,0 +1,281 @@ + + + + + + + + + + curranmax@chromium.org + tbansal@chromium.org + jianli@chromium.org + + Result of the connection state after the HTTP Probe made by connectivity + detector finishes and the connection state is updated. + + + + + + + + + curranmax@chromium.org + tbansal@chromium.org + jianli@chromium.org + + Result of the HTTP Probe made by connectivity detector. Recorded everytime + the probe to the default URL completes (in either success or failure) or + timeouts. + + + + + + + + + curranmax@chromium.org + tbansal@chromium.org + jianli@chromium.org + + Result of the HTTP Probe made by connectivity detector. Recorded everytime + the probe to the fallback URL completes (in either success or failure) or + timeouts. + + + + + + + + + curranmax@chromium.org + tbansal@chromium.org + jianli@chromium.org + src/chrome/browser/data_saver/OWNERS + + Count of times when a HTTP Probe was made by connectivity detector. + + + + + + + + + + Data reduction proxy was turned down. + + bengr@chromium.org + tbansal@chromium.org + + Counts the response bytes that did not go through the data reduction proxy + as the result of a bypass event. + + + + + + Data reduction proxy was turned down. + + rajendrant@chromium.org + tbansal@chromium.org + + Samples of user interactions with the Data Saver settings menu across all + platforms (android, IOS, desktop extension). Data is collected whenever user + toggles the ON/OFF switch in the settings menu for reducing data usage. + + For desktop, Off-to-On/On-to-Off histogram count will increment when the + data saver extension is installed/uninstalled respectively as well. + + + + + + Data reduction proxy was turned down. + + sclittle@chromium.org + src/chrome/browser/data_saver/OWNERS + + Records the result of migrating the Data Reduction Proxy away from being + configured via a proxy preference, including cases when no migration action + was taken. + + + + + + Data reduction proxy was turned down. + + rajendrant@chromium.org + tbansal@chromium.org + + Samples of the state of the data reduction proxy on Chrome startup. The + proxy will either be unavailable (the feature hasn't been rolled out to this + user yet), not enabled (the feature is available but the user doesn't have + it turned on), or enabled (the feature is enabled and turned on). + + + + + rajendrant@chromium.org + mcrouse@chromium.org + + Records the data use of Chrome user traffic by the foregound vs. background + state of the app and tab. + + + + + rajendrant@chromium.org + mcrouse@chromium.org + + The time since Chrome is in background when background data use happens. + Recorded for each byte of background data use. The source of traffic whether + from user browsing or chrome services is added as suffix to this histogram. + + + + + rajendrant@chromium.org + mcrouse@chromium.org + + The time since Chrome is in background when first background data use + happens. Recorded when first background downstream data use after Chrome is + in background. The source of traffic whether from user browsing or chrome + services is added as suffix to this histogram. + + + + + + Obsoleted. + + rajendrant@chromium.org + mcrouse@chromium.org + + Count of total bytes received by the Chrome on the network. This is recorded + when requests complete. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Count of total bytes received by the Chrome on the network, as reported by + the network delegate. This is recorded when requests complete. + + + + + + Obsoleted. + + rajendrant@chromium.org + mcrouse@chromium.org + + Count of total bytes sent by the Chrome on the network. With network + servicification this is recorded when requests complete. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Count of total bytes sent by the Chrome on the network, as reported by the + network delegate. With network servicification this is recorded when + requests complete. + + + + + rajendrant@chromium.org + mcrouse@chromium.org + + Data use of user traffic by different content types. Recorded in KB when + network bytes are received by Chrome. + + + + + rajendrant@chromium.org + mcrouse@chromium.org + + Records the downstream network data use of favicon requests. Logged when the + request is completed or redirected. Zero bytes are recorded when the request + is served from cache. + + + + + rajendrant@chromium.org + mcrouse@chromium.org + + Records the downstream network data use of favicon requests with non 200 + response code. Logged when the request is completed or redirected. + + + + + rajendrant@chromium.org + mcrouse@chromium.org + + Data use of user traffic by different core page transition types. Recorded + in KB when the URL request finishes. + + + + + rajendrant@chromium.org + mcrouse@chromium.org + + The total amount of data use of Chrome for user traffic. This traffic has + content::ResourceRequestInfo attached to its request. If the OS is not + Android all the requests are considered foreground. + + + + + + diff --git a/histograms/metadata/dev/OWNERS b/histograms/metadata/dev/OWNERS new file mode 100644 index 000000000000..309ba9efa807 --- /dev/null +++ b/histograms/metadata/dev/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +bmeurer@chromium.org +changhaohan@chromium.org +yangguo@chromium.org diff --git a/histograms/metadata/dev/histograms.xml b/histograms/metadata/dev/histograms.xml new file mode 100644 index 000000000000..15e3f4bf8df3 --- /dev/null +++ b/histograms/metadata/dev/histograms.xml @@ -0,0 +1,506 @@ + + + + + + + + + + alph@chromium.org + yangguo@chromium.org + bmeurer@chromium.org + Specified DevTools action has been taken. + + + + yangguo@chromium.org + jarin@chromium.org + kimanh@chromium.org + + Records the ways in which the Breakpoint Edit Dialog was opened. + + + + + yangguo@chromium.org + jarin@chromium.org + kimanh@chromium.org + + Records when a breakpoint with a condition was added (logpoint or + conditional breakpoint). + + + + + wolfi@chromium.org + dsv@chromium.org + yangguo@chromium.org + + Records CDP command usage originating from {ClientType}. This is recorded + whenever a CDP session receives and handles a command from a CDP client. + + + + + + + + + + + ergunsh@chromium.org + changhaohan@chromium.org + bmeurer@chromium.org + yangguo@chromium.org + Records the color conversion menu usage. + + + + ergunsh@chromium.org + changhaohan@chromium.org + bmeurer@chromium.org + yangguo@chromium.org + Records the color picker usage. + + + + changhaohan@chromium.org + mathias@chromium.org + yangguo@chromium.org + + Records how many times different CSS hint types were shown in the Styles + panel in DevTools. It's recorded when a hint icon is shown in the Styles + panel. + + + + + ergunsh@chromium.org + changhaohan@chromium.org + bmeurer@chromium.org + yangguo@chromium.org + + Records the CSS Property documentation usage and feature toggles. + + + + + yangguo@chromium.org + bmeurer@chromium.org + + Records for each developer resource load that the DevTools front-end issues + (e.g. to load a source map) several enum values encoding which load method + was used, whether a fallback was used (and why), and whether the method + succeeded or not. + + Some explanations to make sense of the enum values: + + LoadsThroughPage = LoadThroughPageViaTarget + LoadThroughPageViaFrame + + SuccessfulLoadsThroughPage = LoadsThroughPage - LoadThroughPageFailure + + LoadThroughPageFallback is the number of loads that can in principle be + loaded through the page, but had to use the fallback because either loading + through the page failed (LoadThroughPageFailure), or there was insufficient + information to dispatch the load through the page; the number of such loads + can be computed as LoadThroughPageFallback - LoadThroughPageFailure. + + The number of loads not eligible for loading through the page can be + computed as FallbackPerOverride + FallbackPerProtocol, where + FallbackPerOverride indicates loads where the DevTools user disabled loading + through the page via an override, and FallbackPerProtocol indicates loads + where DevTools could not load the resource via the page due to the + resource's protocol scheme. + + The total number of loads that used the fallback can be computed as + LoadThroughPageFallback + FallbackPerOverride + FallbackPerProtocol. Adding + SuccessfulLoadsThroughPage to that number gives the total number of loads. + + + + + yangguo@chromium.org + bmeurer@chromium.org + + Records for each developer resource load that the DevTools front-end issues + (e.g. to load a source map) one enum value that records the scheme of the + resource's URL. For HTTP and HTTPS schemes, there are two enums each: One + that signifies that the host was localhost, and one that signifies that it + wasn't, i.e. to get the total number of resource loads using a HTTP scheme + one must add the numbers of SchemeHttp and SchemeHttpLocalhost. + + The value SchemeUnknown signifies that parsing the scheme from the URL + failed (note that at the point the enum is recorded, only absolute URLs + arrive). + + + + + yangguo@chromium.org + changhao@chromium.org + + Fired when a devtools experiment is disabled from the experiments tab. + + + + + yangguo@chromium.org + changhao@chromium.org + + Fired when a devtools experiment is enabled from the experiments tab. + + + + + yangguo@chromium.org + changhao@chromium.org + + Fires for each experiment that is enabled at the time of Devtools Launch. + + + + + yangguo@chromium.org + jarin@chromium.org + kimanh@chromium.org + Records the inline script types that are parsed. + + + + yangguo@chromium.org + bmeurer@chromium.org + + Time to load Developer Tools when user clicks Inspect Element in the context + menu. + + + + + yangguo@chromium.org + dsv@chromium.org + + Records the issue type when an issue is created for the Issues Panel. + + + + + yangguo@chromium.org + dsv@chromium.org + + Records which type of issue is expanded in the issues panel. + + + + + yangguo@chromium.org + dsv@chromium.org + + Records which UI element is being used to open the Issues Panel. + + + + + yangguo@chromium.org + dsv@chromium.org + + Records which resource from what issue category is opened in the issue + panel. + + + + + yangguo@chromium.org + jalyn@microsoft.com + leo.lee@microsoft.com + + Recorded when the user changes which keyboard shortcut presets they are + using in the DevTools. + + + + + yangguo@chromium.org + jalyn@microsoft.com + leo.lee@microsoft.com + + Recorded when a DevTools keyboard shortcut has been processed and + successfully executed its action. + + + + + bmeurer@chromium.org + szuend@chromium.org + yangguo@chromium.org + + The actual display language used for the DevTools UI. Logged once per + DevTools session when DevTools is booted up. + + + + + + + yangguo@chromium.org + bmeurer@chromium.org + + Measures the time until a given tool is interactive during a cold start of + DevTools. + + + + + asraine@chromium.org + paulirish@chromium.org + cjamcl@chromium.org + Records which Lighthouse mode was used to audit the page. + + + + yangguo@chromium.org + kimanh@chromium.org + + Records the ways in which the Memory Inspector panel was opened. + + + + + yangguo@chromium.org + kimanh@chromium.org + + Records the inspection target via which the Memory Inspector was opened. + + + + + yangguo@chromium.org + edgedevtools@microsoft.com + + Records when certain items of the Manifest dropdown submenu in the + Application Tool are selected. + + + + + dsv@chromium.org + caseq@chromium.org + + Records the invocation of actions like /json/new on the HTTP server exposed + with running with --remote-debugging-port. + + + + + yangguo@chromium.org + bmeurer@chromium.org + + Records the media types of files opened in the DevTools Network panel + response preview. + + + + + changhaohan@chromium.org + yangguo@chromium.org + mathias@chromium.org + + Recorded when a particular action was taken to launch DevTools. + + + + + yangguo@chromium.org + bmeurer@chromium.org + + Specified DevTools panel was closed. Fires immediately after closing a panel + using the "x" button in the panel title. + + + + + yangguo@chromium.org + bmeurer@chromium.org + Specified DevTools panel was shown. + + + + jrandolf@chromium.org + mathias@chromium.org + yangguo@chromium.org + Recorded when assertions are used/edited + + + + alexrudenko@chromium.org + mathias@chromium.org + yangguo@chromium.org + + Recorded when the code view for a recording was toggled in Recorder panel. + + + + + alexrudenko@chromium.org + mathias@chromium.org + yangguo@chromium.org + + Recorded when user copies a recording or step to clipboard in Recorder + panel. + + + + + alexrudenko@chromium.org + mathias@chromium.org + yangguo@chromium.org + Recorded when a recording is being edited by the user. + + + + alexrudenko@chromium.org + mathias@chromium.org + yangguo@chromium.org + Recorded when a recording is exported. + + + + alexrudenko@chromium.org + mathias@chromium.org + yangguo@chromium.org + Recorded when a replay is over. + + + + ergunsh@chromium.org + alexrudenko@chromium.org + mathias@chromium.org + yangguo@chromium.org + + Recorded when a recording is being replayed. Used to count number of times + replay started with which speed. + + + + + alexrudenko@chromium.org + mathias@chromium.org + yangguo@chromium.org + Recorded when a recording is being replayed. + + + + alexrudenko@chromium.org + mathias@chromium.org + yangguo@chromium.org + + Recorded when a recording is started or finished in the Recorder panel. + + + + + changhaohan@chromium.org + yangguo@chromium.org + bmeurer@chromium.org + Specified DevTools sidebar pane was shown. + + + + yangguo@chromium.org + bmeurer@chromium.org + + Records the media types of files opened in the DevTools Sources panel. + + + + + changhaohan@chromium.org + bmeurer@chromium.org + yangguo@chromium.org + Recorded when certain style text is copied in DevTools. + + + + bmeurer@chromium.org + szuend@chromium.org + yangguo@chromium.org + + Records whether syncing DevTools settings via Chrome Sync is enabled or why + it's disabled. Logged once per DevTools session when DevTools is booted up. + + + + + yangguo@chromium.org + jarin@chromium.org + kimanh@chromium.org + + Records the inline script types for which we show the VM script instead of + the HTML resource. + + + + + + diff --git a/histograms/metadata/diagnostics/OWNERS b/histograms/metadata/diagnostics/OWNERS new file mode 100644 index 000000000000..aeaba5040626 --- /dev/null +++ b/histograms/metadata/diagnostics/OWNERS @@ -0,0 +1,9 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +# Primary reviewers +jimmyxgong@chromium.org +gavinwill@chromium.org +# Secondary reviewers +zentaro@chromium.org \ No newline at end of file diff --git a/histograms/metadata/diagnostics/histograms.xml b/histograms/metadata/diagnostics/histograms.xml new file mode 100644 index 000000000000..4d1541dbb9d4 --- /dev/null +++ b/histograms/metadata/diagnostics/histograms.xml @@ -0,0 +1,430 @@ + + + + + + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of the DiskSpace recovery step that runs + on recovery startups. The recovery step attempts to guarantee the DiskSpace + test, which checks that the disk space in the volume where the user data + directory normally lives is not dangerously low, would pass on the next + startup. + + + + + Please list the metric's owners. Add more owner tags as needed. + + TBD - Not run automatically yet, so this is just a placeholder for future + metrics collection. Any samples collected here represent users running + diagnostics manually. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of the JSONBookmarks recovery step that + runs on recovery startups. The recovery step attempts to guarantee the + JSONBookmarks test, which makes sure that the JSON-encoded Bookmarks file is + properly formed, would pass on the next startup. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of the JSONLocalState recovery step that + runs on recovery startups. The recovery step attempts to guarantee the + JSONLocalState test, which makes sure that the JSON-encoded Local State file + is properly formed, would pass on the next startup. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of the JSONPreferences recovery step + that runs on recovery startups. The recovery step attempts to guarantee the + JSONPreferences test, which makes sure that the JSON-encoded Preferences + file is properly formed, would pass on the next startup. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of the PathDictionaries recovery step + that runs on recovery startups. The recovery step attempts to guarantee the + PathDictionaries test, which makes sure that the path to the Dictionaries + directory exists and has the right permissions, would pass on the next + startup. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of the PathLocalState recovery step that + runs on recovery startups. The recovery step attempts to guarantee the + PathLocalState test, which makes sure that the path to the Local State file + exists and has the right permissions, would pass on the next startup. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of the PathResources recovery step that + runs on recovery startups. The recovery step attempts to guarantee the + PathResources test, which makes sure that the path to the Resources + directory exists and has the right permissions, would pass on the next + startup. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of the PathUserData recovery step that + runs on recovery startups. The recovery step attempts to guarantee the + PathUserData test, which makes sure that the path to the User Data directory + exists and has the right permissions, would pass on the next startup. + + + + + shess@chromium.org + + Shows the success and failure rates of the SQLiteIntegrityCookie recovery + step that runs on recovery startups. The recovery step attempts to guarantee + the SQLiteIntegrityCookie test, which checks the integrity of the Cookie + database, would pass on the next startup. + + + + + shess@chromium.org + + Shows the success and failure rates of the SQLiteIntegrityDatabaseTracker + recovery step that runs on recovery startups. The recovery step attempts to + guarantee the SQLiteIntegrityDatabaseTracker test, which checks the + integrity of the Database Tracker database, would pass on the next startup. + + + + + shess@chromium.org + + Shows the success and failure rates of the SQLiteIntegrityFavicons recovery + step that runs on recovery startups. The recovery step attempts to guarantee + the SQLiteIntegrityFavicons test, which checks the integrity of the Favicons + database, would pass on the next startup. + + + + + shess@chromium.org + + Shows the success and failure rates of the SQLiteIntegrityHistory recovery + step that runs on recovery startups. The recovery step attempts to guarantee + the SQLiteIntegrityHistory test, which checks the integrity of the History + database, would pass on the next startup. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of the SQLiteIntegrityNSSCert recovery + step that runs on recovery startups. The recovery step attempts to guarantee + the SQLiteIntegrityNSSCert test, which checks the integrity of the NSS + Certificate database, would pass on the next startup. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of the SQLiteIntegrityNSSKey recovery + step that runs on recovery startups. The recovery step attempts to guarantee + the SQLiteIntegrityNSSKey test, which checks the integrity of the NSS Key + database, would pass on the next startup. + + + + + shess@chromium.org + + Shows the success and failure rates of the SQLiteIntegrityTopSites recovery + step that runs on recovery startups. The recovery step attempts to guarantee + the SQLiteIntegrityTopSites test, which checks the integrity of the TopSites + database, would pass on the next startup. + + + + + shess@chromium.org + + Shows the success and failure rates of the SQLiteIntegrityWebData recovery + step that runs on recovery startups. The recovery step attempts to guarantee + the SQLiteIntegrityWebData test, which checks the integrity of the Web Data + database, would pass on the next startup. + + + + + Please list the metric's owners. Add more owner tags as needed. + + TBD - Not run automatically yet, so this is just a placeholder for future + metrics collection. Any samples collected here represent users running + diagnostics manually. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Count of the number of times diagnostics recovery is invoked or not, and how + it was invoked. A sample is added to this histogram once for each startup of + Chrome. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of diagnostics for the DiskSpace test + that runs on recovery startups. The DiskSpace test checks that the disk + space in the volume where the user data directory normally lives is not + dangerously low. + + + + + Please list the metric's owners. Add more owner tags as needed. + + TBD - Not run automatically yet, so this is just a placeholder for future + metrics collection. Any samples collected here represent users running + diagnostics manually. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of diagnostics for the JSONBookmarks + test that runs on recovery startups. The JSONBookmarks test checks to make + sure that the JSON encoded bookmarks file is properly formed. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of diagnostics for the JSONLocalState + test that runs on recovery startups. The JSONLocalState test checks to make + sure that the JSON encoded Local State file is properly formed. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of diagnostics for the JSONPreferences + test that runs on recovery startups. The JSONPreferences test checks to make + sure that the Preferences file is properly formed. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of diagnostics for the PathDictionaries + test that runs on recovery startups. The PathDictionaries test checks makes + sure that the path to the Dictionaries folder exists and has the right + permissions. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of diagnostics for the PathLocalState + test that runs on recovery startups. The PathLocalState test checks makes + sure that the path to the Local State folder exists and has the right + permissions. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of diagnostics for the PathResources + test that runs on recovery startups. The PathResources test checks makes + sure that the path to the Resources folder exists and has the right + permissions. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of diagnostics for the PathUserData test + that runs on recovery startups. The PathUserData test checks makes sure that + the path to the User Data folder exists and has the right permissions. + + + + + shess@chromium.org + + Shows the success and failure rates of the SQLiteIntegrityCookie test that + runs on recovery startups. The test checks the integrity of the Cookie + database. + + + + + shess@chromium.org + + Shows the success and failure rates of the SQLiteIntegrityDatabaseTracker + test that runs on recovery startups. The test checks the integrity of the + Database Tracker database. + + + + + shess@chromium.org + + Shows the success and failure rates of the SQLiteIntegrityFavicons test that + runs on recovery startups. The test checks the integrity of the Favicons + database. + + + + + shess@chromium.org + + Shows the success and failure rates of the SQLiteIntegrityHistory test that + runs on recovery startups. The test checks the integrity of the History + database. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of the SQLiteIntegrityNSSCert test that + runs on recovery startups. The test checks the integrity of the NSS + Certificate database. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Shows the success and failure rates of the SQLiteIntegrityNSSKey test that + runs on recovery startups. The test checks the integrity of the NSS Key + database. + + + + + shess@chromium.org + + Shows the success and failure rates of the SQLiteIntegrityTopSites test that + runs on recovery startups. The test checks the integrity of the TopSites + database. + + + + + shess@chromium.org + + Shows the success and failure rates of the SQLiteIntegrityWebData test that + runs on recovery startups. The test checks the integrity of the Web Data + database. + + + + + Please list the metric's owners. Add more owner tags as needed. + + TBD - Not run automatically yet, so this is just a placeholder for future + metrics collection. Any samples collected here represent users running + diagnostics manually. + + + + + shess@chromium.org + + Histogram comparing the various types of diagnostic test failures when + diagnostic tests are run. Note that some types of test failures cause the + rest of the tests to be skipped. + + + + + + diff --git a/histograms/metadata/direct/OWNERS b/histograms/metadata/direct/OWNERS new file mode 100644 index 000000000000..84cc738f940d --- /dev/null +++ b/histograms/metadata/direct/OWNERS @@ -0,0 +1,4 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. diff --git a/histograms/metadata/direct/histograms.xml b/histograms/metadata/direct/histograms.xml new file mode 100644 index 000000000000..4a568d5c8059 --- /dev/null +++ b/histograms/metadata/direct/histograms.xml @@ -0,0 +1,300 @@ + + + + + + + + + + drott@chromium.org + etienneb@chromium.org + + The number of iterations that was required to initialize Direct Write. This + metric is recorded by the browser process at startup. The value -1 is + reported when the initialization failed. The fallback path using GDI is used + instead of DWrite. + + + + + etienneb@chromium.org + gab@chromium.org + + Time it takes to initialize GFX fonts. This metric is taken by the browser + process at startup. It includes the time required to initialize Direct + Write. This metric is recorded only on Windows. + + + + + drott@chromium.org + layout-dev@chromium.org + Records the error returned from CreateFontFace. + + + + drott@chromium.org + layout-dev@chromium.org + + When scanning fonts for meta data as part of local matching, record the + ratio of empty per-family results to all per-family results as percentage. + Recorded in DWriteFontTableBuilder at the time of finishing scanning the + font files for their name meta information. A value of 100% means, all + per-family scan tasks came back empty. A value of 0% means, all per-family + tasks yielded at least one font file. Used for diagnosing + https://crbug.com/1009402. + + + + + drott@chromium.org + layout-dev@chromium.org + Records how many font families are in the fallback cache. + + + + drott@chromium.org + layout-dev@chromium.org + + Measures the effectiveness of the font fallback proxy. This tracks if we + were able to find a suitable font to render the character, and whether an + IPC was necessary. + + + + + drott@chromium.org + layout-dev@chromium.org + + The number of font families as seen by the font proxy in the renderer. + + + + + drott@chromium.org + layout-dev@chromium.org + + Number of font families on the system as retrieved from DWrite API (usually + less than to number of font files reported in + DirectWrite.Fonts.Proxy.NumFontFiles as a family can contain multiple font + files). Recorded in DWriteFontTableBuilder at the time of starting scanning + the font files for their name meta information. Used for diagnosing + https://crbug.com/1009402. + + + + + drott@chromium.org + layout-dev@chromium.org + + The errors encountered by the DirectWrite font proxy while loading fonts. + + + + + drott@chromium.org + layout-dev@chromium.org + Records the error returned from GetSystemFontCollection. + + + + drott@chromium.org + layout-dev@chromium.org + + Indexing speed in font files per second while building the local font unique + name lookup table. Recorded after building the lookup table in + DWriteFontLookupTableBuilder. + + + + + drott@chromium.org + layout-dev@chromium.org + + The number of last resort fallback fonts found on the system as seen by the + browser. + + + + + drott@chromium.org + layout-dev@chromium.org + + The number of font files found for a last resort fallback font. + + + + + drott@chromium.org + layout-dev@chromium.org + + The codepath that was used to load a font family. This is logged in the + browser every time a renderer attempts to load a font family, once per font + file. + + + + + drott@chromium.org + layout-dev@chromium.org + + The outcome of attempting to load a font family in the renderer (success vs + failure and number of families). This is logged in the renderer once per + family that is loaded. + + + + + drott@chromium.org + layout-dev@chromium.org + + The time taken to load a font family, excluding glyph data. This is logged + in the renderer once per family that is loaded. + + + + + drott@chromium.org + layout-dev@chromium.org + + Time it takes to build the font unique name lookup table. Recorded at the + initial build of this table, after which it is kept for the lifetime of the + browser process. The start time is recorded when the actual task of starting + to scan fonts has started. + + + + + drott@chromium.org + layout-dev@chromium.org + + Measures whether the font table lookup structure was loaded from disk cache + or had to be rebuilt due to changes in installed fonts, DWrite version or + Chrome version. Recorded when DWriteFontLookupTableBuilder starts to prepare + the lookup table. + + + + + drott@chromium.org + layout-dev@chromium.org + + Measures whether the font table lookup structure was successfully persisted + to disk after having been constructed. Recorded when + DWriteFontLookupTableBuilder finalizes the lookup table. + + + + + drott@chromium.org + layout-dev@chromium.org + + Time it takes from scheduling the preparation of the font lookup table until + it is ready, independent of whether it is read from cache or built by + scanning fonts. Start time is recorded when the call is made to prepare the + table. Duration and this histogram's value is recorded either when it is + done reading from cache or when the table construction is ready. This metric + includes a scheduling delay from when the task to read from cache or build + is scheduled, untils its execution, while + DirectWrite.Fonts.Proxy.LookupTableBuildTime does not include this + scheduling delay and measures only from when the first font scanning task is + started. + + + + + drott@chromium.org + layout-dev@chromium.org + + Size of the font unique name lookup table in kilobytes. Recorded at the + initial build of this table, after which it is kept for the lifetime of the + browser process. + + + + + drott@chromium.org + layout-dev@chromium.org + + Errors, if any, encountered by the DirectWrite font proxy message filter. + + + + + drott@chromium.org + layout-dev@chromium.org + + When scanning fonts for meta data as part of local matching, record the most + frequent failure of why no meta data was gathered for a font family. + Recorded in DWriteFontTableBuilder at the time of finishing scanning the + font files for their name meta information. Values are Windows HRESULT error + codes, including custom values for implementation specific failure cases. + Used for diagnosing https://crbug.com/1009402. + + + + + drott@chromium.org + layout-dev@chromium.org + + Number of font files which were encountered during scanning for locally + installed font and building the unique font name lookup table. Recorded in + DWriteFontTableBuilder while after the building the lookup table. Kept for + the lifetime of the browser process after that. + + + + + drott@chromium.org + layout-dev@chromium.org + + Shows whether the font lookup table construction timed out. Recorded when + DWriteFontLookupTableBuilder finalizes the lookup table. + + + + + + diff --git a/histograms/metadata/disk/histograms.xml b/histograms/metadata/disk/histograms.xml new file mode 100644 index 000000000000..c82f4da54e8c --- /dev/null +++ b/histograms/metadata/disk/histograms.xml @@ -0,0 +1,1731 @@ + + + + + + + + + + rvargas@chromium.org + + The time for an async IO operation to complete. This covers content Writes + and Reads, measured from the cache thread. + + + + + rvargas@chromium.org + The synchronous portion of an async read. + + + + rvargas@chromium.org + The synchronous portion of an async write. + + + + rvargas@chromium.org + + The average number of open disk cache entries at any given time. + + + + + rvargas@chromium.org + The total size of all the internal buffers. + + + + rvargas@chromium.org + + The number of KB accessed from the cache in a 30 seconds interval. + + + + + rvargas@chromium.org + The time spent creating a new entry on the cache. + + + + rvargas@chromium.org + The age of the last entry on the queue of deleted entries. + + + + rvargas@chromium.org + + The size of the data portion of a given entry by the time it is deleted. + + + + + rvargas@chromium.org + The percentage of the deleted entries. + + + + rvargas@chromium.org + Number of external files that we were unable to delete. + + + + rvargas@chromium.org + + The size of the HTML headers of a given entry by the time it is deleted. + + + + + rvargas@chromium.org + The number of entries currently stored on the cache. + + + + rvargas@chromium.org + + The number of entries currently stored on the cache, after it is full. + + + + + rvargas@chromium.org + + The number of entries accessed by the cache in a 30 seconds interval. + + + + + rvargas@chromium.org + + The average size of an entry. It is only measured after the cache is full, + so evictions are taking place. + + + + + wfh@chromium.org + src/net/disk_cache/OWNERS + + Critical error ids. Reported each time the disk backed blockfile cache + encounters an error or a critical error. Warning: this histogram was expired + from Oct 2020 to Sep 2021; data may be missing. + + + + + rvargas@chromium.org + + The age of the cache (in hours) by the time we reach the size limit. + + + + + rvargas@chromium.org + + The number of hours required to fill up the cache, as measured by the cache + being running. + + + + + rvargas@chromium.org + + The average number of KB accessed from the cache in a 30 seconds interval, + by the time we reach the cache size limit. + + + + + rvargas@chromium.org + + The average number of entries accessed by the cache in a 30 seconds + interval, by the time we reach the cache size limit. + + + + + rvargas@chromium.org + + The average size of an entry by the time we reach the cache size limit. + + + + + rvargas@chromium.org + + The percentage of the entries that are highly reused, by the time we fill up + the cache. + + + + + rvargas@chromium.org + + The hit ratio by the time we fill up the cache. Of course, we started with + an empty cache. + + + + + rvargas@chromium.org + + The percentage of the cache used by entries of more than 512 KB, by the time + we reach the cache size limit. + + + + + rvargas@chromium.org + + The percentage of the entries that have been reused a few times, by the time + we fill up the cache. + + + + + rvargas@chromium.org + + The percentage of the entries that have never been reused, by the time we + fill up the cache. + + + + + rvargas@chromium.org + + The percentage of re-created deleted entries versus entries that we really + don't know about. + + + + + rvargas@chromium.org + The time spent reading the LRU-related portion of an entry. + + + + rvargas@chromium.org + + The age of the last entry on the queue of highly used entries. + + + + + rvargas@chromium.org + The percentage of the entries that are highly reused. + + + + rvargas@chromium.org + + The current hit ratio. It is only measured after the cache is full, so + evictions are taking place, and data from the fill-up period is not + considered. + + + + + rvargas@chromium.org + + The hit ratio for each size. To calculate the hit ratio of caches of a + certain size, take the ratio of a bin in this histogram to the same bin in + DiskCache.0.Size2. + + + + + rvargas@chromium.org + + The hit ratio for each total time. To calculate the hit ratio of caches of a + certain age, take the ratio of a bin in this histogram to the same bin in + DiskCache.0.TotalTime. + + + + + rvargas@chromium.org + + The hit ratio for each use time. To calculate the hit ratio of caches of a + certain age, take the ratio of a bin in this histogram to the same bin in + DiskCache.0.UseTime. + + + + + rvargas@chromium.org + + Percentage of the index table that is currently used (the cache is full). + + + + + rvargas@chromium.org + The size of each key. + + + + rvargas@chromium.org + + Percentage of the cache used by entries of more than 512 KB. It is only + measured after the cache is full, so evictions are taking place. + + + + + rvargas@chromium.org + + The age of the last entry on the queue of entries reused a few times. + + + + + rvargas@chromium.org + + The percentage of the entries that have been reused a few times. + + + + + rvargas@chromium.org + + The maximum number of simultaneously open disk cache entries. + + + + + rvargas@chromium.org + The maximum size of the cache. + + + + rvargas@chromium.org + + The age of the next entry to be evicted that has never been reused. + + + + + rvargas@chromium.org + The percentage of the entries that have never been reused. + + + + rvargas@chromium.org + + The number of open entry references at any given moment. + + Closely related to AverageOpenEntries, but this one is not the average per + client but instead a direct histogram updated every 30 secs. + + + + + rvargas@chromium.org + + The time spent opening an entry already on the cache (cache hit). + + + + + rvargas@chromium.org + The number of pending IO operations (Async IO). + + + + rvargas@chromium.org + The time spent reading from an entry. + + + + rvargas@chromium.org + + The percentage of re-created deleted entries versus entries that we really + don't know about. + + + + + rvargas@chromium.org + The reason for not sending a full report. + + + + rvargas@chromium.org + The current size of the cache. + + + + rvargas@chromium.org + The time spent reading from an sparse entry. + + + + rvargas@chromium.org + The time spent writing to an sparse entry. + + + + rvargas@chromium.org + The time spent deleting the cache. (Clear browsing data). + + + + rvargas@chromium.org + The time spent deleting the cache. (Clear browsing data). + + + + rvargas@chromium.org + + The number of times that this cache has been deleted by the user. + + + + + rvargas@chromium.org + + The number of times that the user has deleted new entries from this cache. + + + + + rvargas@chromium.org + The number of times that ga.js was evicted. + + + + rvargas@chromium.org + + The number of fatal errors detected for this cache (so we delete + everything). + + + + + rvargas@chromium.org + + The total time it takes to perform a payload IO operation (AKA, directed to + an entry). This is measured from the IO thread. + + + + + jam@chromium.org + swarm-team@google.com + + The total time it takes to perform a read IO operation. This is emitted at + each cache read, and measures from the IO thread to background thread, + waiting for the disk read, and back to the IO thread. + + + + + jam@chromium.org + swarm-team@google.com + + The total time it takes to perform a write IO operation. This is emitted at + each cache read, and measures from the IO thread to background thread, + optionally waiting for the disk write, and back to the IO thread. + + + + + rvargas@chromium.org + Number of hours that the cache has been used. + + + + rvargas@chromium.org + + The number of hours that the cache has been in use, for users that still + have available space. + + + + + rvargas@chromium.org + The time spent removing deleted entries from the cache. + + + + rvargas@chromium.org + The time spent removing old entries from the cache. + + + + rvargas@chromium.org + The time spent removing old entries from the cache. + + + + rvargas@chromium.org + + The time spent evicting entries from the cache (moving them to the deleted + list). + + + + + rvargas@chromium.org + + The time that an entry lives in the cache without being accessed until it is + finally purged. + + + + + rvargas@chromium.org + + The number of entries that are deleted on a single iteration. + + + + + rvargas@chromium.org + + The number of entries that are evicted on a single iteration. + + + + + rvargas@chromium.org + + The number of entries that are evicted (moved to the deleted list) on a + single iteration. + + + + + rvargas@chromium.org + The number of entries that are evicted per hour of use. + + + + rvargas@chromium.org + + The time spent moving an entry to the front of the LRU list. + + + + + rvargas@chromium.org + + The percentage of the allowed disk space that we are currently using. + + + + + rvargas@chromium.org + + Number of hours that the cache has been used since last week. + + + + + rvargas@chromium.org + The time spent writing to an entry. + + + + rvargas@chromium.org + + The time for an async IO operation to complete. This covers content Writes + and Reads, measured from the cache thread. Media-specific cache. + + + + + rvargas@chromium.org + + The synchronous portion of an async read. Media-specific cache. + + + + + rvargas@chromium.org + + The synchronous portion of an async write. Media-specific cache. + + + + + rvargas@chromium.org + + The average number of open disk cache entries at any given time. + Media-specific cache. + + + + + rvargas@chromium.org + + The total size of all the internal buffers. Media-specific cache. + + + + + rvargas@chromium.org + + The number of KB accessed from the cache in a 30 seconds interval. + Media-specific cache. + + + + + rvargas@chromium.org + + The time spent creating a new entry on the cache. Media-specific cache. + + + + + rvargas@chromium.org + + The size of the data portion of a given entry by the time it is deleted. + Media-specific cache. + + + + + rvargas@chromium.org + + Number of external files that we were unable to delete. Media-specific + cache. + + + + + rvargas@chromium.org + + The size of the HTML headers of a given entry by the time it is deleted. + Media-specific cache. + + + + + rvargas@chromium.org + + The number of entries currently stored on the cache. Media-specific cache. + + + + + rvargas@chromium.org + + The number of entries currently stored on the cache, after it is full. + Media-specific cache. + + + + + rvargas@chromium.org + + The number of entries accessed by the cache in a 30 seconds interval. + Media-specific cache. + + + + + rvargas@chromium.org + + The average size of an entry. It is only measured after the cache is full, + so evictions are taking place. Media-specific cache. + + + + + rvargas@chromium.org + Critical error ids. Media-specific cache. + + + + rvargas@chromium.org + + The age of the cache (in hours) by the time we reach the size limit. + Media-specific cache. + + + + + rvargas@chromium.org + + The number of hours required to fill up the cache, as measured by the cache + being running. Media-specific cache. + + + + + rvargas@chromium.org + + The average number of KB accessed from the cache in a 30 seconds interval, + by the time we reach the cache size limit. Media-specific cache. + + + + + rvargas@chromium.org + + The average number of entries accessed by the cache in a 30 seconds + interval, by the time we reach the cache size limit. Media-specific cache. + + + + + rvargas@chromium.org + + The average size of an entry by the time we reach the cache size limit. + Media-specific cache. + + + + + rvargas@chromium.org + + The hit ratio by the time we fill up the cache. Of course, we started with + an empty cache. Media-specific cache. + + + + + rvargas@chromium.org + + The percentage of the cache used by entries of more than 512 KB, by the time + we reach the cache size limit. Media-specific cache. + + + + + rvargas@chromium.org + + The time spent reading the LRU-related portion of an entry. Media-specific + cache. + + + + + rvargas@chromium.org + + The current hit ratio. It is only measured after the cache is full, so + evictions are taking place, and data from the fill-up period is not + considered. Media-specific cache. + + + + + rvargas@chromium.org + + The hit ratio for each size. To calculate the hit ratio of caches of a + certain size, take the ratio of a bin in this histogram to the same bin in + DiskCache.2.Size2. Media-specific cache. + + + + + rvargas@chromium.org + + The hit ratio for each total time. To calculate the hit ratio of caches of a + certain age, take the ratio of a bin in this histogram to the same bin in + DiskCache.2.TotalTime. Media-specific cache. + + + + + rvargas@chromium.org + + The hit ratio for each use time. To calculate the hit ratio of caches of a + certain age, take the ratio of a bin in this histogram to the same bin in + DiskCache.2.UseTime. Media-specific cache. + + + + + rvargas@chromium.org + + Percentage of the index table that is currently used (the cache is full). + Media-specific cache. + + + + + rvargas@chromium.org + The size of each key. Media-specific cache. + + + + rvargas@chromium.org + + Percentage of the cache used by entries of more than 512 KB. It is only + measured after the cache is full, so evictions are taking place. + Media-specific cache. + + + + + rvargas@chromium.org + + The maximum number of simultaneously open disk cache entries. Media-specific + cache. + + + + + rvargas@chromium.org + The maximum size of the cache. Media-specific cache. + + + + rvargas@chromium.org + + The number of open entry references at any given moment. Closely related to + AverageOpenEntries, but this one is not the average per client but instead a + direct histogram updated every 30 secs. Media-specific cache. + + + + + rvargas@chromium.org + + The time spent opening an entry already on the cache (cache hit). + Media-specific cache. + + + + + rvargas@chromium.org + + The number of pending IO operations (Async IO). Media-specific cache. + + + + + rvargas@chromium.org + The time spent reading from an entry. Media-specific cache. + + + + rvargas@chromium.org + + The percentage of re-created deleted entries versus entries that we really + don't know about. Media-specific cache. + + + + + rvargas@chromium.org + + The reason for not sending a full report. Media-specific cache. + + + + + rvargas@chromium.org + The current size of the cache. Media-specific cache. + + + + rvargas@chromium.org + + The time spent deleting the cache. (Clear browsing data). Media-specific + cache. + + + + + rvargas@chromium.org + + The time spent deleting the cache. (Clear browsing data). Media-specific + cache. + + + + + rvargas@chromium.org + + The total time it takes to perform a payload IO operation (AKA, directed to + an entry). This is measured from the IO thread. Media-specific cache. + + + + + rvargas@chromium.org + + Number of hours that the cache has been used. Media-specific cache. + + + + + rvargas@chromium.org + + The time spent removing deleted entries from the cache. Media-specific + cache. + + + + + rvargas@chromium.org + + The time spent removing old entries from the cache. Media-specific cache. + + + + + rvargas@chromium.org + + The time spent removing old entries from the cache. Media-specific cache. + + + + + rvargas@chromium.org + + The time spent evicting entries from the cache (moving them to the deleted + list). Media-specific cache. + + + + + rvargas@chromium.org + + The time that an entry lives in the cache without being accessed until it is + finally purged. Media-specific cache. + + + + + rvargas@chromium.org + + The number of entries that are deleted on a single iteration. Media-specific + cache. + + + + + rvargas@chromium.org + + The number of entries that are evicted on a single iteration. Media-specific + cache. + + + + + rvargas@chromium.org + + The number of entries that are evicted (moved to the deleted list) on a + single iteration. Media-specific cache. + + + + + rvargas@chromium.org + + The number of entries that are evicted per hour of use. Media-specific + cache. + + + + + rvargas@chromium.org + + The time spent moving an entry to the front of the LRU list. Media-specific + cache. + + + + + rvargas@chromium.org + + The percentage of the allowed disk space that we are currently using. + Media-specific cache. + + + + + rvargas@chromium.org + + Number of hours that the cache has been used since last week. Media-specific + cache. + + + + + rvargas@chromium.org + The time spent writing to an entry. Media-specific cache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The time for an async IO operation to complete. This covers content Writes + and Reads, measured from the cache thread. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + The synchronous portion of an async read. AppCache. + + + + Please list the metric's owners. Add more owner tags as needed. + The synchronous portion of an async write. AppCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The average number of open disk cache entries at any given time. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + The total size of all the internal buffers. AppCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of KB accessed from the cache in a 30 seconds interval. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + The time spent creating a new entry on the cache. AppCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The size of the data portion of a given entry by the time it is deleted. + AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Number of external files that we were unable to delete. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of entries currently stored on the cache. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of entries currently stored on the cache, after it is full. + AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of entries accessed by the cache in a 30 seconds interval. + AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The average size of an entry. It is only measured after the cache is full, + so evictions are taking place. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + Critical error ids. AppCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The age of the cache (in hours) by the time we reach the size limit. + AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of hours required to fill up the cache, as measured by the cache + being running. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The average number of KB accessed from the cache in a 30 seconds interval, + by the time we reach the cache size limit. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The average number of entries accessed by the cache in a 30 seconds + interval, by the time we reach the cache size limit. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The average size of an entry by the time we reach the cache size limit. + AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The hit ratio by the time we fill up the cache. Of course, we started with + an empty cache. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The percentage of the cache used by entries of more than 512 KB, by the time + we reach the cache size limit. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The time spent reading the LRU-related portion of an entry. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The current hit ratio. It is only measured after the cache is full, so + evictions are taking place, and data from the fill-up period is not + considered. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The hit ratio for each size. To calculate the hit ratio of caches of a + certain size, take the ratio of a bin in this histogram to the same bin in + DiskCache.3.Size2. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The hit ratio for each total time. To calculate the hit ratio of caches of a + certain age, take the ratio of a bin in this histogram to the same bin in + DiskCache.3.TotalTime. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The hit ratio for each use time. To calculate the hit ratio of caches of a + certain age, take the ratio of a bin in this histogram to the same bin in + DiskCache.3.UseTime. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Percentage of the index table that is currently used (the cache is full). + AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + The size of each key. AppCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + Percentage of the cache used by entries of more than 512 KB. It is only + measured after the cache is full, so evictions are taking place. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The maximum number of simultaneously open disk cache entries. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + The maximum size of the cache. AppCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The time spent opening an entry already on the cache (cache hit). AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + The number of pending IO operations (Async IO). AppCache. + + + + Please list the metric's owners. Add more owner tags as needed. + The time spent reading from an entry. AppCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The percentage of re-created deleted entries versus entries that we really + don't know about. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + The reason for not sending a full report. AppCache. + + + + Please list the metric's owners. Add more owner tags as needed. + The current size of the cache. AppCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The total time it takes to perform a payload IO operation (AKA, directed to + an entry). This is measured from the IO thread. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + Number of hours that the cache has been used. AppCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The time spent removing deleted entries from the cache. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The time spent removing old entries from the cache. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The time spent evicting entries from the cache (moving them to the deleted + list). AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The time that an entry lives in the cache without being accessed until it is + finally purged. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of entries that are deleted on a single iteration. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of entries that are evicted on a single iteration. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of entries that are evicted (moved to the deleted list) on a + single iteration. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of entries that are evicted per hour of use. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The time spent moving an entry to the front of the LRU list. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The percentage of the allowed disk space that we are currently using. + AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Number of hours that the cache has been used since last week. AppCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + The time spent writing to an entry. AppCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The time for an async IO operation to complete. This covers content Writes + and Reads, measured from the cache thread. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + The synchronous portion of an async read. ShaderCache. + + + + Please list the metric's owners. Add more owner tags as needed. + The synchronous portion of an async write. ShaderCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The average number of open disk cache entries at any given time. + ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + The total size of all the internal buffers. ShaderCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of KB accessed from the cache in a 30 seconds interval. + ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The time spent creating a new entry on the cache. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The size of the data portion of a given entry by the time it is deleted. + ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Number of external files that we were unable to delete. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The size of the HTML headers of a given entry by the time it is deleted. + ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of entries currently stored on the cache. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of entries currently stored on the cache, after it is full. + ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of entries accessed by the cache in a 30 seconds interval. + ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The average size of an entry. It is only measured after the cache is full, + so evictions are taking place. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + Critical error ids. ShaderCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The age of the cache (in hours) by the time we reach the size limit. + ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of hours required to fill up the cache, as measured by the cache + being running. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The average number of KB accessed from the cache in a 30 seconds interval, + by the time we reach the cache size limit. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The average number of entries accessed by the cache in a 30 seconds + interval, by the time we reach the cache size limit. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The average size of an entry by the time we reach the cache size limit. + ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The hit ratio by the time we fill up the cache. Of course, we started with + an empty cache. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The percentage of the cache used by entries of more than 512 KB, by the time + we reach the cache size limit. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The time spent reading the LRU-related portion of an entry. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The current hit ratio. It is only measured after the cache is full, so + evictions are taking place, and data from the fill-up period is not + considered. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The hit ratio for each size. To calculate the hit ratio of caches of a + certain size, take the ratio of a bin in this histogram to the same bin in + DiskCache.4.Size2. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The hit ratio for each total time. To calculate the hit ratio of caches of a + certain age, take the ratio of a bin in this histogram to the same bin in + DiskCache.4.TotalTime. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The hit ratio for each use time. To calculate the hit ratio of caches of a + certain age, take the ratio of a bin in this histogram to the same bin in + DiskCache.4.UseTime. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Percentage of the index table that is currently used (the cache is full). + ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + The size of each key. ShaderCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + Percentage of the cache used by entries of more than 512 KB. It is only + measured after the cache is full, so evictions are taking place. + ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The maximum number of simultaneously open disk cache entries. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + The maximum size of the cache. ShaderCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The time spent opening an entry already on the cache (cache hit). + ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of pending IO operations (Async IO). ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + The time spent reading from an entry. ShaderCache. + + + + Please list the metric's owners. Add more owner tags as needed. + The reason for not sending a full report. ShaderCache. + + + + Please list the metric's owners. Add more owner tags as needed. + The current size of the cache. ShaderCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The total time it takes to perform a payload IO operation (AKA, directed to + an entry). This is measured from the IO thread. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + Number of hours that the cache has been used. ShaderCache. + + + + Please list the metric's owners. Add more owner tags as needed. + + The time spent removing old entries from the cache. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The time that an entry lives in the cache without being accessed until it is + finally purged. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of entries that are evicted on a single iteration. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of entries that are evicted per hour of use. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The time spent moving an entry to the front of the LRU list. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + The percentage of the allowed disk space that we are currently using. + ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Number of hours that the cache has been used since last week. ShaderCache. + + + + + Please list the metric's owners. Add more owner tags as needed. + The time spent writing to an entry. ShaderCache. + + + + Please list the metric's owners. Add more owner tags as needed. + Number of block-files that we were unable to delete. + + + + Please list the metric's owners. Add more owner tags as needed. + The experiment group for this user. + + + + dmikurube@chromium.org + The size distribution of data stored on the cache. + + + + + diff --git a/histograms/metadata/download/OWNERS b/histograms/metadata/download/OWNERS new file mode 100644 index 000000000000..66926bcdad4e --- /dev/null +++ b/histograms/metadata/download/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +qinmin@chromium.org +shaktisahu@chromium.org diff --git a/histograms/metadata/download/histograms.xml b/histograms/metadata/download/histograms.xml new file mode 100644 index 000000000000..b86d90a27ae9 --- /dev/null +++ b/histograms/metadata/download/histograms.xml @@ -0,0 +1,1471 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + dtrainor@chromium.org + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Downloads extension API function calls. Warning: this histogram was expired + from 2020-03-08 to 2022-08-02; data may be missing. + + + + + + + dtrainor@chromium.org + chrome-counter-abuse-alerts@google.com + + Time taken to invoke IAttachmentExecute::Save() excluding the time taken to + instantiate CLSID_AttachmentServices. Warning: this histogram was expired + from 2020-02-23 to 2023-01-30; data may be missing. + + + + + qinmin@chromium.org + + Overall bandwidth seen for a completed download. This includes all file + downloads going through the download subsystem, but excludes all the page + saves. Note that this is measured at the point at which the file is written, + and so will not take into account the time costs of activities that occur + after file write is completed (e.g. safe browsing scanning). The maximum + bucket range is 200Mbps. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + This tracks drag events on a complete download on the bubble, and also + general download completion on the bubble as a point of reference. Note that + the completion can be logged multiple times for a single download if the + download bubble is shown and dismissed multiple times. + + + + + + Removed 2023-02-24: no longer needed, and now inconvenient to log properly. + + chlily@chromium.org + chrome-counter-abuse-alerts@google.com + + Measures the time (in ms) taken to load and set the file icon for a download + on the download bubble. Recorded each time an icon is loaded and set, which + can happen upon adding or updating a download bubble row, or changing the + device scale factor. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Measures the time (in ms) the user takes to open a full view (opened + manually) after seeing a partial view (opened by the browser for new and + completed downloads). Recorded only if the user has launched a full view + after a partial view was opened in the past, with no full view launch in + between. Recorded only for Desktop platforms, where Download Bubble is + enabled. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records each time a download command is executed on download bubble. For V1, + it is logged when the main button is clicked. For V2, it is logged when the + quick action is clicked. Actions on the security subpage is also included. + Actions on context menu are excluded. Clicking the trasparent button is also + excluded. This histogram is added for debugging purpose and will be removed + afterwards. + + + + + chlily@chromium.org + chrome-counter-abuse-alerts@google.com + + Measures the time (in ms) between the Download bubble warning subpage being + shown, and one of the buttons being acted upon. The warning subpage is shown + when the user sees a download warning on the full or the partial view, and + navigates to the subpage for more actions. Recorded only for Desktop + platforms, where Download Bubble is enabled. In M105, FirstButtonActionTime + is replaced with SecondaryButtonActionTime, SecondButtonActionTime is + replaced with PrimaryButtonActionTime. + + + + + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Record the user actions taken on the Download bubble warning subpage. The + warning subpage is shown when the user sees a download warning on the full + or the partial view, and navigates to the subpage for more actions. Recorded + only for Desktop platforms, where Download Bubble is enabled. + + + + + chlily@chromium.org + chrome-counter-abuse-alerts@google.com + + Measures the time (in ms) for which the full view (opened manually) or the + partial view (opened by the browser for new and completed downloads) are + visible. Recorded only for Desktop platforms, where Download Bubble is + enabled. + + + + + + chlily@chromium.org + chrome-counter-abuse-alerts@google.com + + Measures the size of the full view (opened manually) or the partial view + (opened by the browser for new and completed downloads). The full view + contains all recent downloads (last 24 hours), and the partial view contains + all recent downloads that user has not paid attention to, or acted upon. + Recorded only for Desktop platforms, where Download Bubble is enabled. + + + + + + qinmin@chromium.org + clank-downloads@google.com + Records why the download is canceled. + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records each time a non-temporary download is completed. If it is set to + true, this download will open immediately. This can happen if the user has + clicked the open button before the download is completed. This histogram is + added for debugging purpose and will be removed afterwards. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records each time a non-temporary download is completed. If it is set to + true, this download will open immediately. This can happen if the user has + set auto open for this file type. This histogram is added for debugging + purpose and will be removed afterwards. + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + Types of audio files that are downloaded. + + + + + + dtrainor@chromium.org + Types of images that are downloaded. + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + Types of text files that are downloaded. + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + Types of video files that are downloaded. + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + Various individual counts in the download system; see DownloadCountType for + details. + + + + + qinmin@chromium.org + + Records user interactions with the dangerous download dialog on Android. + Records when the dialog is shown, or when user clicks on a button or + dismisses the dialog. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + User chose to save a download which was marked DANGEROUS_FILE. Grouped by + the type of file. + + + + + + + qinmin@chromium.org + + Records whether the download database is available when database startup + completes, before starting any pending downloads. If the database is + available, it will provide the next download id. Or no download history will + be persisted. + + + + + qinmin@chromium.org + clank-downloads@google.com + + How long users keep downloaded audio files on disk. Recorded when the + downloaded file is deleted. + + + + + qinmin@chromium.org + clank-downloads@google.com + + How long users keep downloaded video files on disk. Recorded when the + downloaded file is deleted. + + + + + dtrainor@chromium.org + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + User actions in chrome://downloads. Warning: this histogram was expired from + M77 to 2022-09-20; data may be missing. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Records when user is shown the download danger prompt while attempting to + recover a blocked download from chrome://downloads, grouped by the type of + file. + + + + + chlily@chromium.org + chrome-counter-abuse-alerts@google.com + + Records time taken to execute DownloadManagerImpl::CreateDownloadItem(), + logged on each execution. + + + + + chlily@chromium.org + chrome-counter-abuse-alerts@google.com + + Records time taken to execute DownloadManagerImpl::PostInitialization(), + logged on each execution unless the function returns early due to already + being initialized. + + + + + + + + + dtrainor@chromium.org + clank-downloads@google.com + The size of successfully completed downloads. + + + + qinmin@chromium.org + clank-downloads@chromium.org + + Records user interactions on the duplicate download dialog on Android, + either for a regular download or an offline page. One user interaction could + trigger multiple histograms to be recorded. For example, clicking the text + link could record both the link click histogram and the dialog dismiss + histogram. + + + + + + + + + qinmin@chromium.org + clank-downloads@chromium.org + + Records user interactions on the duplicate download infobar on Android, + either for a regular download or an offline page. + + + + + + + + + + + qinmin@chromium.org + clank-downloads@google.com + The count of HTTP Response codes for download requests. + + + + tommasin@chromium.org + chrome-incognito@google.com + + Records the clicks on Incognito download message in Android, when users + click download or dismiss the message. + + + + + qinmin@chromium.org + + Various individual counts related to in-progress download DB. + + + + + qinmin@chromium.org + shaktisahu@chromium.org + + Records errors when reading from the mojo input stream before a download + completes. + + + + + jdeblasio@chromium.org + estark@chromium.org + cthomp@chromium.org + + Records file extension of download to support analysis for mixed content + file download blocking. Warning: this histogram was expired from M94 through + M95; data may be missing. + + + + + jdeblasio@chromium.org + estark@chromium.org + cthomp@chromium.org + + Records security state of downloads to support analysis for mixed content + file download blocking. + + + + + + + + + qinmin@chromium.org + clank-downloads@google.com + The reason that a download was interrupted. + + + + alexmitra@chromium.org + clank-downloads@google.com + + Records any user action taken within a download interstitial. Download + interstitials are shown only on Android inside CCTs. + + + + + sdefresne@chromium.org + ewannpv@chromium.org + mrefaat@chromium.org + + Logged at different stages of downloading a USDZ MIME type AR model on iOS. + + + + + sdefresne@chromium.org + ewannpv@chromium.org + gambard@chromium.org + + Result when the warning alert is presented before downloading a .ics file on + iOS. Values indicate if the user has continued the download workflow after + the presentation of the warning alert. + + + + + sdefresne@chromium.org + ewannpv@chromium.org + mrefaat@chromium.org + + The action that a user takes on a file after it has been successfully + downloaded on iOS. + + + + + sdefresne@chromium.org + ewannpv@chromium.org + mrefaat@chromium.org + + Positive net error codes that happen in the case of download content fetch + failure. + + + + + sdefresne@chromium.org + ewannpv@chromium.org + mrefaat@chromium.org + + Logged when the download is completed (successfully or not) or in-progress + download was cancelled because of the app termination. This histogram + includes information whether the download was successful and whether or not + the download task was running while the app was active. + + + + + sdefresne@chromium.org + ewannpv@chromium.org + mrefaat@chromium.org + Result when a user attempts to download a file on iOS. + + + + sdefresne@chromium.org + ewannpv@chromium.org + mrefaat@chromium.org + + Result when a user attempts to present the download UI on iOS. Looged when + download is created. + + + + + sdefresne@chromium.org + ewannpv@chromium.org + mrefaat@chromium.org + + Result when the download UI is prexsented on iOS. Values indicate if Google + Drive is installed and whether or not Install Google Drive promo was shown. + Logged when download is updated. + + + + + sdefresne@chromium.org + ewannpv@chromium.org + mrefaat@chromium.org + + MIME type of a download response. Logged when the download UI was offered by + the browser to the user. + + + + + sdefresne@chromium.org + ewannpv@chromium.org + gambard@chromium.org + + Result when the warning alert is presented before downloading a + .mobileconfig file on iOS. Values indicate if the user has continued the + download workflow after the presentation of the warning alert. + + + + + sdefresne@chromium.org + ewannpv@chromium.org + mrefaat@chromium.org + + Recorded when a user attempts to download a PassKit file on iOS. + + + + + sdefresne@chromium.org + ewannpv@chromium.org + mrefaat@chromium.org + + The user discarded in-progress download and replaced with the new one. Only + recorded after the user interacts with a dialog offering the choice between + replacing an in-progress download versus downloading separately to a new + filename. + + + + + sdefresne@chromium.org + ewannpv@chromium.org + mrefaat@chromium.org + Result of an attempt to present Add Passes dialog on iOS. + + + + sdefresne@chromium.org + ewannpv@chromium.org + mrefaat@chromium.org + + Result when a user attempts to present a USDZ MIME type AR model on iOS. + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + Records events for download later feature in download core code. + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + The size of downloads when the user tries to download at a scheduled time. + Recorded when the positive button in download later dialog is clicked. + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + The user selection in the download later dialog. Recorded when the user + starts a download, or clicking the change button on download infobar and + download home UI. + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + Records events for download later feature in download Android UI. + + + + + chlily@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the time taken to add the DownloadedByExtension data to the + DownloadItem and notify observers in + DownloadHistory::LoadHistoryDownloads(), logged on each loop iteration (once + per DownloadRow) if extensions are enabled. + + + + + chlily@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the time taken to obtain the StoragePartitionConfig from the + serialized embedder download data in + DownloadHistory::LoadHistoryDownloads(), logged on each loop iteration (once + per DownloadRow). + + + + + chlily@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the number of rows passed to + DownloadHistory::LoadHistoryDownloads(), logged on each execution. + + + + + chlily@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the total time taken to call OnHistoryQueryComplete() on all the + observers in DownloadHistory::LoadHistoryDownloads(), logged on each + execution of the latter. + + + + + chlily@chromium.org + chrome-counter-abuse-alerts@google.com + + Records time taken to execute DownloadHistory::LoadHistoryDownloads(), + logged on each execution. + + + + + + + dtrainor@chromium.org + qinmin@chromium.org + Records events for local media metadata parsing. + + + + + + dtrainor@chromium.org + qinmin@chromium.org + + Records events when using media parser to analyze local media files. + + + + + qinmin@chromium.org + + Records user interactions with the insecure download (formerly the mixed + content download) dialog on Android. Records when the dialog is shown, or + when user clicks on a button or dismisses the dialog. + + + + + qinmin@chromium.org + dtrainor@chromium.org + + Records user interactions with the dangerous download infobar on Android. + + + + + + + dtrainor@chromium.org + Network connection type when a download is completed. + + + + + + dtrainor@chromium.org + Network connection type when starting a new download. + + + + dtrainor@chromium.org + qinmin@chromium.org + + Records each time a notification for a download is suppressed. Note that a + single download can experience multiple instances of notification + suppression during its lifetime. This histogram is only emitted for Ash + Chrome builds. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records each time when determining whether the download should be opened in + browser. For new download, it is logged when determining download target. + For old download, it is logged when the download is going to open or the + context menu is going to show. Logged at most one time for each download. + This histogram is added for debugging purpose and will be removed + afterwards. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Content types of the downloads being opened. This histogram is logged + whenever a download is opened, whether from the shelf/bubble or + chrome://downloads. Logged on Desktop platforms. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records each time a download open button is pressed, either on download + shelf or download bubble. If the open button is pressed before the download + is completed, the download will be auto opened when it is completed. If the + open button is pressed when the download is already completed, the download + will open immediately, either in browser or in system handler. The total + count of this histogram is useful to compare whether download bubble has + changed user behavior on clicking the open button. This histogram is added + for debugging purpose and will be removed afterwards. + + + + + sideyilmaz@chromium.org + chrome-incognito@google.com + + Records the profile type for opening the Downloads page. This may be + triggered by different entry points like mobile menu, notification or info + bar. + + + + + sideyilmaz@chromium.org + chrome-incognito@google.com + + Records the profile type for opening the Downloads page from menu. + + + + + + + dtrainor@chromium.org + chrome-analysis-team@google.com + + Invocation count for methods of opening a download. For some file types, + Chrome defaults to opening the file in the browser instead of invoking the + system handler. The user has the option of overriding this behavior. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + qinmin@chromium.org + chrome-downloads@google.com + + Records the number of overwritten downloads that are cleaned up from + Chrome://downloads history. Recorded after loading all the downloads from + history DB. + + + + + qinmin@chromium.org + + Records the received failure reason after sending a parallel download + request. + + + + + qinmin@chromium.org + + The total number of requests sent for a parallel download, including the + initial request. + + + + + + + + + qinmin@chromium.org + clank-downloads@google.com + clank-downloads@google.com + + The download path generation behavior which happens before download path + validation in download target determination process. + + + + + + + + + qinmin@chromium.org + clank-downloads@google.com + + The download path validation result before the final download target is + determined. + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + Records the state of the download progress infobar on android when the user + taps on the infobar's close button. + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + Records various types of messages representing the state of the downloads as + they are shown on the download progress infobar on android. + + + + + pmonette@chromium.org + alewoolf@microsoft.com + + Whether a connection error has happened for the QuarantineService. + + + + + calamity@chromium.org + dbeam@chromium.org + + Records the time taken to load the downloads Web UI and render (at least) a + screen full of items. This is roughly equivalent to 'time to first + meaningful paint' for the downloads page. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the last interrupt reason for a download that has just been retried + through the download bubble. + + + + + dtrainor@chromium.org + + Events (e.g. Started, Cancelled, Finished, Write to Completed file, Write to + Failed file) occuring within the state machine of a SavePackage operation. + + + + + + + shaktisahu@chromium.org + clank-downloads@chromium.org + + The file size of completed background download. Recorded when background + downloads are finished. + + + + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + Records a failed database operation. + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + Records a successful database operation. + + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + The total number of database records used by download service, and the + number of records in each entry state. + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + The interrupt reason for failed downloads in download service. + + + + + + + dtrainor@chromium.org + shaktisahu@chromium.org + + An action the download service took on an active download. Note that this + histogram was expired between M88 and 2023-03-03. + + + + + + + dtrainor@chromium.org + shaktisahu@chromium.org + + Records how many attempts have taken place at the time of a retry for a + download in the Download Service. This differs from + Download.Service.Entry.ResumptionCount, which records resumptions not + complete restarts. Note that this histogram was expired between M88 and + 2023-03-03. + + + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + The number of files that have been deleted by external application or the + user, when performing clean up tasks in download service. + + + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + The number of failed file deletion attempts, when performing clean up tasks + in download service. + + + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + The number of files successfully deleted, when performing clean up tasks in + download service. + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + The error code when failed to create the download directory. + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + The lifestime of a download file, which begins from the download completion + to the file being deleted by the clean up task. + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + The time to complete the download in download service. + + + + shaktisahu@chromium.org + clank-downloads@google.com + The completion type for downloads in download service. + + + + + + shaktisahu@chromium.org + + The reason for suspending a download right after the upload data is received + from the client. Every pause will result in two entries in the histogram: + ANY and a more specific reason. + + + + + + + shaktisahu@chromium.org + + The reason for pausing an in-progress download. Every pause will result in + two entries in the histogram: ANY and a more specific reason. + + + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + Records the API calls on download service. + + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + The start up result of the download service. + + + + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + The platform background tasks used by download service will invoke native + functions after being scheduled. The tasks may be aborted or canceled. This + metric records the status of background tasks when native functions are + invoked. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records if the download bubble is showing when session {Status}. See the + description in Session.TotalDuration for how session ends is defined. This + histogram is added for debugging purpose and will be removed afterwards. + + + + + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Similar to Session.TotalDuration, but add the time when the download bubble + is showing into the total session duration. In rare cases where the user + leaves Chrome when the bubble is showing, it may include that duration too. + This histogram is added for debugging purpose and will be removed + afterwards. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records each time the auto open setting is changed by the user. If it is set + to true, this type of download will be auto opened once it is completed. + This setting is false by default. Changes on this setting are preserved + across startup. This histogram is added for debugging purpose and will be + removed afterwards. + + + + + + Removed 2022-06-06, though it had long expired (in M77). + + sdy@chromium.org + + Events related to dragging a completed download from the shelf, which + represents dragging a reference to the downloaded file. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + This tracks drag events on a complete download on the shelf, and also + general download completion on the shelf as a point of reference. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + The time that the download shelf was visible until it was closed. This + histogram excludes times when DoUnhide() and DoHide() are called (i.e., when + the full screen state changes). + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + This histogram is used to record the different actions and events associated + with the download shelf context menu on Linux, MacOS, and Windows. The menu + may also be shown on the download bubble. Specifically, it records when the + dropdown button was clicked as well when DownloadCommands were enabled or + executed. Each action or enable event is only emitted once; as a result, it + is safe to compute a ratio by dividing enabled events by clicked events. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + A download warning was shown in the shelf/bubble. Note that some downloads + may not be shown on the shelf, e.g., if a download is not new, is transient, + or if the shelf is disabled by an extension using the Downloads API. + Similarly, the bubble also does not show transient downloads. Grouped by the + type of danger. This histogram is logged on ChromeOS since M93. + + This metric is used to populate a dashboard on go/crsb-site. + + + + + + + qinmin@chromium.org + clank-downloads@google.com + + The initiation source (if initiated within the above-content layer of + chrome) for a download. + + + + + shaktisahu@chromium.org + drubery@chromium.org + + Content types of the downloads. This histogram is logged when a download is + started. Logged on Desktop platforms. Warning: This histogram had expired + from M85 to M106, data may be missing. + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + Content types of the downloads that are started in non-incognito profile. + This histogram is logged when a download is started. Logged on Desktop + platforms. Warning: This histogram had expired from 2022-05-01 to + 2022-08-15, data may be missing. + + + + + sideyilmaz@chromium.org + chrome-incognito@google.com + + The browser profile type for each download started, recorded just after + download successfully started. + + + + + drubery@chromium.org + chrome-safebrowsing-team@chromium.org + + User chose to save a download which was marked dangerous. Grouped by the + type of danger. + + This metric is used to populate a dashboard on go/crsb-site. + + + + + + + dtrainor@chromium.org + qinmin@chromium.org + Records events for local video thumbnail retrieval. + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the warning action that is successfully added in warning action + event. Logged each time an action is taken on the download warning. For the + SHOWN action, only logged for the first time. Not logged if the action is + not added because the first warning is missing or the events have exceeded + the max length. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether a download warning action event was sent, or if not, then + why not. Logged each time an action is taken on the download warning. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the warning surface that does not have a warning shown event logged + in advance. Logged each time an action is taken on the download warning and + there is no warning shown event logged (the NOT_ADDED_MISSING_FIRST_WARNING + bucket in DownloadAddWarningActionEventOutcome). + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + Records the OS error code when moving a file on windows. + + + + + diff --git a/histograms/metadata/enterprise/OWNERS b/histograms/metadata/enterprise/OWNERS new file mode 100644 index 000000000000..d9a1df71a6a3 --- /dev/null +++ b/histograms/metadata/enterprise/OWNERS @@ -0,0 +1,8 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +poromov@chromium.org +zmin@chromium.org +seblalancette@chromium.org +igorruvinov@chromium.org diff --git a/histograms/metadata/enterprise/histograms.xml b/histograms/metadata/enterprise/histograms.xml new file mode 100644 index 000000000000..6b5104102d28 --- /dev/null +++ b/histograms/metadata/enterprise/histograms.xml @@ -0,0 +1,2977 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + dkuzmin@google.com + cros-oac@google.com + + Recorded when user enters their account on license packged device during + enrollment process. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/authpolicy/OWNERS + + The way device is joined to the Active Directory domain. This will be + recorded during successful enterprise enrollment and domain join. + + + + + + + igorcov@chromium.org + vsavu@google.com + + Consistency between TPM lock state and absence/presence of install + attributes at boot. + + + + + sergiyb@chromium.org + igorcov@chromium.org + chromeos-commercial-remote-management@google.com + + Duration of the bucket download part of the auto-enrollment protocol. + {EnterpriseAutoEnrollmentType} + + The histogram was expired (not recording data) from 2021-12-26 until + 2022-07-15. + + + + + + vsavu@google.com + igorcov@chromium.org + chromeos-commercial-remote-management@google.com + + Count the number of timeouts and successes for AutoEnrollmentController. + + + + + sergiyb@chromium.org + igorcov@chromium.org + chromeos-commercial-remote-management@google.com + + Duration of the hash dance to determine enrollment state of the device. Only + recorded if the hash dance finished successfully. + {EnterpriseAutoEnrollmentType} + + + + + + sergiyb@google.com + mpolzer@google.com + chromeos-commercial-remote-management@google.com + + Duration of the private set membership request to determine enrollment state + of the device. Only recorded if it finished successfully. + + The histogram was expired (not recording data) from 2022-04-10 until + 2022-07-15. + + + + + sergiyb@chromium.org + igorcov@chromium.org + chromeos-commercial-remote-management@google.com + + Total duration time of the auto-enrollment protocol. + {EnterpriseAutoEnrollmentType} + + The histogram was expired (not recording data) from 2022-01-09 until + 2022-07-15. + + + + + + sergiyb@chromium.org + igorcov@chromium.org + chromeos-commercial-remote-management@google.com + + Device management server request status for auto-enrollment PSM requests. + {EnterpriseAutoEnrollmentType} + + The histogram was expired (not recording data) from 2021-10-31 until + 2021-11-09. + + + + + + + + sergiyb@chromium.org + igorcov@chromium.org + chromeos-commercial-remote-management@google.com + + Network error code (if applicable) for auto-enrollment PSM requests. + {EnterpriseAutoEnrollmentType} + + The histogram was expired (not recording data) from 2021-10-31 until + 2021-11-09. + + + + + + + + sergiyb@chromium.org + igorcov@chromium.org + chromeos-commercial-remote-management@google.com + + All possible PSM protocol results after it has executed successfully or + terminated due to an error or timeout. This request is used to determine the + initial enrollment state of the device. {EnterpriseAutoEnrollmentType} + + The histogram was expired (not recording data) from 2021-10-31 until + 2021-11-09. + + + + + + + + sergiyb@chromium.org + igorcov@chromium.org + chromeos-commercial-remote-management@google.com + + Network error code (if applicable) for auto-enrollment requests. + {EnterpriseAutoEnrollmentType} + + The histogram was expired (not recording data) from 2021-12-19 until + 2022-07-15. + + + + + + sergiyb@chromium.org + igorcov@chromium.org + chromeos-commercial-remote-management@google.com + + URL fetcher status for auto-enrollment requests. + {EnterpriseAutoEnrollmentType} + + The histogram was expired (not recording data) from 2021-12-12 until + 2022-07-15. + + + + + + gujen@google.com + goanuj@google.com + + Recorded when a signed-in user is automatically signed out of the browser + due to the BrowserSignin policy being set to 0 (sign-in disabled) by their + organization. The sample is always recorded as true. + + Warning: This histogram was expired from 2021-06-30 to 2022-11-30; data may + be missing. + + + + + gujen@google.com + goanuj@google.com + + Recorded when a user is in the process of signing in to the browser, but is + interrupted due to the BrowserSignin policy being set to 0 (sign-in + disabled) by their organization. The sample is always recorded as true. + + Warning: This histogram was expired from 2021-06-30 to 2022-11-30; data may + be missing. + + + + + alexwchen@chromium.org + cbe-eng@google.com + + Histogram for counting the BrowserSignin policy. This metric is recorded + every 24 hours and at startup along with the full set of the enterprise + policy rules that are in use. + + + + + emaxx@chromium.org + rodmartin@chromium.org + + Result of the device ID validation in the device policy blob for those which + were loaded from disk. This validation happens on enrolled devices on + startup, on scheduled policy reloads that happen every few hours, and on + forced policy reloads. + + + + + anthonyvd@chromium.org + cbe-eng@google.com + + Events for counting CBCM policy invalidations received with and without + payloads. Invalidations indicate that a policy has been updated and should + be refreshed. Payloads provide context about the policy update, but may be + absent if dropped by the invalidation service. + + + + + anthonyvd@chromium.org + cbe-eng@google.com + + Events measuring effectiveness of refreshing CBCM policy when invalidations + are received from a service. For each refresh, indicates whether the policy + changed, and whether the policy was invalidated at the time of the refresh. + + + + + zmin@chromium.org + src/chrome/browser/enterprise/reporting/OWNERS + + Recorded when real time report enter the queue. It indicates whether the + report is pushed to the queue successfully or not. + + + + + anthonyvd@chromium.org + cbe-eng@google.com + + Events for counting status of executed CBCM remote commands. The metric + includes only signed CBCM remote commands. Reports a final status of + finished remote command (e.g. success, failure or termination). + + + + + anthonyvd@chromium.org + cbe-eng@google.com + + Events for counting received CBCM remote commands. The metric includes + signed CBCM remote commands, both valid and invalid. Valid remote command is + counted by its type. Invalid remote command is counted by a reason why it is + considered invalid (e.g. unknown type or duplication). + + + + + anthonyvd@chromium.org + cbe-eng@google.com + + Events for counting CBCM remote commands invalidations received with and + without payloads. Invalidations indicate that there is a remote command to + execute. Payloads provide context about the remote commands update, but may + be absent if dropped by the invalidation service. + + + + + zmin@chromium.org + hur.ims@navercorp.com + src/chrome/browser/enterprise/reporting/OWNERS + + Recorded once each time the extension request prompt dialog is accepted or + aborted. + + + + + zmin@chromium.org + src/chrome/browser/enterprise/reporting/OWNERS + + Recorded when cloud extension request pending list is updated. Note that + when multiple requests are added or removed together, there will be only one + event recorded. + + + + + zmin@chromium.org + igorruvinov@chromium.org + + Records the enrollment token location when the token is loaded. + + + + + zmin@chromium.org + pastarmovj@chromium.org + + The proto size of the basic Chrome browser cloud management reporting + request. When a report is separated into multiple requests, all of them + contain the basic request. + + + + + zmin@chromium.org + pastarmovj@chromium.org + + The number of request for one Chrome browser cloud management report. A + report is separated into multiple requests when it's too large. + + + + + zmin@chromium.org + pastarmovj@chromium.org + + The proto size of each Chrome browser cloud management reporting request. It + includes the requests which are more than 5MB and discarded. + + + + + zmin@chromium.org + pastarmovj@chromium.org + + The upload result for each cloud reporting request. Note that there may be + multiple requests per report. Also, one request may creates multiple data + point due to retry. + + + + + + + grt@chromium.org + src/chrome/browser/enterprise/reporting/OWNERS + + The trigger detected by the ReportScheduler responsible that led to an + attempt to upload an enterprise report. + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events for counting device local account policy invalidations received with + and without payloads. Invalidations indicate that a policy has been updated + and should be refreshed. Payloads provide context about the policy update, + but may be absent if dropped by the invalidation service. + + As opposed to current histogram, Enterprise.DevicePolicyInvalidations2 + counts only events of device policy invalidations. + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events measuring effectiveness of refreshing device local account policy + when invalidations are received from a service. For each refresh, indicates + whether the policy changed, and whether the policy was invalidated at the + time of the refresh. + + As opposed to current histogram, Enterprise.DevicePolicyRefresh3 counts only + events of refreshing device policies. + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events for counting device policy invalidations received with and without + payloads. Invalidations indicate that a policy has been updated and should + be refreshed. Payloads provide context about the policy update, but may be + absent if dropped by the invalidation service. + + As opposed to current histogram, + Enterprise.DeviceLocalAccountPolicyInvalidations2 counts only events of + device local account policy invalidations. + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events measuring effectiveness of refreshing device policy when + invalidations are received from a service. For each refresh, indicates + whether the policy changed, and whether the policy was invalidated at the + time of the refresh. + + As opposed to current histogram, Enterprise.DeviceLocalAccountPolicyRefresh3 + counts only events of refreshing device local account policies. + + + + + macinashutosh@google.com + chromeos-commercial-crd@google.com + Reports the creation of AuraDesktopCapturer class object + + + + macinashutosh@google.com + chromeos-commercial-crd@google.com + Reports the destruction of AuraDesktopCapturer class object + + + + macinashutosh@google.com + chromeos-commercial-crd@google.com + + Reports the creation of FrameSinkDesktopCapturer class object + + + + + macinashutosh@google.com + chromeos-commercial-crd@google.com + + Reports the destruction of FrameSinkDesktopCapturer class object + + + + + macinashutosh@google.com + chromeos-commercial-crd@google.com + Reports success/failure when a session is attempted. + + + + macinashutosh@google.com + chromeos-commercial-crd@google.com + + Reports the user type for the attempted session only when the result is + EnterpriseCrdSessionResultCode::SUCCESS. + + + + + macinashutosh@google.com + chromeos-commercial-crd@google.com + + Reports success/failure when a session is attempted for the + {Enterprise_CrdSessionType} and {Enterprise_UserSessionType} + + + + + + + macinashutosh@google.com + chromeos-commercial-crd@google.com + + Reports duration of a successful session completed for the + {Enterprise_CrdSessionType} and {Enterprise_UserSessionType} + + + + + + + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events for counting status of executed device remote commands. The metric + includes only signed device remote commands. Reports a final status of + finished remote command (e.g. success, failure or termination). + {Enterprise_RemoteCommandType} + + + + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events for counting received device remote commands. The metric includes + signed device remote commands, both valid and invalid. Valid remote command + is counted by its type. Invalid remote command is counted by a reason why it + is considered invalid (e.g. unknown type or duplication). + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events for counting device remote commands invalidations received with and + without payloads. Invalidations indicate that there is a remote command to + execute. Payloads provide context about the remote commands update, but may + be absent if dropped by the invalidation service. + + Metric is similar to Enterprise.DevicePolicyInvalidations2. Device local + account scope does not exist for remote commands so there is no metric for + remote commands similar to + Enterprise.DeviceLocalAccountPolicyInvalidations2. + + + + + rbock@google.com + chromeos-commercial-remote-management@google.com + managed-devices@google.com + + Recorded every time policy file is missing or corrupted on Chrome OS. Should + be compared to Enterprise.DeviceSettings.UpdatedStatus as happens only if + status is STORE_NO_POLICY and device being not managed. + + + + + rbock@google.com + chromeos-commercial-remote-management@google.com + managed-devices@google.com + + Recorded every time as DeviceSettingsProvider updates its current state. + Used to compare rate of Enterprise.DeviceSettings.MissingPolicyMitigated + event. + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Captures an error that occured while trying to get signals from the + CrowdStrike agent. + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Captures the actual error whenever a {Signal} signal collection request + failed with a {ErrorType} error. + + + + + + + + + + + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Captures the number of items as part of the {Signal} signal collection + response. Recorded when the collection request was received. This histogram + applies only to parameterized signals. + + + + + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Captures the number of items collected in a {Signal} signal collection + response. Recorded only when the collection request was successful and the + signal value represents a collection. + + + + + + + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Captures the signal collection latency for the {Signal} signal. Recorded + only when the collection {Outcome}. + + + + + + + + + + + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Captures the number of delta between requested and returned items as part of + the {Signal} signal collection response. Recorded when the collection + request was completed. This histogram applies only to parameterized signals. + + + + + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Recorded whenever a device signal collection request {Variant} for a + particular signal. + + + + + + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Recorded whenever a permission evaluation has been assessed for a particular + user for whom device signals were requested. + + + + + hmare@google.com + rogerta@chromium.org + seblalancette@chromium.org + + Various steps recorded when a device goes through the device trust connector + attestation flow with a partner website. + + + + + hmare@google.com + rogerta@chromium.org + seblalancette@chromium.org + + Latency of a {Variant} attestation step in the overarching Device Trust + connector's attestation flow. This measures the amount of time required to + generate and return a response to the given challenge, which is effectively + the last step in the overall attestation flow. + + + + + + + + + hmare@google.com + rogerta@chromium.org + seblalancette@chromium.org + + Result of the attestation step in the overarching Device Trust connector's + attestation flow. Logged whenever the attestation step finishes, success or + failure, and right before the throttled request resumes. + + + + + lmasopust@google.com + rodmartin@google.com + cbe-device-trust-eng@google.com + + Recorded when a device starts the device trust attestation flow with a + partner website. This captures the enrollment status of the device where the + attestation flow is happening. + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Recorded when a Device Trust handshake was completed between the browser and + a server. This captures either the success or specific failure of the + overall flow. + + + + + hmare@google.com + rogerta@chromium.org + seblalancette@chromium.org + + Recorded every time a Device Trust signing key is successfully loaded from + persistence. This captures what trust level this key has, which in turn + gives insights into how it was created (e.g. via a TPM or not). + + + + + hmare@google.com + rogerta@chromium.org + seblalancette@chromium.org + + Recorded every time a Device Trust signing key is successfully loaded from + persistence. This captures what algorithm this key was generated with. + + + + + hmare@google.com + rogerta@chromium.org + seblalancette@chromium.org + + Recorded every time the browser attempted to {Variant} a Device Trust + signing key. This captures the result from this process. + + + + + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Recorded when the browser received a failed response when triggering a + Device Trust key rotation command. The browser will then attempt to + categorize the failure using the given enum. + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Recorded when the browser failed to trigger a Device Trust key rotation + command through the updater for an unknown reason. This will capture the + unknown HRESULT returned via the COM APIs. + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Recorded when the browser received a failed response when triggering a + Device Trust key rotation command. The browser will then attempt to + categorize the failure using the given enum. + + + + + hmare@google.com + rogerta@chromium.org + seblalancette@chromium.org + + Recorded when a device attempts to issue an API that interacts with the + Secure Enclave signing key in the {KeyType} key storage. + + + + + + + + + hmare@google.com + rogerta@chromium.org + seblalancette@chromium.org + + Captures any terminal failures that occur in the Device Trust management + service binary during the execution of a command (e.g. key rotation). + + + + + lmasopust@google.com + rodmartin@google.com + cbe-device-trust-eng@google.com + + Recorded when a device starts the device trust attestation flow with a + partner website. This captures if the attestation flow was triggered inside + of a session or on the login screen. + + + + + hmare@google.com + rogerta@chromium.org + seblalancette@chromium.org + + Captures any terminal failures that occur during the process of creating, + storing, and loading a Device Trust signing key pair during a key rotation. + + + + + + + + + + + hmare@google.com + rogerta@chromium.org + seblalancette@chromium.org + + Recorded when a device attempts to rotate its device trust signing key. + Chrome will retry a fixed number of times until the operation either + succeeds or fails. A value of 1 means the rotation worked on the first try. + + + + + hmare@google.com + rogerta@chromium.org + seblalancette@chromium.org + + Recorded when a device attempts to rotate its device trust signing key. + {Nonce} + + + + + + + + + hmare@google.com + rogerta@chromium.org + seblalancette@chromium.org + + HTTP status code of the key upload request recorded when a device attempts + to rotate its device trust signing key. {Nonce} + + + + + + + + + hmare@google.com + rogerta@chromium.org + seblalancette@chromium.org + + Latency recorded when the {Variant} decorator(s) finish collecting their + signals. Captures the amount of time required to collect the signals under + this scope. + + + + + + + + + + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Captures any client-side errors that caused a key synchronization flow to + fail. + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + HTTP status code of the key upload request recorded when a device issues a + key synchronization request. + + + + + accorsi@google.com + chromeos-dlp@google.com + + Number of non-expired file events stored in the + DlpFilesController::EventStorage. It is recorded each time an entry is added + or updated. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Recorded when capture mode initialization was blocked by Data Leak + Prevention. + + + + + aidazolic@chromium.org + chromeos-dlp@google.com + + Recorded when the user is warned by Data Leak Prevention before capture mode + initialization. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Result of Data Leak Prevention evaluation for a data read from the + clipboard. + + + + + aidazolic@chromium.org + chromeos-dlp@google.com + + Number of items stored in the DlpConfidentialContentsCache. It is recorded + each time a new entry is cached. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Recorded when DataTransferController is initialized, meaning that all + clipboard and drag-n-drop operations will be affected by Data Leak + Prevention checks. + + + + + poromov@google.com + chromeos-dlp@google.com + + Time difference between current and the latest sent Data Leak Prevention + reporting events for data transfers for which sources and destinations are + the same. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Recorded when non-empty Data Leak Prevention policy is present and due to + that Data Leak Prevention infrastructure is initialized on the client. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Result of Data Leak Prevention evaluation for a drag-n-drop operation. + + + + + accorsi@google.com + chromeos-dlp@google.com + + Recorded when an error occurs during adaptor usage in the Data Leak + Prevention daemon. + + + + + accorsi@google.com + chromeos-dlp@google.com + + Recorded when an error occurs while performing initialization operations in + the Data Leak Prevention daemon. + + + + + accorsi@google.com + chromeos-dlp@google.com + + Recorded when an error occurs during fanotify usage in the Data Leak + Prevention daemon. + + + + + accorsi@google.com + chromeos-dlp@google.com + + Recorded when an error occurs while performing database operations in the + Data Leak Prevention daemon. + + + + + accorsi@google.com + chromeos-dlp@google.com + + Record whether an error occurs during the Data Leak Prevention files policy + setup. + + + + + accorsi@google.com + chromeos-dlp@google.com + + Record whether a Data Leak Prevention event is not reported because of + report queue setup issues. + + + + + accorsi@google.com + chromeos-dlp@google.com + + Record whether the kernel supports fanotify mark filesystem. + + + + + accorsi@google.com + chromeos-dlp@google.com + Record whether the kernel supports fanotify delete events. + + + + accorsi@google.com + chromeos-dlp@google.com + + Records which file action is blocked because of Data Leak Prevention policy + restrictions. + + + + + accorsi@google.com + chromeos-dlp@google.com + + Records which file action is warned because of Data Leak Prevention policy + restrictions. + + + + + accorsi@google.com + chromeos-dlp@google.com + + Records which file action was warned because of Data Leak Prevention policy + restrictions and proceeded by the user. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Recorded when Data Leak Prevention policy contains Files restrictions and + DLP Files daemon is started because of that. + + + + + poromov@chromium.org + chromeos-dlp@google.com + Result of Data Leak Prevention evaluation for printing. + + + + aidazolic@chromium.org + chromeos-dlp@google.com + + Recorded when there is a "warn" level Data Leak Prevention + evaluation for printing. + + + + + aidazolic@chromium.org + chromeos-dlp@google.com + + Recorded when the user proceeded with (True) or canceled (False) the action + after a Data Leak Prevention warning for printing. + + + + + aidazolic@chromium.org + chromeos-dlp@google.com + + Recorded when there is a "warn" level Data Leak Prevention + evaluation for a screen share, but it is caused by the content that the user + was already warned about and decided to proceed, so no new warning is shown + and printing is silently allowed. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Recorded when privacy screen was enforced by Data Leak Prevention. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Recorded when Data Leak Prevention event with "block" level was + reported. Identifies which restriction was blocked and reported. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Result of enqueueing Data Leak Prevention event to the reporting queue. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Recorded when Data Leak Prevention event with "report" level was + reported. Identifies which restriction was reported. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Recorded when Data Leak Prevention event with "warn" level was + reported. Identifies which restriction was reported. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Recorded when Data Leak Prevention event with "warn" level was + reported after a user proceeded with a restricted action. Identifies which + restriction was reported. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Records which types of restrictions are present in Data Leak Prevention + policy. + + + + + accorsi@google.com + chromeos-dlp@google.com + + Time difference between the current and the latest sent Data Leak Prevention + file events for which inodes and destinations are the same. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Result of Data Leak Prevention evaluation for a screen share. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Recorded when screen share was paused (True) or resumed (False) by Data Leak + Prevention. + + + + + aidazolic@chromium.org + chromeos-dlp@google.com + + Recorded when there is a "warn" level Data Leak Prevention + evaluation for a screen share. + + + + + aidazolic@chromium.org + chromeos-dlp@google.com + + Recorded when the user proceeded with (True) or canceled (False) the action + after a Data Leak Prevention warning for a screen share. + + + + + aidazolic@chromium.org + chromeos-dlp@google.com + + Recorded when there is a "warn" level Data Leak Prevention + evaluation for a screen share, but it is caused by the content that the user + was already warned about and decided to proceed, so no new warning is shown + and the screen share is silently allowed. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Result of Data Leak Prevention evaluation for taking a screenshot or a video + capture. + + + + + aidazolic@chromium.org + chromeos-dlp@google.com + + Recorded when there is a "warn" level Data Leak Prevention + evaluation for taking a screenshot or a video capture. + + + + + aidazolic@chromium.org + chromeos-dlp@google.com + + Recorded when the user proceeded with (True) or canceled (False) the action + after a Data Leak Prevention warning shown at the capture mode + initialization or before taking a screenshot or a video capture. + + + + + aidazolic@chromium.org + chromeos-dlp@google.com + + Recorded when there is a "warn" level Data Leak Prevention + evaluation for initiating capture mode, or taking a screenshot or a video + capture, but it is caused by the content that the user was already warned + about and decided to proceed, so no new warning is shown and the screen + share is silently allowed. + + + + + poromov@chromium.org + chromeos-dlp@google.com + + Recorded when video capture was interrupted by Data Leak Prevention. + + + + + rbock@google.com + chromeos-commercial-remote-management@google.com + managed-devices@google.com + + Number of retries the client did to execute a DeviceManagementServer + request. It's recorded after the request has been completed, either + successfully after 0 or more retries, with a failure (too many retries or + non-retriable error) or with a server error. {EnterpriseDMServerRequest} + + + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + rbock@google.com + zmin@chromium.org + + + + + + igorcov@chromium.org + chromeos-commercial-remote-management@google.com + + Whether loading of device policy from file on an enterprise-enrolled + (checked against install_attributes.pb) Chrome OS device yields an + enterprise policy. Filled once during session startup, after first + successful device policy read. + + + + + + + igorcov@chromium.org + chromeos-commercial-remote-management@google.com + + Whether loading of device policies from file on an enterprise-enrolled + (checked against install_attributes.pb) Chrome OS device yields a PolicyData + message with a DMToken. Filled once during session startup, after first + successful device policy read. + + + + + asumaneev@google.com + sergiyb@chromium.org + chromeos-commercial-remote-management@google.com + + Events related to device enrollment on new installs of Chrome OS devices. + + + + + asumaneev@google.com + sergiyb@chromium.org + chromeos-commercial-remote-management@google.com + + Events related to attestation-based enrollment (Zero-Touch) of Chrome OS + devices. + + Warning: this histogram was expired from 2021-12-05 to 2022-02-01. Data may + be missing. + + + + + asumaneev@google.com + sergiyb@chromium.org + chromeos-commercial-remote-management@google.com + + Events related to forced re-enrollment (FRE) of Chrome OS devices. + + + + + asumaneev@google.com + sergiyb@chromium.org + chromeos-commercial-remote-management@google.com + + Events related to attestation-based re-enrollment (Auto RE) of Chrome OS + devices. + + + + + asumaneev@google.com + sergiyb@chromium.org + chromeos-commercial-remote-management@google.com + + Events related to forced initial enrollment of Chrome OS devices during the + first startup of a device. + + + + + asumaneev@google.com + sergiyb@chromium.org + chromeos-commercial-remote-management@google.com + + Events related to attestation-based initial enrollment (Zero-Touch) of + Chrome OS devices during the first startup of a device. + + + + + asumaneev@google.com + sergiyb@chromium.org + chromeos-commercial-remote-management@google.com + + Events related to manual fallback from attestation-based initial enrollment + (Zero-Touch) of Chrome OS devices during the first startup of a device. + + + + + asumaneev@google.com + sergiyb@chromium.org + chromeos-commercial-remote-management@google.com + + Events related to manual fallback from attestation-based re-enrollment (Auto + RE) of Chrome OS devices. + + Warning: this histogram was expired from 2021-12-05 to 2022-02-01. Data may + be missing. + + + + + asumaneev@google.com + sergiyb@chromium.org + chromeos-commercial-remote-management@google.com + + Events related to Chrome OS enterprise enrollment recovery. Note that this + only covers cases in which prior to recovery, UMA stats are enabled by + policy. + + + + + crisguerrero@chromium.org + mpolzer@google.com + chromeos-commercial-remote-management@google.com + + Events related to attestation based re-enrollment after enterprise rollback. + + Events are recorded during enrollment after rollback and types are listed in + the MetricEnrollment enum. + + + + + crisguerrero@chromium.org + mpolzer@google.com + chromeos-commercial-remote-management@google.com + + Events related to manual re-enrollment after enterprise rollback. This is + used when attestation based enrollment fails. + + Events are recorded during enrollment after rollback and types are listed in + the MetricEnrollment enum. + + + + + asumaneev@google.com + sergiyb@chromium.org + chromeos-commercial-remote-management@google.com + + Elapsed time from *after* GAIA login until enrollment was cancelled. + + + + + asumaneev@google.com + sergiyb@chromium.org + chromeos-commercial-remote-management@google.com + + Elapsed time from *after* GAIA login until enrollment failed. + + + + + asumaneev@google.com + sergiyb@chromium.org + chromeos-commercial-remote-management@google.com + + Elapsed time from *after* GAIA login until enrollment succeeded. + + + + + + Remove after M105. Data is static hence there is no need to keep monitoring. + + zmin@chromium.org + grt@chromium.org + + Elapsed time taken to acquire each lock to access policies in the Windows + registry (at user scope and then at machine scope). This metric is recorded + shortly after browser startup once with the combined wait time for both + locks regardless of success or failure. + + + + + + Remove after 2022-06. Data is static hence there is no need to keep + monitoring. + + zmin@chromium.org + grt@chromium.org + + Elapsed time taken to acquire the lock to access policies in the Windows + registry. The success or failure variant of this metric is recorded once for + user scope and then once for machine scope shortly after browser startup. + + + + + + + + + + + + + + Remove after M105. Data is static hence there is no need to keep monitoring. + + zmin@chromium.org + grt@chromium.org + + Windows error code following a failure to acquire the lock to access + policies in the Windows registry shortly after browser startup. + + + + + anthonyvd@chromium.org + chrome-enterprise-team-core@google.com + + Events for counting CBCM policy invalidations received with and without + payloads. Invalidations indicate that a policy has been updated and should + be refreshed. Payloads provide context about the policy update, but may be + absent if dropped by the invalidation service. Subset of + "Enterprise.CBCMPolicyInvalidations". Gets recorded only when + FCMInvalidationService is used as InvalidationService. + + + + + anthonyvd@chromium.org + chrome-enterprise-team-core@google.com + + Events measuring effectiveness of refreshing CBCM policy when invalidations + are received from a service. For each refresh, indicates whether the policy + changed, and whether the policy was invalidated at the time of the refresh. + Subset of "Enterprise.CBCMPolicyRefresh". Gets recorded only when + FCMInvalidationService is used as InvalidationService. + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events for counting device local account policy invalidations received with + and without payloads. Invalidations indicate that a policy has been updated + and should be refreshed. Payloads provide context about the policy update, + but may be absent if dropped by the invalidation service. Subset of + "Enterprise.DeviceLocalAccountPolicyInvalidations2". Gets recorded + only when FCMInvalidationService is used as InvalidationService. + + As opposed to current histogram, + Enterprise.FCMInvalidationService.DevicePolicyInvalidations2 counts only + events of device policy invalidations. + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events measuring effectiveness of refreshing device local account policy + when invalidations are received from a service. For each refresh, indicates + whether the policy changed, and whether the policy was invalidated at the + time of the refresh. Subset of + "Enterprise.DeviceLocalAccountPolicyRefresh3". Gets recorded only + when FCMInvalidationService is used as InvalidationService. + + As opposed to current histogram, + Enterprise.FCMInvalidationService.DevicePolicyRefresh3 counts only events of + refreshing device policies. + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events for counting device policy invalidations received with and without + payloads. Invalidations indicate that a policy has been updated and should + be refreshed. Payloads provide context about the policy update, but may be + absent if dropped by the invalidation service. Subset of + "Enterprise.DevicePolicyInvalidations2". Gets recorded only when + FCMInvalidationService is used as InvalidationService. + + As opposed to current histogram, + Enterprise.FCMInvalidationService.DeviceLocalAccountPolicyInvalidations2 + counts only events of device local account policy invalidations. + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events measuring effectiveness of refreshing device policy when + invalidations are received from a service. For each refresh, indicates + whether the policy changed, and whether the policy was invalidated at the + time of the refresh. Subset of "Enterprise.DevicePolicyRefresh3". + Gets recorded only when FCMInvalidationService is used as + InvalidationService. + + As opposed to current histogram, + Enterprise.FCMInvalidationService.DeviceLocalAccountPolicyRefresh3 counts + only events of refreshing device local account policies. + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events for counting user policy invalidations received with and without + payloads. Invalidations indicate that a policy has been updated and should + be refreshed. Payloads provide context about the policy update, but may be + absent if dropped by the invalidation service. Subset of + "Enterprise.PolicyInvalidations". Gets recorded only when + FCMInvalidationService is used as InvalidationService. + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Tracks the result of registration for policy invalidations. It will fail + when duplicate invalidation names are used for different policies due to + http://b/119860379. Subset of + "Enterprise.PolicyInvalidationsRegistrationResult". Gets recorded + only when FCMInvalidationService is used as InvalidationService. + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events measuring effectiveness of refreshing user policy when invalidations + are received from a service. For each refresh, indicates whether the policy + changed, and whether the policy was invalidated at the time of the refresh. + Subset of "Enterprise.PolicyRefresh2". Gets recorded only when + FCMInvalidationService is used as InvalidationService. + + + + + wenyufu@chromium.org + twellington@chromium.org + + Records the time it takes to retrieve application restrictions from the + system using an AsyncTask. Recording during first run experience on Android + only. + + + + + skym@chromium.org + twellington@chromium.org + wenyufu@chromium.org + + Records the time it takes to retrieve application restrictions from the + system using an AsyncTask. Recording during first run experience on Android + only. Has a bigger range (0-3 minutes) than the non-Medium version. + + + + + emaxx@chromium.org + igorcov@chromium.org + vsavu@google.com + chromeos-commercial-remote-management@google.com + + Chrome OS only. Result of checking if device policy files are valid when + reading the device policy data. + + + + + mnissler@chromium.org + + Number of policies loaded at startup on iOS, and when a change is detected + at runtime. + + + + + mpetrisor@chromium.org + imprivata-eng@google.com + ChromeOS only. Records if cleanup handler succeeded. + + + + + mpetrisor@chromium.org + imprivata-eng@google.com + + ChromeOS only. Records the duration the cleanup handler took. + + + + + + igorruvinov@chromium.org + zmin@chromium.org + + Records whether browser unenrollment via DMToken deletion completed + succcessfully after attempting to delete the token. + + + + + rogerta@chromium.org + zmin@chromium.org + + Time since the enrollment request was made until an error is returned from + the server. + + + + + zmin@chromium.org + rogerta@chromium.org + + Time since the enrollment request was made until a successful enrollment + response is returned from the server. + + + + + zmin@chromium.org + rogerta@chromium.org + The result of machine level user cloud policy enrollment. + + + + zmin@chromium.org + rogerta@chromium.org + + Records whether the machine level user cloud policy enrollment dialog is + shown to the user and the action they took. + + + + + zmin@chromium.org + rogerta@chromium.org + + The length of time the machine level user cloud policy enrollment dialog was + visible to the user. + + + + + zmin@chromium.org + domfc@chromium.org + + Records whether a browser unenrollment was completed succcessfully by + writing an invalid DMToken to storage or not. + + + + + ydago@chromium.org + zmin@chromium.org + + Recorded after the ManagementStatus cache is updated. Reports whether the + Management authority trustworthiness changed after the cache update. + + + + + domfc@chromium.org + webprotect-team@google.com + + Records the size (in bytes) of data that might have been scanned by the + OnBulkDataEntry Enterprise Connector. Is is logged once per user action that + would trigger this Connector. + + + + + mnissler@chromium.org + Result of the OpenNetworkConfiguration policy validation. + + + + igorruvinov@chromium.org + zmin@chromium.org + + The number of proof-of-possession cookies retrieved from the platform to + authenticate the user to their IdP/STS. Recorded once per successful fetch. + + + + + igorruvinov@chromium.org + zmin@chromium.org + + The HRESULT returned by either CoCreateInstance or GetCookieInfoForUri when + trying to fetch proof-of-possession cookies from the platform to + authenticate the user to their IdP/STS. + + + + + igorruvinov@chromium.org + zmin@chromium.org + + The elapsed time for a fetch of proof-of-possession cookies from the + platform to authenticate the user to their IdP/STS to {Result}. Recorded + once per fetch. + + + + + + + + + vsavu@google.com + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + A set of enterprise policy rules that are in use. This is recorded every 24 + hours and at startup, if the last recording was earlier than a day before. + + + + + zmin@chromium.org + igorruvinov@chromium.org + chromeos-commercial-remote-management@google.com + + Record summary of sources of all policies. It's recorded ever 24 hours and + at startup. + + This does not include user cloud policy and some speicial policy sources + like enterprise_default. + + + + + zmin@chromium.org + qiutanw@google.com + chromeos-commercial-remote-management@google.com + + A set of {PolicyLevel} enterprise policy rules that are in use. This is + recorded for each {PolicyLevel} policy every 24 hours and at startup, if the + last recording was earlier than a day before. + + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events for counting user policy invalidations received with and without + payloads. Invalidations indicate that a policy has been updated and should + be refreshed. Payloads provide context about the policy update, but may be + absent if dropped by the invalidation service. + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Tracks the result of registration for policy invalidations. It will fail + when duplicate invalidation names are used for different policies due to + http://b/119860379. + + + + + mnissler@chromium.org + + Time since startup of the cloud policy code until the policy invalidation + service first reported its online status. + + + + + mnissler@chromium.org + + Load status from the policy loaders which pull policy settings from the + underlying platform, such as Windows Group Policy. + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events measuring effectiveness of refreshing user policy when invalidations + are received from a service. For each refresh, indicates whether the policy + changed, and whether the policy was invalidated at the time of the refresh. + + + + + rbock@google.com + igorcov@chromium.org + chromeos-commercial-remote-management@google.com + + Time since last device policy fetch. Emitted when policies are loaded. + + + + + zmin@chromium.org + pastarmovj@chromium.org + + Time since last machine level user policy fetch.. Emitted when policies are + loaded. + + + + + rbock@google.com + igorcov@chromium.org + chromeos-commercial-remote-management@google.com + + Time since last user policy fetch. Emitted when policies are loaded. + + + + + poromov@chromium.org + chromeos-commercial-remote-management@google.com + Tracking the results of policy user verification. + + + + hmare@google.com + cbe-device-trust-eng@google.com + + Recorded in the event of failures during the profile identifier generation + action. + + + + + hmare@google.com + cbe-device-trust-eng@google.com + + Records whether the profile identifier generation action was successful or + not. + + + + + ydago@chromium.org + zmin@chromium.org + + The Http statuses returned by the server when trying to get the + ManagedAccounsSigninRestriction policy value for individual dasher accounts. + This is recorded after trying to the the policy value, when the status is + available. + + + + + ydago@chromium.org + zmin@chromium.org + + The network errors that happen when trying to get the + ManagedAccounsSigninRestriction policy value for individual dasher accounts. + This is recorded every time after trying to the the policy value. + + + + + bfranz@chromium.org + chromeos-kiosk-eng@google.com + + Extensions (and apps) are quite restricted in public sessions for security + and privacy concerns - some permissions are blocked which means the + extension itself is blocked (prevented from loading). This histogram counts + requested permissions on extension installation in public sessions (both + installed and blocked extensions). + + + + + bfranz@chromium.org + chromeos-kiosk-eng@google.com + + A public session starts when a user signs in using the policy configured + public account. It stops when the user signs out. Session length is the + duration between the start and stop events. It is recorded during signing + out and reported on the next chrome run. This metric tracks the recorded + session length rounded down to the nearest 10-minute bucket and capped at 24 + hours. + + + + + rogerta@chromium.org + + Number of retries the client did to execute a real-time reporting upload + request. It's recorded after the request has been completed, either + successfully after 0 or more retries, with a failure (too many retries or + non-retriable error) or with a server error. + + + + + bfranz@chromium.org + chromeos-kiosk-eng@google.com + + A regular user session starts when a user signs in using his/her user + account. It stops when the user signs out. Session length is the duration + between the start and stop events. It is recorded during signing out and + reported on the next chrome run. This metric tracks the recorded session + length on an enrolled device rouned down to the nearest 10-minute bucket and + capped at 24 hours. + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Tracks whether remote commands invalidator registered for corresponding + invalidations. In case of success the invalidator is able to receive + incoming invalidations. + + Metric is similar to Enterprise.PolicyInvalidationsRegistrationResult. + + + + + rodmartin@google.com + chromeos-commercial-identity@google.com + + Latency of a SecondaryGoogleAccountUsage policy fetch request. This measures + the amount of time required to fetch the policy value of + SecondaryGoogleAccountUsage from the Secure Connect API. This is recorded + when a user account is added as a secondary account (in-session). + + + + + rodmartin@google.com + chromeos-commercial-identity@google.com + + Tracks the result of + UserCloudSigninRestrictionPolicyFetcher::GetSecondaryGoogleAccountUsage. + This is recorded when a user account is added as a secondary account + (in-session). + + + + + ayaelattar@chromium.org + poromov@chromium.org + + Shows which system features are set to be disabled by + SystemFeaturesDisableList policy. Recorded when the policy preference is + updated with a new system feature. No-op updates aren't counted. + + + + + bmalcolm@chromium.org + cros-client-wa@google.com + Result of a single attempt to upload system logs. + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Captures the actual error whenever parsing of {Signal} from WMI results + failed. + + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Captures the actual error whenever collection of {Signal} from WMI failed + with a query error. + + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Captures the actual error whenever parsing of AntiVirus info from WSC + results failed. + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Captures the actual error whenever collection of AntiVirus info from WSC + failed with a query error. + + + + + seblalancette@chromium.org + cbe-device-trust-eng@google.com + + Captures the response parsing error rate whenever collecting {Signal}. + + + + + + + + + emaxx@chromium.org + pmarko@chromium.org + + Duration of the initial policy load operation (including reading from cache + or fetching over network, parsing and validating) during {ProfileType} + session startup. + + + + + + + + + + + + + + + emaxx@chromium.org + pmarko@chromium.org + + Duration between when the construction of the policy stack for a user + profile starts and when its initialization gets untrottled. + + Only reported on ChromeOS Ash, only for managed users who are primary users + in the given session. The values are capped at around 5 seconds, and + timeouts are reported as this upper boundary value as well. + + + + + agawronska@chromium.org + michaelpg@chromium.org + Failure reason for OAuth token fetch for child user. + + + + igorcov@chromium.org + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Service error during OAuth2 access token fetch. + + There is a gap in data as the histogram was expired from 2022-03-01 till + 2023-02-09. + + + + + hendrich@chromium.org + rbock@google.com + chromeos-commercial-remote-management@google.com + managed-devices@google.com + Re-registration results after failed policy fetch. + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events for counting status of executed user remote commands. The metric + includes only signed user remote commands. Reports a final status of + finished remote command (e.g. success, failure or termination). + {Enterprise_RemoteCommandType} + + + + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events for counting received user remote commands. The metric includes + signed user remote commands, both valid and invalid. Valid remote command is + counted by its type. Invalid remote command is counted by a reason why it is + considered invalid (e.g. unknown type or duplication). + + + + + asumaneev@google.com + chromeos-commercial-remote-management@google.com + + Events for counting user remote commands invalidations received with and + without payloads. Invalidations indicate that there is a remote command to + execute. Payloads provide context about the remote commands update, but may + be absent if dropped by the invalidation service. + + Metric is similar to Enterprise.PolicyInvalidations. + + + + + xiyuan@chromium.org + sduraisamy@chromium.org + Tracks the sign-in events on an enrolled device. + + + + lmasopust@google.com + rodmartin@chromium.org + cbe-device-trust-eng@google.com + + Recorded when building a response for a challenge from Verified Access + server for remote attestation during SAML authentication. This captures if + Device Trust is configured alongside Verified Access for the current + endpoint or not. + + + + + vsavu@google.com + igorcov@chromium.org + chromeos-commercial-remote-management@google.com + The result of Chrome reading the VPD cache on Chrome OS. + + + + igorcov@chromium.org + tnagel@chromium.org + chromeos-commercial-remote-management@google.com + + The status code (exit code or signal) from sanity check of RW_VPD read and + matching the contents with data from dump_vpd_log (Chrome OS). + + There is a gap in data as the histogram was expired from 2020-07-05 till + 2023-02-09. + + + + + igorcov@chromium.org + tnagel@chromium.org + chromeos-commercial-remote-management@google.com + + The status code (exit code or signal) from VPD update operation (Chrome OS). + + + + + igorruvinov@chromium.org + ydago@chromium.org + pastarmovj@chromium.org + rogerta@chromium.org + zmin@chromium.org + + Time elapsed for checking the Azure AD join status. This is only recorded + once during the first successful join status check. + + + + + ydago@chromium.org + pastarmovj@chromium.org + rogerta@chromium.org + + Whether the machine is part of an AD domain. This check is performed once at + start-up on Windows. + + + + + olsen@chromium.org + chromeos-commercial-remote-management@google.com + + A set of policy rules that failed validation due to unparsable JSON, or JSON + that did not match the schema. This validation happens on start-up and when + the policy has changed. + + The histogram was expired (not recording data) from 2020-06-18 until + 2021-03-15 and from 2021-07-01 to 2022-10-23. + + + + + pastarmovj@chromium.org + ydago@chromium.org + + A set of policy rules that were ignored due to integrity violations while + parsing the policy data which happens on start-up and when the policy has + changed. + + + + + pastarmovj@chromium.org + zmin@chomium.org + + The number of disabled policy entries on Windows due to integrity violations + while parsing the policy data which happens on start-up and when the policy + has changed. + + + + + pastarmovj@chromium.org + rogerta@chromium.org + zmin@chromium.org + + Whether the machine is joined to an AD domain. This check is performed once + at start-up on Windows. + + + + + pastarmovj@chromium.org + rogerta@chromium.org + zmin@chromium.org + + Whether the machine is considered an enterprise user. An enterprise user is + either in a domain, either local or cloud via AAD. This check is performed + once at start-up on Windows. + + + + + twellington@google.com + tedchcoc@chromium.org + + On Android (OS version Lollipop+): Whether the device has a "device + owner" app installed. This check is performed once on application + start-up. + + + + + igorruvinov@chromium.org + ydago@chromium.org + pastarmovj@chromium.org + rogerta@chromium.org + zmin@chromium.org + + Whether the machine is joined to an Azure AD domain or the user has added + one or more work/school accounts to their login session. This check is + performed once at start-up on Windows. + + + + + zmin@chromium.org + pastarmovj@chromium.org + rogerta@chromium.org + + Whether the full machine name is the same as the short one, identifying a + local machine. This check is performed once at start-up on Windows. + + + + + zmin@chromium.org + pastarmovj@chromium.org + rogerta@chromium.org + + Whether the currently logged in user is a local user or not, based on its + SAM compatible user name and machine name. This check is performed once at + start-up on Windows. + + + + + zmin@chromium.org + rogerta@chromium.org + pastarmovj@chromium.org + + On Windows: Whether the machine is managed via MDM. On macOS: Whether Chrome + found a file of managed policies to follow. On Android (OS version + Lollipop+): Whether the device has a profile owner app. This check is + performed once on application start-up. + + + + + pastarmovj@chromium.org + rogerta@chromium.org + zmin@chromium.org + + Whether the machine is managed or part of an enterprise. This includes + devices that are either in a domain or managed via MDM. This check is + performed once at start-up on Windows. + + + + + pastarmovj@chromium.org + zmin@chromium.org + + On the Mac: Whether the current user has an enterprise identity in Open + Directory. This check is performed once at start-up. + + + + + pastarmovj@chromium.org + zmin@chromium.org + + On the Mac: Whether the machine is joined to a domain. This check is + performed once at start-up. + + + + + pastarmovj@chromium.org + zmin@chromium.org + + On the Mac: Whether the machine is managed via MDM, with data obtained via a + new method (profiles) that is only available in 10.13.4 or later. This check + is performed once at start-up. + + + + + pastarmovj@chromium.org + zmin@chromium.org + + On the Mac: Whether the machine is managed via MDM, with data obtained via + an old method (system_profiler). This check is performed once at start-up. + + + + + rogerta@chromium.org + + Whether we could obtain the address of the NetGetJoinInformation function. + This check is performed once at start-up on Windows. + + + + + ydago@chromium.org + pastarmovj@chromium.org + + The rough Windows suite we are running on. This check is performed once at + start-up on Windows. The histogram was removed in 108 and reinstated in 111. + + + + + + diff --git a/histograms/metadata/event/OWNERS b/histograms/metadata/event/OWNERS new file mode 100644 index 000000000000..7729ed5e5867 --- /dev/null +++ b/histograms/metadata/event/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +# For EventLatency.* related changes. +jonross@chromium.org diff --git a/histograms/metadata/event/histograms.xml b/histograms/metadata/event/histograms.xml new file mode 100644 index 000000000000..d00113f35b0a --- /dev/null +++ b/histograms/metadata/event/histograms.xml @@ -0,0 +1,1239 @@ + + + + + + + + + + + + + + + + + + + + flackr@chromium.org + + Time between initiation of any input event and the renderer receiving and + starting to process it. + + Team: input-dev@chromium.org. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + + mustaq@chromium.org + nzolghadr@chromium.org + + Tracks the number of Android MotionEvents with ACTION_DOWN or + ACTION_POINTER_DOWN or ACTION_BUTTON_PRESS for each ToolType (unknown, + finger, mouse or stylus). + + Team: input-dev@chromium.org. + + + + + liviutinta@chromium.org + mustaq@chromium.org + input-dev@chromium.org + + Records whether Browser User Activation Verification is successful or not. + We are interested in how many times the Browser User Activation Verification + fails vs how many times it succeeds. + + + + + tbuckley@chromium.org + + The number of down events received per destination, input and form factor + combination. + + Input is down events generated by mouse/touch/stylus. Form factor is down + events generated by clamshell/touchviewLandscape/touchviewPortrait. + Destination: Every down event that is targeted to each destination will be + counted including those that don't have an effect. For example: Tapping on a + disabled button inside the browser frame will be treated as down events on + browser window. + + + + + kuscher@google.com + input-dev@chromium.org + + The gesture-events recognized and dispatched by the browser gesture + recognizer. This replaces Ash.GestureCreated, which did not record events on + Android and Windows. + + Note: this metric was expired from 2020-03-01 to 2023-04-04. + + + + + dtapuska@chromium.org + + For hit tests that are validated, records whether it was correct or not, and + why. + + Team: input-dev@chromium.org. + + + + + dtapuska@chromium.org + + For hit tests that are invalid, records the score (a series of bits + indicating what was matched and what wasn't). + + Team: input-dev@chromium.org. + + + + + flackr@chromium.org + input-dev@chromium.org + + NOTE: this metric was expired from M97 to 2023-03-14. Overshoot distance in + pixels between a predicted scroll position and the corresponding + interpolated real scroll position that occurred at the frame time. + + The difference between {ScoreType} and Frame{ScoreType} is the former uses + prediction time and the later uses frame time. + + Team: input-dev@chromium.org. + + + + + + + + + + flackr@chromium.org + input-dev@chromium.org + + NOTE: this metric was expired from M97 to 2023-03-14. Euclidean distance in + pixels between two successive variations of touch scroll deltas which are + the difference between a predicted scroll position and its corresponding + interpolated real position that occurred at prediction time. + + Team: input-dev@chromium.org. + + + + + flackr@chromium.org + input-dev@chromium.org + + NOTE: this metric was expired from M97 to 2023-03-14. Euclidean distance in + pixels between two successive variations of touch scroll deltas which are + the difference between a predicted scroll position and the interpolated real + position that occurred at frame time. + + Team: input-dev@chromium.org. + + + + + flackr@chromium.org + input-dev@chromium.org + + NOTE: this metric was expired from M97 to 2023-03-14. Overshoot distance in + pixels between a predicted scroll position and the corresponding + interpolated real scroll position that occurred at the frame time. + + Team: input-dev@chromium.org. + + + + + + + + + + mekk@google.com + woa-performance@google.com + + A frame is deemed janky if an irregular jump in screen displacement occured + in consecutive frames, this metric is the percentage of those janky frames + per 50 produced frames and is only emitted if a scroll has more than 50 + frames in sa sequence. This metric is used to asses the scrolling prediction + performance as the scroll predictor should smooth out those irregular jumps. + + For more details about this metric, please check + http://doc/1Y0u0Tq5eUZff75nYUzQVw6JxmbZAW9m64pJidmnGWsY. + + + + + nuskos@google.com + woa-performance@google.com + + IMPORTANT: This was deprecated and stopped being emitted due to overflow + from the counters being emitted in Microseconds instead of milliseconds like + it was supposed to. Please see + Event.Jank.ScrollUpdate.TotalJankyAndNonJankyDuration2. + + Each time a ScrollUpdate event which was displayed on the screen is + processed, an amount of samples equal to the event processing duration in + milliseconds is emitted into the corresponding bucket. + + Thus the ratio of the two represents the average amount of time scrolling is + janky. + + + + + nuskos@google.com + woa-performance@google.com + + Each time a ScrollUpdate event which was displayed on the screen is + processed, an amount of samples equal to the event processing duration in + milliseconds is emitted into the corresponding bucket. + + Thus the ratio of the two represents the average amount of time scrolling is + janky. + + + + + mekk@google.com + woa-performance@google.com + + This metric is the ratio between a larger screen displacement divided by a + following small screen displacement {ScrollSpeed}. If the larger screen + displacement was deemed janky given the predictor performance, and is only + emitted if there is {VsyncStatus}. This metric is used to asses the + scrolling prediction performance as the scroll predictor should smooth out + those irregular jumps. + + For more details about this metric, please check + http://doc/1Y0u0Tq5eUZff75nYUzQVw6JxmbZAW9m64pJidmnGWsY. + + + + + + + + + + + + + flackr@chromium.org + input-dev@chromium.org + + NOTE: This metric is deprecated in favor of + EventLatency.KeyPressed.TotalLatency metric (see crbug.com/1054021). + + Time between the OS receiving a keyboard event and the resulting GPU frame + swap. If no swap was induced by the event, no recording is made. Only + recorded for key presses. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Removed in 2022-09. Replaced by EventLatency.Mouse*.TotalLatency metrics. + + nzolghadr@chromium.org + input-dev@chromium.org + + Time between the OS receiving a mouse event and the resulting GPU frame + swap. If no swap was induced by the event, no recording is made. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + nzolghadr@chromium.org + input-dev@chromium.org + + NOTE: This metric is deprecated in favor of + EventLatency.GesturePinch*.TotalLatency metrics (see crbug.com/1054021). + + Time between the OS receiving a touchpad pinch event and the resulting GPU + frame swap. If no swap was induced by the event, no recording is made. + + + + + pdr@chromium.org + paint-dev@chromium.org + + Duration of a non-resurive hitTest operation. The hit test is non-recursive + when the AllowChildFrameContent flag is clear. See also + Event.Latency.HitTestRecusrive. + + Team: paint-dev@chromium.org. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + pdr@chromium.org + paint-dev@chromium.org + + Duration of a recursive hitTest operation. The hit test is recursive when + the AllowChildFrameContent flag is set. See also Event.Latency.HitTest. + + Team: paint-dev@chromium.org. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + flackr@chromium.org + joenotcharles@google.com + input-dev@chromium.org + + Time between input event received by OS and sent to Chrome, recorded for + each event when it is received by Chrome. Replaced Event.Latency.OS which + was calculated incorrectly on Windows. + + Warning: On Windows, the timestamps of most events come from a clock with a + several msec resolution so will have an abnormal distribution even when + TimeTicks::IsHighResolution returns true. The exception is touch events + which usually come from the high-resolution clock when + TimeTicks::IsHighResolution returns true. + + + + + + + + + + + + + nzolghadr@chromium.org + gerchiko@microsoft.com + input-dev@chromium.org + speed-metrics-dev@chromium.org + + NOTE: This metric is deprecated in favor of + EventLatency.FirstGestureScrollUpdate.Scrollbar.TotalLatency metric (see + crbug.com/1054021). + + Time between initial creation of an input event that resulted in a scrollbar + scroll and the start of the frame swap on the GPU service caused by the + generated ScrollUpdate gesture event if that ScrollUpdate is the first such + event in a given scroll gesture event sequence. If no swap was induced by + the event, no recording is made. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + nzolghadr@chromium.org + + NOTE: This metric is deprecated in favor of + EventLatency.FirstGestureScrollUpdate.TotalLatency metric (see + crbug.com/1054021). + + Time between initial creation of a wheel/touch event and start of the frame + swap on the GPU service caused by the generated ScrollUpdate gesture event + if that ScrollUpdate is the first such event in a given scroll gesture event + sequence. If no swap was induced by the event, no recording is made. If no + swap was induced by the event, no recording is made. + + Team: input-dev@chromium.org. + + + + + flackr@chromium.org + joalmei@microsoft.org + input-dev@chromium.org + + Measures an average distance that represents how the page sticks to the + finger when user scrolls. Only reports touch scrolling. See + https://docs.google.com/document/d/154jddNiKtxELBvrjLz9v6A7sA1J3iwQQzySHgtY12Oo/ + + This is the lag observed in processing the Gesture Scroll Begin Event. In + each touch interaction there is a GSB followed by multiple Gesture Scroll + Updates, which are separately logged by + Event.Latency.ScrollUpdate.Touch.AverageLagPresentation. + + Team: input-dev@chromium.org. + + + + + flackr@chromium.org + sahir.vellani@microsoft.org + input-dev@chromium.org + + Measures an average distance that represents how the page sticks to the + finger when user scrolls if prediction was disabled. Only reports touch + scrolling. See + https://docs.google.com/document/d/154jddNiKtxELBvrjLz9v6A7sA1J3iwQQzySHgtY12Oo/ + + This is the lag observed in processing the Gesture Scroll Begin Event. In + each touch interaction there is a GSB followed by multiple Gesture Scroll + Updates, which are separately logged by + Event.Latency.ScrollUpdate.Touch.AverageLagPresentation. + + Team: input-dev@chromium.org. + + + + + flackr@chromium.org + input-dev@chromium.org + speed-metrics-dev@chromium.org + + NOTE: This metric is deprecated in favor of + EventLatency.FirstGestureScrollUpdate.Touchscreen.TotalLatency metric (see + crbug.com/1054021). + + Time between initial creation of a touch event and the start of the frame + swap on the GPU service caused by the generated ScrollUpdate gesture event + if that ScrollUpdate is the first such event in a given scroll gesture event + sequence. If no swap was induced by the event, no recording is made. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. {TopControlsState} + + + + + + + + flackr@chromium.org + + NOTE: This metric is deprecated in favor of + EventLatency.FirstGestureScrollUpdate.Wheel.TotalLatency metric (see + crbug.com/1054021). + + Time between initial creation of a wheel event and the start of the frame + swap on the GPU service caused by the generated ScrollUpdate gesture event + if that ScrollUpdate is the first such event in a given scroll gesture event + sequence. If no swap was induced by the event, no recording is made. + + Team: input-dev@chromium.org. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Removed in 2022-09. Replaced by + EventLatency.InertialGestureScrollUpdate.Touchscreen.TotalLatency. + + flackr@chromium.org + input-dev@chromium.org + + Time between initial creation of a ScrollUpdate gesture event generated from + a touchscreen fling and the start of the frame swap on the GPU service + caused by the generated ScrollUpdate gesture event. If no swap was induced + by the event, no recording is made. + + Team: input-dev@chromium.org. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + ddrone@google.com + chrometto-team@google.com + + Tracks janky frames while processing scroll events, which are defined as + frames taking longer than half of vsync interval compared to previous or + next frame. + + + + + ddrone@google.com + chrometto-team@google.com + + Total duration (wall time in milliseconds of potentially concurrent events) + of LatencyInfo::GestureScrollUpdate events that are detected as janky during + a particular scroll. + + + + + ddrone@google.com + chrometto-team@google.com + + Percentage of duration of scroll events that are detected as janky during a + particular scroll. + + + + + ddrone@google.com + chrometto-team@google.com + + Count of LatencyInfo::GestureScrollUpdate events that are detected as janky + during a particular scroll. + + + + + flackr@chromium.org + arakeri@microsoft.com + input-dev@chromium.org + speed-metrics-dev@chromium.org + + NOTE: This metric is deprecated in favor of + EventLatency.GestureScrollUpdate.Scrollbar.TotalLatency metric (see + crbug.com/1054021). + + Time between initial creation of a scrollbar event and start of the frame + swap on the GPU service caused by the generated ScrollUpdate gesture event. + If no swap was induced by the event, no recording is made. The first GSU of + every scrolling sequence is excluded from this metric. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + nzolghadr@chromium.org + + NOTE: This metric is deprecated in favor of + EventLatency.GestureScrollUpdate.TotalLatency metric (see + crbug.com/1054021). + + Time between initial creation of a wheel/touch event and start of the frame + swap on the GPU service caused by the generated ScrollUpdate gesture event. + If no swap was induced by the event, no recording is made. The first GSU of + every scrolling sequence is excluded from this metric. + + Team: input-dev@chromium.org. + + + + + ddrone@google.com + chrometto-team@google.com + + Total duration (wall time in milliseconds of potentially concurrent events) + of LatencyInfo::GestureScrollUpdate events during a particular scroll. + + + + + ddrone@google.com + chrometto-team@google.com + + Count of LatencyInfo::GestureScrollUpdate events during a particular scroll. + + + + + flackr@chromium.org + joalmei@microsoft.com + input-dev@chromium.org + + Measures an average distance that represents how the page sticks to the + finger when user scrolls. Only reports touch scrolling. See + https://docs.google.com/document/d/154jddNiKtxELBvrjLz9v6A7sA1J3iwQQzySHgtY12Oo/ + + This is the lag observed in processing the Gesture Scroll Updates occurring + in the lifetime of a scroll interaction. + + Team: input-dev@chromium.org. + + + + + flackr@chromium.org + sahir.vellani@microsoft.com + input-dev@chromium.org + + Measures an average distance that represents how the page sticks to the + finger when user scrolls if prediction was disabled. Only reports touch + scrolling. See + https://docs.google.com/document/d/154jddNiKtxELBvrjLz9v6A7sA1J3iwQQzySHgtY12Oo/ + + This is the lag observed in processing the Gesture Scroll Updates occurring + in the lifetime of a scroll interaction. + + Team: input-dev@chromium.org. + + + + + flackr@chromium.org + sahir.vellani@microsoft.com + input-dev@chromium.org + + Percentage of touch lag that prediction wasn't able to remove. + + This is the ratio (Lag_with_prediction)/(Lag_without_prediction). Lag is the + average distance between the finger and page positons during touch + scrolling. + + 0% means all the lag existing before prediction was removed. 100% means that + prediction had no impact. Greater than 100% means that prediction introduced + more lag. + + This metric doesn't distinguish between OverPrediction and UnderPrediction. + A same absolute value of OverPrediction or UnderPrediction will result in + the same RemainingLagPercentage value. + + Lag_with_prediction = + Event.Latency.ScrollUpdate.Touch.AverageLagPresentation + Lag_without_prediction = + Event.Latency.ScrollUpdate.Touch.AverageLagPresentation.NoPrediction + + Team: input-dev@chromium.org. + + + + + flackr@chromium.org + sahir.vellani@microsoft.com + input-dev@chromium.org + + Improvement of prediction in touch lag. It is defined as + (Lag_without_prediction - Lag_with_prediction). + + Lag is the distance between the finger position and the rendered position. + + When positive, prediction improves touch performance (reduces lag). When + negative, prediction worsens touch performance (increases lag). + + The duration of the interaction/interval is either 1s, or the time from when + the user starts scrolling to lifting the finger, whichever is smaller. + + This metric uses directionless distances, therefore it doesn't distinguish + between OverPrediction and UnderPrediction. A same absolute value of + OverPrediction or UnderPrediction will result in the same PredictionImpact + value. + + Lag_with_prediction = + Event.Latency.ScrollUpdate.Touch.AverageLagPresentation + Lag_without_prediction = + Event.Latency.ScrollUpdate.Touch.AverageLagPresentation.NoPrediction + + Team: input-dev@chromium.org. + + + + + + + + + flackr@chromium.org + sullivan@chromium.org + input-dev@chromium.org + speed-metrics-dev@chromium.org + chrome-analysis-team@google.com + + NOTE: This metric is deprecated in favor of + EventLatency.GestureScrollUpdate.Touchscreen.TotalLatency metric (see + crbug.com/1054021). + + Time between initial creation of a touch event and start of the frame swap + on the GPU service caused by the generated ScrollUpdate gesture event. If no + swap was induced by the event, no recording is made. The first GSU of every + scrolling sequence is excluded from this metric. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org AND chrome-analysis-team@google.com. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. {TopControlsState} + + + + + + + + flackr@chromium.org + + NOTE: This metric is deprecated in favor of + EventLatency.GestureScrollUpdate.Wheel.TotalLatency metric (see + crbug.com/1054021). + + Time between initial creation of a wheel event and start of the frame swap + on the GPU service caused by the generated ScrollUpdate gesture event. If no + swap was induced by the event, no recording is made. The first GSU of every + scrolling sequence is excluded from this metric. + + Team: input-dev@chromium.org. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + + mustaq@chromium.org + input-dev@chromium.org + + The maximum Euclidean distance (in DIPs, device independent pixels) a + single-pointer gesture travels from its starting position during the period + the gesture has been active. The histogram is measured separately for every + pointer type that can be used in gesture recognition: finger, and pen in + drawing/eraser mode. The type names used here follow the corresponding + labels in |MotionEvent.ToolType|. + + + + + + + + + + hajimehoshi@chromium.org + fergal@chromium.org + + Records whether the pageshow event had its persisted flag set in renderer or + browser. This flag is on if and only if the page is restored from + back-forward cache. This flag is off e.g. during the page load. This is + recorded when pageshow event fires on a main frame in renderer, or when + browser triggers this event on a main frame. This was a boolean on M95 and + before, is extended to an enum EventPageShoerPersisted as of M96. + + + + + hajimehoshi@chromium.org + fergal@chromium.org + + When we send a PageLifecycleState update that should trigger a pageshow + event with its persisted flag set and then the renderer exits, this records + the status of the process. This is an enum (base::TerminationStatus in + base/process/kill.h) but the values vary by platform so we cannot use a + regular enum metric. This is temporary debugging for + https://crbug.com/1234634. + + + + + hajimehoshi@chromium.org + fergal@chromium.org + + When we send a PageLifecycleState update that should trigger a pageshow + event with its persisted flag set and have not yet received an ack, we log + how long it takes for certain events to occur. This is temporary debugging + for https://crbug.com/1234634. + + + + + + + + + + dtapuska@chromium.org + + The result of handling of MouseWheel, TouchStart, TouchMove, TouchEnd events + in the renderer. + + Team: input-dev@chromium.org. + + + + + flackr@chromium.org + input-dev@chromium.org + + On non-mobile sites, gesture taps are delayed to prevent double taps from + sending a click event. This stat counts the number of taps that are delayed + by the double-tap delay versus those that are sent immediately on mobile + sites. + + Team: input-dev@chromium.org. + + + + + charliea@chromium.org + nzolghadr@chromium.org + + Whether a given touch event is filtered by the passthrough touch event queue + or not. If the event was filtered, a reason is given. Potential reasons for + filtering include the page not having any registered touch handlers and the + renderer process not responding to previous touch events. + + Team: input-dev@chromium.org + + + + + kuscher@google.com + rbyers@chromium.org + + The gesture-events recognized and dispatched for UI components owned by the + browser. This histogram was created as part of separating gesture events + between the browser and Ash (crbug.com/826476). The enums are extracted from + Ash.GestureTarget. + + + + + flackr@chromium.org + input-dev@chromium.org + + On non-mobile-optimized (desktop) sites, whether the ack response from the + renderer for any event in a contiguous touch sequence exceeds the + desktop-specific timeout threshold. + + Warning: This histogram has incomplete data. It expired on 2021-08-15 and + then got re-enabled on M110. + + Team: input-dev@chromium.org. + + + + + flackr@chromium.org + input-dev@chromium.org + + On mobile-optimized sites, whether the ack response from the renderer for + any event in a contiguous touch sequence exceeds the mobile-specific timeout + threshold. + + Warning: This histogram has incomplete data. It expired on 2021-08-15 and + then got re-enabled on M110. + + Team: input-dev@chromium.org. + + + + + nzolghadr@chromium.org + + Duration of touch selection sequence which finished with the user selecting + one of the text manipulation actions, such as copy, cut, or paste. The + duration is measured from the moment the text selection handles are shown, + and until the action is executed. + + + + + nzolghadr@chromium.org + + Whether the touch selection sequence ended with the user selecting one of + the text manipulation actions, such as copy, cut, or paste. after startup). + Sequences ending with such action are considered successful. + + + + + nzolghadr@chromium.org + + Duration of touch selection sequence which involved dragging a text + selection handle. The duration is measured from the moment the text + selection handles are shown, and until they are dismissed. + + + + + mustaq@chromium.org + input-dev@chromium.org + + Tracks the notification-type for the user activation that resulted in a + successful call for an activation-gated API (of type sticky, transient or + consuming). + + + + + + + + + + rjkroege@chromium.org + adunaev@igalia.com + + Delay between the drag coming into the window and the window is actually + notified. + + + + + + + jonross@chromium.org + graphics-dev@chromium.org + chrome-analysis-team@google.com + + When a user performs a scroll using touchscreen, a sequence of touch-move + events are generated leading to a sequence of gesture-scroll-update events. + This metric measures total latency of those gesture-scroll-update events + excluding the first one in the sequence and those that are inertial (i.e. + generated as a result of a user fling). Total latency means the time from + when the touch-move causing a gesture-scroll-update is generated until when + the changes caused by the event are successfully presented on the screen. + + This histogram will eventually be replaced by its TotalLatency2 equivalent + which uses an improved bucketing. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + When a user performs a scroll using touchscreen, a sequence of touch-move + events are generated leading to a sequence of gesture-scroll-update events. + This metric measures total latency of those gesture-scroll-update events + excluding the first one in the sequence and those that are inertial (i.e. + generated as a result of a user fling). Total latency means the time from + when the touch-move causing a gesture-scroll-update is generated until when + the changes caused by the event are successfully presented on the screen. + + This histogram is similar to its TotalLatency (non-v2) equivalent except + that it uses an improved bucketing. We will eventually remove the non-v2 + version. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks total latency of {NonTouchscreenScrollInputType} + gesture-scroll-update events that are non-inertial (i.e. not generated due + to a user fling) and not the first one in a scroll sequence, from when the + user input causing the event is performed until the frame caused by the + event is submitted by the GPU service and presented successfully on the + screen. + + {Version}. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + + + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks total latency of all event types, from when the user input causing + the event is performed until the frame caused by the event is submitted by + the GPU service and presented successfully on the screen. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks total latency of {ScrollInputType} {NonGsuScrollEventType}, from when + the user input causing the event is performed until the frame caused by the + event is submitted by the GPU service and presented successfully on the + screen. + + {Version}. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + + + + + + + + + + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks total latency of {NonScrollPinchEventType}, from when the user input + causing the event is performed generated until the frame caused by the event + is submitted by the GPU service and presented successfully on the screen. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + + + + + + + + + + + + + + + + + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks total latency of {PinchInputType} {PinchEventType}, from when the + user input causing the event is performed until the frame caused by the + event is submitted by the GPU service and presented successfully on the + screen. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + + + + + + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Tracks total latency of {ScrollEventType}, from when the user input causing + the event is performed generated until the frame caused by the event is + submitted by the GPU service and presented successfully on the screen. + + {Version}. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + + + + + + + + + + diff --git a/histograms/metadata/extensions/OWNERS b/histograms/metadata/extensions/OWNERS new file mode 100644 index 000000000000..c7c3cca33bc6 --- /dev/null +++ b/histograms/metadata/extensions/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +kelvinjiang@chromium.org diff --git a/histograms/metadata/extensions/histograms.xml b/histograms/metadata/extensions/histograms.xml new file mode 100644 index 000000000000..4c6ca39fc567 --- /dev/null +++ b/histograms/metadata/extensions/histograms.xml @@ -0,0 +1,4699 @@ + + + + + + + + + + + + + + + + + + + + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + The number of extensions that were blocklisted when already installed, + grouped by Extension::Location. Logged when ExtensionService blockists and + unloads an installed extension. + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + The number of extensions that have been blocked from installing grouped by + Extension::Location. Logged when ExtensionService refuses to install a + blocklisted extension. + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + The number of extensions that have been silently installed in a blocklisted + state, grouped by Extension::Location. Logged when ExtensionService installs + a blocklisted extension without blocking it (ExtensionBlacklist.BlockCRX + would be logged otherwise). Typically this will be when a user has a + blocklisted extension synced. + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + The number of extensions that were unblocklisted when installed, grouped by + Extension::Location. Logged when ExtensionService unblocklists and loads a + blocklisted extension. + + + + + + + lazyboy@chromium.org + extensions-core@chromium.org + + The time taken to create the computed_hashes.json file for an extension. + This happens once for each extension after we get signed values of the + expected root node of a tree hashes for each file from the webstore; we then + compute the individual block level hashes of the actual files and cache them + in computed_hashes.json (assuming we don't detect any mismatches). + + + + + lazyboy@chromium.org + + The time taken in computation (hashing actual bytes read and comparing + against expected computed hashes values) during an extension resource load. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Code removed 2022/12. + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The cause for the failure in the setIcon() extension API function. This is + temporary logging to help track down the cause of a crash. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extensions on a page that wanted to execute a script, required + explicit user consent, and were denied permission. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extensions on a page that wanted to execute a script, required + explicit user consent, and were granted permission. + + + + + dbertoni@chromium.org + extensions-core@chromium.org + + The number of alarms loaded from storage when an extension is loaded. + + + + + benwells@chromium.org + dominickn@chromium.org + tapted@chromium.org + + The number of times v1 apps are launched grouped by + extension_misc::AppLaunchBuckets. See also Apps.AppLaunch for v2 apps. Note + this was changed in 2023-02 to no longer count web app launches. + + + + + benwells@chromium.org + cylee@chromium.org + + The number of times apps are launched grouped by + extensions::AppLaunchSource. + + + + + lazyboy@chromium.org + + A platform app ended up in a regular tab either by the app page or its + background page. Note that this happens unexpectedly right now and we wish + to track its usage before removing the supporting code. + + + + + benwells@chromium.org + tapted@chromium.org + + The number of apps loaded on profile open time grouped by + Extension::Location. + + + + + benwells@chromium.org + tapted@chromium.org + + The number of apps loaded on profile open time grouped by + Extension::Location. + + + + + benwells@chromium.org + tapted@chromium.org + + The actions taken in the NTP apps promo grouped by + extension_misc::AppsPromoBuckets. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extension apps launched grouped by extensions::LaunchType. + From 2022-09 this no longer includes web app launches. + + + + + + Code removed 2022/12. + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The extension install location of an extension that Chrome attempted to add, + but failed because it would downgrade the version. Tracking for + https://crbug.com/810799. + + + + + fdoray@chromium.org + catan-team@chromium.org + + Recorded when a background host is created for an extension. The value + indicates for which extension the host was created. + + The breakdown of extensions that make up the "Other extension" + bucket can be derived from the LoadCountsPerTopLevelDocument UKM event. To + compare UKM event counts with UMA sample counts, use this formula: + + count of UKM events for a given extension * count of samples in the + "Other extension" bucket of this histogram / count of UKM events + for all extensions + + Extensions bundled with Chrome have dedicated values in this histogram + because they are not synced and therefore not reported through UKM. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The time taken for an extension's persistent background page to load its + initial URL. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The type (if any) of background page the extension has. Recorded for + installed extensions on profile open. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The type (if any) of background page the extension has. Recorded for + installed extensions on profile open for "user profiles" (profiles + where people can install extensions, specifically profiles that can have + non-component extensions installed. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of times each Extension function call sends a bad message, + killing the renderer. This may indicate a bug in that API's implementation + on the renderer. Note a similar, aggregate metric is BadMessageTerminate_EFD + which counts the number of bad messages that are sent overall. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The reason a valid ExtensionSyncData could not be parsed from a SyncData + received from sync. + + + + + + Code removed 2022/12. + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The elapsed time to create a new full instance of an extension API's + bindings using native bindings. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Replaced by WebApp.LaunchContainer in M113. + + phillis@chromium.org + benwells@chromium.org + dominickn@chromium.org + + Records the container used for a web app launch, when the app is launched + (eg. via UI surfaces or intents). Not recorded when the web app is navigated + to via URL. + + + + + + Replaced by WebApp.LaunchSource in M113. + + phillis@chromium.org + benwells@chromium.org + dominickn@chromium.org + + The number of times web apps are launched, grouped by + extensions::AppLaunchSource. The equivalent histogram on Android is called + Launch.HomeScreenSource. + + + + + kelvinjiang@chromium.org + extensions-core@chromium.org + + The size, in KB, of a content script that is loaded successfully from a + file. Recorded when the content of a user script object is set. + + + + + kelvinjiang@chromium.org + extensions-core@chromium.org + + The size, in KB, of all newly loaded dynamic content scripts for one + extension. Recorded when a script load containing at least one new dynamic + content script finishes. + + + + + kelvinjiang@chromium.org + extensions-core@chromium.org + + The size, in KB, of all newly loaded manifest content scripts for one + extension. Recorded when a script load containing at least one new manifest + content script finishes. + + + + + vkovalova@google.com + burunduk@chromium.org + lazyboy@chromium.org + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Whether or not computed_hashes.json file was successfully generated and + written during extension installation. Recorded during installation of an + extension if hashes computing was requested for this specifix extension. + Hashes computing on installation is used for off-store policy-based + extensions since we need them to be checked against corruption and cannot + use Chrome Web Store for source of hashes. + + + + + vkovalova@google.com + burunduk@chromium.org + lazyboy@chromium.org + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The time taken to successfully create the computed_hashes.json file for an + extension upon installation. The histogram is collected with + &Extensions.ContentVerification.ComputeHashesOnInstallResult& (in + case of success). + + + + + vkovalova@google.com + burunduk@chromium.org + lazyboy@chromium.org + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Error info for fetching verified_contents.json. Recorded when the file + wasn't available locally and we failed to fetch it from network. Note that + OK may also be reported in some cases, for example, when file was + successfully fetched, but is incorrect. + + + + + vkovalova@google.com + lazyboy@chromium.org + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Whether or not fetching verified_contents.json succeeded. Recorded when the + file wasn't available locally and we needed to fetch it from network. + + Warning: this histogram was expired from 2022-02-01 to 2022-09-22; data may + be missing. + + + + + lazyboy@chromium.org + rdevlin.cronin@chromium.org + + Time spent by ContentVerifier for a request to create a ContentHash + instance. Recorded during an extension load completion or during an on + demand content verification that was triggered by ContentVerifyJob. + + + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + Records the action taken by the user from the extension icon context menu. + + + + + + Obsolete in M100. + + ydago@chromium.org + extensions-core@chromium.org + + Records the manifest location of a corrupted extension that will be + reinstalled silently. Fires when we suspect corruption in an extension and + begin the process of reinstalling it. + + + + + lazyboy@chromium.org + rockot@chromium.org + extensions-core@chromium.org + + The reason why an extension was detected to be corrupted. Recorded each time + an extension is disabled due to corruption detection. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + jlulejian@chromium.org + extensions-core@chromium.org + + Logged once on profile open, this is the value of a counter that is + incremented anytime we disable a corrupted extension because its content + didn't match an expected content hash. + + + + + + + jlulejian@chromium.org + extensions-core@chromium.org + + Logged once on profile open for "user profiles" (profiles where + people can install extensions, specifically profiles that can have + non-component extensions installed. This is the value of a counter that is + incremented anytime we disable a corrupted extension because its content + didn't match an expected content hash. + + + + + vkovalova@google.com + burunduk@chromium.org + lazyboy@chromium.org + poromov@chromium.org + extensions-core@chromium.org + + Fires when we suspect corruption in an enterprise policy forced install + extension and begin the process of reinstalling it, saving reason of such + suspection. Compare to CorruptPolicyExtensionResolved to judge success rate. + Note that if extension was not reinstalled in the session when corruption + was found, it will be detected again (possible several times, every session + start will trigger a detection until the extension will be fixed), but as + CORRUPTION_DETECTED_IN_PRIOR_SESSION. + + + + + vkovalova@google.com + burunduk@chromium.org + lazyboy@chromium.org + extensions-core@chromium.org + managed-devices@google.com + + Fires when we've successfully resinstalled a corrupt enterprise policy + force-installed extension, with a value indicating how long it took + end-to-end to complete the reinstall (including download time). + + + + + emiliapaz@chromium.org + extensions-core@chromium.org + Height of the window created via chrome.windows.create. + + + + emiliapaz@chromium.org + extensions-core@chromium.org + Width of the window created via chrome.windows.create. + + + + cmumford@chromium.org + + The result of an attempt to recover from an attempt to open a database that + failed as a result of corruption. + + + + + + + dmurph@chromium.org + pwnall@chromium.org + + The result of an open attempt to an Extensions database. + {ExtensionsDatabaseOpen} + + + + + + + + + + + + + cmumford@chromium.org + + The result of an attempt to delete a corrupted value from a database. + + + + + ghazale@chromium.org + extensions-core@chromium.org + + Reports whether the debugger API is called while the user has extensions + developer mode enabled. This excludes extensions installed by the enterprise + policy and component extensions. The stat is emitted when the + debugger.attach extension function is called. + + + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + Number of calls to the declarative API extension functions. This includes + the declarativeContent and declarativeWebRequest APIs. Emitted when the + extension function is called. + + + + + kelvinjiang@chromium.org + extensions-core@chromium.org + + Number of times a declarative content action is created within an extension. + Emitted when a new declarative content action is created. + + + + + kelvinjiang@chromium.org + src/extensions/OWNERS + + Measures the time taken to load a single indexed ruleset in the browser + process for an extension. This includes reading the indexed ruleset file and + verifying it. Emitted whenever a single file-backed extension ruleset is + loaded. + + + + + kelvinjiang@chromium.org + src/extensions/OWNERS + + Time taken to evaluate the before-request action for a network request for a + single extension ruleset. Emitted for each network request that is visible + to the extension. This is only emitted for users with high resolution + clocks. + + + + + kelvinjiang@chromium.org + src/extensions/OWNERS + + Time taken to evaluate the action to take for the network request as per the + Declarative Net Request API. This includes the time taken to evaluate all + the extension rulesets. Emitted for non-sensitive network requests seen by + the Extension System when there is at least one active extension ruleset. + This is only emitted for users with high resolution clocks. + + + + + lazyboy@chromium.org + src/extensions/OWNERS + + Time taken to index and persist to disk, the deserialized json rules + provided by an extension manifest for the Declarative Net Request API. This + is emitted whenever a packaged extension with a declarative ruleset is + installed or updated. + + + + + kelvinjiang@chromium.org + src/extensions/OWNERS + + Logs whether a regex rule wasn't indexed since it exceeded the per-rule + memory limit. Emitted for every regex rule an extension adds. + + + + + kelvinjiang@chromium.org + src/extensions/OWNERS + + Records the result of loading an extension ruleset for the Declarative Net + Request API. Emitted whenever a single extension ruleset is loaded. + + + + + kelvinjiang@chromium.org + src/extensions/OWNERS + + The number of enabled indexed declarative rules provided by an extension + manifest for the Declarative Net Request API. This is emitted whenever a + packaged extension with a declarative ruleset is installed or updated. + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + Indicates the result of reading the dynamic JSON rules for an extension from + the disk. Logged whenever an extension calls the getDynamicRules extension + function or when it updates the dynamic rules through a call to + addDynamicRules or removeDynamicRules. + + + + + rdevlin.cronin@chromium.org + kelvinjiang@chromium.org + src/extensions/OWNERS + + Records the request header added by extensions using the + DeclarativeNetRequest API. Recorded for each network request during the + OnBeforeSendHeaders stage. Multiple samples can be recorded per request. + + + + + rdevlin.cronin@chromium.org + kelvinjiang@chromium.org + src/extensions/OWNERS + + Records the request header modified by extensions using the + DeclarativeNetRequest API. Recorded for each network request during the + OnBeforeSendHeaders stage. Multiple samples can be recorded per request. + + + + + rdevlin.cronin@chromium.org + kelvinjiang@chromium.org + src/extensions/OWNERS + + Records the request header removed by extensions using the + DeclarativeNetRequest API. Recorded for each network request during the + OnBeforeSendHeaders stage. Multiple samples can be recorded per request. + + + + + rdevlin.cronin@chromium.org + kelvinjiang@chromium.org + src/extensions/OWNERS + + Records the response header added by extensions using the + DeclarativeNetRequest API. Recorded for each network request during the + OnHeadersReceived stage. Multiple samples can be recorded per request. + + + + + rdevlin.cronin@chromium.org + kelvinjiang@chromium.org + src/extensions/OWNERS + + Records the response header modified by extensions using the + DeclarativeNetRequest API. Recorded for each network request during the + OnHeadersReceived stage. Multiple samples can be recorded per request. + + + + + rdevlin.cronin@chromium.org + kelvinjiang@chromium.org + src/extensions/OWNERS + + Records the response header removed by extensions using the + DeclarativeNetRequest API. Recorded for each network request during the + OnHeadersReceived stage. Multiple samples can be recorded per request. + + + + + lazyboy@chromium.org + src/extensions/OWNERS + + Indicates whether reindexing of a Declarative Net Request ruleset was + successful. Called whenever a JSON ruleset for an extension is reindexed, + e.g. on ruleset corruption. Note: this is emitted for both static and + dynamic rulesets. + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + Indicates the result of an extension function call to add or remove dynamic + rules. Logged every time an extension calls the addDynamicRules or + removeDynamicRules extension function. + + + + + Please list the metric's owners. Add more owner tags as needed. + Time spent until rules storage delegate gets ready. + + + + dbertoni@chromium.org + extensions-core@chromium.org + + Reports whether an icon specified in the declarativeContent.SetIcon API is + considered visible by our icon analysis code. This stat is emitted when we + create the underlying object that sets the icon when the declarative rule is + applied. + + + + + dbertoni@chromium.org + extensions-core@chromium.org + + Reports whether an icon specified in the declarativeContent.SetIcon API is + considered visible by our icon analysis code. This stat is emitted when we + create the underlying object that sets the icon when the declarative rule is + applied. + + This replaces the previous stat, DeclarativeSetIconWasVisibleRendered, due + to a change to our analysis algorithm. The new algorithm renders the icon + against the toolbar background color and determines how visible the + resulting pixels are. + + + + + ghazale@chromium.org + extensions-core@chromium.org + + Reports whether DevTools extensions are being loaded while the user has + extensions developer mode enabled. This excludes extensions installed by the + enterprise policy and component extensions. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Part of the suite of Extensions.DidCreateScriptContext_* metrics. Records + the time taken to install Extension JavaScript bindings per blessed + extension context (chrome-extension://... origins within Extension + processes, like background pages, options pages, popups). + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Part of the suite of Extensions.DidCreateScriptContext_* metrics. Records + the time taken to install Extension JavaScript bindings per blessed web page + context (hosted apps). + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Part of the suite of Extensions.DidCreateScriptContext_* metrics. Records + the time taken to install Extension JavaScript bindings per content script + context. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Part of the suite of Extensions.DidCreateScriptContext_* metrics. Records + the time taken to install Extension JavaScript bindings per content script + context. This histogram measures the time to install Extension Javascript + bindings in a context for a platform app enabled on the Chrome OS lock + screen. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Part of the suite of Extensions.DidCreateScriptContext_* metrics. Records + the time taken to install Extension JavaScript bindings per unblessed + extension context (chrome-extension://... origins hosted in iframes). + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Part of the suite of Extensions.DidCreateScriptContext_* metrics. Records + the time taken to install Extension JavaScript bindings in an unknown type + of context (this should never happen other than in bizarre circumstances). + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Part of the suite of Extensions.DidCreateScriptContext_* metrics. Records + the time taken to install Extension JavaScript bindings per web page context + (just the chrome.app, chrome.webstore, and possibly chrome.runtime APIs). + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Part of the suite of Extensions.DidCreateScriptContext_* metrics. Records + the time taken to install Extension JavaScript bindings per WebUI context + (chrome://extensions and so forth). + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Records the time taken to install Extension JavaScript bindings per service + worker context. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + + The number of extensions that are disabled at browser profile open. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extensions that are disabled at browser profile open for + "user profiles" (profiles where people can install extensions, + specifically profiles that can have non-component extensions installed). + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + + The number of extensions that are disabled at browser profile open due to + permissions increases. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extensions that are disabled at browser profile open for + "user profiles" (profiles where people can install extensions, + specifically profiles that can have non-component extensions installed) due + to permissions increases. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The count of disabled extensions on profile open grouped by disble reason + from disable_reason::DisableReason. When an extension is disabled, it can be + for one or more reasons (although typically just one), so the sum of these + may be greater than 'Extensions.Disabled' which is a count of the number of + unique extensions that are disabled. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The count of disabled extensions on profile open for "user + profiles" (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed). Grouped by + disable reason from disable_reason::DisableReason. When an extension is + disabled, it can be for one or more reasons (although typically just one), + so the sum of these may be greater than 'Extensions.Disabled' which is a + count of the number of unique extensions that are disabled. + + + + + dbertoni@chromium.org + extensions-core@chromium.org + + Reports whether a call to set a dynamic icon in the toolbar passed an icon + considered visible by our icon analysis code. + + + + + dbertoni@chromium.org + extensions-core@chromium.org + + Reports whether a call to set a dynamic icon in the toolbar passed an icon + considered visible by our icon analysis code. + + This replaces the previous stat, DynamicExtensionActionIconWasVisible, due + to a change to our analysis algorithm. The new algorithm renders the icon + against the toolbar background color and determines how visible the + resulting pixels are. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + If opening the CRX file for unpacking fails, this integer is the error code + given by the OS. + + + + + jeffcyr@google.com + chrome-counter-abuse-alerts@google.com + + Reports the value of the Safe Browsing CRX allowlist custom omaha attribute + when an update check occurs for an extension. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extensions with event pages that have no registered event + listeners at profile startup. (This may indicate something has gone wrong; + such event pages will never get started.) + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The time between an extension's event page loading its first URL and the + event page later shutting down. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + The time an extension's event page has spent unloaded. + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The time taken for an extension's event page to load its initial URL. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + Recorded every time an event is dispatched to an extension. + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Recorded every time an event is dispatched to a *component* extension. + Otherwise identical to Extensions.Events.Dispatched. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Recorded every time an event is dispatched to an extension with a persistent + background page. The event may or may not have been dispatched to the + background page itself, for example it may have been dispatched to its + popup. When this metric is recorded, Extensions.Events.Dispatch will also be + recorded. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Recorded every time an event is dispatched to an extension with an event + page that was already running (i.e. at some point had been woken from its + suspended state, see Extensions.Events.DispatchWithSuspendedEventPage). The + event may or may not have been dispatched to the event page itself, for + example it may have been dispatched to its popup. When this metric is + recorded, Extensions.Events.Dispatch will also be recorded. + + + + + lazyboy@chromium.org + dbertoni@chromium.org + + Recorded every time an event is dispatched to a service worker based + extension background context. When this metric is recorded, + Extensions.Events.Dispatch will also be recorded. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Recorded every time an event is dispatched to an extension with an event + page that was suspended. This implies that firing this event woke up the + event page. The event may or may not have been dispatched to the event page + itself, for example it may have been dispatched to its popup, but regardless + it will wake the event page. When this metric is recorded, + Extensions.Events.Dispatch will also be recorded. + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + Recorded when a new violation is retrieved from Omaha for an extension. The + new violation reason is retrieved from the update service data key reasons + during an update check for extensions. This metric was added in M92 to + replace the old version, because the logic of logging greylisted extensions + has changed. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + Number of cached extensions on disk. Reported on Chrome OS during user + session start. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + Total size of .crx files in cache on disk. Reported on Chrome OS during user + session start. + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + Recorded when an extension that was previously enabled is disabled due to a + new violation retrieved from Omaha. This is recorded when the violation is + detected when Chrome checks for an update for the extension. This metric was + added in M92 to replace the old version, because the logic of logging + greylisted extensions has changed. + + + + + + + rdevlin.cronin@chromium.org + + Emitted when an extension is downloaded by the user (including webstore + installs). + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + + The install location for a given extension. Recorded once per enabled + extension on profile initialization. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The install location for a given extension. Recorded once per enabled + extension on profile initialization for "user profiles" (profiles + where people can install extensions, specifically profiles that can have + non-component extensions installed). + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + Recorded when an extension that was previously only disabled remotely is + re-enabled remotely during an update service session. + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + Recorded when a {BlocklistState} extension that was previously only disabled + remotely is re-enabled remotely during an update service session. + + + + + + + + + Please list the metric's owners. Add more owner tags as needed. + + Length of the Extensions dir path inside the profile directory. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of Extensions that have Page Actions. Measured once per profile + open for "user profile" (profiles where people can install + extensions, specifically profiles that can have non-component extensions + installed). Replaced previous version + (PageActionController.ExtensionsWithPageActions). + + + + + + Code removed 2022/12. + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + An extension has been uninstalled. + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + anunoy@chromium.org + + The number of sideloaded apps/extensions loaded on profile open grouped by + enabled/disabled state. + + + + + anunoy@chromium.org + extensions-core@chromium.org + + The number of sideloaded apps/extensions loaded on profile open for + "user profiles" (profiles where people can install extensions, + specifically profiles that can have non-component extensions installed). + Grouped by enabled/disabled state. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Number of extensions referenced in the external extensions source at path + chrome::DIR_EXTERNAL_EXTENSIONS. + + + + + archanasimha@chromium.org + extensions-core@chromium.org + + Records when an extension with the chrome://favicon host permission makes a + network level request for a favicon resource. + + + + + + Code removed 2022/12. + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The amount of time that elapsed during extensions::FeatureProvider::Static. + Only measured while in the browser process. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + + The number of extensions (and friends) that could have been given access to + the file:// scheme, and were, for users that have at least one extension + that could have been given access. This excludes anything that doesn't show + up in chrome://extensions (platform apps, hosted apps, component + extensions), policy-installed extensions, and unpacked extensions. See also + Extensions.FileAccessNotAllowed. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extensions (and friends) that could have been given access to + the file:// scheme, and were, for users that have at least one extension + that could have been given access. This excludes anything that doesn't show + up in chrome://extensions (platform apps, hosted apps, component + extensions), policy-installed extensions, and unpacked extensions. Logged + once per profile open for "user profiles" (profiles where people + can install extensions, specifically profiles that can have non-component + extensions installed). See also Extensions.FileAccessNotAllowed. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + + The number of extensions (and friends) that could have been given access to + the file:// scheme, but weren't, for users that have at least one extension + that could have been given access. This excludes anything that doesn't show + up in chrome://extensions (platform apps, hosted apps, component + extensions), policy-installed extensions, and unpacked extensions. See also + Extensions.FileAccessAllowed. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extensions (and friends) that could have been given access to + the file:// scheme, but weren't, for users that have at least one extension + that could have been given access. This excludes anything that doesn't show + up in chrome://extensions (platform apps, hosted apps, component + extensions), policy-installed extensions, and unpacked extensions. Logged + once per profile open for "user profiles" (profiles where people + can install extensions, specifically profiles that can have non-component + extensions installed). See also Extensions.FileAccessAllowed. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + Number of enterprise policy forced extensions that are blocklisted and thus + not loaded 5 minutes after profile creation if at least one of policy forced + extensions is not yet enabled. + + + + + vkovalova@google.com + burunduk@chromium.org + poromov@chromium.org + + Status of cache entry about enterprise policy forced extension. Recorded for + each forced extension. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + The last known intermediate stage of extension when the extension + installation stage if CREATED if failure reason was not recorded + (installation of an extension was neither yet finished nor failed). Recorded + for each forced extension that failed to install after 5 minutes. Recorded + together with "Extensions.ForceInstalledTimedOutCount" histogram, + but for every extension not installed at the moment. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + The last known downloading stage of extension downloading process if failure + reason was not recorded and installing stage is DOWNLOADING, so it's + specification of Extensions.ForceInstalledStage. Recorded for each forced + extension that failed to install after 5 minutes. Recorded together with + "Extensions.ForceInstalledTimedOutCount" histogram, but for every + extension not installed at the moment. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + Status of cache entry about enterprise policy forced extension which failed + to install. Recorded for each forced extension that failed to install after + 5 minutes. Recorded together with + "Extensions.ForceInstalledTimedOutCount" histogram, but for every + extension not installed at the moment. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + Detailed reason why CRX installation failed for enterprise policy forced + extensions. Recorded for each forced extension that failed to install after + 5 minutes with Extensions.{OffStore,Webstore}_ForceInstalledFailureReason3 + equal to CRX_INSTALL_ERROR_*. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + The detailed reason why enterprise policy forced extensions had failed to + install because fetched update manifest was invalid due to app status error. + Recorded for each forced extension that failed to install after 5 minutes + with Extensions.ForceInstalledFailureReason2 equal to MANIFEST_INVALID and + Extensions.ForceInstalledFailureManifestInvalidErrorDetail2 equal to + BAD_APP_STATUS. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + The info field in the update manifest fetched from the server for enterprise + policy forced extensions. Recorded for each forced extension for which the + server responds with no updates and an empty CRX fetch url. Recorded for + each forced extension that failed to install after 5 minutes with + Extensions.{OffStore,WebStore}_ForceInstalledFailureReason3 equal to + CRX_FETCH_URL_EMPTY. + + + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + The reason why enterprise policy forced extensions were not installed. + Recorded for each forced extension that failed to install after 5 minutes. + Recorded together with "Extensions.ForceInstalledTimedOutCount" + histogram, but for every extension not installed at the moment. + + Replaced Extensions.ForceInstalledFailureReason2 because of reporting + MANIFEST_INVALID instead of MANIFEST_FETCH_FAILED in case parsing update + manifest failed with different reasons for the extensions. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + The reason why enterprise policy forced extensions had failed to unpack. + Recorded for each forced extension that failed to install after 5 minutes + with Extensions.ForceInstalledFailureReason3 equal to + CRX_INSTALL_ERROR_SANDBOXED_UNPACKER_FAILURE. + + Replaced Extensions.ForceInstalledFailureSandboxUnpackFailureReason because + the enum values were not in sync with the C++ enums. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + The type of session in case enterprise policy forced extensions were not + installed. Recorded for each force installed extension which failed to + install after 5 minutes. Supported only on ChromeOS and recorded only if + there is an active user. {FailureReason} + + + + + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + Records whether the extensions are enabled or not. Recorded for each forced + extension that failed to install after 5 minutes with + Extensions.ForceInstalledCreationStage equal to + NOTIFIED_FROM_MANAGEMENT_INITIAL_CREATION_FORCED. + + Replaced + "Extensions.ForceInstalledFailureStuckInCreatedStageAreExtensionsEnabled" + because the histogram collects data about extensions stuck in + NOTIFIED_FROM_MANAGEMENT_INITIAL_CREATION_FORCED stage but the name + suggested that the data is collected for extensions stuck in CREATED stage. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + Records whether the extension is from the Chrome Web Store or not. Recorded + for each forced extension that failed to install after 5 minutes with + Extensions.ForceInstalledFailureSandboxUnpackFailureReason equal to + CRX_HEADER_INVALID. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + Records whether the extension is downloaded from cache or not. Recorded for + each forced extension that failed to install after 5 minutes with + Extensions.ForceInstalledFailureSandboxUnpackFailureReason equal to + CRX_HEADER_INVALID. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + The amount of time elapsed during installation of enterprise policy forced + extensions. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + Records the disable reason for the enterpise policy forced extensions. + Recorded for each forced extension that installed but failed to load after 5 + minutes. If the extension is not disabled, it records + DisableReason::DISABLE_NONE. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + The amount of time elapsed for enterprise policy forced extensions to become + ready for use. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + Records whether there was a possible non-misconfiguration failure for the + enterprise policy forced extensions. Records true if in a session at least + one forced extension failed to install after 5 minutes with a + non-misconfiguration failure and false when all the forced extensions which + failed to install after 5 minutes failed due to some misconfiguration. + Recorded together with "Extensions.ForceInstalledTimedOutCount" + histogram. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + The last known stage of extension installation process if failure reason was + not recorded (installation of an extension was neither yet finished nor + failed). Recorded for each forced extension that failed to install after 5 + minutes. Recorded together with + "Extensions.ForceInstalledTimedOutCount" histogram, but for every + extension not installed at the moment. + + Replaced Extensions.ForceInstalledStage because the stages that were used + for used for investigation of CREATED stage are moved to a new enum. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + Number of enterprise policy forced extensions that are not installed after 5 + minutes if at least one of policy forced extensions is not yet enabled. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + Number of enterprise policy forced extensions that are not loaded after 5 + minutes timeout, while might be already installed. + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + The amount of time elapsed during different stage of the installation + process for the enterprise policy forced extensions. + {ExtensionInstallStages} + + + + + + + + + + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + Total amount of extensions in force installed list. Gets recorded on profile + open (which happens on every startup and when user logs in) and tries to + load extensions. Number of records should correspond to the sum of records + in "Extensions.ForceInstalledLoadTime" and records in + "Extensions.ForceInstalledTimedOutAndNotInstalledCount". + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + Number of fetch retries made when enterprise policy forced extensions failed + to install with {ErrorType}. Recorded for each forced extension that failed + to install after 5 minutes with + Extensions.`OffStore,Webstore`_ForceInstalledFailureReason3 equal to + {ErrorType}. + + + + + + + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + Network error code for the last retry attempt when CRX fetch failed for + enterprise policy forced extensions failed to install due to {ErrorType}. + Recorded for each forced extension that failed to install after 5 minutes + with Extensions.`OffStore,WebStore`_ForceInstalledFailureReason3 equal to + {ErrorType}. + + + + + + + + + + + nicolaso@chromium.org + chrome-enterprise-team-core@google.com + + Number of force installed extensions that are "force-pinned" in + the ExtensionSettings policy. Recorded after policies are parsed, or + refreshed. Only recorded if non-zero. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + anunoy@chromium.org + + Number of apps/extensions loaded on profile open with an inconsistent + "from webstore" state. This means an item that is flagged as + from_webstore, but with either a non-webstore update_url or an external + install location. + + + + + anunoy@chromium.org + extensions-core@chromium.org + + Number of apps/extensions loaded on profile open with an inconsistent + "from webstore" state for "user profiles" (profiles + where people can install extensions, specifically profiles that can have + non-component extensions installed). This means an item that is flagged as + from_webstore, but with either a non-webstore update_url or an external + install location. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Recorded when a component extension calls an extension API. Recorded once + per function call. See also Extensions.Functions.WebUICalls, + Extensions.Functions.WebUIUntrustedCalls, and + Extensions.Functions.ExtensionCalls. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Recorded when a non-component extension calls an extension API. Recorded + once per function call. See also Extensions.Functions.WebUICalls, + Extensions.Functions.WebUIUntrustedCalls, and + Extensions.Functions.ComponentExtensionCalls. + + + + + tjudkins@chromium.org + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Recorded when a manifest V3 extension calls an extension API. Note that the + function would also be included in either + Extensions.Functions.ExtensionCalls or + Extensions.Functions.ComponentExtensionCalls histogram. + + + + + lazyboy@chromium.org + dbertoni@chromium.org + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Recorded when an extension service worker calls an extension API. Note that + the function would also be included in either + Extensions.Functions.ExtensionCalls or + Extensions.Functions.ComponentExtensionCalls histogram. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Recorded when an extension function call fails and finishes execution. The + suffix indicates the exact bucket the function is in. See also + Extensions.Functions.FailedTotalExecutionTime. + {ExtensionFunctionExecutionTime} + + + + + + + + + Code removed 2022/12. + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The total amount of time it took to execute an extension function that + failed from the time the extension function is called to the time the + function responds. Note that since some extension functions are inherently + slow (anything that requires user interaction, for instance), this is not a + definitive source for function performance. In M-102 this histogram was + split and events from kiosk extensions are recorded in the separate + Extensions.Functions.FailedTotalExecutionTime.Kiosk histogram. + + + + + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The amount of time it takes to handle a response for an extension API + request. Recorded on the renderer side once we receive the response IPC from + the browser and have deserialized the arguments and passed them to the JS + context. Only recorded if the response is successfully handled. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The amount of time it takes to start an extension API request. Recorded on + the renderer side after we perform JS pre-processing, but includes all + serialization and dispatching. Only recorded if the request is successfully + dispatched. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Recorded when an extension function call succeeds and finishes execution. + The suffix indicates the exact bucket the function is in. See also + Extensions.Functions.SucceededTotalExecutionTime. + {ExtensionFunctionExecutionTime} + + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The total amount of time it took to execute an extension function that + succeeded from the time the extension function is called to the time the + function responds. Note that since some extension functions are inherently + slow (anything that requires user interaction, for instance), this is not a + definitive source for function performance. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The synchronous amount of time an extension function takes. Note that many + extension functions run asynchronously; see also + Extensions.Functions.[Succeeded|Failed]TotalExecutionTime. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Recorded when a WebUI context calls an extension API. Recorded once per + function call. See also Extensions.Functions.WebUIUntrustedCalls, + Extensions.Functions.ComponentExtensionCalls and + Extensions.Functions.ExtensionCalls. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Recorded when a WebUI context calls an extension API. Recorded once per + function call. See also Extensions.Functions.WebUICalls, + Extensions.Functions.ComponentExtensionCalls and + Extensions.Functions.ExtensionCalls. + + + + + arabm@chromium.org + chrome-incognito@google.com + + This histogram records requests to use resources from Google Docs Offline + extension, along with whether the extension has been available or not and + the request has been done from incognito mode or not. Note that this request + is double counted for the imports. + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + Emits the Extension::Location of a newly-disabled greylisted extension. + Logged when SafeBrowsingVerdictHandler greylists and disables an installed + extension. + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + Emits the Extension::Location of an extension that was ungreylisted. Logged + when SafeBrowsingVerdictHandler ungreylists and enables an installed + extension. + + + + + mcnee@chromium.org + src/components/guest_view/OWNERS + + It is possible for a Chrome Apps webview to be attached to a WebContents + that did not create it. This reports True if attachment involves a change to + the owner WebContents or False if attachment does not change the owner. + + We'd like to understand how common this case is, as this is architecturally + complex to support. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Whether there were any permissions present in an extension when it was + installed . To find places where this histogram may be emitted, look for + calls to ExtensionService::RecordPermissionMessagesHistogram with the + argument Install. For Sync users, this is reported for each device. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Whether there were any permissions present in an extension when it was + installed for "user profiles" (profiles where people can install + extensions, specifically profiles that can have non-component extensions + installed). To find places where this histogram may be emitted, look for + calls to ExtensionService::RecordPermissionMessagesHistogram with the + argument Install. For Sync users, this is reported for each device. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Whether there were any permissions present in an extension when it was + loaded (which happens at profile open or extension install). To find places + where this histogram may be emitted, look for calls to + ExtensionService::RecordPermissionMessagesHistogram with the argument Load. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Whether there were any permissions present in an extension when it was + loaded (which happens at profile open or extension install) for "user + profiles" (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed). To find places + where this histogram may be emitted, look for calls to + ExtensionService::RecordPermissionMessagesHistogram with the argument Load. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + kelvinjiang@chromium.org + + The number of enabled extensions with a homepage override specified in their + manifest. Recorded once per profile at profile initialization. + + + + + rdevlin.cronin@chromium.org + kelvinjiang@chromium.org + + The number of enabled extensions with a homepage override specified in their + manifest. Recorded once per "user profile" (profiles where people + can install extensions, specifically profiles that can have non-component + extensions installed) at profile initialization. + + + + + benwells@chromium.org + dominickn@chromium.org + + Records the container used for a hosted app launch, when the app is + launched. The definition of 'launch' for the purposes of this histogram is + different to that used for the launch type histograms. This definition is + less inclusive, for example it does not include navigations to the hosted + app due to normal browsing, which the other definition does include. This + definition could be thought of more as explicit launches via a launch + surface such as the app launcher, chrome://apps, or a shortcut. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + emiliapaz@chromium.org + extensions-core@chromium.org + + Records the host permissions access for a enabled extension as a result of + the RuntimeHostPermissions feature. Recorded once per extension at profile + initialization. + + + + + + + emiliapaz@chromium.org + extensions-core@chromium.org + + Records the host permissions access for a enabled extension as a result of + the RuntimeHostPermissions feature. Recorded once per extension at profile + initialization for "user profiles" (profiles where people can + install extensions, specifically profiles that can have non-component + extensions installed) initialization. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + emiliapaz@chromium.org + extensions-core@chromium.org + + Records the host permissions access for each enabled extension that + specifies a host permission that matches an effective TLD. Recorded once per + extension at profile initialization. + + + + + + + emiliapaz@chromium.org + extensions-core@chromium.org + + Records the host permissions access for each enabled extension that + specifies a host permission that matches an effective TLD. Recorded once per + extension at "user profile" (profiles where people can install + extensions, specifically profiles that can have non-component extensions + installed) initialization. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + emiliapaz@chromium.org + extensions-core@chromium.org + + Records the host permissions access for each enabled extension that + specifies hosts, but has no host permission that matches an effective TLD. + Recorded once per extension at profile initialization. + + + + + + + emiliapaz@chromium.org + extensions-core@chromium.org + + Records the host permissions access for each enabled extension that + specifies hosts, but has no host permission that matches an effective TLD. + Recorded once per extension at "user profile" (profiles where + people can install extensions, specifically profiles that can have + non-component extensions installed) initialization. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + + The number of extensions (and friends) that could have been allowed in + incognito, and were, for users that have at least one extension that could + have been allowed. This excludes anything that doesn't show up in + chrome://extensions (platform apps, hosted apps, component extensions), + policy-installed extensions, and unpacked extensions. See also + Extensions.IncognitoNotAllowed. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extensions (and friends) that could have been allowed in + incognito, and were, for users that have at least one extension that could + have been allowed. This excludes anything that doesn't show up in + chrome://extensions (platform apps, hosted apps, component extensions), + policy-installed extensions, and unpacked extensions. Logged at "user + profile" (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed) initialization. + See also Extensions.IncognitoNotAllowed. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + + The number of extensions (and friends) that could have been allowed in + incognito, but weren't, for users that have at least one extension that + could have been allowed. This excludes anything that doesn't show up in + chrome://extensions (platform apps, hosted apps, component extensions), + policy-installed extensions, and unpacked extensions. See also + Extensions.IncognitoAllowed. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extensions (and friends) that could have been allowed in + incognito, but weren't, for users that have at least one extension that + could have been allowed. This excludes anything that doesn't show up in + chrome://extensions (platform apps, hosted apps, component extensions), + policy-installed extensions, and unpacked extensions. Logged at "user + profile" (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed) initialization. + See also Extensions.IncognitoAllowed. + + + + + + Code removed 2022/12. + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The amount of time that elapsed during the GetExtensions call within + ExtensionPrefs::InitPrefStore. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The amount of time for a CSS file to be injected into a page. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Time taken to execute all scripts for one location within an extension. + Recorded every time content scripts injected by extensions are executed. + Unlike Extensions.InjectScriptTime, this includes execution time of + asynchronously injected scripts. + + + + + + + rdevlin.cronin@chromium.org + + Number of blocking scripts injected at document end by extensions. + + + + + + + rdevlin.cronin@chromium.org + Number of scripts injected at document end by extensions. + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Time taken to inject all scripts at document end by extensions. Not reported + if scripts are executed asynchronously. + + + + + + + rdevlin.cronin@chromium.org + + Number of blocking scripts injected at document idle by extensions. + + + + + + + rdevlin.cronin@chromium.org + Number of scripts injected at document idle by extensions. + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Time taken to inject all scripts at document idle by extensions. Not + reported if scripts are executed asynchronously. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Number of blocking scripts injected at document start by extensions. + + + + + + + rdevlin.cronin@chromium.org + Number of css files injected by extensions. + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + Number of scripts injected at document start by extensions. + + + + + + rdevlin.cronin@chromium.org + + Time taken to inject css/scripts at document start by extensions. Not + reported if scripts are executed asynchronously. + + + + + jeffcyr@google.com + chrome-counter-abuse-alerts@google.com + + Action taken in the extension install friction dialog displayed to Enhanced + Safe Browsing users before installing an extension that is not included in + the Safe Browsing CRX allowlist. + + + + + kelvinjiang@chromium.org + extensions-core@chromium.org + + Time from first display of the extension installation prompt until the user + aborts the installation through clicking the cancel button or dismissing the + dialog. + + + + + kelvinjiang@chromium.org + extensions-core@chromium.org + + Time from first display of the extension installation prompt until the user + accepts the installation. Will always be greater than 500ms as the install + option is enabled after that time has elapsed. + + + + + meacer@chromium.org + rdevlin.cronin@chromium.org + + Type of the extension install prompt displayed when an extension + installation is triggered. Replaced Extensions.InstallPrompt.Type 2019-07. + + + + + + Histogram is in the process of being removed in favor of its new versions + (Extensions.InstallType.User and Extensions.InstallType.Nonuser) that emit + only on profile open for "user" profiles (profiles where people + can install extensions, specifically profiles that can have non-component + extensions installed). + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Installs grouped by the location property in prefs. Emitted once per profile + open. + + + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Installs grouped by the location property in prefs for "non-user" + profiles (profiles where people can't install extensions, specifically + profiles that can have only have non-component extensions installed). + Emitted once per profile open. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Installs grouped by the location property in prefs for "user" + profiles (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed). Emitted once per + profile open. + + + + + + Histogram is in the process of being removed in favor of its new versions + (Extensions.InstallType.User and Extensions.InstallType.Nonuser) that emit + only on profile open for "user" profiles (profiles where people + can install extensions, specifically profiles that can have non-component + extensions installed). + + rdevlin.cronin@chromium.org + + Installs grouped by Extension::HistogramType emitted once per extension + install. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Installs grouped by Extension::HistogramType for non-"user + profiles" (profiles where people cannot install extensions, + specifically profiles that can only have component extensions installed). + Emitted once per extension install. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Installs grouped by Extension::HistogramType for "user profiles" + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). Emitted once per extension + install. + + + + + dbertoni@chromium.org + extensions-core@chromium.org + + The amount of elapsed time taken to render an icon against a specified + background color and determine whether it would be visible to the user. + Recorded every time the analysis code is called. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + The number of extensions and themes loaded at profile open. + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extensions and themes loaded at "user profile" + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed) open. + + + + + + Histogram is in the process of being removed in favor of its new versions + (Extensions.LoadAllComponentTime.NonUser and + Extensions.LoadAllComponentTime.User) that emit only on profile open for + "user" profiles (profiles where people can install extensions, + specifically profiles that can have non-component extensions installed). + + rdevlin.cronin@chromium.org + + Time taken to load all component extensions at profile open. This happens as + part of the total initialization time of ExtensionService, measured in + Extensions.ExtensionServiceInitTime. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Time taken to load all component extensions at profile open for + non-"user profiles" (profiles where people cannot install + extensions, specifically profiles that can only have component extensions + installed). This happens as part of the total initialization time of + ExtensionService, measured in Extensions.ExtensionServiceInitTime. Emitted + once per profile open. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Time taken to load all component extensions at profile open for "user + profiles" (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed). This happens as + part of the total initialization time of ExtensionService, measured in + Extensions.ExtensionServiceInitTime. Emitted once per profile open. + + + + + + Histogram is in the process of being removed in favor of its new versions + (Extensions.LoadAllTime2.NonUser and Extensions.LoadAllTime2.User) that emit + only on profile open for "user" profiles (profiles where people + can install extensions, specifically profiles that can have non-component + extensions installed). + + rdevlin.cronin@chromium.org + + Time taken to load all non-component extensions at profile open and record + metrics. This happens as part of the total initialization time of + ExtensionService, measured in Extensions.ExtensionServiceInitTime. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Time taken to load all non-component extensions at profile open and record + metrics for non-"user profiles" (profiles where people cannot + install extensions, specifically profiles that can only have component + extensions installed). This happens as part of the total initialization time + of ExtensionService, measured in Extensions.ExtensionServiceInitTime. + Emitted once per profile open. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Time taken to load all non-component extensions at profile open and record + metrics for "user profiles" (profiles where people can install + extensions, specifically profiles that can have non-component extensions + installed). This happens as part of the total initialization time of + ExtensionService, measured in Extensions.ExtensionServiceInitTime. Emitted + once per profile open. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + The number of apps loaded by each user at profile open. + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of apps loaded by each user at "user profile" (profiles + where people can install extensions, specifically profiles that can have + non-component extensions installed) open. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of externally managed apps loaded by each user at profile open. + + + + + + + rdevlin.cronin@chromium.org + + The number of externally managed apps loaded by each user at "user + profile" (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed) open. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + + The number of user-installed apps loaded by each user at profile open. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of user-installed apps loaded by each user at "user + profile" (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed) open. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + + The number of browser action extensions loaded at profile open. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of browser action extensions loaded at "user profile" + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed) open. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + The number of extensions loaded at profile open. + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extensions loaded at profile open for "user" + profiles (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed). + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of externally managed extensions loaded at profile open. + + + + + + + rdevlin.cronin@chromium.org + + The number of externally managed extensions loaded at "user + profile" (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed) open. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of user-installed extensions loaded at profile open. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of user-installed extensions loaded at "user profile" + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed) open. + + + + + + + rdevlin.cronin@chromium.org + + The number of externally managed extensions and apps loaded at profile open. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + + The number of hosted apps loaded by each user at profile open. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of hosted apps loaded by each user at "user profile" + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed) open. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + + The number of extensions that had neither a page nor browser action + specified in their manifest. Recorded at profile open. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extensions that had neither a page nor browser action + specified in their manifest. Recorded at "user profile" (profiles + where people can install extensions, specifically profiles that can have + non-component extensions installed) open. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of enabled extensions or apps the user has installed that do not + update from the Chrome Web Store. Recorded during profile initialization. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of enabled extensions or apps the user has installed that do not + update from the Chrome Web Store. Recorded during "user profile" + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed) initialization. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + + The number of legacy packaged apps loaded by each user at profile open. + + + + + + + rdevlin.cronin@chromium.org + + The number of legacy packaged apps loaded by each user at "user + profile" (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed) open. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + The number of platform apps loaded at profile open. + + + + + + rdevlin.cronin@chromium.org + + The number of platform apps loaded at "user profile" (profiles + where people can install extensions, specifically profiles that can have + non-component extensions installed) open. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + The number of themes loaded at profile open. + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of themes loaded at "user profile" (profiles where + people can install extensions, specifically profiles that can have + non-component extensions installed) open. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extensions loaded at profile open grouped by + Extension::HistogramType. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extensions loaded at "user profile" (profiles where + people can install extensions, specifically profiles that can have + non-component extensions installed) open grouped by + Extension::HistogramType. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of converted user scripts loaded at profile open. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of converted user scripts loaded at "user profile" + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed) open. + + + + + jam@chromium.org + cduvall@chromium.org + + Measures how long ExtensionManagement::Refresh takes. This reloads all + enterprise-related policies for all extensions, and is called both at + startup and any time the enterprise policy changes. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Number of times chrome retried to download an extension update manifest with + a url on a google.com domain, before eventually giving up. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Number of times chrome retried to download an extension update manifest with + a url on a non google.com domain, before eventually giving up. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Number of times chrome retried to download an extension update manifest with + a url on a google.com domain, before eventually succeeding. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Number of times chrome retried to download an extension update manifest with + a url on a non google.com domain, before eventually succeeding. + + + + + dbertoni@chromium.org + extensions-core@chromium.org + + Reports whether an icon that's specified in the manifest is considered + visible by our icon analysis code. This stat is only for packed extensions, + which we check dynamically when the icon is requested. The stat is emitted + the first time the default icon is requested, since we cache the icon that's + selected. + + + + + dbertoni@chromium.org + extensions-core@chromium.org + + Reports whether an icon that's specified in the manifest is considered + visible by our icon analysis code. This stat is only for packed extensions, + which we check dynamically when the icon is requested. The stat is emitted + the first time the default icon is requested, since we cache the icon that's + selected. + + This replaces the previous stat, ManifestIconSetIconWasVisibleForPacked, due + to a change to our analysis algorithm. The new algorithm renders the icon + against the toolbar background color and determines how visible the + resulting pixels are. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + The manifest version of each loaded extension. + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The manifest version of each loaded extension. Emitted for each extension at + "user profils" (profiles where people can install extensions, + specifically profiles that can have non-component extensions installed) + open. + + + + + rdevlin.cronin@chromium.org + + The number of ports created in a given script context at a specific time. + Recorded once at the destruction of the script context (when no more ports + could be created) if and only if at least one port was created in the + context. Only includes ports to extension contexts (i.e., not ports created + to tabs or native apps). {ExtensionMessagingPortCreationTime} + + + + + + + + + rdevlin.cronin@chromium.org + + The total amount of time between when an extension opens a new channel and + when it receives the global port id from the browser and can begin sending + messages. {ExtensionMessagingPortType} + + + + + + + + rdevlin.cronin@chromium.org + + The amount of synchronous time taken for the renderer to request an + extension message port id from the browser when a new channel is first + opened by an extension. {ExtensionMessagingPortType} + + + + + + + + + Code removed 2022/12. + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The size, in bytes, of a message sent from an extension using one of the + messaging APIs (e.g. chrome.runtime.sendMessage). All message sizes are + logged, but messages over 64 MB in size aren't sent. + + + + + rdevlin.cronin@chromium.org + + The amount of time for the renderer to inform the browser process of a new + port being created with a certain id. This replaces the flow for + Extensions.Messaging.GetPortId[A]SyncTime. {ExtensionMessagingPortType} + + + + + + + + jkokatsu@google.com + extensions-core@chromium.org + + Counts usage of various schemes (e.g. file:, chrome:, http:) when a + navigation is triggered from an extension (such as through tabs API). + + + + + rdevlin.cronin@chromium.org + kelvinjiang@chromium.org + src/extensions/OWNERS + Time that network requests were blocked due to extensions. + + + + battre@chromium.org + src/extensions/OWNERS + + Percentage of total lifetime a network request was blocked due to an + extension. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + kelvinjiang@chromium.org + + The number of enabled extensions with a New Tab Page override specified in + their manifest. Recorded once per profile at profile initialization. + + + + + rdevlin.cronin@chromium.org + kelvinjiang@chromium.org + + The number of enabled extensions with a New Tab Page override specified in + their manifest. Recorded once per "user profile" (profiles where + people can install extensions, specifically profiles that can have + non-component extensions installed) at profile open. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + + The number of apps/extensions with a non-webstore update_url loaded on + profile open and grouped by Extension::Location. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of apps/extensions with a non-webstore update_url loaded on + profile open grouped by Extension::Location. Emitted per "user + profiles" (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed) open. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + anunoy@chromium.org + + Number of non-WebStore extensions on profile open that override the new tab + page. + + + + + anunoy@chromium.org + extensions-core@chromium.org + + Number of non-WebStore extensions on profile open for "user + profiles" (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed) that override the + new tab page. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + jeffcyr@google.com + chrome-counter-abuse-alerts@google.com + + The total number of disabled extensions that are not present in the Enhanced + Safe Browsing CRX allowlist. Recorded for all users on profile + initialization. + + + + + jeffcyr@google.com + chrome-counter-abuse-alerts@google.com + + The total number of disabled extensions that are not present in the Enhanced + Safe Browsing CRX allowlist. Recorded for "user profiles" + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed) on profile initialization. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + jeffcyr@google.com + chrome-counter-abuse-alerts@google.com + + The total number of disabled extensions that are not present in the Enhanced + Safe Browsing CRX allowlist. Recorded for only for Enhanced Safe Browsing + users on profile initialization. + + + + + jeffcyr@google.com + chrome-counter-abuse-alerts@google.com + + The total number of disabled extensions that are not present in the Enhanced + Safe Browsing CRX allowlist. Recorded for only for Enhanced Safe Browsing + users on "user profile" (profiles where people can install + extensions, specifically profiles that can have non-component extensions + installed) initialization. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + jeffcyr@google.com + chrome-counter-abuse-alerts@google.com + + The total number of enabled extensions that are not present in the Enhanced + Safe Browsing CRX allowlist. Recorded for all users on profile + initialization. + + + + + jeffcyr@google.com + chrome-counter-abuse-alerts@google.com + + The total number of enabled extensions that are not present in the Enhanced + Safe Browsing CRX allowlist. Recorded for "user profiles" + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed) on profile initialization. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + jeffcyr@google.com + chrome-counter-abuse-alerts@google.com + + The total number of enabled extensions that are not present in the Enhanced + Safe Browsing CRX allowlist. Recorded for only for Enhanced Safe Browsing + users on profile initialization. + + + + + jeffcyr@google.com + chrome-counter-abuse-alerts@google.com + + The total number of enabled extensions that are not present in the Enhanced + Safe Browsing CRX allowlist. Recorded for only for Enhanced Safe Browsing + users on "user profile" (profiles where people can install + extensions, specifically profiles that can have non-component extensions + installed) initialization. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The permissions present in an extension when it was installed. To find + places where this histogram may be emitted, look for calls to + ExtensionService::RecordPermissionMessagesHistogram with the argument + Install. For Sync users, this is reported for each device. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The permissions present in an extension when it was installed. To find + places where this histogram may be emitted, look for calls to + ExtensionService::RecordPermissionMessagesHistogram with the argument + Install. Emitted once per "user profile" (profiles where people + can install extensions, specifically profiles that can have non-component + extensions installed) open. For Sync users, this is reported for each + device. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The permissions present in an extension when it was loaded (which happens at + profile open or extension install). To find places where this histogram may + be emitted, look for calls to + ExtensionService::RecordPermissionMessagesHistogram with the argument Load. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The permissions present in an extension when it was loaded (which happens at + profile open or extension install). Only emitted for quot;user + profiles" (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed). To find places + where this histogram may be emitted, look for calls to + ExtensionService::RecordPermissionMessagesHistogram with the argument Load. + + + + + tnagel@chromium.org + chrome-privacy-core@chromium.org + + The number of extensions reported in chrome://management UI with powerful + permissions. This number is recorded every time the user opens + chrome://management UI. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The time taken to start up persistent background pages for extensions in + ExtensionProcessManager when the extension system notifies that it is ready. + This version of the histogram does not include cases where the background + page startup is deferred, which would have been logged as ~0ms startup in + Extensions.ProcessManagerStartupHostsTime. + + + + + + Code removed 2022/12. + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Whether the DISABLE_PERMISSIONS_INCREASE disable reason was removed from an + extension while checking for a permissions increase. Recorded during startup + and on reload and update, for each extension that has the + DISABLE_PERMISSIONS_INCREASE reason. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + Whether an extension had host permissions withheld as a result of the + RuntimeHostPermissions feature. Recorded once per extension at profile + initialization if and only if the RuntimeHostPermissions feature is enabled + and the extension requests any host permissions (i.e., could be affected by + the feature). + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Whether an extension had host permissions withheld as a result of the + RuntimeHostPermissions feature. Recorded once per extension at "user + profile" (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed) initialization if + and only if the RuntimeHostPermissions feature is enabled and the extension + requests any host permissions (i.e., could be affected by the feature). + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + The number of hosts an extension has been granted explicit access to that it + also requested (note that if the user granted unrequested hosts, those will + not be included in this count). Recorded once per extension at profile + initialization if and only if the RuntimeHostPermissions feature is enabled + and the extension has had host permissions withheld. See also + Extensions.RuntimeHostPermissions.ExtensionHasWithheldHosts. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of hosts an extension has been granted explicit access to that it + also requested (note that if the user granted unrequested hosts, those will + not be included in this count). Recorded once per extension at "user + profile" (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed) initialization if + and only if the RuntimeHostPermissions feature is enabled and the extension + has had host permissions withheld. See also + Extensions.RuntimeHostPermissions.ExtensionHasWithheldHosts. + + + + + solomonkinard@google.com + extensions-core@chromium.org + + Logs if the requested extension subresource is a Web Accessible Resource + that is "visible" to any requesting origin. Logged for each + extension subresource request if the requesting origin is opaque (with + precursor origin also being an extension). + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The reason an extension failed to unpack, recorded when a failure occurs. + + Replaced Extensions.SandboxUnpackFailureReason because the enum values were + not in sync with the C++ enums. + + + + + achuith@chromium.org + + Whether a CRX file hash sum was the same as in an updater manifest. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + Count the number of times a sandboxed CRX unpack succeeds. + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + kelvinjiang@chromium.org + + The number of enabled extensions with a search engine override specified in + their manifest. Recorded once per profile at profile initialization. + + + + + rdevlin.cronin@chromium.org + kelvinjiang@chromium.org + + The number of enabled extensions with a search engine override specified in + their manifest. Recorded once per "user profile" (profiles where + people can install extensions, specifically profiles that can have + non-component extensions installed) at profile initialization. + + + + + lazyboy@chromium.org + dbertoni@chromium.org + + Recorded when Service Worker registration wasn't found when expected. This + also records the manifest location of the extension. + + + + + lazyboy@chromium.org + dbertoni@chromium.org + + Whether the attempt to re-register an extension Service Worker to mitigate + missing registration issue succeeded. The attempt is performed during + extension load. + + + + + lazyboy@chromium.org + dbertoni@chromium.org + + Tracks whether background service worker registration succeeded or not. + + + + + lazyboy@chromium.org + dbertoni@chromium.org + + The amount of time it takes to register a service worker background script. + + + + + lazyboy@chromium.org + dbertoni@chromium.org + + Whether or not an expected Service Worker registration was found. Note that + this expectation was stored in ExtensionPrefs. + + + + + lazyboy@chromium.org + dbertoni@chromium.org + + Tracks whether background service worker starting succeeded or not. + + + + + lazyboy@chromium.org + dbertoni@chromium.org + + The amount of time it takes to start the background service worker of an + extension. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The action taken on the settings overridden dialog that was shown to alert + the user of an extension overriding the New Tab Page, when the dialog shown + is the version that asks the user if they want to go back to Google's New + Tab Page. Recorded once per instance of the dialog being shown, after the + action is taken. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The action taken on the settings overridden dialog that was shown to alert + the user of an extension overriding the default search provider, when the + dialog shown is the version that asks the user if they want to go back to + Google search. Recorded once per instance of the dialog being shown, after + the action is taken. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The action taken on the settings overridden dialog that was shown to alert + the user of an extension overriding the default search provider, when the + dialog shown is the version that asks the user if they want to go back to a + previous search engine that isn't Google. Recorded once per instance of the + dialog being shown, after the action is taken. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The action taken on the settings overridden dialog that was shown to alert + the user of an extension overriding the New Tab Page, when the dialog shown + is the generic version. Recorded once per instance of the dialog being + shown, after the action is taken. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The action taken on the settings overridden dialog that was shown to alert + the user of an extension overriding the default search provider, when the + dialog shown is the generic version. Recorded once per instance of the + dialog being shown, after the action is taken. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + kelvinjiang@chromium.org + + The number of enabled extensions with startup page overrides specified in + their manifest. Recorded once per profile at profile initialization. + + + + + rdevlin.cronin@chromium.org + kelvinjiang@chromium.org + + The number of enabled extensions with startup page overrides specified in + their manifest. Recorded once per "user profile" (profiles where + people can install extensions, specifically profiles that can have + non-component extensions installed) at profile initialization. + + + + + alancutter@chromium.org + extensions-core@chromium.org + + Records true whenever an extension sync install attempt was blocked because + it was a default Chrome app that has been migrated over to a web app. Never + records false. + + + + + + Code removed 2022/12. + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The amount of synchronous time spent retrieving an extension's message + bundle (the collection of its i18n resources) from the browser. + + + + + + Code removed 2022/12. + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The duration by which a network request was delayed while waiting for + extension user script load. Recorded once per request that is delayed, at + the time the resource resumes loading. + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The source that triggered an extension action. Recorded once per invocation + of an extension action. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of extensions that the user has pinned on the toolbar. Recorded + once per profile during initialization if the user has at least one + extension with an action in the toolbar. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The percentage of extensions that the user has pinned to the toolbar (i.e., + this will be 100 if the user has every extension pinned). Recorded once per + profile during initialization if the user has at least one extension with an + action in the toolbar. + + + + + + Obsolete in M110. + + phillis@chromium.org + extensions-core@chromium.org + + Tracks whether bookmark app uninstalling succeeded or not. This is emitted + whenever a bookmark app (which is deprecated) gets uninstalled. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The source for the extension uninstall. This is only recorded if an + uninstall dialog is shown to the user (i.e., it is not recorded for internal + "cleanups"). Note: this is no longer emitted for web app + uninstalls as of M113. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + Uninstalls grouped by Extension::HistogramType. + + + + Please list the metric's owners. Add more owner tags as needed. + + The number of extensions that were updated at browser startup. + + + + + Please list the metric's owners. Add more owner tags as needed. + Updates grouped by the location property in prefs. + + + + Please list the metric's owners. Add more owner tags as needed. + Updates grouped by Extension::HistogramType. + + + + apotapchuk@chromium.org + anqing@chromium.org + + Tracks the usage of different MIME type handlers used to view files. It is + recorded when the browser intercepts navigation with one of the type + handlers. + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + The total amount of time taken to evaluate declarativeNetRequest rules in + the onBeforeRequest stage, measured in milliseconds. Recorded once per + request if and only if at least one declarativeNetRequest rule is present. + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + The total amount of time taken to evaluate declarativeNetRequest rules in + the onBeforeRequest stage, measured in microseconds. Recorded once per + request if and only if at least one declarativeNetRequest rule is present. + This is only emitted for users with high resolution clocks. + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + The total amount of time, measured in milliseconds, between when an event is + dispatched to webRequest listeners and when all responses are received and + handled for an onBeforeRequest event. Emitted when there are {HandlerTypes} + for the request. Recorded once per request if the request completes. + + + + + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + The total amount of time, measured in milliseconds, between when an event is + dispatched to webRequest listeners and when all responses are received and + handled for an onBeforeRequest event. Emitted when there are {HandlerTypes} + for the request. Recorded once per request if the request completes. This is + only emitted for users with high resolution clocks. + + + + + + + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + Records any flags that were registered in the extraInfoSpec of a webRequest + listener, as well as the total number of listeners registered. Recorded each + time a new listener is registered. + + + + + bashi@chromium.org + blink-network-stack@google.com + + Whether and how keepalive requests are blocked. There is a similar histgoram + Net.KeepaliveRequest.BlockStatus. See there for the difference between the + two histograms. + + + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + Records the request header added by extensions using the WebRequest API. + Recorded for each network request during the OnBeforeSendHeaders stage. + Multiple samples can be recorded per request. + + + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + Records the request header modified by extensions using the WebRequest API. + Recorded for each network request during the OnBeforeSendHeaders stage. + Multiple samples can be recorded per request. + + + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + Records the request header removed by extensions using the WebRequest API. + Recorded for each network request during the OnBeforeSendHeaders stage. + Multiple samples can be recorded per request. + + + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + Records the response header added by extensions using the WebRequest API. + This is logged for the cumulative delta across all the web request + extensions. Recorded for each network request during the OnHeadersReceived + stage. Multiple samples can be recorded per request. + + + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + Records the response header modified by extensions using the WebRequest API. + This is logged for the cumulative delta across all the web request + extensions. Recorded for each network request during the OnHeadersReceived + stage. Multiple samples can be recorded per request. + + + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + Records the response header removed by extensions using the WebRequest API. + This is logged for the cumulative delta across all the web request + extensions. Recorded for each network request during the OnHeadersReceived + stage. Multiple samples can be recorded per request. + + + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + The total time a network request took when at least one Web Request listener + was registered at the start of the request, and a listener was blocked on + the request. Measures from onBeforeRequest to onCompleted/onErrorOccurred, + and does not include canceled or redirected requests. + + + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + The total time a network request took when at least one Web Request listener + with 'extraHeaders' in the extraInfoSpec was registered at the start of the + request. Measures from onBeforeRequest to onCompleted/onErrorOccurred, and + does not include canceled or redirected requests. + + + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + The total time a network request took when at least one Web Request listener + was registered at the start of the request. Measures from onBeforeRequest to + onCompleted/onErrorOccurred, and does not include canceled or redirected + requests. + + + + + + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + Counts the number of times an action is requested by extensions as part of + the Web Request API. For a given web request stage, multiple actions may be + logged. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + Number of enabled extensions which have requested the + "webRequestBlocking" permission. Includes all kinds of extensions, + including component and unpacked extensions. Recorded during profile + initialization. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Number of enabled extensions which have requested the + "webRequestBlocking" permission. Includes all kinds of extensions, + including component and unpacked extensions. Recorded during "user + profile" (profiles where people can install extensions, specifically + profiles that can have non-component extensions installed) initialization. + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + src/extensions/OWNERS + + Number of enabled extensions which have requested the "webRequest" + permission. Includes all kinds of extensions, including component and + unpacked extensions. Recorded during profile initialization. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Number of enabled extensions which have requested the "webRequest" + permission. Includes all kinds of extensions, including component and + unpacked extensions. Recorded during "user profile" (profiles + where people can install extensions, specifically profiles that can have + non-component extensions installed) initialization. + + + + + jeffcyr@google.com + chrome-counter-abuse-alerts@google.com + + Reports the Safe Browsing CRX allowlist state received from Chrome Web Store + when a user presses on "Add to Chrome" in Chrome Web Store. + + + + + jeffcyr@google.com + chrome-counter-abuse-alerts@google.com + + Reports when a user with install friction dialog enabled tries to install an + extension that is not included in the Safe Browsing CRX allowlist. 'True' if + the install dialog is accepted or 'False' if the friction dialog or install + dialog is canceled. + + + + + jeffcyr@google.com + chrome-counter-abuse-alerts@google.com + + Reports when a user with install friction dialog disabled tries to install + an extension that is not included in the Safe Browsing CRX allowlist. 'True' + if the install dialog is accepted or 'False' if the install dialog is + canceled. + + + + + dpapad@chromium.org + dbeam@chromium.org + + The amount of time between starting the provisional load and fully loading + the document in the main frame of the chrome://extensions page. This + corresponds to the WebContentsObserver::DocumentLoadedInFrame method. + {ExtensionWebUiPageType} + + + + + dpapad@chromium.org + dbeam@chromium.org + + The amount of time between starting the provisional load and having + completed the onload handler in the main frame of the chrome://extensions + page. This corresponds to the + WebContentsObserver::DocumentOnLoadCompletedInPrimaryMainFrame method. + {ExtensionWebUiPageType} + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + The detailed reason why enterprise policy forced extensions had failed to + install because fetched update manifest was invalid. Recorded for each + forced extension that failed to install after 5 minutes with + Extensions.ForceInstalledFailureReason2 equal to MANIFEST_INVALID. + + Replaced Extensions.ForceInstalledFailureManifestInvalidErrorDetail due to + addition of new error BAD_APP_STATUS, and some of the errors that were + MISSING_UPDATE_CHECK_TAG would now be reported as BAD_APP_STATUS. + + + + + + + + + vkovalova@google.com + burunduk@chromium.org + managed-devices@google.com + + HTTP error code for the last retry attempt when for enterprise policy forced + extensions failed with {ErrorType}. Recorded for each forced extension that + failed to install after 5 minutes with + Extensions.`OffStore,WebStore`_ForceInstalledFailureReason3 equal to + {ErrorType} and a HTTP response code was received. HTTP response code is + received only if there was no network error. Replaced + Extensions.ForceInstalledHttpErrorCode because error codes are now reported + only when network error code is HTTP_RESPONSE_CODE_FAILURE. + + + + + + + + + + + + + + + + + Histogram is in the process of being removed in favor of its incremented + version that emits only on profile open for "user" profiles + (profiles where people can install extensions, specifically profiles that + can have non-component extensions installed). + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The total number of extensions that have an icon in the extension toolbar, + including those that are unpinned and only show in the extensions menu. + Measured once per (non-incognito) profile open. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The total number of extensions that have an icon in the extension toolbar, + including those that are unpinned and only show in the extensions menu. + Measured once per "user" profile (profiles where people can + install extensions, specifically profiles that can have non-component + extensions installed) open. + + + + + + diff --git a/histograms/metadata/families/DIR_METADATA b/histograms/metadata/families/DIR_METADATA new file mode 100644 index 000000000000..d4a07c264dcc --- /dev/null +++ b/histograms/metadata/families/DIR_METADATA @@ -0,0 +1,2 @@ +mixins: "//components/supervised_user/COMMON_METADATA.chromeos" +mixins: "//components/supervised_user/COMMON_METADATA" diff --git a/histograms/metadata/families/OWNERS b/histograms/metadata/families/OWNERS new file mode 100644 index 000000000000..e77f0aa8650f --- /dev/null +++ b/histograms/metadata/families/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +courtneywong@chromium.org diff --git a/histograms/metadata/families/histograms.xml b/histograms/metadata/families/histograms.xml new file mode 100644 index 000000000000..ce69d63f639b --- /dev/null +++ b/histograms/metadata/families/histograms.xml @@ -0,0 +1,849 @@ + + + + + + + + + + courtneywong@chromium.org + michaelpg@chromium.org + cros-families-eng@google.com + + Records the number of users who go through the Add Supervision process to + convert regular accounts to Geller accounts. Initiated count is incremented + when Add Supervision dialog is opened. Completed count is incremented when + supervision is successfully enrolled. Signed out count is incremented when + the user clicks "Sign out" after enrollment at the end of the + process in the dialog. Closed count is incremented when the Add Supervision + dialog is closed prior to enrollment, excluding sign out. Switched accounts + count is incremented when the user clicks "Sign out" within the + dialog to swich accounts before enrollment completion. + + + + + courtneywong@chromium.org + michaelpg@chromium.org + cros-families-eng@google.com + + Measures the amount of time in milliseconds for users to successfully enroll + in supervision. Elapsed time is measured starting from when the Add + Supervision dialog was first opened. + + + + + courtneywong@chromium.org + michaelpg@chromium.org + cros-families-eng@google.com + + Measures the amount of time in milliseconds for users to exit the Add + Supervision dialog without enrollment. This can happen if the user closes + the Add Supervision dialog or signs out to switch accounts. Elapsed time is + measured starting from when the Add Supervision dialog was first opened. + + + + + courtneywong@chromium.org + michaelpg@chromium.org + cros-families-eng@google.com + + Measures the amount of time in milliseconds for users to sign out after + enrolling in supervision. Elapsed time is measured starting from when the + Add Supervision dialog was first opened. + + + + + agawronska@chromium.org + cros-families-eng@google.com + + Number of forced logouts for child accounts on an account reconciliation + error. Check `ChromeOSLimitedAccessAccountReconcilorDelegate`. + + + + + courtneywong@chromium.org + cros-families-eng@google.com + + Reports the size of the uploaded ChildStatusReportRequest proto in + kilobytes. This metric records right before the report uploads. The max + bucket value is 500MB. + + + + + courtneywong@chromium.org + cros-families-eng@google.com + + Reports the time in between ChildStatusReportRequest uploads in minutes. The + default upload frequency is once every ten minutes. This metric records + right before the report uploads. The max bucket value is 100,000 minutes + (1667 hours). + + + + + courtneywong@chromium.org + cros-families-eng@google.com + + Records whether the favicon is available when it is being requested. The + favicon is requested for UI related to supervised users, including the local + web approvals parent access dialog. This metric is only recorded on + ChromeOS. + + + + + + + courtneywong@chromium.org + agawronska@chromium.org + cros-families-eng@google.com + chrome-metrics-team@google.com + + Categorizes the current user for the Family Experiences team's metrics. + Other is for all other users that do not fall into any of the below + categories. Users under the age of consent automatically have supervision + applied to their accounts. Users over the age of consent can opt into + supervision. WebApprovals metrics are included from M110 onwards. + ExtensionApprovals metrics are included from M115 onwards. + + + + + courtneywong@chromium.org + cros-families-eng@google.com + + Records the state at which the Parent Access dialog is closed for all parent + access flows. Allows to track the drop rate by important states during the + parent access flow. This metric is recorded for ChromeOS only. WebApprovals + metrics are available from M110 onwards. ExtensionApprovals metrics are + available from M115 onwards. + + + + + + + + + + agawronska@chromium.org + cros-families-eng@google.com + + Records an error that occurs in the parent access widget. ChromeOS Only. + WebApprovals metrics are available from M110 onwards. ExtensionApprovals + metrics are available from M115 onwards. + + + + + + + + + + agawronska@chromium.org + cros-families-eng@google.com + + Records an error where the parent access widget dialog cannot be shown. + Reported by the browser when the dialog fails to show. ChromeOS only. + WebApprovals metrics are available from M110 onwards. ExtensionApprovals + metrics are available from M115 onwards. + + + + + + + + + + agawronska@chromium.org + galenemco@chromium.org + cros-families-eng@google.com + + Reports errors that occur when there is a mismatch between child account + status detected during online sign-in from the device login screen and the + child status read from the ID token. This error results in ChromeOS crashing + to prevent an unsupervised experience. Errors can occur when we receive (1) + a non-child token for a signed-in child user or (2) a child token for a + signed-in non-child user. + + + + + + + courtneywong@chromium.org + agawronska@chromium.org + cros-families-eng@google.com + chrome-metrics-team@google.com + + Categorizes the current user for the Family Experiences team's metrics. + Other is for all other users that do not fall into any of the below + categories. A Supervised User has a supervised primary account and no + secondary accounts. A Supervised Student has a supervised primary account + and one or more EDU secondary accounts, which is the only available option + for a secondary account in that scenario. A Student at Home has a K-12 EDU + primary account on an unmanaged ChromeOS device, regardless of the secondary + account. A Regular User is an unmanaged consumer user on any device. This + metric is logged with every UMA upload in ProvideCurrentSessionData(). + + + + + courtneywong@chromium.org + cros-families-eng@google.com + chrome-metrics-team@google.com + + Reports the number of secondary accounts besides the primary user. This + metric is logged with every UMA upload in ProvideCurrentSessionData(). This + metric is not reported for guest users. + + + + + courtneywong@chromium.org + cros-families-eng@google.com + + Reports "hidden" when the login screen hides a legacy supervised + user (LSU). Reports "displayed" when the login screen displays a + non-LSU Gaia user. Reports "deleted" when the login screen + attempts to delete a LSU. Recorded whenever the user sees the login screen. + + + + + tju@google.com + chrome-kids-eng@google.com + + The detailed reason of GoogleServiceAuthError in calls to Kids Management + API::ClassifyURL. + + + + + tju@google.com + chrome-kids-eng@google.com + + The status of the net or http communication to the Kids Management + API::ClassifyURL with JSON message format in expected response. This is + recorded for each request to the Kids Management API. + + + + + tju@google.com + chrome-kids-eng@google.com + + Indicates success of a JSON response parsing from Kids Management + API::ClassifyURL, or a stage at which it failed. + + + + + anthie@google.com + ljjlee@google.com + chrome-kids-eng@google.com + cros-families-eng@google.com + + The total elapsed time in milliseconds to complete the local web approval + verification flow, from the time the supervised user requests to the time + the webpage is approved or rejected by the parent. Available on Android + (M108+) and ChromeOS (M109+). + + + + + anthie@google.com + ljjlee@google.com + chrome-kids-eng@google.com + cros-families-eng@google.com + + The different outcomes that a user may come accross the local web approval + flow. Available on Android only. + + + + + agawronska@chromium.org + cros-families-eng@google.com + chrome-kids-eng@google.com + + Records the result of local web approval request on ChromeOS and Android. + Reported by the browser once platform specific approval flow finishes and + returns the result. + + + + + + + fernandex@chromium.org + chrome-kids-eng@google.com + + To be implemented. Categorizes the current user based on Family Link user + type. Other is for all unsupervised users. Users under the age of consent + automatically have supervision applied to their accounts. Users over the age + of consent can opt into supervision. Recorded for ChromeOS and Chrome + browser platforms at the start of a user session, if the state changes + during the session this will only be recorded at the start of the next + session. + + + + + agawronska@chromium.org + xiqiruan@chromium.org + cros-families-eng@google.com + + Records the Chrome OS user Chrome browser usage in milliseconds. Reports + current daily duration at the first session start on next day. Despite daily + reporting, the uploaded duration can still exceed 24 hours if the user + continuously stays active for that long. This is only logged for active + foreground time of Chrome browser. Ignores the time when video or audio is + playing in the background, or Chrome browser is invisible. Also ignores the + time when UsageTimeStateNotifier::UsageTimeState is inactive. + + + + + agawronska@chromium.org + xiqiruan@chromium.org + cros-families-eng@google.com + + Records whether the current primary user is the owner of device. Reports at + the beginning of the first active session daily. + + + + + agawronska@chromium.org + xiqiruan@chromium.org + cros-families-eng@google.com + + Records the number of family link users on a Chrome OS device at the + beginning of the first active session daily. + + + + + agawronska@chromium.org + xiqiruan@chromium.org + cros-families-eng@google.com + + Records the number of Gaia users on a Chrome OS device, at the beginning of + the first active session daily for all user types except incognito session. + The user count could be 0 if the managed device has ephemeral user policy. + + + + + agawronska@chromium.org + xiqiruan@chromium.org + cros-families-eng@google.com + + Records whether managed sites approved list and blocked list are enabled for + currently active Family Link user. Prior to M93, this metric was recorded at + the beginning of first active session daily. In M93, this metric is now also + recorded when manual hosts and manual urls policies are changed. Ignores the + reports during OOBE and sign out. + + + + + msalama@chromium.org + chrome-kids-eng@google.com + cros-families-eng@google.com + + Records whether the given url has a match in both the allowlist and the + block list which means a conflict. This metric is recorded if the given url + matches at least one manual rule. + + + + + agawronska@chromium.org + xiqiruan@chromium.org + cros-families-eng@google.com + + Records number of approved urls and hosts for currently active Family Link + user. This metric is recorded at the beginning of first active session daily + and when manual hosts and manual urls policies are changed. Ignores the + reports during OOBE and sign out. + + + + + agawronska@chromium.org + xiqiruan@chromium.org + cros-families-eng@google.com + + Records number of blocked urls and hosts for currently active Family Link + user. This metric is recorded at the beginning of first active session daily + and when manual hosts and manual urls policies are changed. Ignores the + reports during OOBE and sign out. + + + + + agawronska@chromium.org + xiqiruan@chromium.org + cros-families-eng@google.com + + Reports NewUserAdded enum when a new Family Link user or regular user is + successfully added to Chrome OS device. Other user types fall into the other + bucket. Reports when the user session starts. + + + + + agawronska@chromium.org + xiqiruan@chromium.org + cros-families-eng@google.com + + Records the Chrome OS user session duration in milliseconds. Reports current + daily duration at the first session start on next day. This is only logged + for active usage time of device, determined by UsageTimeState::ACTIVE. + + + + + agawronska@chromium.org + xiqiruan@chromium.org + cros-families-eng@google.com + + Records the Chrome OS user engagement hour within the current day (0-23), + total of weekday and weekend. Logged on + UsageTimeStateNotifier::UsageTimeState changes to INACTIVE. Might report the + same hour multiple times. + + + + + agawronska@chromium.org + xiqiruan@chromium.org + cros-families-eng@google.com + + Records the Chrome OS user engagement hour of day (0-23) on weekday. Logged + on UsageTimeStateNotifier::UsageTimeState changes to INACTIVE. Might report + the same hour multiple times. + + + + + agawronska@chromium.org + xiqiruan@chromium.org + cros-families-eng@google.com + + Records the Chrome OS user engagement hour of day (0-23) on weekend. Logged + on UsageTimeStateNotifier::UsageTimeState changes to INACTIVE. Might report + the same hour multiple times. + + + + + agawronska@chromium.org + xiqiruan@chromium.org + cros-families-eng@google.com + + Records what time limit policy types are enabled for the currently active + Family Link user. Enabling multiple policies would report multiple buckets + to UMA. Prior to M93, this metric was recorded at the beginning of first + active session daily. In M93, this metric is now also recorded when bed time + limit, daily limit, override time limit, apps time limit and web time limit + policies are changed. App time limits does not include blocked apps. + + + + + agawronska@chromium.org + xiqiruan@chromium.org + cros-families-eng@google.com + + Records the web filter type for currently active Family Link user. Prior to + M93, this metric was recorded at the beginning of first active session + daily. In M93, this metric is now also recorded when web filter type policy + changed. Ignores the reports during OOBE and sign out. + + + + + courtneywong@chromium.org + cros-families-eng@google.com + + Around once per day, records the number of recently used {AppType} apps in + the past day. + + + + + + + + + + + + + + + + + + + courtneywong@chromium.org + cros-families-eng@google.com + + Records the number of non-component {ExtensionStatus} regular browser + extensions and themes around once per day, regardless of when they were last + used. + + + + + + + + + agawronska@google.com + cros-families-eng@google.com + Which command was selected from the blocking interstitial. + + + + yilkal@chromium.org + michaelpg@chromium.org + cros-families-eng@google.com + + The number of blocked iframes per unblocked main frame load. The value is + recorded when the main frame finishes loading. + + + + + agawronska@chromium.org + cros-families-eng@google.com + + The counts of results from supervised user URL filtering. Each entry + includes the outcome of the filter (i.e. allowed, blocked, or unknown) and + the page transition type (how the user got there, e.g. typed URL, clicked + link). + + + + + escordeiro@chromium.org + unichrome-eng@google.com + cros-families-eng@google.com + + The extra page load delays introduced by network requests due to the + supervised user url filtering feature, measured once per page load, for + failed requests. This is the delay to fetch the token and call the + ClassifyUrl rpc, when there is a cache miss. + + + + + escordeiro@chromium.org + unichrome-eng@google.com + cros-families-eng@google.com + + The extra page load delays introduced by network requests due to the + supervised user url filtering feature, measured once per page load. This is + the delay to fetch the token and call the ClassifyUrl rpc, when there is a + cache miss. Only recorded for successful requests. + + + + + escordeiro@chromium.org + unichrome-eng@google.com + cros-families-eng@google.com + + The counts of response status from supervised user + KidsManagementURLCheckerCLient. Each entry includes the outcome of a request + (i.e. success, net error, parsing error). + + + + + michaelpg@chromium.org + yilkal@chromium.org + cros-families-eng@google.com + + The counts of request for permission sent from main frame or sub-frame. + + + + + agawronska@chromium.org + cros-families-eng@google.com + + The extra page load delays introduced by network requests due to the + supervised user SafeSites feature, measured once per page load. + + + + + courtneywong@chromium.org + agawronska@chromium.org + cros-families-eng@google.com + + Records supervised users trying to enable or disable extensions. Enabled + count increments when the supervised user successfully enables an extension. + Disabled count increments when the supervised user successfully disables an + extension. Enable attempt failed count increments when the parent has turned + off the "Permissions for sites, apps and extensions" toggle and + the supervised user tries to enable an extension that requires custodian + approval or has a permissions increase. + + + + + courtneywong@chromium.org + agawronska@chromium.org + cros-families-eng@google.com + + Records the actions of supervised users on the Extension Install Dialog. + Opened count increments when the supervised user tries to install an + extension from the Chrome Web Store and launches the Extension Install + Dialog. Asked Parent count increments when the supervised user clicks + "Ask a parent". Child Canceled count increments when the + supervised user clicks "Cancel". + + + + + courtneywong@chromium.org + agawronska@chromium.org + cros-families-eng@google.com + + Records the progress of supervised users as they try to install Chrome + extensions. Extension Approval Granted count increments when the custodian + initially grants approval to install the extension. Permissions Increase + Granted count increments when the supervised user approves a newer version + of an existing extension with increased permissions. Extension Approval + Removed count increments when the supervised user removes an extension. + + + + + courtneywong@chromium.org + cros-families-eng@google.com + + Records the state of the "Permissions for sites, apps and + extensions" toggle. When parents/custodians have the toggle enabled, + supervised users may install extensions with parent/custodian approval, and + can approve permission updates by themselves. Otherwise, supervised users + cannot install extensions and cannot approve permission updates. If the + toggle is disabled and an extension has permissions updates, the extension + would remain force-disabled. The Disabled count increments when the parent + flips the toggle off, and increments twice if the supervised user logs in + while the toggle is in the off state. The Enabled count increments when the + parent flips the toggle on, and increments twice if the supervised user logs + in while the toggle is in the on state. While the double counting upon + logging in is less than ideal, at least the counts are balanced relative to + each other. + + + + + courtneywong@chromium.org + agawronska@chromium.org + cros-families-eng@google.com + + Records the actions of parents on the Parent Permission Dialog. Opened count + increments when the Parent Permission Dialog first opens. Parent Approved + count increments when the parent successfully types their password and + approves the extension. Parent Canceled count increments when the parent + cancels the dialog, denying the supervised user's attempt to enable the + extension. Failed count increments when there was some sort of failure in + the Parent Permission Dialog. No Parent Error count increments when the + supervised user doesn't have any associated parent email addresses for + asking approval. Note that this error also increments the Failed count. + + + + + agawronska@chromium.org + yilkal@chromium.org + cros-families-eng@google.com + + The count of applications with time limit set by parents. Recorded once per + PerAppTimeLimit policy change. + + + + + agawronska@chromium.org + yilkal@chromium.org + cros-families-eng@google.com + + The count of applications blocked by parents. It only applies to ARC++ + applications. Recorded once per PerAppTimeLimit policy change. + + + + + agawronska@chromium.org + yilkal@chromium.org + cros-families-eng@google.com + + Per-App Time Limits feature engagement measured by the number of apps with + time limits set for child user. Reported at the beginning of each user + session. + + + + + agawronska@chromium.org + yilkal@chromium.org + cros-families-eng@google.com + + The total number of PerAppTimeLimits policy changes seen in a session. + Recorded once at the end of the session. + + + + + agawronska@chromium.org + cros-families-eng@google.com + + Action originated in parent access code dialog. Logged every time the action + happens. + + + + + agawronska@chromium.org + cros-families-eng@google.com + + The context in which parent access code was used. Logged every time the new + parent access dialog is shown. + + + + + agawronska@chromium.org + cros-families-eng@google.com + + The result of the parent access code validation for {Action} action. Logged + every time the code is validated from the parent access dialog. + + + + + + + + + + + + + escordeiro@google.com + brunoad@google.com + ldaguilar@google.com + cros-families-eng@google.com + + The event that triggered status report for supervised account. + + + + + + diff --git a/histograms/metadata/fastpair/OWNERS b/histograms/metadata/fastpair/OWNERS new file mode 100644 index 000000000000..3cdab5e016ca --- /dev/null +++ b/histograms/metadata/fastpair/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +jackshira@google.com +dclasson@google.com +julietlevesque@google.com diff --git a/histograms/metadata/fastpair/histograms.xml b/histograms/metadata/fastpair/histograms.xml new file mode 100644 index 000000000000..84e57ccaf3b3 --- /dev/null +++ b/histograms/metadata/fastpair/histograms.xml @@ -0,0 +1,311 @@ + + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes for Fast Pair to finish creating a bond with + the peripheral. Emitted when bonding completes. No metric is emitted on + failure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records each sucessful step in the GATT Connection flow. These steps are: on + connection start, on connection ready, on key-based characteristic found, on + notifications enabled for the key-based pairing characteristic, and on + connection established. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes for GATT service discovery. Emitted when + GATT discovery is completed for service. No metric is emitted on failure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the number of attempts needed to successfully create a handshake. + Currently the highest allowed attempt number is 3. Emitted following a + successful handshake. No metric is emitted on failure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the effective success rate of creating a handshake during the Fast + Pair pairing protocol. Emitted following the attempted creation of the + handshake and all retries. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records each successful step in the Initial Pairing flow. These steps are: + on notification click, on initialization start, on pairing start, on pairing + complete, V1 device detected, guest mode detected, device already associated + with the user's account, preparing to write the account key, account key + written successfully, and on completion of the entire pairing process. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes for the Fast Pair key based pairing notify + session to begin. Emitted when a key based notify session has been + successfully started. No metric is emitted on failure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes for the Fast Pair key based write request to + complete. Emitted when a key based write request has completed successfully. + No metric is emitted on failure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes for the Fast Pair passkey notify session to + begin. Emitted when a passkey notify session has been successfully started. + No metric is emitted on failure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the total time it takes for the Fast Pair passkey request to + complete. Emitted when a passkey write request has completed successfully. + No metric is emitted on failure. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records each successful step in the Retroactive Pairing flow. Emitted on: + device detected, GATT initialization started, writing account key, timed out + writing account key, account key successfully written to the device, BLE + address rotated, notification displayed to user, save requested by user + (notification clicked), and account key saved to Footprints. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records each sucessful step in the Subsequent Pairing flow. These steps are: + on notification click, on initialization start, on pairing start, and on + completion of the entire pairing process. + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records each sucessful step in the Protocol-based Pairing flow. These steps + are: on pairing start, when retries have been exhausted, when device is + already paired, on successful bond, on passkey negotiated, on passkey + characteristic found, on notifications enabled for passkey characteristic, + on passkey response, on passkey validation, on passkey confirmation, and on + pairing complete. + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the flow for the initialization of the GATT connection and the + process for grabbing the classic address for the Bluetooth device and + validating encryption keys. This flow is common across all three Fast Pair + pairing scenarios. Emitted on the following steps: initialization started + (when the process is kicked off), already pairing failure (when the device + is already pairing when the notification is clicked), passed to pairing + dialog (when a V1 device is detected, indicated that the device will not be + logging the subsequent metrics in the flow), exhausted retries failure (on + failure after three retry attempts), handshake reused (when a GATT handshake + already exists, bypassing the GATT handshake flow for this attempt), and + initialization complete (after the GATT handshake has completed, and the + classic address for the device is known). + + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the failure reason for initialization of the GATT connection and + handshake (process for grabbing the classic address for the Bluetooth device + and validating encryption keys). Emitted on every failure attempt. The + initialization can succeed overall on a third retry, and still emit to this + bucket on previous failed attempts. No metric is emitted on success. The + only `FastPairPairFailure`s that will be related to this flow are: Pairing + Device Lost, Data Encryptor Retrieval, Key-based Pairing Response Decrypt, + Incorrect Key-based Pairing Response Type, Create GATT Connection, Pairing + Device Lost Between GATT Connection Attempts, GATT Service Discovery + Timeout, Key-based Pairing Characteristic Discovery, Key-based Pairing + Characteristic Notify Session, Key-based Pairing Response Timeout, and + Key-based Pairing Characteristic Write. + + + + + + + + + + jackshira@google.com + dclasson@google.com + brandosocarras@google.com + chromeos-cross-device-eng@google.com + + Records the number of retries that occurred before the successful completion + of the initialization flow for the GATT connection and handshake. Emitted + only on success of the initialization flow. No metric is emitted on failure. + + + + + + + + + + + diff --git a/histograms/metadata/feature_engagement/OWNERS b/histograms/metadata/feature_engagement/OWNERS new file mode 100644 index 000000000000..a230d6777d16 --- /dev/null +++ b/histograms/metadata/feature_engagement/OWNERS @@ -0,0 +1,9 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +nyquist@chromium.org +shaktisahu@chromium.org + +# Desktop User Education: +dfried@chromium.org diff --git a/histograms/metadata/feature_engagement/histograms.xml b/histograms/metadata/feature_engagement/histograms.xml new file mode 100644 index 000000000000..71fafdb2c693 --- /dev/null +++ b/histograms/metadata/feature_engagement/histograms.xml @@ -0,0 +1,613 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + nyquist@chromium.org + + Records if in-product help configuration is parsed correctly, and the + failure reasons for parsing failures. + + + + + nyquist@chromium.org + + Records if {IPHDatabase} database initialization succeeds for in-product + help. + + + + + + nyquist@chromium.org + + Records if {IPHDatabase} database successfully loads the data for in-product + help. + + + + + + nyquist@chromium.org + + Records the total number of event records in the database for in-product + help after the event model is loaded. + + + + + nyquist@chromium.org + + Records if {IPHDatabase} database update succeeds for in-product help. + + + + + + lpromero@google.com + gambard@chromium.org + + Records how the in-product help bubble was dismissed on iOS. + + + + + nyquist@chromium.org + + Records if the model is ready when in-product help event happens for + {IPHFeature}. + + + + + + collinbaker@chromium.org + + Last step of in-product help (IPH) for reopening tabs that user followed + before finishing the IPH flow or dismissing it early. Recorded when the IPH + flow is dismissed, which is at one of three possible times: when the promo + bubble times out, when the menu is closed after the user opens it for IPH, + or when the user opens the last closed tab. The last is considered a + success. + + + + + + Expired since 2021-11. + + kerenzhu@chromium.org + collinbaker@chromium.org + + Record the number of first-time snoozes and repeating snoozes of an + in-product help bubble for {IPHFeature} when the user clicks the snooze + button. A snooze of an IPH that has been snoozed before is a repeating + snooze. + + + + + + + Expired since 2021-11. + + kerenzhu@chromium.org + collinbaker@chromium.org + + Record the number of previous snoozes when an in-product help bubble for + {IPHFeature} is dismissed because the acknowledge button is clicked. + + + + + + + Expired since 2021-11. + + kerenzhu@chromium.org + collinbaker@chromium.org + + Record the number of previous snoozes when an in-product help bubble for + {IPHFeature} is dismissed because the user follows the promo, e.g. a + relevant control is clicked. + + + + + + + Expired since 2021-11. + + kerenzhu@chromium.org + collinbaker@chromium.org + + Record the number of previous snoozes when an in-product help bubble for + {IPHFeature} is triggered. + + + + + + nyquist@chromium.org + + Records if in-product help for {IPHFeature} is shown to the user, and the + failure reasons if in-product help is not shown. Recorded on its own across + all in-product help features, in addition to being a base name for + feature-specific histograms. + + + + + + lpromero@google.com + gambard@chromium.org + + Records the time duration during which the in-product help for {IPHFeature} + is shown. The timer automatically starts when the feature engagement system + says a particular IPH should be displayed. The timer is stopped and recorded + when the IPH is dismissed. + + + + + + haileywang@chromium.org + shaktisahu@chromium.org + + Records the action taken by the user on a snoozable in-product help bubble. + + + + + haileywang@chromium.org + shaktisahu@chromium.org + + The time duration for which the in-product help bubble is shown. + + + + + haileywang@chromium.org + shaktisahu@chromium.org + + Records if the snooze button was shown on an in-product help bubble. + + + + + dpenning@chromium.org + dfried@chromium.org + + Records the number of times the user toggles focus to the help bubble using + the keyboard during a tutorial that the user aborts or fails. Can be + cross-referenced with screen reader state to determine if screen reader or + non-screen-reader users are using the keyboard to navigate. + + + + + dpenning@chromium.org + dfried@chromium.org + + Records the number of times the user toggles focus to the help bubble using + the keyboard during a tutorial that the user completes. Can be + cross-referenced with screen reader state to determine if screen reader or + non-screen-reader users are using the keyboard to navigate. + + + + + dpenning@chromium.org + dfried@chromium.org + + Records whether the user edited the tab group title during the Tab Groups + tutorial. During one of the steps, the tutorial asks the user to name the + new group, but the tutorial will continue if they dismiss the bubble without + adding a name. We want to know if people follow the instruction or not. + + + + + dpenning@chromium.org + dfried@chromium.org + + When {TutorialID} is aborted, the step at which the tutorial was aborted. + Only logged on desktop platforms. Logged each time a tutorial is aborted. + + + + + + dpenning@chromium.org + dfried@chromium.org + + When {TutorialID} is ended, whether the tutorial was completed or aborted. + Only logged on desktop platforms. Logged each time a tutorial is ended. + + + + + + dpenning@chromium.org + dfried@chromium.org + + When {TutorialID} button is shown from an IPHLink, whether the user clicks + to start the tutorial. Only logged on desktop platforms when the user either + clicks or dismisses the FeaturePromo. + + + + + + dpenning@chromium.org + dfried@chromium.org + + The count of successful starts of the tutorial when {TutorialID} button is + clicked on the whats new page (called by the Tutorial BrowserCommand). A + false value correlates to a failure to start the tutorial. + + + + + + + diff --git a/histograms/metadata/file/DIR_METADATA b/histograms/metadata/file/DIR_METADATA new file mode 100644 index 000000000000..e9400b877525 --- /dev/null +++ b/histograms/metadata/file/DIR_METADATA @@ -0,0 +1 @@ +mixins: "//ui/file_manager/COMMON_METADATA" diff --git a/histograms/metadata/file/OWNERS b/histograms/metadata/file/OWNERS new file mode 100644 index 000000000000..caa22ff78b7b --- /dev/null +++ b/histograms/metadata/file/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +nigeltao@chromium.org diff --git a/histograms/metadata/file/histograms.xml b/histograms/metadata/file/histograms.xml new file mode 100644 index 000000000000..3a5cf4dc2308 --- /dev/null +++ b/histograms/metadata/file/histograms.xml @@ -0,0 +1,1138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + How long did it take to launch Google Drive for the first time. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + Records outcomes of attempts to mount Google Drive. + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + How long did it take to mount Google Drive. + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + Records outcomes of attempts to unmount Google Drive. + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + How long did it take to perform a lookup of pinned files in local Google + Drive cache. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + How long did it take to perform a search of shared files in local Google + Drive cache. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + How long did it take to search a title in local Google Drive cache. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + How long did it take to perform a search of shared files in online Google + Drive. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + How long did it take to perform a search in online Google Drive. + + + + + + Became obsolete on 2022-12-01 as we've collected enough data to understand + the user impact of attempting to open large slow mounters without progress + reporting. + + msalomao@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: The size in units of 100MiB of archives users + attempt to open. Units are rounded up (e.g., 40MiB gets reported as 100MiB). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: Counts the number of directory-changed events, + bucketed by the RootType of the directory newly displayed. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: number of Computers a user has available in the + Files app. Computed every time the File Browser is opened (including file + picker dialogs). NOTE: This data is biased towards users that use the Files + App more often. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: The mode in which the File Browser was opened. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Tracks the user perceived load time for the directory list. Measured from + the beginning of the directory scan until all entries are scanned (excluding + metadata). {NumFiles} has a tolerance of 20% which leads to the following + buckets being tracked: 8-12 files, 80-120 files and 800-1200 files all + inclusive. Directories whose file counts fall outside these buckets are + simply not recorded. {RootType} is used to differentiate the load times for + various volumes. + + + + + + + + + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: time to scan a directory. Measured on every File + Browser directory change. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + How long it takes to expand a directory. Measured each time a directory is + expanded from the directory tree or file list / grid and patterned for all + known volume types. + + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Tracks whether download destination is set to a Google Drive folder when the + download destination is changed by the user in the settings page. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Tracks whether download destination is set to a Google Drive folder on + startup. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + The size of the space consumed by a users files in "My Files" + folder and it's children, calculated as a percentage of the total disk + space. Caluclated on user login and recorded by VolumeManager. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + The total size of all of the users files stored in the "My Files" + folder and it's children. Caluclated on user login and recorded by + VolumeManager. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: number of files and directories in the Downloads + directory (not including the contents of nested directories). Computed every + time the File Browser current directory changes to Downloads. + + + + + + Became obsolete on 2022-08-18 as this feature is no longer in existence. + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + The time taken to calculate the hash of a file, only recorded if the time + exceeds a local threshold that is currenty 5 seconds. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + The time taken to search for a file using it's hash value, only recorded if + the time exceeds a local threshold that is currently 1 second. + + + + + austinct@chromium.org + src/ui/file_manager/OWNERS + Tracks success rate of pinning hosted files in Drive. + + + + austinct@chromium.org + src/ui/file_manager/OWNERS + Tracks success rate of pinning files in Drive. + + + + adanilo@chromium.org + src/ui/file_manager/OWNERS + Tracks success/error rate of extracting archive contents. + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + The type of file system provider that has been mounted. This metric is + emmitted on mounting of the filesystem. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: this is recorded when the user adds a folder + shortcut. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: number of saved folder shorcuts. This is recorded + when the Files app is launched. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: this is recorded when the user clicks or selects a + folder shortcut and is navigated to the target folder. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: this is recorded when the user removes a folder + shortcut. + + + + + austinct@chromium.org + src/ui/file_manager/OWNERS + + Chrome OS File Browser: this records the filesystem selected when formatting + an external drive. + + + + + majewski@chromium.org + src/ui/file_manager/OWNERS + + Chrome OS File Browser: this records errors and rejected promises that + occurred during regular use of File Manager. The purpose of this metric is + to report unexpected errors caught by the global window.onerror handler or + global unhandledrejection listener. In normal conditions this should never + happen. However, if it occurs, it is a sign of significant and unexpected + errors which must not go undetected. + + + + + dmblack@google.com + tbarzic@chromium.org + + Chrome OS Files App: Records the time from when the holding space welcome + banner was first shown to when the user first pinned an item to holding + space from the Files app. If the holding space welcome banner was not shown + prior to the first pin, zero is recorded. + + + + + + Became obsolete on 2022-08-18 as this feature is no longer in existence. + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS Files App: Whether an external media device was removed during the + upload process. + + + + + + Became obsolete on 2022-08-18 as this feature is no longer in existence. + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS Files App: Whether the media import process was cancelled. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser is an built-in extension without a background page. + Its main.html file is loaded every time the user opens a File Browser tab or + a file chooser dialog. The file is fairly large and the initialization is + pretty expensive. {FileBrowserLoad} + + + + + + + + + + + + + + + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS Files App: The locations (root types) of non-top-level entries + when they are expanded or collapsed (expand icon clicked) in the directory + tree. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS Files App: The locations (root types) of top-level entries (root + entries) when they are expanded or collapsed (expand icon clicked) in the + directory tree. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS Files App: The locations (root types) of non-top-level entries + when they are clicked in the directory tree. Contains incomplete data from + M80 to M87 inclusively. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS Files App: The locations (root types) of top-level entries (root + entries) when they are clicked in the directory tree. Contains incomplete + data from M80 to M87 inclusively. + + + + + + Became obsolete on 2022-08-18 as this feature is no longer in existence. + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS Files App: Whether the media import (Photos/Video) from external + media was cancelled. + + + + + + Became obsolete on 2022-08-18 as this feature is no longer in existence. + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS Files App: Count of duplicate media (Photos/Videos) files that + were skipped during a single upload session. + + + + + + Became obsolete on 2022-08-18 as this feature is no longer in existence. + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS Files App: Number of errors that occured during an upload session. + + + + + + Became obsolete on 2022-08-18 as this feature is no longer in existence. + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS Files App: Count of individual media (Photos/Videos) uploaded from + a single upload session. + + + + + + Became obsolete on 2022-08-18 as this feature is no longer in existence. + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS Files App: Size of the media (Photos/Videos) uploaded from a + single upload session. + + + + + + Became obsolete on 2022-08-18 as this feature is no longer in existence. + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS Files App: Whether the media import (Photos/Video) from external + media was started. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS Files App: The commands selected in the menu by the files app. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: Notification types what were shown to the user. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: The action a user takes when shown a notification. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: Errors that can occur when opening an Office file + with Google Drive Web. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: Counts the number of times each file handler is used + to open MS Office files from Files app. + + + + + + + + + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: The result of the task that opens an Office file + using Drive or OneDrive. + + + + + + + + + cassycc@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: When a user uses a MS Office file outside of Drive, + records which file system operation is used (File picker selection, + Copy/Move/Zip or Open from files app). + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: The locations (root types) of files which are opened + by the file picker. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + File dialog type (e.g. Full page, Save as file) when quick view is launched. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + File types that were tried to be opened with quick view. + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + File types that were selected when quick view is launched. + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + The volume type where quick view is opened. + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + How quick view was opened. + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + This is recorded when different filter buttons in Recent view are clicked. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Time to load a recently modified file list from Media Views. It is triggered + when the user opens or reloads Recent view in the Files app. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Time to load a recently modified file list from Crostini. It is triggered + when the user opens or reloads Recent view in the Files app. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Time to load a recently modified file list from Downloads. It is triggered + when the user opens or reloads Recent view in the Files app. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Time to load a recently modified file list from Drive. It is triggered when + the user opens or reloads Recent view in the Files app. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Time to load a recently modified file list from all sources. It is triggered + when the user opens or reloads Recent view in the Files app. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + ChromeOS File Browser: The number of results returned by a search query. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + ChromeOS File Browser: The time it took to complete user search request. + + + + + + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: When running as SWA, the mode in which the SWA was + opened. For the non-SWA, see `FileBrowser.Create`. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: Status of migration of preferences from Chrome app + version to System Web App + + + + + msalomao@google.com + src/ui/file_manager/OWNERS + Memory used by the Sync Status Tracker. + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: number of Team Drives a user has available in the + Files app. Computed every time the File Browser is opened (including file + picker dialogs). NOTE: This data is biased towards users that use the Files + App more often. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS Files App: Recorded when the Grid View/List View toggle menu icon + is selected. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Recorded when failing to create the trash folder (e.g. .Trash) and it's + children (e.g. info and files). + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Recorded when an item is attempted to be sent to the trash but fails. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Recorded when an item is attempted to be restored but the parent folder it + originally came from no longer exists. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Recorded when the Trash directory is loaded and all files for the {RootType} + are entirely read. + + + + + + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Tracks the user perceived load time for the available apps (aka file tasks) + after the user selecting the files in the file list. Measured from the + throttled event selection changed (when user changes what files are + selected) until all the available apps is populated in the DOM. {NumApps} + has a tolerance of 80% which leads to the following buckets: 2-18 apps and + 20-180 apps. Any selection outside these ranges are simply not recorded. + + + + + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + File types that were tried to be viewed through browser. This is recorded + when the user tries to view a file from the Files app. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + File types that were tried to be viewed through browser while the user is + offline. This is recorded when the user tries to view a file from the Files + app. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + File types that were tried to be viewed through browser while the user is + online. This is recorded when the user tries to view a file from the Files + app. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: The locations (root types) of files which are opened + in stand-alone mode. This does not include files opened in file picker mode. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: The locations (root types) of files which are opened + in stand-alone mode while the user is offline. This does not include files + opened in file picker mode. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: The locations (root types) of files which are opened + in stand-alone mode while the user is online. This does not include files + opened in file picker mode. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: The type of the handler to be used to open files. + This is recorded when the user tries to view a file from the Files app. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: The type of the handler to be used to open files + when the user is offline. This is recorded when the user tries to view a + file from the Files app. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: The type of the handler to be used to open files + when the user is online. This is recorded when the user tries to view a file + from the Files app. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Chrome OS File Browser: counts the number of times volumes are mounted for + each volume type. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Tracks the time to mount a ZIP archive. Times are only recorded on success. + + + + + + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Time for the execution of a zipping task. Times are only reported on + success. + + + + + + + dmurph@chromium.org + pwnall@chromium.org + The result of FileSystemDirectoryDatabase initialization. + + + + tzik@chromium.org + The result of FileSystemDirectoryDatabase repair. + + + + + + dmurph@chromium.org + pwnall@chromium.org + The result of FileSystemOriginDatabase initialization. + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + ZIP file path encoding, as detected by the Unzipper service. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + Time to detect ZIP file path encoding. + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + ZipFileCreator service: Result of a ZIP file creation (success, error or + cancelled). + + + + + + diff --git a/histograms/metadata/fingerprint/histograms.xml b/histograms/metadata/fingerprint/histograms.xml new file mode 100644 index 000000000000..39b3e8337c6e --- /dev/null +++ b/histograms/metadata/fingerprint/histograms.xml @@ -0,0 +1,426 @@ + + + + + + + + + + patrykd@google.com + tomhughes@chromium.org + cros-lurs@google.com + chromeos-fingerprint@google.com + + Tracks the error during fingerprint authentication session. It is recorded + every time authentication session (unlock screen, web auth, etc.) ends with + error. + + + + + emaamari@google.com + tomhughes@chromium.org + cros-lurs@google.com + chromeos-fingerprint@google.com + + Tracks the scan result during fingerprint authentication session. It is + recorded every time user touches the fingerprint sensor while authenticating + (unlock screen, web auth, etc.) and session is not finished with error. + + + + + + Since transition to FingerprintMessage is completed, this histogram is no + longer used. Removed in 02/2022. + + patrykd@google.com + chromeos-fingerprint@google.com + + Tracks AuthScanDone signal structure transition from ScanResult enum to + FingerprintMessage protobuf. The signal is upgraded when it contains the + protobuf and not upgraded when the enum is present. When the signal doesn't + contain any of these nothing is emitted. + + + + + agrandi@google.com + chromeos-fingerprint@google.com + + Count the number of fingerprint sensor captures (i.e. touches) performed + during the enrollment session of a new fingerprint. This includes all + enrollment captures, including those resulting in errors, such as + "partial", "immobile", etc. + + + + + emaamari@google.com + tomhughes@chromium.org + cros-lurs@google.com + chromeos-fingerprint@google.com + + Tracks the scan result during fingerprint enrollment session. It is recorded + every time user touches the fingerprint sensor while enrolling fingerprints + (during onboarding or in Chrome OS settings). + + + + + emaamari@google.com + chromeos-commercial-identity@google.com + chromeos-fingerprint@google.com + + Tracks the event where a fingerprint scan and a power button press occured + within 1 second of each other. Recorded when FingerprintStorage and + PowerManagerClient notify FingerprintPowerButtonRaceDetector of a + fingerprint scan and power button press respectively, within 1 second. + + + + + emaamari@google.com + chromeos-commercial-identity@google.com + chromeos-fingerprint@google.com + + Indicates a scan was recorded by the finperprint sensor. Recorded when an + AuthScanDone signal is received by FinperprintStorage from biod, and + notifies FingerprintPowerButtonRaceDetector. + + + + + fsammoura@google.com + chromeos-fingerprint@google.com + + Counts the number of times a bad Hardware ID is reported. This metric is + reported in biod during the sensor initialization phase. + + + + + fsammoura@google.com + chromeos-fingerprint@google.com + + Counts the number of times an initialization failure is reported. This + metric is reported in biod during the sensor initialization phase. + + + + + fsammoura@google.com + chromeos-fingerprint@google.com + + Counts the number of times no-IRQ hardware failure is reported. This metric + is reported in biod during the sensor initialization phase. + + + + + fsammoura@google.com + chromeos-fingerprint@google.com + + Counts the number of times an error in SPI communication is reported. This + metric is reported in biod during the sensor initialization phase. + + + + + patrykd@google.com + chromeos-fingerprint@google.com + + Measures the time it took SessionManager to respond to + RetrievePrimarySession DBus method call. + + + + + patrykd@google.com + chromeos-fingerprint@google.com + + The result of retrieving primary session when Biometrics Daemon starts or + user logs in. + + Retrieving primary session is successful when Session Manager responds to + RetrievePrimarySession DBus method call and the response was successfully + parsed. It means that success is reported also when user is not logged in. + + + + + hesling@chromium.org + chromeos-fingerprint@google.com + Whether setting FPMCU mode succeeded. + + + + emaamari@google.com + cros-lurs@google.com + + Counts the number of fingerprint attempts until successful screen unlock. + + A count of 0 means that the user unlocked the screen on the first attempt. + The maximum number of unlock attempts is governed by kMaximumUnlockAttempts, + such that this value must be less than the max. + + This is related to Fingerprint.Unlock.RecentAttemptsCountBeforeSuccess. + + + + + emaamari@google.com + cros-lurs@google.com + + Counts the number of times that the fingerprint match successfully vs. + rejected. + + This is recorded in the same location as Fingerprint.Unlock.Result. When the + Fingerprint.Unlock.Result is success, AuthSuccessful reports true, otherwise + AuthSuccessful reports false. + + + + + tomhughes@chromium.org + chromeos-fingerprint@google.com + + Counts the number of fingers enrolled by the user. + + This metric is reported in biod when the first user logs in. It is not + reported when a secondary user logs in, nor when all users log-off, nor when + the primary user uses fingerprint unlock. It may be reported again if + session_manage crashes. + + This metric is emitted in SendStatsOnLogin() along with + Fingerprint.UnlockEnabled. + + + + + hesling@chromium.org + chromeos-fingerprint@google.com + + Whether the hash of the positive match secret read from FPMCU matches the + record. + + + + + ravisadineni@chromium.org + chromeos-fingerprint@google.com + + ChromeOS only. Record when a fingerprint touch was ignored due to parallel + power button press. Fingerprint matches will be ignored for a duration of + kAuthIgnoreTimeoutmsecs (1000 ms) after each power button press. This only + applies to fingerprint sensors that reside on a power button. + + + + + hcyang@google.com + tomhughes@google.com + chromeos-fingerprint@google.com + + Counts the number of partial fingerprint attempts until successful result is + reported in biod. Partial attempts refers to the "low coverage" + error, which means that the sensor is only partially covered with a finger. + It often occurs when the user just dropped their finger onto the sensor. We + expect the user to adjust their finger position soon after that, so instead + of reporting an error biod silently allows up to 20 retries for this kind of + error. We want to observe in average how many partial attempts are needed + before successfully matching. + + A count of 0 means that the fingerprint match attempt is successful without + any preceding partial matches. The maximum number of partial attempts is + governed by kMaxPartialAttempts, such that this value must be less than the + max. + + + + + hesling@chromium.org + chromeos-fingerprint@google.com + + ChromeOS Only. After a positive fingerprint match has been identified, + record when a positive match secret is read from FPMCU. Note that this does + not indicate that the match was was validated, only that the secret was + read. Fingerprint.Unlock.Match.PositiveMatchSecretCorrect may be used to + track validation. + + + + + agrandi@google.com + chromeos-fingerprint@google.com + + Counts the number of recent fingerprint attempts until successful screen + unlock. Recent attempts are defined as happening within 3 seconds from each + others. The goal is to count intentional attempt to unlock the device and + exclude incidental touches of the fingerprint sensor. + + A count of 0 means that the user unlocked the screen on the first attempt. + The maximum number of unlock attempts is governed by kMaximumUnlockAttempts, + such that this value must be less than the max. + + This is related to Fingerprint.Unlock.AttemptsCountBeforeSuccess. + + + + + hesling@chromium.org + chromeos-fingerprint@google.com + + Format version of a fingerprint template record read from storage. ChromeOS + Only. Records the format version of each fingerprint template record prior + to uploading to the FPMCU. Format version will not be recorded if there are + no available record slots. + + + + + emaamari@google.com + tomhughes@chromium.org + cros-lurs@google.com + chromeos-fingerprint@google.com + + Tracks the result of the fingerprint authentication attempt on the lock + screen. + + + + + bobbycasey@google.com + chromeos-fingerprint@google.com + + Measures the time it took {Interval} in the '{Outcome}' case. + + + + + + + + + + + + + + tomhughes@chromium.org + chromeos-fingerprint@google.com + + Indicates whether at least one finger is enrolled, which effectively permits + fingerprint unlock. + + This metric is reported in biod when the first user logs in. It is not + reported when a secondary user logs in, nor when all users log-off, nor when + the primary user uses fingerprint unlock. It may be reported again if + session_manage crashes. It does not take into account if policy has + subsequently disabled fingerprint unlock. + + This metric is emitted in SendStatsOnLogin() along with + Fingerprint.Unlock.EnrolledFingerCount. + + + + + tomhughes@chromium.org + hesling@chromium.org + chromeos-fingerprint@google.com + + Tracks the fingerprint firmware updater's reason(s) for re-flashing. + + + + + tomhughes@chromium.org + hesling@chromium.org + chromeos-fingerprint@google.com + Tracks the fingerprint firmware updater's overall status. + + + + tomhughes@chromium.org + hesling@chromium.org + chromeos-fingerprint@google.com + + Measures the total time it takes to run the fingerprint firmware updater + when an update was {Outcome}. + + + + + + + + + tomhughes@chromium.org + chromeos-fingerprint@google.com + + The mode the FPMCU was in when we {ContextFunction}. + + See the CrosFpDevice::SetContext and CrosFpDevice::ResetContext functions + for more information. + + Related metrics are Fingerprint.Reset.ResetContextMode, + Fingerprint.SetContext.SetContextMode, and Fingerprint.SetContext.Success. + + + + + + + + + + diff --git a/histograms/metadata/game_mode/histograms.xml b/histograms/metadata/game_mode/histograms.xml new file mode 100644 index 000000000000..544706341212 --- /dev/null +++ b/histograms/metadata/game_mode/histograms.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + lqu@google.com + src/chrome/browser/ash/game_mode/OWNERS + + Records events of two types, when they occur. `Attempted` indicates the game + mode of type {GameTypes} is entered. `Failed` indicates the previous attempt + to enter game mode timed out or failed. They will only be recorded the first + time we detect that game mode is entered/failed for each time that game mode + is initially entered. + + + + + + matvore@google.com + src/chrome/browser/ash/game_mode/OWNERS + + Time spent in a fullscreen {GameTypes} game. Recorded when leaving game mode + (i.e. closing, un-fullscreening, or switching focus away from a game app + which the user is immersed in.) + + There are two purposes for this metric: + + (primarily) For determining if there is a significant number of users + spending little time in Game Mode. A significant number not in the top + bucket would indicate we need hysteresis to avoid shutting down background + tabs too early. This has a small granularity so we can determine the most + effective cut-off point. + + (secondarily) For grasping changes in engagement caused by Game Mode + optimizations. Note that increasing engagement is not necessarily the main + goal. It is to increase FPS and render quality, for which in ARC we have + such metrics - see https://crbug.com/1358755 + + + + + + + diff --git a/histograms/metadata/gcm/OWNERS b/histograms/metadata/gcm/OWNERS new file mode 100644 index 000000000000..44bba0a6fbb6 --- /dev/null +++ b/histograms/metadata/gcm/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +peter@chromium.org diff --git a/histograms/metadata/gcm/histograms.xml b/histograms/metadata/gcm/histograms.xml new file mode 100644 index 000000000000..0942a1c8be01 --- /dev/null +++ b/histograms/metadata/gcm/histograms.xml @@ -0,0 +1,235 @@ + + + + + + + + + + peter@chromium.org + knollr@chromium.org + + Records that a message has been received from a delivery channel powered by + the GCM account mappings. + + + + + peter@chromium.org + knollr@chromium.org + Status code of the outcome of a GCM checkin request. + + + + peter@chromium.org + knollr@chromium.org + + Network error code for a GCM checkin request that failed because of a + network error. + + + + + + + peter@chromium.org + zea@chromium.org + + Result of decryption on a received GCM message, which includes unencrypted + messages, successfully decrypted messages and decryption failures. + + + + + peter@chromium.org + zea@chromium.org + + Success rate of removing keying material from the GCM key store. + + + + + + + dmurph@chromium.org + pwnall@chromium.org + peter@chromium.org + The result of a database open attempt by the GCM store. + + + + peter@chromium.org + rushans@google.com + + Whether a received GCM message could be delivered to an app handler + ({AppHandler}). Recorded for each received GCM message that didn't have + encryption issues. This metric was expired between July 2021 and January + 2023, and may be missing data until M111. + + + + + + + + + + peter@chromium.org + knollr@chromium.org + Status code of loading from the persistent GCM store. + + + + peter@chromium.org + knollr@chromium.org + + Number of connection events which have not been sent to GCM. This is + recorded only at the time of shutdown to capture the events which are being + lost due to shutdown. Because this is recorded at shutdown, this is not + guaranteed to be complete and should be treated as a best effort record. + + + + + nator@chromium.org + peter@chromium.org + rayankans@chromium.org + + Reports the status of cached GCM registration. This is recorded when a new + registration request is considered on the GCM client. + + + + + peter@chromium.org + + Number of registration requests sent to Google Cloud Messaging. Recorded + immediately after the request has started. + + + + + peter@chromium.org + platform-capabilities@chromium.org + + Net error code from a GCM registration attempt. Recorded when URL loading + completes. + + + + + peter@chromium.org + + Status code of the outcome of a GCM registration request. The Unknown error + case was split up in M56 (merged mid-beta to M55) to separate out the + Response parsing failed, Internal server error, Quota exceeded, and Device + has too many registrations cases. + + + + + knollr@chromium.org + peter@chromium.org + + Size of web push messages payload. Recorded right before the message is + sent. + + + + + knollr@chromium.org + peter@chromium.org + + Result of sending web push messages. Recorded when the message has either + been sent, or has been dropped because an error happened. + + + + + knollr@chromium.org + peter@chromium.org + + Result code from sending web push messages. Logs net::Error if it's not + net::OK. Logs net::OK if response header is not present. Otherwise, logs + HTTP status code returned. Recorded when received response after message has + been sent. + + + + + peter@chromium.org + rayankans@chromium.org + + Size of the GCM persistent store in kilobytes at startup. Warning: this + histogram was expired from 2018-08-30 to 2021-09-20; data may be missing. + + + + + zea@chromium.org + + Success indicates successfully updating the GCM persistent store on message + update. Failure indicates a failure updating the persistence store. + + + + + peter@chromium.org + zea@chromium.org + Status code of the outcome of a GCM unregistration request. + + + + jianli@chromium.org + + Indicates whether the user was signed in when GCM started up. + + + + + knollr@chromium.org + peter@chromium.org + + Device state when receiving a web push message. Indicates if the message was + sent with a high priority and if the device was in idle mode. Recorded when + a web push message got received. + + + + + + diff --git a/histograms/metadata/geolocation/OWNERS b/histograms/metadata/geolocation/OWNERS new file mode 100644 index 000000000000..ad2c4906f130 --- /dev/null +++ b/histograms/metadata/geolocation/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +reillyg@chromium.org \ No newline at end of file diff --git a/histograms/metadata/geolocation/histograms.xml b/histograms/metadata/geolocation/histograms.xml new file mode 100644 index 000000000000..35d0b5bc1a84 --- /dev/null +++ b/histograms/metadata/geolocation/histograms.xml @@ -0,0 +1,170 @@ + + + + + + + + + + mattreynolds@chromium.org + device-dev@chromium.org + + Records the action performed by an existing user when prompted to authorize + the use of location by Chrome. + + + + + + Code for recording this histogram was removed in July 2022. Recording this + long-expired histogram was slowing down navigations. + + kcarattini@chromium.org + dominickn@chromium.org + + For Geolocation requests from the omnibox on Android, the time since the + location was most recently acquired. If no location has been acquired, the + maximum bucket is incremented. + + + + + + Code for recording this histogram was removed in July 2022. Recording this + long-expired histogram was slowing down navigations. + + kcarattini@chromium.org + dominickn@chromium.org + + Counts Geolocation requests for omnibox searches sliced by various + permission combinations. The location mode abbreviations indicate one of: + High Accuracy, Battery Saving, GPS On or Location Mode Off. + + + + + + Code for recording this histogram was removed in July 2022. Recording this + long-expired histogram was slowing down navigations. + + kcarattini@chromium.org + dominickn@chromium.org + + For Geolocation requests from the omnibox on Android, the time since the + location was first acquired. If no location has been acquired, the minimum + bucket is incremented. + + + + + kiyun@google.com + mvanouwerkerk@chromium.org + newt@chromium.org + + Reason why the X-Geo header was or was not included in a Google search from + the omnibox. + + + + + mattreynolds@chromium.org + device-dev@chromium.org + + The number of WiFi access points used to determine geolocation. + + + + + mattreynolds@chromium.org + device-dev@chromium.org + + Events in NetworkLocationRequest. + + Warning: this histogram was expired after M85 and brought back 2021-04-23; + data may be missing. + + + + + alvinji@chromium.org + device-dev@chromium.org + + For recording the time gap between each HTTP request to geolocation service. + The maximum bucket is 10 minutes because that is the maxium interval between + wifi data polls. + + + + + mattreynolds@chromium.org + device-dev@chromium.org + + HTTP response codes in NetworkLocationRequest. + + Warning: this histogram was expired after M85 and brought back 2021-05-21; + data may be missing. + + + + + mattreynolds@chromium.org + deviceapi-team@google.com + + For each query into the position cache used by the network location + provider, records whether a position was returned from the cache. + + + + + mattreynolds@chromium.org + deviceapi-team@google.com + + For each query into the position cache used by the network location + provider, records the number of items in the cache. + + Warning: this histogram was expired after 2021-03-10 and brought back + 2021-05-21; data may be missing. + + + + + reillyg@chromium.org + deviceapi-team@google.com + + Records the time taken on Windows, macOS and Linux to query the operating + system for nearby access points. + + + + + + diff --git a/histograms/metadata/google/histograms.xml b/histograms/metadata/google/histograms.xml new file mode 100644 index 000000000000..32373527c046 --- /dev/null +++ b/histograms/metadata/google/histograms.xml @@ -0,0 +1,98 @@ + + + + + + + + + + sorin@chromium.org + waffles@chromium.org + The HRESULT for a failed on-demand update check. + + + + waffles@chromium.org + chrome-metrics-team@google.com + omaha-team@google.com + + Store the hash of update cohort name as reported by Chrome Updater on + Windows. Recorded at the start of metrics service. Warning: this histogram + was expired from 2019-06-01 to 2023-01-23; data may be missing. + + + + + + + dtrainor@chromium.org + nyquist@chromium.org + + (Android-only) Whether or not an update was successful when looking at the + Chrome version on the next session where there is no update in progress. + + + + + + + dtrainor@chromium.org + nyquist@chromium.org + + (Android-only) Whether or not an update was successful within a specific + server-configured window of time (e.g. an update may not occur right after + the user attempts to start it, but if they update sometime in the next X + days, we can possibly attribute it to the update flow we started). An + example window value could be on the order of days (e.g. 2 days since an + update started). + + + + + dtrainor@chromium.org + nyquist@chromium.org + + (Android-only) Whether or not an update was being tracked as 'in progress' + when another update was started. + + + + + sorin@chromium.org + waffles@chromium.org + The error code for a failed on-demand update check. + + + + sorin@chromium.org + waffles@chromium.org + The result of an on-demand update check. + + + + + diff --git a/histograms/metadata/gpu/OWNERS b/histograms/metadata/gpu/OWNERS new file mode 100644 index 000000000000..b1a03c739c7b --- /dev/null +++ b/histograms/metadata/gpu/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +jonross@chromium.org diff --git a/histograms/metadata/gpu/histograms.xml b/histograms/metadata/gpu/histograms.xml new file mode 100644 index 000000000000..8964e54ca513 --- /dev/null +++ b/histograms/metadata/gpu/histograms.xml @@ -0,0 +1,1908 @@ + + + + + + + + + + gildekel@chromium.org + chromeos-gfx-display@chromium.org + + Modeset attempt result of an external display. Every time an external + display is connected/disconnected, or when the display mode of the external + screen is changed by the user, Chrome attempts to modeset the display. This + metric tracks the result of those attempts. Resolution and RefreshRate + metrics will be recorded for each attempt. + + + + + gildekel@chromium.org + chromeos-gfx-display@chromium.org + + Modeset attempt result of an internal display. This is recorded after Chrome + attempted all the available modes and finally modeset the display. All the + previously attempted modes and refreshes, including the successful one will + be recorded. + + + + + + Replaced by ConfigureDisplays.External.Modeset.Success.RefreshRate in M103. + + gildekel@chromium.org + chromeos-gfx-display@chromium.org + + Refresh rate of the mode for the display we're about to modeset. This is + recorded every time an external display is connected/disconnected, or when + the display mode of the external screen is about to change. + + + + + + Split into ConfigureDisplays.External.Modeset.OriginalRequest.Resolution and + ConfigureDisplays.External.Modeset.Success.Resolution in M103. + + gildekel@chromium.org + chromeos-gfx-display@chromium.org + + DisplayResolution of the mode for the external display we're about to + modeset. 0 means the display was powered off. This is recorded every time an + external display is connected/disconnected, or when the display mode of the + external screen is about to change. + + + + + gildekel@chromium.org + chromeos-gfx-display@chromium.org + + Modeset attempt result of an internal display. Chrome might try additional + modes after a failed attempt. Every time an external display is + connected/disconnected, or when the display mode of the external screen is + changed by the user, Chrome attempts to modeset the display. This metric + tracks the result of those attempts. Resolution and RefreshRate metrics will + be recorded for each attempt. + + + + + gildekel@chromium.org + chromeos-gfx-display@chromium.org + + Modeset attempt result of an internal display. This is recorded after Chrome + attempted all the available modes and finally modeset the display. All the + previously attempted modes and refreshes, including the successful one will + be recorded. + + + + + + Replaced by ConfigureDisplays.Internal.Modeset.Success.RefreshRate in M103. + + gildekel@chromium.org + chromeos-gfx-display@chromium.org + + Refresh rate of the mode for the display we're about to modeset. This is + recorded every time the internal display is powered on/off, or when an + external monitor is plugged in. + + + + + + Split into ConfigureDisplays.Internal.Modeset.OriginalRequest.Resolution and + ConfigureDisplays.Internal.Modeset.Success.Resolution in M103. + + gildekel@chromium.org + chromeos-gfx-display@chromium.org + + DisplayResolution of the mode for the internal display we're about to + modeset. 0 means the display was powered off. This is recorded every time + the internal display is powered on/off, or when an external monitor is + plugged in. + + + + + gildekel@chromium.org + chromeos-gfx-display@chromium.org + + Total number of external displays connected via MST and being configured. + This is recorded every time an external display is connected/disconnected, + or when the display mode of a screen is about to change. + + + + + gildekel@chromium.org + chromeos-gfx-display@chromium.org + + Percentage of external displays connected via MST and being configured. This + is recorded every time an external display is connected/disconnected, or + when the display mode of a screen is about to change. + + + + + gildekel@chromium.org + chromeos-gfx-display@chromium.org + + Total number of external displays being configured. This is recorded every + time an external display is connected/disconnected, or when the display mode + of a screen is about to change. + + + + + gildekel@chromium.org + chromeos-gfx-display@chromium.org + + Tracks an {Connection} display's resulting refresh rate after a successful + display configuration. + + + + + + + + + gildekel@chromium.org + chromeos-gfx-display@chromium.org + {Connection} {Report} + + + + + + + + + + + + gildekel@chromium.org + chromeos-gfx-display@google.com + + The type of serial number retrieved from block zero of a display's EDID + during EDID parsing. + + + + + gildekel@chromium.org + chromeos-gfx-display@google.com + + The number of serial numbers provided in an EDID (i.e. via block zero and/or + the serial number descriptor block). Values should be in the range of 0-2. + + + + + gildekel@chromium.org + chromeos-gfx-display@google.com + + The availability (or lack thereof) of tracked optional fields during EDID + parsing of external. + + + + + gildekel@chromium.org + chromeos-gfx-display@google.com + + Whether or not multiple connected displays produced identical display IDs + due to incomplete EDIDs. This may occur when identical displays (same make + and model) lack serial numbers in both the EDID's block zero or S/N + descriptor block. Recorded every time Chrome OS detects a change in display + configuration and attempts to get an updated list of available displays. + + + + + gildekel@chromium.org + chromeos-gfx-display@google.com + + Type of failure that occurs during EDID parsing. Typically the failure is + caused by a mismatch between the EDID size and the expected offset of the + data component. + + + + + cwallez@chromium.org + + The sum of the size of the CPU-side memory allocations of Buffer11's copies + (vs. GPU memory allocations). These allocations are used when modifying the + buffer data on the CPU or when transfering to GPU memory via DMA. + + + + + jonahr@google.com + angle-team@google.com + + An extended Windows error code returned from D3D11CreateDevice on error when + ANGLE's D3D backend is in use. Can be almost any valid HRESULT or DXGI error + code, which are listed at + https://msdn.microsoft.com/en-us/library/windows/desktop/bb509553.aspx. + + + + + jonahr@google.com + angle-team@google.com + + The maxmium supported (or currently requested) Direct3D feature level in + D3D11 ANGLE. We support as low as 9.3, and as high as 11.1, though Chrome + should only use 10.0+ for D3D11. Gives an indication of how new a user's + video card is, what features it supports, and it's general speed tier. + Recorded on D3D device initialization, loss, or reset when ANGLE's D3D + backend is in use. + + + + + jonahr@google.com + angle-team@google.com + + The result from initializing a D3D11 device in ANGLE. Can be success, or one + of several error codes which indicate different reasons for failing. + Recorded on D3D11 device initialization when ANGLE's D3D backend is in use. + + + + + jonahr@google.com + angle-team@google.com + + The result from initializing a D3D9 device in ANGLE. Can be success, or one + of several error codes which indicate different reasons for failing. + Recorded on D3D9 device initialization when ANGLE's D3D backend is in use. + + + + + sky@chromium.org + angle-team@google.com + + A boolean that is logged for each shader program. A value of true means the + metallib for the shader existed in blob-cache. A value of false means the + metallib for the shader did not exist in blob-cache. + + + + + jonahr@google.com + angle-team@google.com + + Windows computers running Windows 8+, or running Windows 7 with a platform + update, support the newer version of DXGI. This update also indicates the + computer is capable of running Direct3D 11.1 if the hardware supports it. + Recorded on D3D11 device initialization when ANGLE's D3D backend is in use. + + + + + zmo@chromium.org + spvw@chromium.org + chrome-catan@google.com + + Records whether AppHelp.dll is loaded at GPU initialization. Only recorded + on Windows platform at GPU process launch time. + + It is not yet known what exactly is triggering the load of AppHelp.dll, and + so we can't be sure that AppHelp.dll won't be loaded after this is + collected, even if this metric is false. + + A bug tracking metric collection related to the application compatibility + layer can be found at crbug.com/1357617. + + Part of a performance investigation that Catan is doing into GPU startup + time. + + + + + vmiura@chromium.org + graphics-dev@chromium.org + + Counts number of browser invocations for which a GPU feature is + allowed/blocklisted/disabled. + + + + + vmiura@chromium.org + graphics-dev@chromium.org + + Counts number of browser invocations for which the GPU process is blocked + due to a blocklist entry match. + + + + + vasilyt@chromium.org + nazabris@microsoft.com + jochin@microsoft.com + + Records, during GPU process initialization, the combination of the following + two features being enabled/disabled: 1) Accelerated 2D Canvas 2) OOP + Rasterization of Canvas. + + + + + kylechar@chromium.org + + Records what compositing mode (software, GL, etc.) Chrome is using every + five minutes. This is the default compositing mode that most windows will + use. There are some window types (eg. menus on some platforms) that always + use software compositing and ignore the default. + + + + + sievers@chromium.org + + The reason a GPU command buffer context of a given type was lost. + + + + + vmiura@chromium.org + Whether D3D11 supports B8G8R8A8 format for render targets. + + + + vmiura@chromium.org + Whether D3D11 supports B8G8R8A8 format for 2D textures. + + + + zmo@chromium.org + graphics-dev@chromium.org + + Records the highest D3D_FEATURE_LEVEL available, collected in the info + collection GPU process, once per UMA ping. This is Windows platform only. + + + + + magchen@chromium.org + zmo@chromium.org + + The maximum D3D12 feature level supported in the gpu drivers. It is recorded + in the browser process 120 seconds after the browser launch. + + + + + magchen@chromium.org + zmo@chromium.org + amaiorano@google.com + + The maximum supported D3D shader model version on a D3D12 device. It is + recorded in the browser process 120 seconds after the browser launch. Note + that the "2" suffix was added when a fix was made in how this stat + is collected: the previous unsuffixed version would store + "unknown/unsupported" on systems that supported shader model 5.1 + to 6.5, but were unaware of 6.6. The suffixed version correctly stores the + highest supported shader model. + + + + + jonahr@google.com + angle-team@google.com + + ANGLE's currently active D3D shader model version. Logged once every startup + of the GPU process, on Windows only. Note that Shader Models 2 and 3 map to + D3D9 with ANGLE, and 4+ map to D3D11 ANGLE. + + + + + sunnyps@chromium.org + zmo@chromium.org + + If the system approves a swap chain's custom present duration request, this + is the approved custom present duration. If the swap chain's custom present + duration request is not approved, this is zero. + + + + + sunnyps@chromium.org + graphics-dev@chromium.org + + How the Desktop Window Manager presented Chrome's DirectComposition layers + of video or canvas elements to the screen. Only recorded on Windows. NOTE: + This metric was expired and not collecting data between 2021-12-31 and + crrev.com/c/4041850 (M110). + + + + + magchen@chromium.org + zmo@chromium.org + graphics-dev@chromium.org + + HRESULT return value of IDXGIFactory2::CreateSwapChainForComposition. + + + + + magchen@chromium.org + zmo@chromium.org + + The number of YUV overlays we are going to present in each frame if the + number is not 0. Recorded when the overlay processor is called for drawing a + frame. + + + + + sunnyps@chromium.org + zmo@chromium.org + + Recorded for each stream video quad (on overlay processing) the reason it + was or wasn't put in an overlay. + + + + + sunnyps@chromium.org + zmo@chromium.org + + Recorded for each texture quad (on overlay processing) the reason it was or + wasn't put in an overlay. (This metric might be lack of coverage between + 2022-05-01 and 2022-06-24 due to metric expiration.) + + + + + + + magchen@chromium.org + zmo@chromium.org + + Recorded for each quad (on overlay processing) with protected video type the + reason it was or wasn't put in an overlay. + + + + + magchen@chromium.org + zmo@chromium.org + graphics-dev@chromium.org + + HRESULT return value of IDCompositionDevice2::CreateSurface. + + + + + magchen@chromium.org + graphics-dev@chromium.org + + True if the GPU driver supports hardware overlays. Recorded during Chrome + GPU initialization and each time the overlay caps change. + + + + + magchen@chromium.org + zmo@chromium.org + + Recorded for each video quad during the video playback whether it is an + underlay or an overlay. + + + + + sunnyps@chromium.org + zmo@chromium.org + + Number of presented frames for which presentation queries haven't completed. + Recorded on each vblank. + + + + + sunnyps@chromium.org + zmo@chromium.org + magchen@chromium.org + + Which overlay format was chosen for YUV overlays. Recorded once per GPU + process launch only if hardware overlays are supported. (Might be lack of + metrics coverage between 2022-05-01 and 2022-06-24 due to metric + expiration.) + + + + + sunnyps@chromium.org + zmo@chromium.org + magchen@chromium.org + + True if Chrome will try to use DirectComposition overlays. (Might be lack of + metrics coverage between 2021-10-04 and 2022-06-24 due to metric + expiration.) + + + + + + + magchen@chromium.org + zmo@chromium.org + + Whether creating swap chain for protected video succeeded. Recorded once per + swap chain creation. + + + + + sunnyps@chromium.org + zmo@chromium.org + magchen@chromium.org + + What format was used for each overlay swap chain on each swap buffers. + (Might be lack of metrics coverage between 2020-12-31 and 2022-06-24 due to + metric expiration.) + + + + + sunnyps@chromium.org + zmo@chromium.org + magchen@chromium.org + + What code path was used to present a video frame. Recorded on each present. + (Might be lack of metrics coverage between 2022-03-06 and 2022-06-24 due to + metric expiration.) + + + + + + + vmiura@chromium.org + kbr@chromium.org + zmo@chromium.org + + For every entry in the gpu driver bug list that is hit on a machine, this + records the id. Entry 0 is the total number of times that data is recorded. + It should be recorded whenever new GPU information is received: on startup, + whenever a GPU process launches, and whenever the active GPU changes. + + + + + zmo@chromium.org + graphics-dev@chromium.org + The display type used to ask for an EGLDisplay. + + + + alemate@chromium.org + magchen@chromium.org + oshima@chromium.org + + Records the duration of EnsureWorkVisible GPU call. Since it's blocking UI + thread we want to measure it, and this histogram must be active as long as + this call is still blocking. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. + + + + + alemate@chromium.org + magchen@chromium.org + oshima@chromium.org + + Records the duration of EnsureWorkVisible GPU call. Since it's blocking UI + thread we want to measure it, and this histogram must be active as long as + this call is still blocking. + + This is a sister histogram to GPU.EnsureWorkVisibleDuration. The former is + our target goal. However it's custom buckets do not have enough granularity + to measure improvement steps. This metric will instead cap at 5s, and allow + the buckets to give us better visibility into the 15ms-250ms interval + ranges. We will use this one until we improve the blocking call. + + + + + zmo@chromium.org + vmiura@chromium.org + The error states generated by OpenGL calls. + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time it takes to synchronously establish the GPU channel. + Logged every time a sync call to EstableGpuChannelSync is made and a channel + is not already available. + + + + + ccameron@chromium.org + graphics-dev@chromium.org + + The time that elapsed between a call to glCreateProgram and the call to + query GL_LINK_STATUS via glGetProgramiv in Skia's GrGLInterface. This + encompasses the creation of the vertex, fragment, and geometry shaders, + their compilation, and their linking. This is called for every program + created by Skia via the GrGLInterface. + + + + + blundell@chromium.org + vasilyt@chromium.org + + For each lazy binding check of GLImage performed by GLES2DecoderImpl, + records whether binding was actually necessary or not. Used in the effort to + eliminate these lazy binding checks (crbug.com/1323341). + + + + + blundell@chromium.org + vasilyt@chromium.org + + For each lazy binding check of GLImage performed by + GLES2DecoderPassthroughImpl, records whether binding was actually necessary + or not. Used in the effort to eliminate these lazy binding checks + (crbug.com/1323341). + + + + + magchen@chromium.org + zmo@chromium.org + + Records the OpenGL implementation mode. Recorded during GPU process + initilization. + + + + + zmo@chromium.org + graphics-dev@chromium.org + + The number of GPUs a device has, excluding software renderers. Recorded when + GPU process launches and sends GPUInfo to browser process. + + + + + magchen@chromium.org + zmo@chromium.org + + The time between the GPU process starts and the GPU Info is collected at GPU + process startup and recorded in browser process when this piece info is sent + back to browser process. The range is between 5ms and 5s. + + + + + zmo@chromium.org + spvw@chromium.org + + The time between the GPU process start and the collection of GPU info during + the process's startup phase. The time range is between 5ms and 90s. Emitted + after the collection of GPU info. Reported for all clients. + + This metric is similar to GPU.GPUInitializationTime.V3, but there are two + main differences. First, the range for GPU.GPUInitializationTime.V4 is + capped at 90s while the range of the other metric is capped at 5s. Second, + this metric is emitted earlier in the execution because this metric is + recorded at the same time as trace events which require the timestamp + marking the start and end of the GPU initialization to be in scope, whereas + V3 only requires the time spent. + + The purpose of this metric is to investigate the long tail of GPU startup + time. See crbug/1350257. + + + + + zmo@chromium.org + graphics-dev@chromium.org + + Counts for the exit codes returned by the GPU process when it terminated. + + + + + vmiura@chromium.org + + Whether the GPU process successfully initialized or failed and then exitted + normally. + + + + + vmiura@chromium.org + + Startup time of the GPU process as measured by the GPU process host. + + + + + kbr@chromium.org + rjkroege@chromium.org + msisov@igalia.com + + The reason a GPU process is terminated. It works only when + TERMINATION_STATUS_PROCESS_WAS_KILLED TerminationStatus is set. The goal of + this histogram is to get spikes of the above mentioned case when + Ozone/Wayland terminates the GPU process due to invalid data it received if + any. NOTE: this metric was expired from 2019-08-14 to crrev.com/c/4040947. + + + + + vmiura@chromium.org + + Counts for each time the GPU Process Host detects the process dies. + + + + + zmo@chromium.org + graphics-dev@chromium.org + + Records if GPU hardware acceleration is explicitly disabled by the user. + Recorded when the browser process launches. + + Warning: this histogram was expired from 2022-01-30 to 2022-04-29; data may + be missing. + + + + + zmo@chromium.org + graphics-dev@chromium.org + + Records whether the system has a discrete GPU, collected in the info + collection GPU process, once per UMA ping. This is Windows platform only. + + Warning: this histogram was expired from 2020-04-24 to 2022-04-29; data may + be missing. + + + + + jonahr@google.com + angle-team@google.com + + The time that the GPU process spends in initializing the GL surface, and + collecting graphics information. Records times up to three minutes. + + + + + zmo@chromium.org + graphics-dev@chromium.org + + Records the highest Intel GPU generation of the system using the GPU info + collected at GPU process startup time, once per UMA ping. + + + + + sunnyps@chromium.org + zmo@chromium.org + + Records user device's GPU series type. Only recorded on Windows platform at + GPU process launch time. Only meaningful with Intel GPUs. + + + + + magchen@chromium.org + zmo@chromium.org + graphics-dev@chromium.org + + Records HRESULT in IntelVpSuperResolution. This metric is only collected on + Intel Windows every frame from video streams. + + + + + + + + + + + + + + magchen@chromium.org + ccameron@chromium.org + + The time that it took to update the CALayer tree and commit the transaction. + This is often affected by IOSurface paging. This metric is only collected on + Mac, which only has high-resolution clocks. + + + + + ccameron@chromium.org + + The time that it took for a call to IOSurfaceCreate to complete. + + + + + ccameron@chromium.org + + The time that it took for a call to glFlush to complete. This is often + affected by IOSurface paging. + + + + + ccameron@chromium.org + + The time that it took for a call to CGLTexImageIOSurface2D to complete. + + + + + magchen@chromium.org + ccameron@chromium.org + + The time that the GPU's main CPU thread spends waiting for previous frames' + GPU work to complete. Recorded at every frame. This metric is only collected + on Mac, which only has high-resolution clocks. + + + + + senorblanco@chromium.org + + The maximum number of multisampled anti-aliasing (MSAA) samples per pixel + that the user's GPU can render. + + + + + cwallez@chromium.org + graphics-dev@chromium.org + + Read-write textures are not always supported on Metal. This histograms is + meant to gather information so that the WebGPU W3C group can decide whether + to require support for this feature. The reported tier is the best tier that + was found on the system. Meaning that if only one of the GPUs support + read-write textures, a non-zero tier will be reported. The histogram is + recorded at GPU process startup time. + + + + + ccameron@chromium.org + graphics-dev@chromium.org + + Compiling a MTLLibrary will sometimes hang forever. When initializing the + gpu process, a test shader is compiled to see if the MTLCompilerService is + responding or not. This records the time that it took for the compile to + succeeded, up to 1 minute. After 1 minute, a timeout sentinel value of 3 + minutes is reported. + + + + + ccameron@chromium.org + graphics-dev@chromium.org + + Linking a MTLRenderPipelineState will sometimes hang forever. When + initializing the GPU process, a test shader is compiled to see if the + MTLCompilerService is responding or not. This records the time that it took + for the compile to succeeded, up to 1 minute. After 1 minute, a timeout + sentinel value of 3 minutes is reported. + + + + + ccameron@chromium.org + graphics-dev@chromium.org + + The time that it takes to create a new MTLLibrary, including all retries. + Recorded after every call to -[MTLDeviceProxy newLibraryWithSource:] + completes. + + + + + ccameron@chromium.org + graphics-dev@chromium.org + + The time that it takes to create a new MTLRenderPipelineState, including all + retries. Recorded after every call to -[MTLDeviceProxy + newRenderPipelineStateWithDescriptor:] completes. + + + + + sky@chromium.org + angle-team@google.com + + The amount of time (in microseconds) the gpu process takes to load the metal + shader lib cache. Logged after loading completes on a background thread. + + + + + sky@chromium.org + angle-team@google.com + + The number of shader programs in the metal shader lib cache. Logged after + loading of the metal shader lib cache completes. + + + + + sky@chromium.org + angle-team@google.com + + The amount of time (in microseconds) the gpu process main thread is blocked + waiting for the metal shader lib cache to load. + + + + + zmo@chromium.org + graphics-dev@chromium.org + + AMD device IDs from multi-gpu devices. Recorded when GPU process launches + and sends GPUInfo to browser process. + + + + + zmo@chromium.org + graphics-dev@chromium.org + + Nvidia device IDs from multi-gpu devices. Recorded when GPU process launches + and sends GPUInfo to browser process. + + + + + jonross@chromium.org + chrome-gpu-metrics@google.com + + Time delta between swaps, when there are multiple successful swaps in the + same vsync. The delta is reported as a percentage of vsync interval. This + can be recorded every time we present a frame. + + + + + magchen@chromium.org + zmo@chromium.org + graphics-dev@chromium.org + + Records HRESULT in NvidiaVpSuperResolution. This metric is recorded every + frame when processing video streams in DirectComposition. + + + + + + + + + khushalsagar@chromium.org + penghuang@chromium.org + + During OutOfProcess(Oop) raster, the renderer generates and sends the + requisite glyph data for rasterizing a tile with the serialized paint + commands. If the data for any glyph is missing, the GPU process attempts to + use a fallback glyph from the cache. This records each time we encounter a + cache miss on the GPU and whether we could use a fallback. + + + + + hubbe@chromium.org + cassew@chromium.org + media-dev@chromium.org + + Records if any connected monitor is HDR capable. Recorded when the gpu + process starts. Only recorded on Windows as of M-61. If monitor enumeration + fails, this metric will not be provided. + + + + + magchen@chromium.org + ccameron@chromium.org + + The time that the GPU's main CPU thread spends producing pending CALayer + tree on Mac. Recorded when Skia output surface schedules overlays at every + frame. This metric is only collected on Mac, which only has high-resolution + clocks. + + + + + junov@chromium.org + graphics-dev@chromium.org + + Records the reason why the deserialization of a PaintOp failed. Recorded in + PaintOpReader::Read* methods when the decoding a paint op fails. These + failures are typically caused by an invalid or unexpected state or invalid + serialized data. + + + + + jonahr@google.com + angle-team@google.com + + The time we spend in GLES2DecoderPassthroughImpl::DoLinkProgram. Related to + how much time we spend compiling shaders during startup. Expired in June + 2022, and revived in M106. Data may be incomplete for the period during + which the histogram was expired. + + + + + vmiura@chromium.org + + Recorded once for every GPU process launch and crash when GPU process is + started for hardware accelerated GPU compositing and/or WebGL. Crash buckets + are based on crash count for disabling features. With OOP-D enabled the + display compositor also runs in the GPU process. + + + + + vmiura@chromium.org + + Recorded once for every GPU process launch and crash when GPU process is + started for SwiftShader WebGL. Crash buckets are based on crash count for + disabling features. With OOP-D enabled the display compositor with software + compositing will also run as part of the GPU process. + + + + + jonahr@google.com + angle-team@google.com + + If a successfully linked program was found in the GPU program cache during a + program link call. Expired in June 2022, and revived in M106. Data may be + incomplete for the period during which the histogram was expired. + + + + + vmiura@chromium.org + + The time to check the program cache that we've already compiled the shader. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + vmiura@chromium.org + + The time to compile a shader. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + sky@chromium.org + graphics-dev@chromium.org + + Time it takes for RasterDecoderImpl::FlushSurfaces() to complete. Recorded + for the first 100 flushes. + + + + + penghuang@chromium.org + graphics-dev@chromium.org + + log2() of MSAA sample count of a raster task. Value is in [log2(1),log2(64)] + or [0,6] range. If log2() of the MSAA sample count is 0 (MSAA sample count + is 1), it means MSAA is disabled. + + + + + spvw@chromium.org + chrome-catan@google.com + + Records whether report only mode is enabled at GPU process watchdog hang + time. Currently, we are not seeing any of the hangs/crashes reported by + report-only mode, despite the experiment rolling out. + + General Catan investigation: https://crbug.com/1350257 + + Report only feature: https://crbug.com/1356196 + + Part of a performance investigation that Catan is doing into GPU startup + time. + + + + + berlu@chromium.org + chrome-gpu-metrics@google.com + + Records the wall time taken spent by each GPU scheduler task waiting on it's + dependencies to resolve. The time delta starts when the waiting fence is + added and finishes when the last fence is removed. Only recorded for clients + with high resolution clocks. + + + + + berlu@chromium.org + chrome-gpu-metrics@google.com + + Records the wall time taken spent by each GPU scheduler task waiting on to + be scheduled once all its dependencies have been resolved. The time delta + starts when the last waiting fence is passed and stops when the tasks starts + running. If the schedulers is working properly, for a high priority task, + this metric should be minimal. Only recorded for clients with high + resolution clocks. + + + + + berlu@chromium.org + chrome-gpu-metrics@google.com + + Records the wall time taken between calls to schedule the task run and the + actual run of the task. Ideally this should always be as close to 0 as + possible. Only recorded for clients with high resolution clocks. + + + + + vmiura@chromium.org + + Counts activation and deactivation of accelerated compositing. + + + + + kylechar@chromium.org + chrome-gpu-metrics@google.com + + Records the type of each SharedImageBacking that's initialized/registered. + + + + + penghuang@chromium.org + backer@chromium.org + + Whether or not the content of a SharedImage is consumed. False indicates the + content of a SharedImage is never used due to destroying the SharedImage or + writing new content to it before using it. + + + + + zmo@chromium.org + graphics-dev@chromium.org + + Collects whether Chrome uses software renderer or hardware GPU 20 seconds + after Chrome starts, and records this value once per UMA ping. This value is + not re-collected at each recording time because GPU process could crash for + various reasons and fall back to software rendering. This value is intended + to reflect device capabilities rather than the current state. + + + + + vmiura@chromium.org + + Records whether a client was selected for the Stage3D on XP field trial or + not. + + + + + vasilyt@chromium.org + graphics-dev@chromium.org + + This metric records if we had support for non-aa draws with hardware MSAA + via GL_EXT_multisample_compatibility. Recorded once for each raster task + that had non-aa draw. + + + + + magchen@chromium.org + zmo@chromium.org + + This metric shows whether the GPU supports D3D12. It is recorded in the + browser process 120 seconds after the browser launch. + + + + + vikassoni@chromium.org + + Counts the error code which is returned when AImageReader api call + acquireLatestImageAsync fails. + + + + + vasilyt@chromium.org + backer@chromium.org + + This is logged once per frame if the output surface provides timing + information. It measures the time of SwapBuffers call. Only reported when + there is single surface swap in the same vsync interval. Only reported for + platforms supporting high resolution clocks. + + + + + magchen@chromium.org + zmo@chromium.org + graphics-dev@chromium.org + + Records HRESULT for VideoProcessorBlt. This metric is recorded when + processing a video steam in DirectComposition with Video Processor Super + Rsolution {State}. + + + + + + + + + + vikassoni@chromium.org + penghuang@chromium.org + vasilyt@chromium.org + + Whether the extension VK_EXT_memory_budget is supported or not. Recorded + once during every gpu process initialization. + + + + + backer@chromium.org + penghuang@chromium.org + vasilyt@chromium.org + + Shows if we had a vkPipelineCache entry in cache when skia requested it. + Recorded each time skia loads vkPipelineCache entry from the GrShaderCache. + + + + + backer@chromium.org + penghuang@chromium.org + vasilyt@chromium.org + + Shows if the populated from disk cache entry was used by skia or discarded + and why. Recorded when cache entry that was read from disk is either loaded + by skia, overwriten by skia or discarded by GrShaderCache. + + + + + backer@chromium.org + penghuang@chromium.org + vasilyt@chromium.org + + Size of stored VkPipelineCache in kb. Recorded every time we store a + pipeline cache item. Currently happens when gpu goes idle after we stored or + loaded new shader. + + + + + backer@chromium.org + penghuang@chromium.org + vasilyt@chromium.org + + Duration of storeVkPipelineCacheData in Skia, this includes chromium side + GrShaderCache::store. Recorded even if data didn't fit into the cache. Only + reported for platforms supporting high resolution clocks. + + + + + backer@chromium.org + penghuang@chromium.org + vasilyt@chromium.org + + Duration of vkCreateGraphicsPipelines call. Recorded every time Skia creates + graphics pipeline. Only reported for platforms supporting high resolution + clocks. + + + + + stanisc@chromium.org + + Whether WaitForVBlank operation has been successful or failed with one of + the errors prompting a backup delay based v-sync mechanism. Recorded each + time a new GPU v-sync signal is generated. + + + + + magchen@chromium.org + zmo@chromium.org + graphics-dev@chromium.org + + Recorded for each time the GPU watchdog thread starts, crashes and ends. + + + + + + + + + + magchen@chromium.org + zmo@chromium.org + graphics-dev@chromium.org + + Recorded timeout events when the GPU watchdog enters OnWatchdogTimeout. + + + + + + + + + + + + + + + + + vmiura@chromium.org + + Counts of context initialization that succeed or fail based on combinations + of attributes requiring canRecoverFromContextLoss and devices that report + can_lose_context. Failing Init is desired when a device can not guarantee it + won't fail for a user that can not handle failures, e.g. DX9 on WinXP used + by Canvas2D' + + + + + vmiura@chromium.org + + The WinSAT (Windows System Assessment Tool) gaming graphics score. It is in + the range 1.0-5.9 on Vista, 1.0-7.9 on Win7 and 1.0-9.9 on Win8. 0 + represents a failure to get the score. This is collected each time Chrome is + launched. + + + + + vmiura@chromium.org + + The WinSAT (Windows System Assessment Tool) gaming graphics score, scaled by + 10x. It is in the range 10-59 on Vista, 10-79 on Win7 and 10-99 on Win8. 0 + represents a failure to get the score. This is collected each time Chrome is + launched. + + + + + vmiura@chromium.org + + The WinSAT (Windows System Assessment Tool) graphics score. It is in the + range 1.0-5.9 on Vista, 1.0-7.9 on Win7 and 1.0-9.9 on Win8. 0 represents a + failure to get the score. This is collected each time Chrome is launched. + + + + + vmiura@chromium.org + + The WinSAT (Windows System Assessment Tool) graphics score, scaled by 10x. + It is in the range 10-59 on Vista, 10-79 on Win7 and 10-99 on Win8. 0 + represents a failure to get the score. This is collected each time Chrome is + launched. + + + + + vmiura@chromium.org + + A boolean representing whether or not we succeeded in getting the system's + WinSAT scores. This is collected each time Chrome is launched. + + + + + vmiura@chromium.org + + The WinSAT (Windows System Assessment Tool) overall system score. This is + the minimum of all the individual subscores. It is in the range 1.0-5.9 on + Vista, 1.0-7.9 on Win7 and 1.0-9.9 on Win8. 0 represents a failure to get + the score. This is collected each time Chrome is launched. + + + + + vmiura@chromium.org + + The WinSAT (Windows System Assessment Tool) overall system score, scaled by + 10x. This is the minimum of all the individual subscores. It is in the range + 10-59 on Vista, 10-79 on Win7 and 10-99 on Win8. 0 represents a failure to + get the score. This is collected each time Chrome is launched. + + + + + vmiura@chromium.org + + The amount of time it takes to read the WinSAT results. This is collected + each time Chrome is launched. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + petermcneeley@chromium.org + rjkroege@chromium.org + graphics-dev@chromium.org + + An enum status result for attempted delegated compositing (success or + failure reason) recorded every drawn frame. Currently only recorded for + LaCros delegated compositing. + + + + + petermcneeley@chromium.org + khaslett@chromium.org + graphics-dev@chromium.org + + A count of the number of proposed overlay candidates available for overlay + selection. Recorded every time a frame is rendered by the display + compositor. + + + + + petermcneeley@chromium.org + khaslett@chromium.org + graphics-dev@chromium.org + + Quad material for current promoted overlay, per frame. Recorded every time a + frame is rendered by the display compositor. + + + + + khaslett@chromium.org + kylechar@chromium.org + graphics-dev@chromium.org + + Overlay strategies used to promote Hardware Overlays, once or more per + frame. Recorded every time a frame is rendered by the display compositor, or + once per overlay promoted if multiple were promoted. + + + + + petermcneeley@chromium.org + khaslett@chromium.org + graphics-dev@chromium.org + + The time, in milliseconds, since the change in overlay selection. Recorded + every time a frame is rendered by the display compositor. + + + + + magchen@chromium.org + zmo@chromium.org + + Any root damage excluding overlay damage in the current frame? + + + + + magchen@chromium.org + zmo@chromium.org + + The root damage type excluding underlay damage in the current frame. + + + + + petermcneeley@chromium.org + rjkroege@chromium.org + graphics-dev@chromium.org + + Time spent computing the number of active File Descriptors. This is logged + once every 5 minutes as the cost of this computation is estimated to be at + least 1ms. Currently only recorded for LaCros delegated compositing. + + Warning: This metric does not include reports from clients with + low-resolution clocks. + + + + + petermcneeley@chromium.org + rjkroege@chromium.org + graphics-dev@chromium.org + + {FdStat} File Descriptors for the GPU process. This is logged once every 5 + minutes as the cost of this computation is estimated to be at least 1ms. + Currently only recorded for LaCros delegated compositing. + + + + + + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + + The time that a begin frame is throttled due to max pending swaps. Recorded + when draw and swap executes (only when a frame is throttled). Refer to + BeginFrameSource::SetIsGpuBusy for details. + + Warning: This metric does not include reports from clients with + low-resolution clocks. + + + + + bialpio@chromium.org + media-capture-dev@chromium.org + + The time it took from when FrameSinkVideoCapturerImpl sent a request for + frame capture until the result becomes available to the capturer. + + Format-agnostic version of + `Viz.FrameSinkVideoCapturer.[NV12/I420].CaptureDuration` histograms. + + + + + bialpio@chromium.org + media-capture-dev@chromium.org + + Whether a capture initiated by FrameSinkVideoCapturerImpl succeeded. + + Format-agnostic version of + `Viz.FrameSinkVideoCapturer.[NV12/I420].CaptureSucceeded` histograms. + + + + + bialpio@chromium.org + media-capture-dev@chromium.org + + True if the capturer has used a resurrected video frame, thus avoiding + having to reserve it from a frame pool, false otherwise. + + + + + bialpio@chromium.org + media-capture-dev@chromium.org + + The time it took from when FrameSinkVideoCapturerImpl sent a request for an + I420 readback until the result comes back and ReadI420Planes successfully + finishes. + + Warning: this histogram was expired from 2021-03-07 to 2022-03-10; data may + be missing. + + + + + bialpio@chromium.org + media-capture-dev@chromium.org + + Whether an I420 readback initiated by FrameSinkVideoCapturerImpl succeeded. + + Warning: this histogram was expired from 2020-12-31 to 2022-03-10; data may + be missing. + + + + + bialpio@chromium.org + media-capture-dev@chromium.org + + The time it took from when FrameSinkVideoCapturerImpl decided that a new + I420 frame needs to be produced to the moment when it was ready to deliver + it. This encompasses the `Viz.FrameSinkVideoCapturer.I420.CaptureDuration` + time, but also includes time taken to render video capture overlays. + + + + + bialpio@chromium.org + media-capture-dev@chromium.org + + The time it took from when FrameSinkVideoCapturerImpl sent a request for an + NV12 copy until the result comes back. + + Note: The histogram logging was adjusted in M102 to align with how + `Viz.FrameSinkVideoCapturer.[RGBA/I420].CaptureDuration` histograms behave. + After the change, this histogram also started including the time taken to + set the color space on a video frame. + + + + + bialpio@chromium.org + media-capture-dev@chromium.org + + Whether an NV12 capture initiated by FrameSinkVideoCapturerImpl succeeded. + + + + + bialpio@chromium.org + media-capture-dev@chromium.org + + The time it took from when FrameSinkVideoCapturerImpl decided that a new + NV12 frame needs to be produced to the moment when it was ready to deliver + it. This encompasses the `Viz.FrameSinkVideoCapturer.NV12.CaptureDuration` + time. + + + + + bialpio@chromium.org + media-capture-dev@chromium.org + + The time it took for a frame pool to reserve a video frame that would then + have its contents populated by the capturer. Will be logged only when + `Viz.FrameSinkVideoCapturer.FrameResurrected` is false. + + + + + jonross@chromium.org + bialpio@chromium.org + viz-team-wat@google.com + + The time it took from when FrameSinkVideoCapturerImpl sent a request for an + RGBA readback until the result comes back and ReadRGBAPlane successfully + finishes. + + + + + bialpio@chromium.org + media-capture-dev@chromium.org + + The time it took from when FrameSinkVideoCapturerImpl decided that a new + frame needs to be produced to the moment when it was ready to deliver it. + This encompasses the `Viz.FrameSinkVideoCapturer.CaptureDuration` time, but + also includes time taken to render video capture overlays. + + Format-agnostic version of + `Viz.FrameSinkVideoCapturer.[NV12/I420].TotalDuration` histograms. + + + + + + diff --git a/histograms/metadata/hang_watcher/OWNERS b/histograms/metadata/hang_watcher/OWNERS new file mode 100644 index 000000000000..55680ad1e964 --- /dev/null +++ b/histograms/metadata/hang_watcher/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +olivierli@chromium.org diff --git a/histograms/metadata/hang_watcher/histograms.xml b/histograms/metadata/hang_watcher/histograms.xml new file mode 100644 index 000000000000..88bfaa15d303 --- /dev/null +++ b/histograms/metadata/hang_watcher/histograms.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + olivierli@chromium.org + catan-team@chromium.org + + Every 10 seconds, a boolean is recorded to this histogram to indicate + whether {ProcessAndThreadType} was hung. The thread is hung if the current + work unit started running more than 10 seconds ago and this was not labeled + as "working as intended" by InvalidateActiveExpectations() (Prior + to 2021-07-09 with IgnoreHangsInScope). Recording is skipped if the hang + watcher detects an irregular heartbeat (e.g. when the machine sleeps). + + Warning: Starting with 104.0.5112.79 hang counts have gone way up on macOS + which is due to additional coverage added and not necessarily to + regressions. See: crrev.com/c/3035824 + + + + + + olivierli@chromium.org + catan-team@chromium.org + + HangWatcher is a class that periodically checks on watched threads to see if + they are making progress or if they are hung. This metric is recorded when + the HangWatcher resumes from sleeping for its next watch time. The value is + the time difference between when the HangWatcher woke up and the planned + wake-up time. Not waking up in time is a bad state. It could be caused by an + overloaded machine or another problem like system sleep. Knowing whether the + HangWatcher wakes up in a timely manner in the average case can help analyse + trial results and is interesting to track over time. An increasing value for + this histogram could hint at a larger problem and would prevent + missinterpreting a reduced inflow of hang reports as a improvement when it + is in fact caused by hindered capabilities. + + + + + + + diff --git a/histograms/metadata/help_app/OWNERS b/histograms/metadata/help_app/OWNERS new file mode 100644 index 000000000000..e94d94072d92 --- /dev/null +++ b/histograms/metadata/help_app/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +tby@chromium.org diff --git a/histograms/metadata/help_app/histograms.xml b/histograms/metadata/help_app/histograms.xml new file mode 100644 index 000000000000..877ea991cba9 --- /dev/null +++ b/histograms/metadata/help_app/histograms.xml @@ -0,0 +1,93 @@ + + + + + + + + + + callistus@google.com + showoff-eng@google.com + + Records the search status when searching with the Local Search Service in + the Discover (internally "Showoff") app. This is logged once per + user search and will count the number of searches while the index is still + empty, successful searches, etc. + + + + + chenjih@google.com + tby@chromium.org + showoff-eng@google.com + + Various status codes on reading persistence file from disk, in the search + handler used by the ChromeOS launcher. Emitted once when a read happens to + the persistence file, and this happens once per login. Some number of file + not exist values is expected, because the persistence file does not exist + before it is written for the first time. + + + + + chenjih@google.com + tby@chromium.org + showoff-eng@google.com + + Various status codes on writing persistence file back to disk, in the search + handler used by the ChromeOS launcher. Emitted once when a write happens to + the persistence file, and this happens once per new web contents arrives, + which is expected to be approx. once per login. + + + + + chenjih@google.com + tby@chromium.org + showoff-eng@google.com + + The latency of the help search availability after the help app search + handler constructed. Recorded each time a help app search handler is + constructed. + + + + + chenjih@google.com + tby@chromium.org + zufeng@google.com + showoff-eng@google.com + + The end result of a search using the help app search handler. Logged once + per time a search finishes. Not logged if the search is canceled by a new + search starting. Use this to calculate the proportion of searches where the + search handler is ready vs not ready. "Ready" means the update + finished and the search handler is ready to handle searches. + + + + + + diff --git a/histograms/metadata/histogram_suffixes_list.xml b/histograms/metadata/histogram_suffixes_list.xml new file mode 100644 index 000000000000..3ddf36b9f407 --- /dev/null +++ b/histograms/metadata/histogram_suffixes_list.xml @@ -0,0 +1,6061 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 12/2022. + + + + + Deprecated as of 12/2022. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated in M110 since we removed the autofill_assistant component. + + + + + + + + + Deprecated in M98 since we removed the extra_icu module. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + boliu@google.com + ssid@chromium.org + + + + + + + + + + + + hazems@chromium.org + ntfschr@chromium.org + src/android_webview/OWNERS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sujiezhu@google.com + jsaul@google.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rsleevi@chromium.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Removed in M109. See ContentSettings.RegularProfile.Exceptions.cookies + instead, which includes data only from regular profiles. + + + + + Removed in M109. See ContentSettings.RegularProfile.Exceptions.popups + instead, which includes data only from regular profiles. + + + + + Removed in M109. See + ContentSettings.RegularProfile.Exceptions.subresource-filter instead, + which includes data only from regular profiles. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + calamity@chromium.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lizeb@chromium.org + pasko@chromium.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cmumford@chromium.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tbansal@chromium.org + + + + + + + tbansal@chromium.org + + + + + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Histogram was removed in April 2023. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tengs@chromium.org + gzadina@google.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 12/2022. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cthomp@chromium.org + estark@chromium.org + + + + + + + + + + + + + + + + + + + + + + + + jeffreycohen@chromium.org + tgupta@chromium.org + chrome-sharing-core@google.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Obsoleted Dec 2022, histograms were renamed (b/254170385). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tmartino@chromium.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/histograms/metadata/history/OWNERS b/histograms/metadata/history/OWNERS new file mode 100644 index 000000000000..8b398528acd5 --- /dev/null +++ b/histograms/metadata/history/OWNERS @@ -0,0 +1,15 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. + +# For History.ClearBrowsingData.* histograms +dullweber@chromium.org + +# For History.Clusters* histograms +mcrouse@chromium.org +tbansal@chromium.org +manukh@chromium.org + +# For History.* histograms +sophiechang@chromium.org diff --git a/histograms/metadata/history/histograms.xml b/histograms/metadata/history/histograms.xml new file mode 100644 index 000000000000..4c4e57c407db --- /dev/null +++ b/histograms/metadata/history/histograms.xml @@ -0,0 +1,2696 @@ + + + + + + + + + + + + + + + + + + sky@chromium.org + sdefresne@chromium.org + UI>Browser>History + + Logged whenever history database initialization fails. The frequency of + logging will tell you the total failure rate. True indicate that we think + the database is non-recoverable and it will be deleted. It should be + re-created the next time Chrome is started. False indicates we think the + error is temporary (like out of disk space or file locked). Chrome will run + with no history database and nothing will be done to try to fix the error. + See History.InitializationFailureStep for which particular step of history + initialization failed. + + + + + tommycli@chromium.org + asully@chromium.org + UI>Browser>History + + The exact database error encountered when beginning a transaction, if it + failed. + + + + + tommycli@chromium.org + chrome-journeys@google.com + UI>Browser>History + + Recorded after attempting to begin a singleton transaction within + HistoryBackend. Records whether it was successfully begun or not. + + + + + tommycli@chromium.org + asully@chromium.org + UI>Browser>History + + The exact database error encountered when committing a transaction, if it + failed. + + + + + tommycli@chromium.org + chrome-journeys@google.com + UI>Browser>History + + Recorded after attempting to commit a singleton transaction within + HistoryBackend. Records whether it was successfully committed or not. + + + + + ydago@chromium.org + dullweber@chromium.org + UI>Browser>History + + The time that passed while performing a browsing data deletion using the + ClearBrowsingDataOnExitList policy. The deletion will be for all time. + + + + + ydago@chromium.org + dullweber@chromium.org + UI>Browser>History + + The time that passed while performing a scheduled data deletion using the + BrowsingDataSettings policy. The deletion will be for a specific hourly time + range, the data types being deleted are {DeletionType}. + + + + + + + + + ydago@chromium.org + dullweber@chromium.org + UI>Browser>History + The states in which a deletion on shutdown went through. + + + + ydago@chromium.org + dullweber@chromium.org + UI>Browser>History + + The states in which a scheduled deletion of {DeletionType} browsing data + went through. + + + + + + + + + dullweber@chromium.org + msramek@chromium.org + UI>Browser>History + + Records the duration of a ChromeBrowsingDataRemoverDelegate task for {Task} + deletion. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + dullweber@chromium.org + msramek@chromium.org + UI>Browser>History + + The time that passed while performing a browsing data deletion with an + origin filter. The deletion might be for all time or specific time range. + + + + + + + dullweber@chromium.org + msramek@chromium.org + UI>Browser>History + + The time that passed while performing a full browsing data deletion. + + + + + + + dullweber@chromium.org + msramek@chromium.org + UI>Browser>History + + The time that passed while performing a browsing data deletion for a set of + origins. + + + + + + + dullweber@chromium.org + msramek@chromium.org + UI>Browser>History + + Record tasks from BrowsingDataRemoverImpl that took more than 180s to + finish. + + + + + + + dullweber@chromium.org + msramek@chromium.org + UI>Browser>History + + Record tasks from ChromeBrowsingDataRemoverDelegate that took more than 180s + to finish. + + + + + + + dullweber@chromium.org + msramek@chromium.org + UI>Browser>History + + Record tasks from StoragePartition that took more than 180s to finish. + + + + + dullweber@chromium.org + msramek@chromium.org + UI>Browser>History + + Records the duration of a BrowsingDataRemoverImpl task for {Task} deletion. + + + + + + + + + + + + + + + + + + + + + + + + dullweber@chromium.org + msramek@chromium.org + UI>Browser>History + + The time that passed while performing a browsing data deletion for a + restricted amount of time (e.g. "Last hour") without an origin + filter. + + + + + dullweber@chromium.org + msramek@chromium.org + UI>Browser>History + + Records tasks from ChromeBrowsingDataRemoverDelegate that did not complete + successfully, i.e. where some data that was supposed to be deleted was left + behind. + + + + + msramek@chromium.org + UI>Browser>History + + Whether a notice about other forms of browsing history was shown in the + footer of the Clear Browsing Data dialog. This is recorded every time the + dialog is opened. + + + + + dmurph@chromium.org + chrome-owp-storage@google.com + UI>Browser>History + + Recorded when the user presses the 'clear' button when presented with the + list of important sites they might want to exclude from clearing browsing + data. We record the number of sites the user deselected, or protected, from + clearing. The default has all sites selected. + + + + + dmurph@chromium.org + chrome-owp-storage@google.com + UI>Browser>History + + Recorded when the user presses the 'clear' button when presented with the + list of important sites they might want to exclude from clearing browsing + data. We record the percent of sites the user deselected, or protected, from + clearing. The default has all sites selected, which is 0%. Note: To reduce + the number of empty buckets, the percent is divided by 5. + + + + + dmurph@chromium.org + UI>Browser>History + + Recorded when the user presses the 'clear' button in the clear browsing + dialog. We record 'true' if the important sites dialog is shown. + + + + + dmurph@chromium.org + chrome-owp-storage@google.com + UI>Browser>History + + Recorded when we successfully fetched important sites in the clear browsing + data screen. This is the number of sites that we think are important to the + user. + + + + + jarrydg@chromium.org + chrome-owp-storage@google.com + UI>Browser>History + + Recorded when we successfully fetched installed apps in the clear browsing + data screen. This is the number of apps that we think are important to the + user and allow the users to exclude from clearing browsing data. + + + + + msramek@chromium.org + UI>Browser>History + + Recorded when the user deletes their passwords in the ClearBrowsingData + dialog. Counts how many other data types were selected for deletion. + + + + + msramek@chromium.org + UI>Browser>History + + Whether a dialog with a notice about other forms of browsing history was + shown after the user deleted data from the Clear Browsing Data dialog. + + + + + + + dullweber@chromium.org + msramek@chromium.org + UI>Browser>History + + The number of tasks that are in the task queue when the BrowsingDataRemover + is destroyed. + + + + + + + msramek@chromium.org + UI>Browser>History + + Recorded when the user deletes their browsing data. Shows whether cookies + and/or cache were among the selected data types. + + + + + + + msramek@chromium.org + UI>Browser>History + + Recorded when the user deletes their browsing data manually from the + ClearBrowsingData dialog. Shows whether cookies and/or cache were among the + selected data types. + + + + + dullweber@chromium.org + msramek@chromium.org + UI>Browser>History + + Recorded when the user deletes their browsing data. Shows which tab was used + to perform the deletion. + + + + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logged when the user closes the chrome://history/journeys page (e.g. closed + tab, navigated in the same tab, or closed browser). Logs whether the user + made a query on their history from the journeys page. + + + + + + Removed as of 05/2022 in favor of + History.Clusters.Actions.FinalState.Outcome + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logged when the user closes the chrome://history/journeys page (e.g. closed + tab, navigated in the same tab, or closed browser). Logs the final state + that ended the use of the journeys page (e.g., a link click away from the + page). + + Navigating back/forward aren't distinguished. E.g., if doing so leads to the + traditional history UI, a same doc navigation will be recorded; if doing so + leads to a different site, a link click will be recorded. + + Before m100, tab refresh and same doc navigations were also not + distinguished and would record tab close. + + + + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logged when the user closes the chrome://history/journeys page (e.g. closed + tab, navigated in the same tab, or closed browser). Logs the number of + {Event} over the period of a single visit to the Journeys UI. + + + + + + + + + + + + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logged when the user closes the chrome://history/journeys page (e.g., closed + tab, navigated in the same tab, or closed browser). Logs whether the users + interaction with the UI was deemed successful or not. Success is defined as + a link was clicked, a cluster was opened, or a deletion event occurred. + + + + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logged when the user closes the chrome://history/journeys page (e.g. closed + tab, navigated in the same tab, or closed browser). Logs the state that + started the use of the journeys page (e.g., a direct navigation to journeys + page). + + + + + manukh@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logged when the user closed the chrome://history/journeys page (e.g. closed + tab, navigated in the same tab, or closed browser). Logs the # of links + opened from the journeys page. + + + + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logged when the user closes the chrome://history/journeys page (e.g. closed + tab, navigated in the same tab, or closed browser). Logs the number of + queries the user made while on the journeys page, only logged if at least + one query was made. + + + + + + Deprecated for History.Clusters.Backend.BatchEntityLookupLatency2 in + 02/20222. + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the latency of querying entities for all the visits being clustered by + the on-device backend. Logged when clusters have been calculated based on + any request to cluster visits, which could be triggered from several things, + including loading the journeys UI, putting a query in the journeys page, + etc.. + + + + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the latency of querying entities for all the visits being clustered by + the on-device backend. Logged when clusters have been calculated based on + any request to cluster visits, which could be triggered from several things, + including loading the journeys UI, putting a query in the journeys page, + etc.. + + + + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the number of entities to be queried for their metadata when preparing + to start clustering. The number of entities is the size of the entire batch + which is over all visits provided to the backend for clustering. Logged when + clusters are requested based on any request to cluster visits, which could + be triggered from several things, including loading the journeys UI, putting + a query in the journeys page, etc.. + + + + + + Obsolete in 12/22 + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs whether each cluster contains a search after it has been finalized. + Logged for each cluster that is generated when clusters are created for the + purposes of keyword generation to show in the Omnibox, roughly once at the + start of each session and every two hours after that. + + + + + + Obsolete as of 12/2022. + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the time taken to run all cluster finalizers during a clustering pass, + which is performed on a background worker. This does not include any thread + hop or queuing delay. Logged when clusters have been calculated based on any + request to cluster visits, which could be triggered from several things, + including loading the journeys UI, putting a query in the journeys page, + etc... + + + + + + Obsolete as of 12/2022. + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the time taken to run all cluster processors during a clustering pass, + which is performed on a background worker. This does not include any thread + hop or queuing delay. Logged when clusters have been calculated based on any + request to cluster visits, which could be triggered from several things, + including loading the journeys UI, putting a query in the journeys page, + etc. This is a segment within + `History.Clusters.Backend.ComputeClusters.ThreadTime`. + + + + + + Obsolete in 12/22 + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the {ClusterStatistic} of all clusters determined by the on-device + backend. Logged when clusters have been calculated based on any request to + cluster visits, which could be triggered from several things, including + loading the + + + + + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the time taken to cluster visits once the visits have been finalized + with all the necessary information for clustering, which is performed on a + background worker. This does not include any thread hop or queuing delay. + Logged when clusters have been calculated based on any request to cluster + visits, which could be triggered from several things, including loading the + journeys UI, putting a query in the journeys page, etc. + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the time taken to determine how clusters should be displayed once the + initial context clusters have been formed, which is performed on a + background worker. This does not include any thread hop or queuing delay. + Logged when clusters have been calculated based on any request to cluster + visits, which could be triggered from several things, including loading the + journeys UI, putting a query in the journeys page, etc. This is a segment + within `History.Clusters.Backend.ComputeClusters.ThreadTime`. + + + + + + Obsolete as of 12/2022. + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the time taken to run the steps during a clustering pass that are + required for determinining the triggerability for a cluster, which is + performed on a background worker. This does not include any thread hop or + queuing delay. Logged once per resulting cluster when clusters have been + calculated based on any clustering request, which could be triggered from + several things, including loading the journeys UI, putting a query in the + journeys page, etc. This is a segment within + `History.Clusters.Backend.ComputeClusters.ThreadTime`. + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the time taken to run the steps during a clustering pass that are + required for determinining the triggerability for a cluster, which is + performed on a background worker. This does not include any thread hop or + queuing delay. Logged when clusters have been calculated based on any + request to cluster visits, which could be triggered from several things, + including loading the journeys UI, putting a query in the journeys page, + etc. This is a segment within + `History.Clusters.Backend.ComputeClusters.ThreadTime`. + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Records the number of clusters after merging similar clusters based on + content. Logged when clusters have been calculated based on any request to + cluster visits, which could be triggered from several things, including + loading the journeys UI, putting a query in the journeys page, etc... + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Records the number of clusters before merging similar clusters based on + content. Logged when clusters have been calculated based on any request to + cluster visits, which could be triggered from several things, including + loading the journeys UI, putting a query in the journeys page, etc... + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Records the number of iterations it took for a batch of clusters to converge + during a pairwise merge of similar clusters based on content, up to a + Finch-configured maximum. Logged when clusters have been calculated based on + any request to cluster visits, which could be triggered from several things, + including loading the journeys UI, putting a query in the journeys page, + etc... + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the time taken to run the initial context clustering pass, which is + performed on a background worker. This does not include any thread hop or + queuing delay. Logged when clusters have been calculated based on any + request to cluster visits, which could be triggered from several things, + including loading the journeys UI, putting a query in the journeys page, + etc. This is a segment within + `History.Clusters.Backend.ComputeClusters.ThreadTime`. + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the time taken to gather all entity IDs that require fetching + additional metadata for, which is performed on the UI thread. This does not + include any thread hop or queuing delay. Logged when clusters have been + calculated based on any request to cluster visits, which could be triggered + from several things, including loading the journeys UI, putting a query in + the journeys page, etc... + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the reason why a cluster was filtered out of the return set for each + cluster provided to the clustering backend when invoked by {Source}. Note + that a single cluster can log multiple values in this metric if it is + ineligible for multiple reasons. + + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the number of clusters {Segment} each time {Source} invokes the + clustering backend with a functional filtering configuration. Note that the + max count is limited to the size of the initial batch sent to the clustering + backend. + + + + + + + + + + manukh@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Near startup and every 1 hour afterwards, unclustered visits are clustered, + and the clusters are persisted in the history DB. + + As needed, both fresh and persisted clusters are fetched. Clusters are + fetched for: a) displaying on the Journeys WebUI and b) generating keyword + caches to match with omnibox inputs and show journey chips or suggestions in + the omnibox. + + This histogram records the latency breakdown for fetching both fresh and + persisted clusters. See the similar + 'History.Clusters.Backend.UpdateClusters.*' histograms for the latency + breakdown for updating clusters. + + Recorded for every batch of fetched clusters; can be recorded more than once + per Journey WebUI load or keyword cache generations + + This slice records the time between the main thread requesting and receiving + {Segment}. Records {Source}. + + + + + + + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + On navigation, context clusters are created, grown, and persisted. + + On startup and every 1 hour afterwards, these context clusters have their + triggability calculated. Context clusters older than 2 hours are not updated + are not re-updated after the initial triggability is calculated. However, if + there are unclustered visits (due to visits from before the user had context + clustering enabled or synced visits without a cluster ID), they will also be + context clustered with their triggerability calculated as well. + + When a user visits the Journeys WebUI, persisted clusters (both those with + and without triggerability calculated) are fetched. Clusters are then + augmented with appropriate metadata needed for displaying on the Journeys + WebUI (e.g. ranking, deduping, labeling). + + When the keyword cache used to match omnibox inputs and show journey chips + or suggestions in the omnibox needs updating, context clusters (both those + with and without triggerability calculated) are fetched. + + This histogram records the latency breakdown for each step of getting + clusters for the webUI. It does not cover getting clusters for the keyword + cache. + + Recorded for every batch of fetched clusters; can be recorded more than once + per Journey WebUI load. + + This slice records the time between the main thread requesting and receiving + {Segment}. Records {Source}. + + + + + + + + + + + Deprecated 04/2022 because we no longer break keywords apart before storing + in the cache. + + manukh@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the number of keyword phrases stored in the primary cache. + + Each cluster can have multiple keyword phrases; each phrase consists of 1 or + more words. + + Logged each time the primary cache is refreshed, i.e. on omnibox key stroke + limited to at most once every 2 hours, though clearing history items will + reset the cache timer. + + + + + manukh@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the number of keywords stored in the primary cache. Each keyword may + actually be multiple words. + + Logged each time the primary cache is refreshed, i.e. on omnibox key stroke + limited to at most once every 2 hours, though clearing history items will + reset the cache timer. + + + + + + Deprecated 04/2022 because we no longer break keywords apart before storing + in the cache. + + manukh@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the number of keywords stored in the short cache. + + Each cluster can have multiple keyword phrases; each phrase consists of 1 or + more words. + + Logged each time the short cache is refreshed, i.e. on omnibox key stroke if + the primary cache is not stale and limited to at most once every 10 seconds. + + + + + manukh@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the number of keyword stored in the short cache. Each keyword may + actually be multiple words. + + Each cluster can have multiple keyword phrases; each phrase consists of 1 or + more words. + + Logged each time the short cache is refreshed, i.e. on omnibox key stroke if + the primary cache is not stale and limited to at most once every 10 seconds. + + + + + + Obsolete as of 05/2022. + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the number of batches used to process visits. Logged once per request + for clusters to be calculated based on any request to cluster visits, which + could be triggered from several things, including loading the journeys UI, + putting a query in the journeys page, etc.. + + + + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the total number of clusters returned for requested visits. Logged when + clusters have been calculated based on any request to cluster visits, which + could be triggered from several things, including loading the journeys UI, + putting a query in the journeys page, etc.. + + + + + + Obsolete in 12/22 + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the number of keywords associated with each cluster after it has been + finalized. Logged for each cluster that is generated when clusters are + created for the purposes of keyword generation to show in the Omnibox, + roughly once at the start of each session and every two hours after that. + + + + + + Obsolete in 12/22 + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the {KeywordStatistic} over all clusters determined by the on-device + backend. Logged when clusters have been calculated based on any request to + cluster visits, which could be triggered from several things, including + loading the journeys UI, putting a query in the journeys page, etc.. + + + + + + + + + + Obsolete in 12/22 + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the number of visits contained in each cluster after it has been + finalized. Logged for each cluster that is generated when clusters are + created for the purposes of keyword generation to show in the Omnibox, + roughly once at the start of each session and every two hours after that. + + + + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the total number of visits requested to be clustered by the backend. + Logged when any request to cluster visits is made, which could be triggered + from several things, including loading the journeys UI, putting a query in + the journeys page, etc.. + + + + + + Obsolete as of 05/2022. + + tbansal@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the number of visits that were processed on the UI thread in a batch. + Can be logged multiple times when a request to cluster visits is made, which + could be triggered from several things, including loading the journeys UI, + putting a query in the journeys page, etc... depending on how many visits + were sent to the backend to cluster. + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs the time taken to process a batch of visits (joining existing History + visit metadata with any additional Search, engagement, content metadata) and + is performed on the UI thread. This does not include any thread hop or + queuing delay. Can be logged multiple times when a request to cluster visits + is made, which could be triggered from several things, including loading the + journeys UI, putting a query in the journeys page, etc... depending on how + many visits were sent to the backend to cluster. + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + This histogram records the time taken (excluding queuing delay) to retrieve + visits from the History database, which occurs on the History DB thread. + Logged once per request to cluster visits is made, which could be triggered + from several things, including loading the journeys UI, putting a query in + the journeys page, etc. + + + + + manukh@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Near startup and every 1 hour afterwards, unclustered visits are clustered, + and the clusters are persisted in the history DB. + + As needed, both fresh and persisted clusters are fetched. Clusters are + fetched for: a) displaying on the Journeys WebUI and b) generating keyword + caches to match with omnibox inputs and show journey chips or suggestions in + the omnibox. + + Each update consists of multiple batches of 1-3 days. The number of batches + depends on how long ago the last update occurred, which could have been 0-90 + days ago. + + Recorded for every batch of visits clustered; can be recorded more than once + every hour. + + {Segment} + + + + + + + + + + manukh@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Near startup and every 1 hour afterwards, unclustered visits are clustered, + and the clusters are persisted in the history DB. + + As needed, both fresh and persisted clusters are fetched. Clusters are + fetched for: a) displaying on the Journeys WebUI and b) generating keyword + caches to match with omnibox inputs and show journey chips or suggestions in + the omnibox. + + This histogram records the latency breakdown for updating clusters. See the + similar 'History.Clusters.Backend.GetMostRecentClusters.*' histograms for + the latency breakdown for fetching clusters. + + Recorded for every batch of visits clustered; can be recorded more than once + every hour. + + This slice records the time between the main thread requesting and + {Segment}. + + + + + + + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + On navigation, context clusters are created, grown, and persisted. + + On startup and every 1 hour afterwards, these context clusters have their + triggability calculated. Context clusters older than 2 hours are not updated + are not re-updated after the initial triggability is calculated. However, if + there are unclustered visits (due to visits from before the user had context + clustering enabled or synced visits without a cluster ID), they will also be + context clustered with their triggerability calculated as well. + + When a user visits the Journeys WebUI, persisted clusters (both those with + and without triggerability calculated) are fetched. Clusters are then + augmented with appropriate metadata needed for displaying on the Journeys + WebUI (e.g. ranking, deduping, labeling). + + When the keyword cache used to match omnibox inputs and show journey chips + or suggestions in the omnibox needs updating, context clusters (both those + with and without triggerability calculated) are fetched. + + This histogram records whether there was at least one cluster's + triggerability was updated {Segment}. + + Recorded for every batch of clusters to be updated; can be recorded more + than once every hour (Finch-configurable). + + + + + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + On navigation, context clusters are created, grown, and persisted. + + On startup and every 1 hour afterwards, these context clusters have their + triggability calculated. Context clusters older than 2 hours are not updated + are not re-updated after the initial triggability is calculated. However, if + there are unclustered visits (due to visits from before the user had context + clustering enabled or synced visits without a cluster ID), they will also be + context clustered with their triggerability calculated as well. + + When a user visits the Journeys WebUI, persisted clusters (both those with + and without triggerability calculated) are fetched. Clusters are then + augmented with appropriate metadata needed for displaying on the Journeys + WebUI (e.g. ranking, deduping, labeling). + + When the keyword cache used to match omnibox inputs and show journey chips + or suggestions in the omnibox needs updating, context clusters (both those + with and without triggerability calculated) are fetched. + + This histogram records whether there were unclustered visits left to cluster + in the first run of this task. When this trends to all false, this + additional step can get deleted. + + Recorded for every batch of clusters to be updated; can be recorded more + than once every hour. + + + + + manukh@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + On navigation, context clusters are created, grown, and persisted. + + On startup and every 1 hour afterwards, these context clusters have their + triggability calculated. Context clusters older than 2 hours are not updated + are not re-updated after the initial triggability is calculated. However, if + there are unclustered visits (due to visits from before the user had context + clustering enabled or synced visits without a cluster ID), they will also be + context clustered with their triggerability calculated as well. + + When a user visits the Journeys WebUI, persisted clusters (both those with + and without triggerability calculated) are fetched. Clusters are then + augmented with appropriate metadata needed for displaying on the Journeys + WebUI (e.g. ranking, deduping, labeling). + + When the keyword cache used to match omnibox inputs and show journey chips + or suggestions in the omnibox needs updating, context clusters (both those + with and without triggerability calculated) are fetched. + + This histogram records the latency breakdown for updating cluster + triggerability. + + Recorded for every batch of clusters to be updated; can be recorded more + than once every hour. + + This slice records the time between the main thread requesting and + {Segment}. + + + + + + + + + + + + + + mcrouse@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Logs whether a cluster was filtered for having {ClusterFilterReason}. Logged + when finalizing each individual cluster which occurs at the end of every + clustering backend request. + + + + + + + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + When the user visits a page, `ContextClustererHistoryServiceObserver` + considers whether to add the visit to a new cluster or an existing cluster. + If it decides to create a new cluster, this is logged. Therefore, logged at + most once per page visit. + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + When the user visits a page, `ContextClustererHistoryServiceObserver` + considers whether to add the visit to a new cluster or an existing cluster. + + This histogram records the processing breakdown for persisting visits to + group them into context clusters. Recorded each time {Segment}. The + histograms here summed up with the histograms as part of + `History.Clusters.ContextClusterer.VisitProcessingLatency` record the total + latency for context clustering. + + + + + + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Number of clusters that are in-progress. Recorded once an hour + (Finch-configurable) prior to the clean-up pass. + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Number of clusters that were cleaned up in the clean-up pass. Recorded once + an hour (Finch-configurable) during the clean-up pass. + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Number of clusters that are in-progress. Recorded once an hour + (Finch-configurable) after the clean-up pass. + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + When we decide a new visit belongs to a new cluster, we asyncly reserve a + new cluster ID and add the visit to the cluster. When subsequent visits + belong to the same cluster, we asyncly add those visits to the cluster. When + the latter occurs before the former completes, i.e. when there are multiple + visits done that belong in the same cluster before the cluster ID was + reserved, we queue those subsequent visits and only add them when the + cluster ID is reserved. + + This histogram records the number of visits that were waiting to be + persisted while waiting for the persisted ID of the containg cluster to be + received. Recorded at most once per cluster that is generated via the + navigation graph. + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + When the user visits a page, `ContextClustererHistoryServiceObserver` + considers whether to add the visit to a new cluster or an existing cluster. + + This histogram records the processing breakdown for processing visits to + group them into context clusters. Recorded each time {Segment}. The + histograms here summed up with the histograms as part of + `History.Clusters.ContextClusterer.DbLatency` record the total latency for + context clustering. + + + + + + + + + + sophiechang@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Records whether a user that is Journeys eligible has Journeys enabled. This + is recorded once at the start of the session. + + + + + tommycli@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Records the total amount of time spent populating the keyword cache, + measured via the wall clock. Most of this time is not on the main thread. + + The total time spent populating the keywords cache will be: + History.Clusters.KeywordCache.Latency = (number of batches) * ( + History.Clusters.Backend.GetMostRecentClusters.GetAnnotatedVisitsToClusterLatency.AllKeywordCacheRefresh + + + History.Clusters.Backend.GetMostRecentClusters.ComputeClustersLatency.AllKeywordCacheRefresh + + + History.Clusters.Backend.GetMostRecentClusters.GetMostRecentPersistedClustersLatency.AllKeywordCacheRefresh + + + History.Clusters.Backend.GetMostRecentClusters.GetAnnotatedVisitsToClusterLatency.ShortKeywordCacheRefresh + + + History.Clusters.Backend.GetMostRecentClusters.ComputeClustersLatency.ShortKeywordCacheRefresh + + + History.Clusters.Backend.GetMostRecentClusters.GetMostRecentPersistedClustersLatency.ShortKeywordCacheRefresh + + History.Clusters.KeywordCache.ThreadTime) + + + + + pnoland@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Records the amount of time spent reading all caches from the pref service + and deserializing them. Recorded when these caches are read from prefs, + which is once at startup. This is not recorded if the pref service is null. + + + + + tommycli@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + This measures the amount of main thread time spent populating the keyword + cache AFTER we get it from the backend. + + See History.Clusters.KeywordCache.Latency for the full wall clock time. + + + + + pnoland@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Records the amount of time spent serializing and writing a keyword cache to + the pref service. Recorded every time a cache is written to prefs, which is + every time one is updated. This is not recorded if the pref service is null. + + + + + + + + + olivierli@chromium.org + tommycli@chromium.org + UI>Browser>Journeys + + This histogram records the total time taken to convert and process visits in + all history cluster available. This is recorded once after the conversion, + deduplication and sorting of the clusters. This is recorded using the + highest precision clock possible. Like most time measurements this will not + have the same behavior regarding system sleep on all platforms. See + bit.ly/chrome-clocks-and-sleep for more details. Since the measurement is + taken after the operation is over it will be missing if the operation never + completes. This can happen if the user or the system shuts down chrome + because of the unresponsiveness. A decidedly imperfect strategy to evaluate + how often this happens is to compare total counts with another histogram + that is recorded before the operation starts + ("History.Clusters.Backend.GetClusterLatency"). Such analysis has + to be conducted with care. Consult with Metrics team if curious. + + + + + tommycli@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Records the time taken between the History Clusters UI requests a batch of + clusters, and when we get the post-processed clusters back. + + This request occurs when the page is first loaded, when the page is + refreshed, when the user changes the History search terms, and when the user + scrolls to the bottom of the page and requests the next batch of clusters + from the service. + + This metric doesn't distinguish between any of these cases. This metric is + recorded on all requests, whether or not it returns clusters. + + This does not take into account the time spent in JavaScript, or updating + the DOM. It's recorded in QueryClustersState, which is meant to be shared + between multiple UIs. + + Roughly, History.Clusters.ServiceLatency = + History.Clusters.Backend.GetMostRecentClusters.GetAnnotatedVisitsToClusterLatency.WebUI + + + History.Clusters.Backend.GetMostRecentClusters.ComputeClustersLatency.WebUI + + + History.Clusters.Backend.GetMostRecentClusters.GetMostRecentPersistedClustersLatency.WebUI + + History.Clusters.ProcessClustersDuration + + + + + tommycli@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Recorded each time a History Clusters HaTS survey was requested. Records if + the HaTS service can show ANY survey BEFORE we make the actual request. + + Used for debugging missing HaTs survey impressions. + + + + + tommycli@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Recorded each time a History Clusters HaTS survey was requested. Records if + the HaTS service can show this survey BEFORE we make the actual request. + + Used for debugging missing HaTs survey impressions. + + + + + tommycli@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Recorded each time a History Clusters HaTS survey was requested. Records + which entrypoint survey was requested. + + + + + tommycli@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Recorded each time a History Clusters HaTS survey was requested. Records if + the survey request succeeded. Note that a true count doesn't mean that the + survey was actually shown. It only measures if the HaTS service accepted the + request. The survey may still not be shown by HaTS for a different reason, + such as another survey being shown too recently. + + + + + mahmadi@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Recorded every time the user {ClusterAction} in chrome://history/journeys. + The value represents the 0-indexed index of the cluster. + + + + + + + + + + + + mahmadi@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Recorded every time the user {RelatedSearchAction} a related search + suggestion in a history cluster in chrome://history/journeys. The value + represents the 0-indexed index of the related search suggestion in the + respective cluster. + + + + + + + + mahmadi@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Recorded every time the user toggles the visibility of the history clusters + Web UI shown at chrome://history/journeys from the history Web UI sidebar. + The value represents the visibility of the history clusters Web UI. + + + + + mahmadi@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Recorded every time the user {VisitAction} a {VisitType} in a history + cluster in chrome://history/journeys. The value represents the 0-indexed + index of the visit in the respective cluster. + + + + + + + + + + + + + + + manukh@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + The time elapsed between subsequent cluster update tasks + (HistoryClustersServiceTaskUpdateClusters). Depending on finch params, this + occurs either: + + 1) Never (e.g. if updating and persisting clusters is disabled). + + 2) OR N time after startup in addition to every M time; where N is typically + 5-60 minutes, and M is typically 1-12 hours. + + 3) OR on keyword refresh request bounded to at most every M time, where M is + typically 1-12 hours. Keyword refresh requests occur when the omnibox input + looks like a search query and journeys in the omnibox is enabled. + + + + + tommycli@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Records the amount of time the Journeys WebUI is open. + + This timer is started when the Journeys WebUI is loaded. The Journeys WebUI + is loaded when either the user directly goes to the Journeys WebUI, or when + the user switches to the Journeys tab from a different tab. + + The timer is stopped and the elapsed time recorded when either the whole + WebUI is closed, or if the user disables the Journeys preference, or if the + user switches tabs off the Journeys tab onto a different one. + + Elapsed times longer than one hour are recorded as one hour. + + + + + sophiechang@chromium.org + tommycli@chromium.org + treib@chromium.org + UI>Browser>History + + Time spent on advanced History DB metrics calculation (weekly and monthly + URL, host, and category counts). Advanced metrics are logged on + initialization of the History DB on 0.3% of starts. + + + + + sophiechang@chromium.org + tommycli@chromium.org + treib@chromium.org + UI>Browser>History + + Time spent on basic History DB metrics calculation (file size and table + counts). Basic metrics are logged on initialization of the History DB on 1% + of starts. + + + + + sophiechang@chromium.org + tommycli@chromium.org + chrome-journeys@google.com + UI>Browser>History + + Size of History DB file. Duplicate of Profile.HistorySize and + Sqlite.SizeKB.History. Logged on initialization of the History DB on 1% of + starts. + + + + + sophiechang@chromium.org + tommycli@chromium.org + treib@chromium.org + UI>Browser>History + + Time spent on foreign-visit-related History DB metrics calculation. These + metrics are logged on initialization of the History DB on 1% of starts. Note + that the actual metrics (History.ForeignVisits*) are only recorded if any + such visits were actually found, so the total counts will not match this + histogram's. + + + + + dimich@chromium.org + UI>Browser>History + + Time spent on computing the monthly count of hosts visited. Reported every + time computation is performed, which in turn is done approximately weekly. + + + + + sophiechang@chromium.org + asully@chromium.org + UI>Browser>History + + The exact database error encountered when initializing the database, if + failed. + + + + + mpearson@chromium.org + mjzhang@chromium.org + chrome-analysis-team@google.com + UI>Browser>History + + + Number of unique domains visited by the user within a calendar day in user's + local timezone. For each regular profile (not incognito, guest, system, + etc.), reported at profile open (which usually happens at startup) for each + unreported day (up to 7 days) prior to the current date, and also reported + once every 24 hours thereafter for the latest unreported day, while the + profile remains open. If no domains are visited in a given day, a count of 0 + will be reported for that day. + + Warning about delayed data: Chrome may upload logs on a given day without + uploading this histogram. This can happen because Chrome uploads logs + initially upon startup. This histogram is emitted shortly _after_ startup. + In the case of short sessions, it's possible the log with this histogram did + not have time to be uploaded. Generally the log will be cached and uploaded + the next time the user starts Chrome. We should still get one count per + calendar day; it simply may not be on the day the metric was computed. + (Exception: on Android before M-91, sometimes these emitted histograms were + lost due to lack of robust "background logging".) + + Note: for users syncing between multiple devices, this count may include + some URLs/domains that weren't visited on this device. In other words, some + domains may be counted for multiple client_ids even though they were only + visited once, on one device. For Chrome M113 or later, you probably want to + look at DomainCount1Day_V3 instead. + + + + + mpearson@chromium.org + mjzhang@chromium.org + chrome-analysis-team@google.com + UI>Browser>History + + + Number of unique domains visited by the user within a calendar day in user's + local timezone. For each regular profile (not incognito, guest, system, + etc.), reported at profile open (which usually happens at startup) for each + unreported day (up to 7 days) prior to the current date, and also reported + once every 24 hours thereafter for the latest unreported day, while the + profile remains open. If no domains are visited in a given day, a count of 0 + will be reported for that day. + + Warning about delayed data: Chrome may upload logs on a given day without + uploading this histogram. This can happen because Chrome uploads logs + initially upon startup. This histogram is emitted shortly _after_ startup. + In the case of short sessions, it's possible the log with this histogram did + not have time to be uploaded. Generally the log will be cached and uploaded + the next time the user starts Chrome. We should still get one count per + calendar day; it simply may not be on the day the metric was computed. + (Exception: on Android before M-91, sometimes these emitted histograms were + lost due to lack of robust "background logging".) + + + + + mpearson@chromium.org + mjzhang@chromium.org + chrome-analysis-team@google.com + UI>Browser>History + + Number of unique domains visited by the user within a 28 calendar day period + in user's local timezone. For each regular profile (not incognito, guest, + system, etc.), reported at profile open (which usually happens at startup) + for each unreported 28-day period (up to 7 periods) ending on the current + day, current day - 1, current day - 2, etc. Also reported once every 24 + hours thereafter for the latest unreported period, while the profile remains + open. If no domains are visited during a 28-day period, a count of 0 will be + reported for that period. + + Warning about delayed data: Chrome may upload logs on a given day without + uploading this histogram. This can happen because Chrome uploads logs + initially upon startup. This histogram is emitted shortly _after_ startup. + In the case of short sessions, it's possible the log with this histogram did + not have time to be uploaded. Generally the log will be cached and uploaded + the next time the user starts Chrome. We should still get one count per + calendar day; it simply may not be on the day the metric was computed. + (Exception: on Android before M-91, sometimes these emitted histograms were + lost due to lack of robust "background logging".) + + Note: for users syncing between multiple devices, this count may include + some URLs/domains that weren't visited on this device. In other words, some + domains may be counted for multiple client_ids even though they were only + visited once, on one device. For Chrome M113 or later, you probably want to + look at DomainCount28Day_V3 instead. + + + + + mpearson@chromium.org + mjzhang@chromium.org + chrome-analysis-team@google.com + UI>Browser>History + + Number of unique domains visited by the user within a 28 calendar day period + in user's local timezone. For each regular profile (not incognito, guest, + system, etc.), reported at profile open (which usually happens at startup) + for each unreported 28-day period (up to 7 periods) ending on the current + day, current day - 1, current day - 2, etc. Also reported once every 24 + hours thereafter for the latest unreported period, while the profile remains + open. If no domains are visited during a 28-day period, a count of 0 will be + reported for that period. + + Warning about delayed data: Chrome may upload logs on a given day without + uploading this histogram. This can happen because Chrome uploads logs + initially upon startup. This histogram is emitted shortly _after_ startup. + In the case of short sessions, it's possible the log with this histogram did + not have time to be uploaded. Generally the log will be cached and uploaded + the next time the user starts Chrome. We should still get one count per + calendar day; it simply may not be on the day the metric was computed. + (Exception: on Android before M-91, sometimes these emitted histograms were + lost due to lack of robust "background logging".) + + + + + mpearson@chromium.org + mjzhang@chromium.org + chrome-analysis-team@google.com + UI>Browser>History + + Number of unique domains visited by the user within a 7 calendar day period + in user's local timezone. For each regular profile (not incognito, guest, + system, etc.), reported at profile open (which usually happens at startup) + for each unreported 7-day period (up to 7 periods) ending on the current + day, current day - 1, current day - 2, etc. Also reported once every 24 + hours thereafter for the latest unreported period, while the profile remains + open. If no domains are visited during a 7-day period, a count 0 will be + reported for that period. + + Warning about delayed data: Chrome may upload logs on a given day without + uploading this histogram. This can happen because Chrome uploads logs + initially upon startup. This histogram is emitted shortly _after_ startup. + In the case of short sessions, it's possible the log with this histogram did + not have time to be uploaded. Generally the log will be cached and uploaded + the next time the user starts Chrome. We should still get one count per + calendar day; it simply may not be on the day the metric was computed. + (Exception: on Android before M-91, sometimes these emitted histograms were + lost due to lack of robust "background logging".) + + Note: for users syncing between multiple devices, this count may include + some URLs/domains that weren't visited on this device. In other words, some + domains may be counted for multiple client_ids even though they were only + visited once, on one device. For Chrome M113 or later, you probably want to + look at DomainCount7Day_V3 instead. + + + + + mpearson@chromium.org + mjzhang@chromium.org + chrome-analysis-team@google.com + UI>Browser>History + + Number of unique domains visited by the user within a 7 calendar day period + in user's local timezone. For each regular profile (not incognito, guest, + system, etc.), reported at profile open (which usually happens at startup) + for each unreported 7-day period (up to 7 periods) ending on the current + day, current day - 1, current day - 2, etc. Also reported once every 24 + hours thereafter for the latest unreported period, while the profile remains + open. If no domains are visited during a 7-day period, a count 0 will be + reported for that period. + + Warning about delayed data: Chrome may upload logs on a given day without + uploading this histogram. This can happen because Chrome uploads logs + initially upon startup. This histogram is emitted shortly _after_ startup. + In the case of short sessions, it's possible the log with this histogram did + not have time to be uploaded. Generally the log will be cached and uploaded + the next time the user starts Chrome. We should still get one count per + calendar day; it simply may not be on the day the metric was computed. + (Exception: on Android before M-91, sometimes these emitted histograms were + lost due to lack of robust "background logging".) + + + + + mpearson@chromium.org + mjzhang@chromium.org + chrome-analysis-team@google.com + UI>Browser>History + + Time spent on a scheduled computation task of domain visit counts. Each such + task computes a number of (at least 1 and up to 7) sets of domain counts, + where each set includes 3 results, for a 1-day, 7-day and 28-day period + respectively. Note that for each computation task, only one query time is + reported which covers the entire duration of the task. A task is scheduled + once per regular profile (not Incognito, Guest, System, etc. profiles) at + startup and every 24 hours per profile thereafter while the profile remains + open. + + + + + rogerm@chromium.org + sky@chromium.org + UI>Browser>History + + Size of the Favicons database in MB. This is calculated as the number of + pages consumed by the database multiplied by the page size. Logged on + initialization of the Favicon DB on 1% of starts. + + + + + yiyaoliu@chromium.org + UI>Browser>History + + The count of differences between cached top sites and up-to-date top sites + when function TopSitesImpl::SetTopSites is firstly called at startup. + + + + + yiyaoliu@chromium.org + UI>Browser>History + + The amount of time for function + history::TopSitesBackend::UpdateTopSitesOnDBThread to execute when this + function is called during startup. Excludes the case where local + TopSitesDatabase db_ is unavailable, i.e. where the update doesn't really + happen. + + + + + tommycli@chromium.org + treib@chromium.org + UI>Browser>History + + The number of foreign visits (i.e. visits coming from another device) in the + DB table which came from "legacy" clients, i.e. those still using + the Sessions sync integration. Recorded on initialization of the History DB + on 1% of starts, only if any foreign visits exist (i.e. basically for users + with History Sync on). + + + + + tommycli@chromium.org + treib@chromium.org + UI>Browser>History + + The number of foreign visits (i.e. visits coming from another device) in the + DB table which have an originator_from|opener_visit but are missing a + corresponding local from|opener_visit. Recorded on initialization of the + History DB on 1% of starts, only if any foreign visits exist (i.e. basically + for users with History Sync on). + + + + + tommycli@chromium.org + treib@chromium.org + UI>Browser>History + + The number of foreign visits (i.e. visits coming from another device) in the + DB table which have an originator_from_visit but are missing a corresponding + local from_visit, and a matching visit actually exists in the DB. Recorded + on initialization of the History DB on 1% of starts, only if any foreign + visits exist (i.e. basically for users with History Sync on). + + + + + tommycli@chromium.org + treib@chromium.org + UI>Browser>History + + The number of foreign visits (i.e. visits coming from another device) in the + DB table which have an originator_opener_visit but are missing a + corresponding local opener_visit, and a matching visit actually exists in + the DB. Recorded on initialization of the History DB on 1% of starts, only + if any foreign visits exist (i.e. basically for users with History Sync on). + + + + + tommycli@chromium.org + treib@chromium.org + UI>Browser>History + + The number of foreign visits (i.e. visits coming from another device) in the + DB table. Recorded on initialization of the History DB on 1% of starts, only + if any foreign visits exist (i.e. basically for users with History Sync on). + + + + + Please list the metric's owners. Add more owner tags as needed. + UI>Browser>History + Time to check the thumbnail database for a URL's favicon. + + + + calamity@chromium.org + src/chrome/browser/resources/history/OWNERS + UI>Browser>History + + The page of the History page shown to the user. Logged each time the user + loads the History page or switches pages. + + This histogram expired on 2021-03-01, was renewed on 2021-09-01, and may + have incomplete data within that range. + + + + + sky@chromium.org + sdefresne@chromium.org + UI>Browser>History + + The phase of history initialization that failed. This histogram is only + logged on database initialization failure. + History.AttemptedToFixProfileError will tell how often initialization fails + overall. + + + + + sky@chromium.org + mpearson@chromium.org + UI>Browser>History + + The number of typed URLs in the history database that are read into the + "in memory" history database. This in memory copy of the typed + URLs is used for synchronous inline autocomplete on the UI thread, while the + larger slower service is run off of disk on a background thread. Recorded on + profile open. + + + + + mpearson@chromium.org + chrome-omnibox-team@google.com + UI>Browser>History + + Number of history items in the in-memory url index. Recorded on profile open + when restoring from a cache file and again shortly after profile open when + rebuilding the in-memory url index from history. + + + + + mpearson@chromium.org + ssid@chromium.org + UI>Browser>History + + Time to rebuild in-memory url index from main history database. Recorded + once shortly after profile open. + + + + + tommycli@chromium.org + mpearson@chromium.org + UI>Browser>History + + Records the total time between when the in-memory url index is requested to + be built from the main thread, and when the request is successfully finished + and reported back to the main thread. Failed cases are not recorded. + + From startup traces, we found that History initialization blocks the DB task + to create the in-memory url index, and also dominates the total time taken. + That's why this metric measures the round-trip time from request to finish + from the perspective of the main thread. + + + + + tommycli@chromium.org + mpearson@chromium.org + UI>Browser>History + + Time to restore the in-memory url index from disk cache. Recorded on profile + open. + + + + + tommycli@chromium.org + mpearson@chromium.org + UI>Browser>History + + Time to write in-memory url index to disk cache. Recorded once shortly after + profile open (after rebuilding the in-memory url index from history) and + again upon (clean) shutdown. + + + + + sky@chromium.org + sdefresne@chromium.org + UI>Browser>History + + History database version from which history migration failed. If there are + higher than normal migration failures, this histogram will indicate which + migration step failed. + + Warning: this histogram was expired from M77 to M108; data may be missing. + + + + + mpearson@chromium.org + sky@chromium.org + UI>Browser>History + + Unique hostnames in History database urls table with last-visit times in the + last 30 days. Metrics are logged on initialization of the History DB on 0.3% + of starts. See also ExploreSites.MonthlyHostCount metric which is similar + but is reported on an elapsed time basis to help avoid bias toward more + active users. + + + + + mpearson@chromium.org + sky@chromium.org + UI>Browser>History + + Unique URLs in History database urls table with last-visit times in the last + 30 days. Metrics are logged on initialization of the History DB on 0.3% of + starts. + + + + + + Expired in M110. + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + The number of search terms extracted from the HistoryDatabase db_ in + HistoryBackend::QueryMostRepeatedQueriesForKeyword() to produce the most + repeated search terms. Excludes the case where local HistoryDatabase db_ is + unavailable, i.e. where the query doesn't really happen. Emitted on NTP load + and on omnibox popup shown on Android where the repeatable queries are + requested to be shown in the Most Visited tiles. + + + + + + Expired in M110 in favor of History.QueryMostRepeatedQueriesTimeV2. + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + The amount of time for HistoryBackend::QueryMostRepeatedQueriesForKeyword() + to extract the search terms from the HistoryDatabase db_ and sort them by + frecency scores to produce the most repeated search terms. Excludes the case + where local HistoryDatabase db_ is unavailable, i.e. where the query doesn't + really happen. Emitted on NTP load and on omnibox popup shown on Android + where the repeatable queries are requested to be shown in the Most Visited + tiles. + + + + + mahmadi@chromium.org + chrome-desktop-search@google.com + + The amount of time for HistoryBackend::QueryMostRepeatedQueriesForKeyword() + to extract up to the requested number of search terms from the + HistoryDatabase db_ and sort them by frecency scores to produce the most + repeated search terms. Excludes the case where local HistoryDatabase db_ is + unavailable, i.e. where the query doesn't really happen. Emitted on NTP load + and on omnibox popup shown on Android where the repeatable queries are + requested to be shown in the Most Visited tiles. + + + + + chengx@chromium.org + UI>Browser>History + + The amount of time for function HistoryBackend::QueryMostVisitedURLs to + execute. Excludes the case where local HistoryDatabase db_ is unavailable, + i.e. where the query doesn't really happen. + + + + + calamity@chromium.org + dbeam@chromium.org + UI>Browser>History + + Records the time taken to load the history Web UI and render (at least) a + screen full of items. This is roughly equivalent to 'time to first + meaningful paint' for the history page. + + + + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + The amount of time it takes to asynchronously query the most visited URLs + and the most repeated queries, if applicable, from the history service. + Excludes the case where local HistoryDatabase db_ is unavailable, i.e. where + the query doesn't really happen. Emitted on NTP load and on omnibox popup + shown on Android where the Most Visited tiles are shown. + + + + + + Deprecated in M108 in favor of History.QueryMostRepeatedQueriesCount + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + The number of search terms extracted from the in-memory URLDatabase to + produce the most repeated search suggestions. Emitted on NTP load and on + omnibox popup shown on Android NTP when repeatable queries are requested to + be shown in the Most Visited tiles. + + + + + + Deprecated in M108 in favor of History.QueryMostRepeatedQueriesTime + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + The length of time it takes to extract the most repeated search terms from + the in-memory URLDatabase and sort by frecency scores. Emitted on NTP load + and on omnibox popup shown on Android NTP when repeatable queries are + requested to be shown in the Most Visited tiles. + + + + + Please list the metric's owners. Add more owner tags as needed. + UI>Browser>History + + Size of the recovered TopSites database relative to the original corrupt + database. Recovery is VACUUM-like, so the resulting database should always + be smaller. Substantial 100% results would indicate empty databases being + recovered, substantial low% results would indicate very little data being + recovered. + + + + + Please list the metric's owners. Add more owner tags as needed. + UI>Browser>History + + Rows recovered from [thumbnails] table in TopSites recovery. + + + + + Please list the metric's owners. Add more owner tags as needed. + UI>Browser>History + + The TopSites recovery code is written conservatively, with successful + recovery committed and any failure leading to rollback. This tracks the + outcomes to determine which cases are high-frequency enough to warrant + adding additional code to handle them (versus simply deleting the data). + + + + + mpearson@chromium.org + sky@chromium.org + UI>Browser>History + + Number of rows in urls table in History DB. Metrics are logged on + initialization of the History DB on 1% of starts. + + + + + kyraseevers@chromium.org + brgoldstein@google.com + + When VisitedLinkReader's in-memory hashtable is initialized, this metric + records the value for table_length_ (the maximum number of entries that can + be held in that hashtable). + + + + + kyraseevers@chromium.org + brgoldstein@google.com + + When a new in-memory hashtable is created in VisitedLinkWriter, this metric + records the size of the memory allocated for that new hashtable in MB. + + + + + kyraseevers@chromium.org + brgoldstein@google.com + + When a new URL fingerprint is added to the VisitedLink hashtable, this + metric logs value for used_items_ (the number of entries in the hashtable + containing an actual fingerprint value rather than a placeholder). + + + + + kyraseevers@chromium.org + brgoldstein@google.com + + When VisitedLinkWriter is asked to add a URL, it calculates that URL's + fingerprint and tries to add that fingerprint to the hashtable. This metric + records the result of that function: AddFingerprint(). If the fingerprint is + already in the table, we record kAlreadyVisited. If we haven't seen this + fingerprint before and it can be successfully stored in the hashtable, we + record kNewVisit. Any other outcomes due to table sizing errors are recorded + as kTableError. + + + + + kyraseevers@chromium.org + brgoldstein@google.com + + For each visit being logged in the VisitedLinks hashtable by the + HistoryService, record whether its ui::PageTransition type came from the + main frame. + + + + + kyraseevers@chromium.org + brgoldstein@google.com + + For each visit being logged in the VisitedLinks hashtable by the + HistoryService, record its PageTransitionForVisitedLinks type. This enum + represents our ui::PageTransition types of interest (link vs. typed vs. + subframe) and a catch-all other bucket. + + + + + mpearson@chromium.org + sky@chromium.org + UI>Browser>History + + Number of rows in visits table in History DB. Metrics are logged on + initialization of the History DB on 1% of starts. + + + + + mpearson@chromium.org + sky@chromium.org + UI>Browser>History + + Unique hostnames in History database urls table with last-visit times in the + last 7 days. Metrics are logged on initialization of the History DB on 0.3% + of starts. + + + + + mpearson@chromium.org + sky@chromium.org + UI>Browser>History + + Unique URLs in History database urls table with last-visit times in the last + 7 days. Metrics are logged on initialization of the History DB on 0.3% of + starts. + + + + + rpop@google.com + UI>Browser>History + + Number of entries that the clicked entry is older than in History page. Last + bucket is any entry of that value or higher. + + + + + rpop@google.com + UI>Browser>History + + Subset of the Click Position histogram. Contains only the first smaller + subset of entries on the page. Number of entries that the clicked entry is + older than in History page. Last bucket is entries of that value or higher. + + + + + + + rpop@google.com + chrome-analysis-team@google.com + UI>Browser>History + + Histogram for usage of the section in the history page that allows the user + to access tabs from other devices. + + OtherSessionsActions.OPENED_LINK_VIA_CONTEXT_MENU was added for M-76. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + rpop@google.com + UI>Browser>History + + Number of entries that the deleted entry is older than in History page. Last + bucket is any entry of that value or higher. Confirmed removal is not + guaranteed, just an initiation of 'Remove selected items'. + + + + + rpop@google.com + UI>Browser>History + + Subset of Remove Entry Position histogram. Contains only the first smaller + subset of entries on the page. Number of entries that the deleted entry is + older than in History page. Last bucket is any entry of that value or + higher. Confirmed removal is not guaranteed, just an initiation of 'Remove + selected items'. + + + + + + diff --git a/histograms/metadata/holding_space/OWNERS b/histograms/metadata/holding_space/OWNERS new file mode 100644 index 000000000000..e596635697a1 --- /dev/null +++ b/histograms/metadata/holding_space/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +ckincaid@chromium.org +dmblack@google.com diff --git a/histograms/metadata/holding_space/histograms.xml b/histograms/metadata/holding_space/histograms.xml new file mode 100644 index 000000000000..d94191f5aadd --- /dev/null +++ b/histograms/metadata/holding_space/histograms.xml @@ -0,0 +1,278 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + dmblack@google.com + gzadina@google.com + + Records the smoothness of the holding space bubble resize animation. Note + that smoothness is expected be be between 0 and 100 (inclusively) with 100 + representing ideal smoothness of >= 60 frames per second. This histogram + is emitted when the resize animation ends. + + + + + dmblack@google.com + gzadina@google.com + + Records the smoothness of the holding space pod resize animation. Note that + smoothness is expected be be between 0 and 100 (inclusively) with 100 + representing ideal smoothness of >= 60 frames per second. This histogram + is emitted when the resize animation ends. + + + + + dmblack@google.com + gzadina@google.com + + Records an action taken on the downloads header in holding space UI at the + moment the action is performed. + + + + + dmblack@google.com + gzadina@google.com + + Records an action taken on the Files app chip in holding space UI at the + moment the action is performed. + + + + + dmblack@google.com + gzadina@google.com + + Records an action taken on an item in holding space UI at the moment the + action is performed. + + + + + dmblack@google.com + gzadina@google.com + + Records the type of item in holding space UI for which an action was taken + at the moment the action is performed. {action} + + + + + + dmblack@google.com + gzadina@google.com + + Records the extension of an item in holding space UI for which an action was + taken at the moment the action is performed. {action} + + + + + + dmblack@google.com + gzadina@google.com + + Records the count of all visible items of a specific type in holding space + at the moment holding space UI is shown. {type} + + + + + + dmblack@google.com + gzadina@google.com + + Records a failure to launch a holding space item of a specific type at the + moment of failure. + + + + + dmblack@google.com + gzadina@google.com + + Records a failure to launch a holding space item backed by file of a + specific extension at the moment of failure. + + + + + dmblack@google.com + gzadina@google.com + + Records the reason for failing to launch a holding space item at the moment + of failure. + + + + + dmblack@google.com + gzadina@google.com + + Records the total count of all items of a specific type in holding space on + startup and as additions/removals take place. Note that this histogram is + emitted no more than once every thirty seconds. {type} + + + + + + dmblack@google.com + gzadina@google.com + + Records an action taken on the holding space pod in the shelf at the moment + the action is performed. + + + + + dmblack@google.com + gzadina@google.com + + Records an action taken on the suggestions header in holding space UI at the + moment the action is performed. + + + + + dmblack@google.com + gzadina@google.com + + Records the time from when the holding space feature first became available + to when the user first added an item to holding space. + + + + + dmblack@google.com + gzadina@google.com + + Records the time from when the holding space feature first became available + to when the user first entered holding space. + + + + + dmblack@google.com + gzadina@google.com + + Records the time from when the user first entered holding space to when the + user first pinned a file. Note that this may be zero if the user pinned + their first file prior to having entered holding space. + + + + + dmblack@google.com + gzadina@google.com + + Records whether the user has previews enabled. Note that this histogram is + emitted once per user session at start up. + + + + + dmblack@google.com + gzadina@google.com + + Records whether the user has suggestions expanded. Note that this histogram + is emitted once per user session at start up. + + + + + + diff --git a/histograms/metadata/image/OWNERS b/histograms/metadata/image/OWNERS new file mode 100644 index 000000000000..c4e2a63a395d --- /dev/null +++ b/histograms/metadata/image/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +chrishtr@chromium.org diff --git a/histograms/metadata/image/histograms.xml b/histograms/metadata/image/histograms.xml new file mode 100644 index 000000000000..5057a7d85e2c --- /dev/null +++ b/histograms/metadata/image/histograms.xml @@ -0,0 +1,486 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Please list the metric's owners. Add more owner tags as needed. + + Time it takes to do high-quality image resampling for images that are + resized. Non-resized images and ones our heuristic decides can be done + "badly" are not counted. + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each image processed by the image annotation service, records whether or + not results for the image already existed in the client-side cache. A hit + means that image data was not transmitted to the image annotation server. + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each request made by a client feature to the image annotation service, + reports the final status of the service response. + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each annotation backend run by the image annotation server, records the + gRPC status reported. + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each image sent from a client feature to the image annotation service, + reports the image's final size (in kilobytes) after resizing and reencoding. + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each annotation backend run by the image annotation server, records + whether or not the backend is recognised by this version of Chrome. + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each image request sent to the image annotation server, records whether + or not the description backend is included among the requested backends. + + The description backend will not be included when the image is known to + violate the description model policy (i.e. be too small or have too-high an + aspect ratio). + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each image request sent to the image annotation server, records whether + or not the icon backend is included among the requested backends. + + The icon backend will not be included when the image is known to violate the + icon model policy (i.e. be too large or have too-high an aspect ratio). + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each non-empty response sent from the image annotation server, records + whether or not JSON data were successfully parsed from the response body. + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each pixel fetch request sent from the image annotation service to a + client feature, records whether or not encoded pixel data were successfully + returned to the service. + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each HTTP response from the image annotation server, reports the + associated HTTP code. + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each HTTP response from the image annotation server, reports the time + elapsed (in milliseconds) since the corresponding request was sent. + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each HTTP request sent to the image annotation server, reports the net + error (or OK status) of the request. + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each HTTP request sent to the image annotation server, reports the size + of the request. Measured in kilobytes, since a request can contain the pixel + data of multiple images. + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each HTTP response from the image annotation server, reports the + response size in bytes. + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each image sent from a client feature to the image annotation service, + reports the image's original (i.e. pre-scaling) area in pixels. Images with + pixel count above a certain threshold will be resized prior to transmission. + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each annotation of the given type returned by the image annotation + server, records the confidence (as a percentage) produced by the ML model + for the annotation. {ImageAnnotationServiceAnnotationType} + + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each annotation of the given type returned by the image annotation + server, records whether or not the text of the annotation was empty. This is + sometimes valid, e.g. for text extraction (OCR) on an image that does not + contain any text. {ImageAnnotationServiceAnnotationType} + + + + + + dtseng@chromium.org + amoylan@chromium.org + martis@chromium.org + + For each annotation backend run by the image annotation server, records the + gRPC status reported. {ImageAnnotationServiceAnnotationType} + + + + + + fgorski@chromium.org + wylieb@chromium.org + + The total number of metadata entries in the image fetcher cache metadata + database for a given cache strategy. Recorded during cache eviction process. + {ImageFetcherCacheStrategy} + + + + + + fgorski@chromium.org + wylieb@chromium.org + + The total size of the cache for a given cache strategy. Recorded during + cache eviction process. {ImageFetcherCacheStrategy} + + + + + + fgorski@chromium.org + wylieb@chromium.org + + Events that track the lifecycle and performance of the cached_image_fetcher. + The events reported include: success/failure conditions, various recoverable + errors and a couple of dead-end errors. {ImageFetcherClients} + + + + + + + + fgorski@chromium.org + wylieb@chromium.org + + The time it takes for cached_image_fetcher to load an image from the cache + in Java. {ImageFetcherClients} + + + + + + + + fgorski@chromium.org + wylieb@chromium.org + + The time it takes for cached_image_fetcher to load an image from the cache + in native. {ImageFetcherClients} + + + + + + + + fgorski@chromium.org + wylieb@chromium.org + + The time it takes for cached_image_fetcher to load an image from native + code. Only recorded on successful loads. {ImageFetcherClients} + + + + + + + + fgorski@chromium.org + wylieb@chromium.org + + The time it takes for cached_image_fetcher to load an image from the network + after a cache hit. {ImageFetcherClients} + + + + + + + + fgorski@chromium.org + wylieb@chromium.org + + The time it takes for cached_image_fetcher to load an image from the + network. {ImageFetcherClients} + + + + + + + + fgorski@chromium.org + wylieb@chromium.org + + The time it takes to load an image's metadata from the metadata store. + + + + + fgorski@chromium.org + wylieb@chromium.org + + Android: The integer status code of network requests made by the image data + fetcher. This code includes both protocol(1xx-5xx) and non-protocol(-xxx) + errors. Recorded when a request completes. {ImageFetcherClients} + + + + + + + + fgorski@chromium.org + wylieb@chromium.org + + The time since the last LRU eviction from the image cache. Recorded when two + LRU evictions occur within closure proximity to one another. Will be used to + determine if LRU eviction is happening too frequently. + + + + + tapted@chromium.org + src/ui/file_manager/OWNERS + + For each image load request that requested caching, records whether or not + it was found in the client-side cache. A hit means the request was not + forwarded to the ImageLoader extension. + + + + + tapted@chromium.org + src/ui/file_manager/OWNERS + + Returns the percentage of the client-side cache that is used for loading + images, before they are sent to the ImageLoader extension. Expressed as a + percentage of ImageLoaderClient.CACHE_MEMORY_LIMIT (e.g. 20MB). + + + + + tapted@chromium.org + src/ui/file_manager/OWNERS + + For each image load request records whether or not it requested caching. + + + + + + diff --git a/histograms/metadata/input/OWNERS b/histograms/metadata/input/OWNERS new file mode 100644 index 000000000000..a045a911f4d5 --- /dev/null +++ b/histograms/metadata/input/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +shend@chromium.org diff --git a/histograms/metadata/input/histograms.xml b/histograms/metadata/input/histograms.xml new file mode 100644 index 000000000000..26c9252e8592 --- /dev/null +++ b/histograms/metadata/input/histograms.xml @@ -0,0 +1,1761 @@ + + + + + + + + + + myy@chromium.org + essential-inputs-team@google.com + + The number of enabled input methods. Recorded when the user logs in to + Chrome OS or each cold start of Chrome on Android. The enabled input methods + are selected by user in the language settings page on Chrome OS and in + system language settings on Android. NOTE: 'Active' in the metric name is a + legacy misnomer; 'active' should refer to just the single current aka. + activated input method that is one of the enabled input methods whose total + count is being tracked by this metric. + + + + + jopalmer@google.com + essential-inputs-team@google.com + + The actions taken by assistive autocorrect, such as underlining a word. + Recorded after an action is performed. + + + + + jopalmer@google.com + essential-inputs-team@google.com + + The actions taken by assistive autocorrect, such as underlining a word. + Recorded after an action is performed when the Virtual Keyboard is visible. + + + + + myy@google.com + essential-inputs-team@google.com + + Tracks when assistive autocorrect is performed by a text input client. + Recorded when autocorrect is triggered by users with the feature enabled + using a text input client that's being tracked. + + + + + jopalmer@google.com + essential-inputs-team@google.com + + Tracks time between when autocorrect occurs and user clicks to undo the + autocorrect. + + + + + mehrab@google.com + essential-inputs-team@google.com + + The histogram records assistive autocorrect actions such as showing, + reverting, rejecting and accepting an autocorrect suggestion. The actions + are recorded after they are performed on Physical Keyboard inputs. + + + + + zacpartridge@google.com + essential-inputs-team@google.com + + The histogram records assistive autocorrect actions such as showing, + reverting, rejecting and accepting an autocorrect suggestion. The actions + are recorded after they are performed on Physical Keyboard inputs if + autocorrect was enabled by default. + + + + + mehrab@google.com + essential-inputs-team@google.com + + The histogram records assistive autocorrect actions such as showing, + reverting, rejecting and accepting an autocorrect suggestion. The actions + are recorded after they are performed on Virtual Keyboard inputs. + + + + + zacpartridge@google.com + essential-inputs-team@google.com + + This records the length of the original word alligned with distance between + the original and suggested new word in the form of a flattened 2d array. The + two variables are stored as '(length-1)*MAX_LENGTH + (distance-1)'. The data + is expected to be fairly sparse and it is guaranteed that all values will be + in the range (0, 1000) (assuming MAX_LENGTH is not increased over 31). The + metric is recorded once an autocorrect is accepted or rejected by user + interactions. + + + + + + + + + + + + + zacpartridge@google.com + essential-inputs-team@google.com + + This records the length of the word suggested by autocorrect. The metric is + recorded once an autocorrect is accepted or rejected by user interactions. + + + + + + + + + + + + + mehrab@google.com + essential-inputs-team@google.com + + The histogram records different internal states that autocorrect encounters + while physical keyboard is used. These states include errors such as bad + arguments, null input context, problems preventing from showing or hiding + undo window. Also, events such as accepting suggestion, rejecting + suggestion, showing/hiding/highlighting undo window, underlining suggestions + and handling autocorrect suggestions, focusing on a text field, bluring a + text field and having a suggestion in a text field. It recoreds the states + everytime that HandleAutocorrect, OnBlur, OnFocus, and + OnSurroundingTextChanged events are triggered while physical keyboard is + visible. + + + + + zacpartridge@google.com + essential-inputs-team@google.com + + The histogram records different internal states that autocorrect encounters + while physical keyboard is used. These states include errors such as bad + arguments, null input context, problems preventing from showing or hiding + undo window. Also, events such as accepting suggestion, rejecting + suggestion, showing/hiding/highlighting undo window, underlining suggestions + and handling autocorrect suggestions, focusing on a text field, bluring a + text field and having a suggestion in a text field. It recoreds the states + everytime that HandleAutocorrect, OnBlur, OnFocus, and + OnSurroundingTextChanged events are triggered while physical keyboard is + visible if autocorrect was enabled by default. + + + + + mehrab@google.com + essential-inputs-team@google.com + + The histogram records different internal states that autocorrect encounters + while virtual keyboard is used. These states include errors such as bad + arguments, null input context, problems preventing from showing or hiding + undo window. Also, events such as accepting suggestion, rejecting + suggestion, showing/hiding/highlighting undo window, underlining suggestion + and handling autocorrect suggestion, focusing on a text field, bluring a + text field and having a suggestion in a text field. It records the states + everytime that HandleAutocorrect, OnBlur, OnFocus, and + OnSurroundingTextChanged events are called while virtual keyboard is + visible. + + + + + mehrab@google.com + essential-inputs-team@google.com + + Tracks duration between providing an autocorrect suggestion to its + acceptance. It is recorded every time that an autocorrect suggestion is + implicitly accepted. + + + + + zacpartridge@google.com + essential-inputs-team@google.com + + Tracks duration between providing an autocorrect suggestion to its + acceptance. It is recorded every time that an autocorrect suggestion is + implicitly accepted if autocorrect was enabled by default. + + + + + mehrab@google.com + essential-inputs-team@google.com + + Tracks time between providing an autocorrect suggestion to exiting the text + field. It is recorded every time that a user leaves a text field while + having a pending autocorrect. + + + + + zacpartridge@google.com + essential-inputs-team@google.com + + Tracks time between providing an autocorrect suggestion to exiting the text + field. It is recorded every time that a user leaves a text field while + having a pending autocorrect if autocorrect was enabled by default. + + + + + mehrab@google.com + essential-inputs-team@google.com + + Tracks duration of pending autocorrect suggestions for physical keyboard + inputs. The duration is measured from the time of showing an autocorrect + underline to the time of clearing it. It is recorded every time that an + action such as reject, accept, exit field or an internal error resolves a + pending autocorrect suggestion for physical keyboard inputs. + + + + + mehrab@google.com + essential-inputs-team@google.com + + Tracks time between providing an autocorrect suggestion to its implicit + rejection or undone. It is recorded every time that an autocorrect + suggestion is implicitly rejected or undone. + + + + + mehrab@google.com + essential-inputs-team@google.com + + Tracks time between providing an autocorrect suggestion to its implicit + rejection or undone. It is recorded every time that an autocorrect + suggestion is implicitly rejected or undone if autocorrect was enabled by + default. + + + + + mehrab@google.com + essential-inputs-team@google.com + + Tracks duration of pending autocorrect suggestions for virtual keyboard + inputs. The duration is measured from the time of showing an autocorrect + underline to the time of clearing it. It is recorded every time that an + action such as reject, accept, exit field or an internal error resolves a + pending autocorrect suggestion for virtual keyboard inputs. + + + + + mehrab@google.com + essential-inputs-team@google.com + + This histogram records the value of the user's physical keyboard autocorrect + preference once when an input method is activated. The metric is broken down + into two extra buckets, English and All languages. When a user has an + english based input method enabled, the metric will be recorded twice, once + for the English bucket and once for the All bucket. All other input methods + will be recorded once in the All bucket. + + + + + + + + + mehrab@google.com + essential-inputs-team@google.com + + The histogram records charactersitics of original text and suggested text + for an accepted autocorrect suggestion on Virtual Keyboard. These + measurements highlight the changes applied by autocorrect on the original + text such as changing accent, lower casing, capitalizing or mutating + characters. It records everytime that an autocorrect suggestion is accepted + by user interactions. + + + + + mehrab@google.com + essential-inputs-team@google.com + + The histogram records charactersitics of original text and suggested text + for an accepted autocorrect suggestion on Virtual Keyboard. These + measurements highlight the changes applied by autocorrect on the original + text such as changing accent, lower casing, capitalizing or mutating + characters. It records everytime that an autocorrect suggestion is accepted + by user interactions if autocorrect was enabled by default. + + + + + mehrab@google.com + essential-inputs-team@google.com + + The histogram records charactersitics of original text and suggested text + for a rejected autocorrect suggestion on Virtual Keyboard. These + measurements highlight the changes applied by autocorrect on the original + text such as changing accent, lower casing, capitalizing or mutating + characters. It records everytime that an autocorrect suggestion is rejected + or undone by user interactions. + + + + + mehrab@google.com + essential-inputs-team@google.com + + The histogram records charactersitics of original text and suggested text + for a rejected autocorrect suggestion on Virtual Keyboard. These + measurements highlight the changes applied by autocorrect on the original + text such as changing accent, lower casing, capitalizing or mutating + characters. It records everytime that an autocorrect suggestion is rejected + or undone by user interactions if autocorrect was enabled by default. + + + + + mehrab@google.com + essential-inputs-team@google.com + + The histogram records charactersitics of original text and suggested text + for an accepted autocorrect suggestion on Virtual Keyboard. These + measurements highlight the changes applied by autocorrect on the original + text such as changing accent, lower casing, capitalizing or mutating + characters. It records everytime that an autocorrect suggestion is accepted + by user interactions. + + + + + mehrab@google.com + essential-inputs-team@google.com + + The histogram records charactersitics of original text and suggested text + for a rejected autocorrect suggestion on Virtual Keyboard. These + measurements highlight the changes applied by autocorrect on the original + text such as changing accent, lower casing, capitalizing or mutating + characters. It records everytime that an autocorrect suggestion is rejected + or undone by user interactions. + + + + + zacpartridge@google.com + essential-inputs-team@google.com + + The histogram records the different interactions used to reject or revert an + autocorrect suggestion. These interactions include selecting undo with or + without the keyboard or deleting some or all of the word. + + + + + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + This metric is recorded whenever a user focuses on a new text input and the + IME service is connected and ready to provide autocorrect suggestions. This + is only recorded once per input focused. + + + + + zacpartridge@google.com + essential-inputs-team@google.com + + This histogram is recorded when the learn more button is shown in a unique + undo window. The button will only be shown on the first 10 undo windows for + each user. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + This histogram is recorded whenever the user changes their preference for + the autocorrect level enabled. Metrics are split between VK and PK, and + English versus non English languages. + + + + + + + + + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + DEPRECATED: This metric name is incorrect and deviates from the string used + when recorded in code. To save the data emitted from clients we add a new + metric below with the correct string. This histogram is recorded whenever + the user changes their preference for the autocorrect level enabled. Metrics + are split between VK and PK, and English versus non English languages. + + + + + + + + + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + Records the time taken to generate multi word suggestions candidates. The + metric is recorded after a request for candidates has been resolved by the + machine learning service. + + + + + jiwan@google.com + essential-inputs-team@google.com + + The number of times each assistive action is triggered. Recorded when + assistive actions are triggered. + + + + + jiwan@google.com + essential-inputs-team@google.com + + The number of times each assistive action could be triggered according to + the surrounding text but was not triggered because the user turned off the + feature. Recorded when the surrounding text could trigger assistive actions + but the corresponding feature was disabled. + + + + + myy@google.com + essential-inputs-team@google.com + + The reason for emoji suggestions not being shown to users. Recorded when the + surrounding text could trigger emoji suggestions but the feature was + disabled. Only the first applicable reason in IMEAssistiveDisabledReason + enum is recorded per occurrence. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + The reason for multi word suggestions not being shown to users. Recorded + when the surrounding text could trigger multi word suggestions but the + feature was disabled. Only the first applicable reason in + IMEAssistiveDisabledReason enum is recorded per occurrence. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + Records the accuracy of a suggestion that was dismissed by the user. + Accuracy is measured as the number of chars correctly predicted by the + suggestion, divided by the total number of chars in the suggestion. This is + recorded when the user dismisses the suggestion. + + + + + myy@google.com + essential-inputs-team@google.com + + The number of times an emoji suggest addition is accepted at a given index. + Recorded when an user accepts an emoji suggestion appeared after typing an + emoji-triggered word. + + + + + jiwan@google.com + essential-inputs-team@google.com + + The actions taken by on-device grammar checker, such as underlining a word. + Recorded after a grammar checker action is performed. + + + + + + Removed in M100. + + jiwan@google.com + essential-inputs-team@google.com + + The actions taken by on-device grammar checker, such as underlining a word. + Recorded after a grammar checker action is performed and the suggestion is + only correcting the capitalization of the text. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + Tracks when assistive grammar is performed by a text input client. Recorded + when grammar is triggered by users with the feature enabled using a text + input client that's being tracked. + + + + + jiwan@google.com + essential-inputs-team@google.com + + The number of times each assistive action could be triggered but there is + insufficient data to generate the suggestion. Recorded when we failed to + generate suggestions because of insufficient data. + + + + + jiwan@google.com + essential-inputs-team@google.com + + The number of times each assistive action could be triggered according to + the surrounding text. This includes cases in InputMethod.Assistive.Coverage, + and also includes cases when the feature is turned off or there is + insufficient data. Recorded when the surrounding text could trigger + assistive actions. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + This records when a candidate generation response is returned from the multi + word suggestion engine and the response contains some candidates. This is + recorded exactly once per response. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + DEPRECATED, please see + InputMethod.Assistive.MultiWord.SuggestionOpportunity. This histogram + records when the current text context could possibly show a suggestion. This + does not necessarily mean a suggestion was shown, only that the current text + context fulfills all constraints needed to trigger an attempt to generate + and display suggestions. It is recorded exactly once per surrounding text + update. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + This metric is recorded when a user implicitly accepts a multi word + suggestion that is shown to them. Implicit acceptance here means the user + has fully typed the suggestion shown to them, without explicitly accepting + the suggestion through the ui shown. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + This metric is recorded when a user implicitly rejects a multi word + suggestion that is shown to them. Implicit rejection here means the user has + typed some text that does not match the suggestion shown to them. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + This records the state of an assistive feature in relation to a particular + input field. The feature could be enabled or disabled for a number of + reasons and this metric captures that information. The metric is recorded + once when a user focuses on a new input field. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + This records the preceding text given in a request to generate candidates + from the multi word suggestion engine. It is recorded exactly once per + request. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + This records when a request to generate suggestion candidates is made to the + multi word suggestion engine. It records the type of suggestion requested. + It is recorded exactly once per request. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + This records the length of a multi word suggestion shown to a user in chars. + The metric is recorded once when a suggestion visually appears in front of a + user. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + This histogram records when the current text context could possibly show a + suggestion. This does not necessarily mean a suggestion was shown, only that + the current text context fulfills all constraints needed to trigger an + attempt to generate and display suggestions. It is recorded exactly once per + surrounding text update. + + + + + jiwan@google.com + essential-inputs-team@google.com + + The number of times each assistive action could be triggered but is blocked + because the text is not in the allowed websites or apps. Recorded when the + assistive action is blocked because the text is not in the allowed websites + or apps. + + + + + jiwan@google.com + essential-inputs-team@google.com + + The number of times each assistive action is accepted. Recorded when + assistive actions are accepted by the users. + + + + + + Removed in M100. + + myy@google.com + essential-inputs-team@google.com + + The duration from when emoji suggestions show up to when users accept a + suggestion. Recorded when users accept the suggestion. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + The duration from when a multi word suggestion is shown to a user, to the + time the user accepts that suggestion. The metric is recorded when the user + accepts the suggestion. + + + + + + Removed in M100. + + myy@google.com + essential-inputs-team@google.com + + The duration from when emoji suggestions show up to when users dismiss a + suggestion. Recorded when users dismiss the suggestion. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + The duration from when a multi word suggestion is shown to a user, to the + time the user dimisses that suggestion. The metric is recorded when the user + dismisses the suggestion. + + + + + myy@google.com + essential-inputs-team@google.com + + The user's preference for emoji suggestions. Recorded when + AssistiveSuggester is initialised. "Enabled" is logged as the + default value if the user didn't explicitly set it. + + + + + curtismcmullan@google.com + essential-inputs-team@google.com + + The user's preference for predictive writing suggestions. Recorded when the + user is logged in and the AssistiveSuggester is initialised. + "Enabled" is logged as the default value if the user didn't + explicitly set it. + + + + + jhtin@google.com + essential-inputs-team@google.com + + The user's preference for diacritics. Recorded when the user is logged in + and the AssistiveSuggester is initialised. "Enabled" is logged as + the default value if the user didn't explicitly set it. + + + + + shend@chromium.org + essential-inputs-team@google.com + The auto-correction level for suggestion engine. + + + + shend@chromium.org + essential-inputs-team@google.com + + The breakdown of input method usage by input method category. Recorded when + the system changes the current input method. + + + + + keithlee@chromium.org + essential-inputs-team@google.com + + Number of characters entered in a single user session on ChromeOS. A user + session consists of a user typing 10+ characters for 1+ seconds where there + is no period of time where the user is inactive for more than 3 seconds for + the input type. This gets recorded when we detect user input and it has been + more than 3 seconds since the last input by the user and also when a change + in the Engine or Text field selected is detected. + + + + + + + + + + shend@chromium.org + essential-inputs-team@google.com + + The suggestion index (1-based) of the suggestion list item which user + chooses to commit. + + + + + dvallet@chromium.org + shuchen@chromium.org + essential-inputs-team@google.com + + The suggestion accuracy type which the user chooses to commit. + + + + + dvallet@chromium.org + shuchen@chromium.org + essential-inputs-team@google.com + The number of characters committed with composition text. + + + + lanwei@chromium.org + siliu@microsoft.com + + Whether the composition is composed by IMM32-based input method processor + when TSF is disabled on Windows. Recorded when user starts new composition. + + + + + shend@chromium.org + essential-inputs-team@google.com + + Types of actions performed by the user during handwriting, recorded when the + user performs a gesture action. + + + + + curtismcmullan@chromium.org + essential-inputs-team@google.com + + The index of the selected suggestion from the handwriting alternative + suggestion menu. This metric is recorded when the handwriting text + highlighted is multiple words, and the selected suggestion is a single word. + + + + + curtismcmullan@chromium.org + essential-inputs-team@google.com + + The index of the selected suggestion from the handwriting alternative + suggestion menu. The metric is recorded when the suggestion is selected. + + + + + curtismcmullan@chromium.org + essential-inputs-team@google.com + + The index of the selected suggestion from the handwriting alternative + suggestion menu. This metric is recorded when the handwriting text + highlighted is a single word, and the selected suggestion is mutliple words. + + + + + shend@chromium.org + essential-inputs-team@google.com + + Number of characters written in a 10 second interval, recorded every 10s + while the handwriting keyboard is active. + + + + + shend@chromium.org + essential-inputs-team@google.com + + Number of characters written in a 5 second interval, recorded every 5s while + the handwriting keyboard is active. + + + + + shend@chromium.org + essential-inputs-team@google.com + + Number of characters written in a 60 second interval, recorded every 60s + while the handwriting keyboard is active. + + + + + curtismcmullan@chromium.org + essential-inputs-team@google.com + + The number of milliseconds taken to load the language model required for the + handwriting input method. Recorded every time a new language model is loaded + for the handwriting input method. + + + + + curtismcmullan@chromium.org + essential-inputs-team@google.com + + The state of the requested language pack on initialization of the required + handwriting service connection. Recorded once whenever a new handwriting + service connection is requested. + + + + + tranbaoduy@chromium.org + shuchen@chromium.org + essential-inputs-team@google.com + + Breakdown of input method usage by input method IDs. Recorded for an input + method ID when the system's 'active input method' is switched to the input + method with that ID. Note: In this context, 'input method ID' refers to the + 'global' input method IDs, i.e. tuple of the extension ID the input method + belongs to and the extension-local ID of the input method. + + + + + dvallet@chromium.org + azurewei@chromium.org + shuchen@chromium.org + essential-inputs-team@google.com + + The number of times users click emoji, handwriting or voice button in opt-in + IME menu. + + + + + dvallet@chromium.org + timloh@chromium.org + essential-inputs-team@google.com + The trigger type of input method switches by user. + + + + shend@chromium.org + essential-inputs-team@google.com + Time taken by the engine to handle a key event. + + + + shend@chromium.org + essential-inputs-team@google.com + The result of the user pressing the mode change key. + + + + googleo@chromium.org + essential-inputs-team@google.com + The events of Mojo service in the IME Extension. + + + + flackr@chromium.org + shawnpi@microsoft.com + + Records for each horizontal mouse wheel event the Windows system setting for + number of characters to horizontally scroll for each wheel tick. Used to + determine how this system setting impacts scroll velocity. + + + + + flackr@chromium.org + shawnpi@microsoft.com + + Records for each vertical mouse wheel event the Windows system setting for + number of lines to vertically scroll for each wheel tick. Used to determine + how this system setting impacts scroll velocity. + + + + + tranbaoduy@google.com + essential-inputs-team@google.com + + Same as InputMethod.Assistive.Autocorrect.Actions but only recorded for CrOS + 1P experimental multilingual input methods. + + + + + tranbaoduy@google.com + essential-inputs-team@google.com + + Same as InputMethod.Assistive.Autocorrect.Count but only recorded for CrOS + 1P experimental multilingual input methods. + + + + + tranbaoduy@google.com + essential-inputs-team@google.com + + Same as InputMethod.Assistive.Autocorrect.Delay but only recorded for CrOS + 1P experimental multilingual input methods. + + + + + tranbaoduy@google.com + essential-inputs-team@google.com + + Same as InputMethod.MultilingualExperiment.Autocorrect.Actions but only + recorded for diacritical autocorrects. + + + + + tranbaoduy@google.com + essential-inputs-team@google.com + + Diacritic status of non-autocorrected user-typed words. Recorded when the + user finishes typing a word. Only recorded for CrOS 1P experimental + multilingual input methods. + + + + + myy@chromium.org + essential-inputs-team@google.com + + Whether next word prediction is enabled for a user. Recorded when a specific + language settings page is updated or when the input extension is activated. + + + + + keithlee@chromium.org + essential-inputs-team@google.com + + Action performed on IME startup with respect to Japanese data. This will + primarily be used to indicate if a user has migrated their data for JP SYS + PK or not. + + + + + wbjacksonjr@chromium.org + embedded-experience@google.com + + Keyboard shortcut performed by user on physical IME. This signal should only + be sent on key down. + + + + + shend@chromium.org + essential-inputs-team@google.com + + Action performed on the Korean IME. Recorded whenever one of the actions is + performed. + + + + + shend@chromium.org + essential-inputs-team@google.com + + The layout used by the Korean IME. Recorded when the user focuses on a new + input field. + + + + + shend@chromium.org + essential-inputs-team@google.com + + Whether multiple syllables is enabled by the Korean IME. Recorded when the + user focuses on a new input field. + + + + + jhtin@chromium.org + essential-inputs-team@google.com + + The unicode character code for the diacritic and character variant accepted + by a user using longpress diacritics on physical keyboard. + + + + + jhtin@chromium.org + essential-inputs-team@google.com + + Action related to the longpress diacritics window on physical keyboard. + These actions are recorded in LongpressDiacriticsSuggester functions: + SHOW_WINDOW in TrySuggestOnLongpress, ACCEPT in AcceptSuggestion, and + DISMISS in DismissSuggestion. + + + + + shend@chromium.org + essential-inputs-team@google.com + + The suggestion index (1-based) of the suggestion list item which user + chooses to commit for physical keyboard autocorrect. + + + + + dvallet@chromium.org + shuchen@chromium.org + essential-inputs-team@google.com + + The suggestion accuracy type which the user chooses to commit for physical + keyboard autocorrect. + + + + + keithlee@chromium.org + essential-inputs-team@google.com + + The average length of user sessions on ChromeOS. This can be combined with + characters per session to determine characters per minute. A user session + consists of a user typing 10+ characters for 1+ seconds where there is no + period of time where the user is inactive for more than 3 seconds. This gets + recorded when we detect user input and it has been more than 3 seconds since + the last input by the user and also when a change in the Engine or Text + field selected is detected. + + + + + peconn@chromium.org + embedded-experience@google.com + + Recorded when a user on Android is interacting with a text field using a + stylus device and the IME recognises that interaction as a gesture (such as + selecting or deleting text). + + + + + alexmitra@chromium.org + embedded-experience@google.com + + Records the result of a gesture which is sent back to Android. + + + + + alexmitra@chromium.org + embedded-experience@google.com + + The time taken to process and complete a gesture. More specifically, the + time between being sent a gesture from Android and getting the gesture + result from Blink. This is recorded once per gesture. + + + + + peconn@chromium.org + embedded-experience@google.com + + When an Android user is interacting with a text field using a stylus and + there is an available API on the device, we trigger stylus handwriting. This + histogram records which API is available (plain Android or DirectWriting) + and when it is triggered. + + + + + jopalmer@chromium.org + essential-inputs-team@google.com + + Time between when emoji picker shown and when the emoji is inserted + + + + + jopalmer@chromium.org + essential-inputs-team@google.com + + Time between when emoji picker is opened and when UI is completely loaded. + Used to monitor performance of emoji picker. Recorded once the ChromeOS + emoji picker finishes loading. + + + + + jopalmer@chromium.org + essential-inputs-team@google.com + + Length of search string in emoji picker when emoji was inserted. + + + + + jopalmer@chromium.org + essential-inputs-team@google.com + How emojis were inserted. + + + + shend@chromium.org + essential-inputs-team@google.com + + The number of times the backspace key was pressed on the virtual keyboard, + while the virtual keyboard was alive. Recorded when the virtual keyboard is + closed. + + + + + shend@chromium.org + essential-inputs-team@google.com + + Chrome OS histogram that counts the number of times the cursor was moved to + the previous word by swiping backwards on the selection track. The count is + initialized when the user starts swiping from any side of the virtual + keyboard, incremented based on how far they swipe backwards on the selection + track, and recorded when they release their finger. + + + + + shend@chromium.org + essential-inputs-team@google.com + + The total number of characters committed. Recorded when the virtual keyboard + is closed. + + + + + keithlee@chromium.org + essential-inputs-team@google.com + + Typing speed in each user session on ChromeOS when using the virtual + keyboard. A user session consists of a user typing 10+ characters for 1+ + seconds where there is no period of time where the user is inactive for more + than 3 seconds. This gets recorded when we detect user input and it has been + more than 3 seconds since the last input by the user and also when a change + in the Engine or Text field selected is detected. + + + + + + + + + + keithlee@chromium.org + essential-inputs-team@google.com + + Number of characters entered in a single user session on ChromeOS when using + the virtual keyboard. A user session consists of a user typing 10+ + characters for 1+ seconds where there is no period of time where the user is + inactive for more than 3 seconds. This gets recorded when we detect user + input and it has been more than 3 seconds since the last input by the user + and also when a change in the Engine or Text field selected is detected. + + + + + + + + + + shend@chromium.org + essential-inputs-team@google.com + + Chrome OS histogram that counts the number of times each virtual keyboard + display mode is used. Recorded when the virtual keyboard is opened or a user + changes the keyboard mode from UI in the virtual keyboard. + + + + + shend@chromium.org + essential-inputs-team@google.com + + Chrome OS histogram that counts events from the decoder triggered by the + virtual keyboard. + + + + + shend@chromium.org + essential-inputs-team@google.com + How long the virtual keyboard was visible. + + + + jopalmer@chromium.org + essential-inputs-team@google.com + + Time between when emoji shown in VK and when the emoji is inserted. + + + + + shend@chromium.org + essential-inputs-team@google.com + How emojis were inserted. + + + + shend@chromium.org + essential-inputs-team@google.com + Errors from the virtual keyboard extension + + + + shend@chromium.org + essential-inputs-team@google.com + + Whether an input field was focused by a stylus or not. Recorded when an + input field is focused. + + + + + curtismcmullan@chromium.org + essential-inputs-team@google.com + + What kind of commit method was used when text was committed to an input from + the handwriting input method in the virtual keyboard. + + + + + alexmitra@chromium.org + peconn@chromium.org + + Logs true if an unsuccessful attempt was made to instantiate the + DirectWritingServiceCallback. Logs false when DirectWriting is successfully + enabled in Chrome. This is to gauge how often crbug/1375266 is being + encountered. + + + + + curtismcmullan@chromium.org + essential-inputs-team@google.com + + What type of container was the virtual keyboard in when text was committed + from the handwriting input method. + + + + + curtismcmullan@chromium.org + essential-inputs-team@google.com + + How wide was the keyboard container when text was committed from the + handwriting input method. + + + + + jopalmer@chromium.org + essential-inputs-team@google.com + + Time to show the on-screen keyboard in milliseconds. Similar to + InputMethod.VirtualKeyboard.KeyboardShown but with a larger maximum to + capture more of the distribution. + + + + + shend@chromium.org + essential-inputs-team@google.com + + The on-screen keyboard initialization latency in milliseconds. + {IMEVKLatency} + + + + + + + + + + + + + + shend@chromium.org + essential-inputs-team@google.com + + The layout of the on-screen keyboard. Logged when the specific layout is + shown. + + + + + dvallet@google.com + essential-inputs-team@google.com + + The count of layout switching actions while virtual keyboard is alive. + Recorded when the virtual keyboard window is hidden or destroyed. + + + + + shend@chromium.org + essential-inputs-team@google.com + + Chrome OS histogram that counts the number of times the cursor was moved to + the next word by swiping forward on the selection track. The count is + initialized when the user starts swiping from any side of the virtual + keyboard, incremented based on how far they swipe forwards on the selection + track, and recorded when they release their finger. + + + + + jiwan@chromium.org + essential-inputs-team@google.com + + The user actions taken in multipaste virtual keyboard, such as pasting a + clipboard item. Recorded after a user action is performed in multipaste + virtual keyboard. + + + + + michellegc@google.com + essential-inputs-team@google.com + + The number of times each type of multitouch behavior is triggered. Recorded + when a touch event occurs while another key is held down. + + + + + jopalmer@chromium.org + essential-inputs-team@google.com + + Type of action performed by the user in Paprika. Recorded when the action is + performed. Only for Chrome OS + + + + + jopalmer@chromium.org + essential-inputs-team@google.com + + Did the user start handwriting in Paprika after dismissing the Edu dialog? + Recorded when Paprika is closed. + + + + + shend@chromium.org + essential-inputs-team@google.com + + The layout of the virtual keyboard that is shown when the user focuses on an + input field with a stylus. Recorded when the layout is shown after a focus. + + + + + curtismcmullan@chromium.org + essential-inputs-team@google.com + + The width of the virtual keyboard window, in pixels, when the floating + keyboard is initialized. This is recorded only once on startup, when the + virtual keyboard is initialized in floating mode. + + + + + curtismcmullan@chromium.org + essential-inputs-team@google.com + + The width of the virtual keyboard window, in pixels, after a user has + completed resizing the virtual keyboard. This is recorded when the user + lifts their finger at the end of a drag that initiates a resize. + + + + + keithlee@chromium.org + essential-inputs-team@google.com + + The average length of user sessions on ChromeOS when using the virtual + keyboard. This can be combined with characters per session to determine NSM. + A user session consists of a user typing 10+ characters for 1+ seconds where + there is no period of time where the user is inactive for more than 3 + seconds. This gets recorded when we detect user input and it has been more + than 3 seconds since the last input by the user and also when a change in + the Engine or Text field selected is detected. + + + + + shend@chromium.org + essential-inputs-team@google.com + + The count of user actions to switch keyboard mode (floating, docked). + Recorded when the user clicks in the docked/floating keyboard menu option. + + + + + shend@chromium.org + essential-inputs-team@google.com + + Chrome OS histogram that tracks the total number of words that were deleted + by swiping forward on the deletion track. The count is initialized when the + user starts swiping on the backspace key, incremented based on how far they + swipe forwards on the deletion track, and recorded when they release their + finger. + + + + + shend@chromium.org + essential-inputs-team@google.com + + Chrome OS histogram that tracks the total number of words that were restored + by swiping backwards on the deletion track. The count is initialized when + the user starts swiping on the backspace key, incremented based on how far + they swipe backwards on the deletion track, and recorded when they release + their finger. + + + + + + + + Removed in M108. + + bokan@chromium.org + input-dev@chromium.org + + Tracks the proportion of non-mobile optimized (i.e. zoom disabled or layout + width matches viewport) page views that had a user-initiated page scale + (e.g. pinch-zoom, double-tap). Recorded on navigation to a new page - on + Android only. + + + + + + Removed in M108. + + bokan@chromium.org + input-dev@chromium.org + + Tracks the maximum scale factor that a user has scaled to over the lifetime + of the page. The scale is counted at pinch end (e.g. zooming to 300% and + back out to 150% in one gesture would count as 150%). Reported only on + non-mobile optimized pages (i.e. zoom disabled or layout width matches + viewport) which have had a page scale changing gesture. Recorded on + navigation to a new page - on Android only. + + + + + bokan@chromium.org + input-dev@chromium.org + + The viewport meta tag type seen on each page load. Only recorded on Android. + Recorded when the page finishes loading. + + + + + + diff --git a/histograms/metadata/installer/histograms.xml b/histograms/metadata/installer/histograms.xml new file mode 100644 index 000000000000..1d32bf07cf4c --- /dev/null +++ b/histograms/metadata/installer/histograms.xml @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + zeuthen@chromium.org + Errors from update_engine process when running in dev mode. + + + + tbrandston@google.com + chromeos-flex-eng@google.com + + The firmware+bootloader type targeted when installing/updating. + + The main intent is to see distribution of EFI/Legacy on boards where those + types are both supported. + + This is reported early in postinstall, only on ChromeOS, and only when + USE=postinst_metrics. There's also an increased risk of losing metrics + recorded in postinstall, see: + https://source.chromium.org/chromiumos/chromiumos/codesearch/+/main:src/platform2/installer/docs/postinst_metrics.md + + + + + tbrandston@google.com + chromeos-flex-eng@google.com + + Total number of EFI Boot* entries seen during postinstall, before making any + modifications. + + Growth in higher buckets across releases warrants additional investigation: + are we accidentally creating excess entries? + + This is reported during postinstall, only on ChromeOS, and only when + USE=postinst_metrics. There's also an increased risk of losing metrics + recorded in postinstall, see: + https://source.chromium.org/chromiumos/chromiumos/codesearch/+/main:src/platform2/installer/docs/postinst_metrics.md + + + + + tbrandston@google.com + chromeos-flex-eng@google.com + + The number of EFI Boot* entries that we couldn't load. + + We have seen bugs result in failure to read entries. + + This is reported during postinstall, only on ChromeOS, and only when + USE=postinst_metrics. There's also an increased risk of losing metrics + recorded in postinstall, see: + https://source.chromium.org/chromiumos/chromiumos/codesearch/+/main:src/platform2/installer/docs/postinst_metrics.md + + + + + tbrandston@google.com + chromeos-flex-eng@google.com + + Event of interest from EFI boot entry management. Intended mainly to asses + the frequency of various expected-to-be-rare errors or uncommon occurrances. + + This is reported in multiple, potentially-overlapping places, so the total + number of events is not necessarily meaningful. Instead look at the count of + individual buckets over time. + + This is reported during postinstall, only on ChromeOS, and only when + USE=postinst_metrics. There's also an increased risk of losing metrics + recorded in postinstall, see: + https://source.chromium.org/chromiumos/chromiumos/codesearch/+/main:src/platform2/installer/docs/postinst_metrics.md + + + + + tbrandston@google.com + chromeos-flex-eng@google.com + + Number of EFI Boot* entries seen during postinstall that match our + label/description. + + Any values greater than 1 are potentially concerning, as we try to enforce + just one. + + This is only reported if all entries load successfully, because otherwise + our count may be invalid. + + This is reported during postinstall, only on ChromeOS, and only when + USE=postinst_metrics. There's also an increased risk of losing metrics + recorded in postinstall, see: + https://source.chromium.org/chromiumos/chromiumos/codesearch/+/main:src/platform2/installer/docs/postinst_metrics.md + + + + + tbrandston@google.com + chromeos-flex-eng@google.com + + Success or Failure of special handling for BiosType: {BiosType}. + + This doesn't indicate overall success or failure of postinstall on these + systems. + + This is reported after making changes to the EFI System Partition, only on + ChromeOS, and only when USE=postinst_metrics. There's also an increased risk + of losing metrics recorded in postinstall, see: + https://source.chromium.org/chromiumos/chromiumos/codesearch/+/main:src/platform2/installer/docs/postinst_metrics.md + + + + + + + + + + + + nicholasbishop@google.com + chromeos-flex-eng@google.com + + Result of running the Reven (ChromeOS Flex) partition migration. + + This is reported at the end of the partition migration, which is run during + postinstall. The migration is only run with USE=reven_partition_migration. + + Note that some metrics may be lost during postinstall, see: + https://source.chromium.org/chromiumos/chromiumos/codesearch/+/main:src/platform2/installer/docs/postinst_metrics.md + + + + + kimjae@chromium.org + chromeos-core-services@chromium.org + + The number of times a Chrome OS device has been powerwashed (factory reset) + without subsequently going through recovery and/or changing the dev mode + switch. Reported once after each powerwash. + + + + + qianwan@google.com + chromeos-data@google.com + + How many calendar(UTC) days that powerwash occurred before the date that the + metric is recorded. The histogram is recorded on the next restart after + powerwash. The purpose of this metric is to get the date when the powerwash + happened. This histogram is 1 based instead of 0 based and 1 means the + device was restarted immediately after powerwash completed. The value for + marjority cases is 1, but some edge cases may greater than 1 which means the + device was shutdown immediately (by user manually) after the powerwash + completed and then restarted more than 1 days later. The powerwash date and + the metric recorded date are all get from client device. + + + + + yuanpengni@chromium.org + chromeos-core-services@google.com + + The duration in minutes for the network based recovery to complete. + + This is reported on reboot after a successful recovery. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The reason for entering recovery mode immediately prior to a recovery. + + This is reported on reboot after a successful recovery. + + This metric is specific to Chrome OS. + + + + + + diff --git a/histograms/metadata/interstitial/OWNERS b/histograms/metadata/interstitial/OWNERS new file mode 100644 index 000000000000..c263bb3615fd --- /dev/null +++ b/histograms/metadata/interstitial/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +cthomp@chromium.org diff --git a/histograms/metadata/interstitial/histograms.xml b/histograms/metadata/interstitial/histograms.xml new file mode 100644 index 000000000000..bb652cd094dd --- /dev/null +++ b/histograms/metadata/interstitial/histograms.xml @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + meacer@chromium.org + michaeldo@chromium.org + + User action when the user is shown a captive portal error page. NOTE: Metric + was expired from M85 to M97. + + + + + domfc@chromium.org + snehanagpaul@google.com + dpr-eng@google.com + + Records when a user is blocked from visiting a site as per admin rules in an + enterprise managed browser. + + + + + domfc@chromium.org + snehanagpaul@google.com + dpr-eng@google.com + + Records when a user is blocked from visiting a site as per admin rules in an + enterprise managed browser and the user tries to access it again. + + + + + domfc@chromium.org + snehanagpaul@google.com + dpr-eng@google.com + + Records when a user interacts with a blocking page shown for a url that + doesn't comply with admin rules. + + + + + domfc@chromium.org + snehanagpaul@google.com + dpr-eng@google.com + + Records when a user is shown a warning while visiting a site that doesn't + comply with thadmin rules in an enterprise managed browser. + + + + + domfc@chromium.org + snehanagpaul@google.com + dpr-eng@google.com + + Records when a user revisits a page they were warned about for not complying + with the admin rules in an enterprise managed browser. + + + + + domfc@chromium.org + snehanagpaul@google.com + dpr-eng@google.com + + Records when a user interacts with a warning page shown for a url that + doesn't comply with admin rules. + + + + + + + estark@chromium.org + carlosil@chromium.org + + Possible non-attack causes of the non-overridable SSL interstitial. Many + errors are not reported in this histogram and new errors may be added over + time, therefore one should not look at the breakdown of this histogram (one + bucket divided by the sum) because that will be inaccurate. Instead, one + should look at each bucket count divided by the count of the ssl errors of + that type. E.g. WWW mismatch is recorded only when the ssl error is + CERT_COMMON_NAME_INVALID, so one should look at the bucket count of WWW + mismatch divided by the bucket count of CERT_COMMON_NAME_INVALID in the + histogram interstitial.ssl_error_type. + + + + + + + estark@chromium.org + carlosil@chromium.org + + Possible non-attack causes of the overridable SSL interstitial. Many errors + are not reported in this histogram and new errors may be added over time, + therefore one should not look at the breakdown of this histogram (one bucket + divided by the sum) because that will be inaccurate. Instead, one should + look at each bucket count divided by the count of the ssl errors of that + type. E.g. WWW mismatch is recorded only when the ssl error is + CERT_COMMON_NAME_INVALID, so one should look at the bucket count of WWW + mismatch divided by the bucket count of CERT_COMMON_NAME_INVALID in the + histogram interstitial.ssl_error_type. + + + + + + + carlosil@chromium.org + security-enamel@chromium.org + + Specifies when a user enters the page info menu whether or not the user + pressed the SSL decisions revoke button. This is logged when the page info + UI is closed, only if the button was visible in the page info. + + + + + + + meacer@chromium.org + carlosil@chromium.org + estark@chromium.org + The type of action that the SSL error handler takes. + + + + + + estark@chromium.org + carlosil@chromium.org + + The type of SSL error that the user encounters. This is recorded for all SSL + warnings, regardless of whether they are overridable. + + + + + + + estark@chromium.org + carlosil@chromium.org + chrome-counter-abuse-alerts@google.com + + User decision when presented with a security interstitial. As of M44, + subresource interstitials were split into their own entries. As of M52, + social_engineering_ads* and social_engineering_landing* interstitial reasons + are split into their own entries from phishing*. As of M90, + social_engineering_ads* and social_engineering_landing* interstitial reasons + have been removed because they don't trigger interstitials. + + This metric is used to populate a dashboard on go/crsb-site. + {SecurityInterstitialLookalikeType} + + + + + + + + + + carlosil@chromium.org + security-enamel@chromium.org + + User decision when presented with a security interstitial, on a site that + the user had previously visited. As of M44, subresource interstitials were + split into their own entries. As of M52, social_engineering_ads* and + social_engineering_landing* interstitial reasons are split into their own + entries from phishing*. As of M90, social_engineering_ads* and + social_engineering_landing* interstitial reasons have been removed because + they don't trigger interstitials. {SecurityInterstitialLookalikeType} + + + + + + + + + + estark@chromium.org + carlosil@chromium.org + + User interactions with a security interstitial. As of M44, subresource + interstitials were split into their own entries. As of M52, + social_engineering_ads* and social_engineering_landing* interstitial reasons + are split into their own entries from phishing*. As of M90, + social_engineering_ads* and social_engineering_landing* interstitial reasons + have been removed because they don't trigger interstitials. + {SecurityInterstitialLookalikeType} + + + + + + + + meacer@chromium.org + trusty-transport@chromium.org + + Events for upgrading Default Omnibox Navigations to HTTPS feature. Recorded + when a navigation is started by typing a domain name without a scheme and + the URL is defaulted to HTTPS instead of HTTP. + + + + + + diff --git a/histograms/metadata/invalidation/histograms.xml b/histograms/metadata/invalidation/histograms.xml new file mode 100644 index 000000000000..e5aa9eb0286d --- /dev/null +++ b/histograms/metadata/invalidation/histograms.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + melandory@chromium.org + treib@chromium.org + Net error codes for failed subscription requests. + + + + + + melandory@chromium.org + treib@chromium.org + + Status of the message from the FCM channel. Recorded upon receiving response + from the FCM channel. {FCMInvalidationSenders} + + + + + + + + + + + + + melandory@chromium.org + treib@chromium.org + + Status of the initial attempt to retrieve the instance id token. + + + + + + + melandory@chromium.org + treib@chromium.org + + Status of subscription request to the Per User Topic server. Recorded upon + receiving response from server. + + + + + + + melandory@chromium.org + treib@chromium.org + + For each subcription request to the FCM Per-User-Topic server, log the + response received from the server. + + + + + + + melandory@chromium.org + treib@chromium.org + + Records the outcome of instance ID token requests (i.e. whether the token + changed). Such requests are made when invalidations are first enabled (e.g. + on sign-in), and then periodically every 24 hours. + + + + + + + melandory@chromium.org + treib@chromium.org + + Status of unsubscription request to the Per User Topic server. Recorded upon + receiving response from server. + + + + + + diff --git a/histograms/metadata/ios/OWNERS b/histograms/metadata/ios/OWNERS new file mode 100644 index 000000000000..73df6c85d84b --- /dev/null +++ b/histograms/metadata/ios/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +ajuma@chromium.org +olivierrobin@chromium.org +sebsg@chromium.org diff --git a/histograms/metadata/ios/histograms.xml b/histograms/metadata/ios/histograms.xml new file mode 100644 index 000000000000..05bcae56da84 --- /dev/null +++ b/histograms/metadata/ios/histograms.xml @@ -0,0 +1,2790 @@ + + + + + + + + + + + + + + + rohitrao@chromium.org + justincohen@chromium.org + + Whether or not the allocator shim was installed successfully. False + indicates an unexpected error at the OS level which merits investigation. + + + + + djean@google.com + bling-team@chromium.org + + The percentage of annotations the are decorated against the number of + annotations found. + + + + + ajuma@chromium.org + bling-fundamentals@google.com + + This histogram counts the frequency of app launch attempts where the target + app is Chrome itself. This logged once per app launch attempt. + + + + + hiramahmood@google.com + bling-get-set-up@google.com + + Logged once per app foreground. Logs whether the user has met the trigger + requirements for the App Store Rating promo. + + + + + thegreenfrog@chromium.org + bling-team@google.com + + This event is recorded on every cold start app open. The value represents + how long the app was away from the foreground. + + + + + thegreenfrog@chromium.org + bling-team@google.com + + This event is recorded on every warm start app open. The value represents + how long the app was away from the foreground. + + + + + hiramahmood@google.com + ginnyhuang@chromium.org + bling-get-set-up@google.com + + The action taken by the user after the Bring Android Tabs prompt is + presented. + + + + + hiramahmood@google.com + ginnyhuang@chromium.org + bling-get-set-up@google.com + + The action taken by the user in response to the Bring Android Tabs Tab List + . + + + + + hiramahmood@google.com + ginnyhuang@chromium.org + bling-get-set-up@google.com + + The number of tabs deselected from the Tab List View of the Bring Android + Tabs prompt. Recorded after the Tab List View is dismissed. + + + + + hiramahmood@google.com + ginnyhuang@chromium.org + bling-get-set-up@google.com + + The result of prompting the set of tabs for an Android switcher. Recorded + after the set of tabs are prompted. + + + + + hiramahmood@google.com + ginnyhuang@chromium.org + bling-get-set-up@google.com + + The number of tabs imported from Android for Android Switchers. Recorded + when the Bring Android Tabs prompt is displayed. + + + + + ajuma@chromium.org + michaeldo@chromium.org + + The result of a captive portal check triggered by a failed secure + connection. Logged once per failed secure connection. + + + + + + This metric is obsolete as of M105, because the max bucket did reach the + desired hour-level granularity. IOS.BackgroundTimeBeforeColdStart is the new + metric. + + thegreenfrog@chromium.org + bling-team@google.com + + This event is recorded on every cold start app open. The value represents + how long the app was away from the foreground. + + + + + ajuma@chromium.org + gambard@chromium.org + + When a navigation is committed, it should have a non-null NavigationContext. + This histogram counts the frequency of this invariant holding at the time + when a new navigation is committed. It is used to verify the effectiveness + of code fixes because this issue is not currently reproducible in testing + (http://crbug.com/864769). True means a non-null NavigationContext is + present. + + + + + ajuma@chromium.org + gambard@chromium.org + + When a navigation is committed, the web view URL is expected to match that + of the current back-forward item. WKWebView seems to break this assumption + at times. This histogram counts the frequency of this invariant violation at + the time when a new navigation is committed. True means the URL matches the + current back-forward item. + + + + + olivierrobin@chromium.org + rkgibson@chromium.org + + The number of times the Content Extension was displayed since last Chrome + foregrounding. Reported when Chrome is put in foregrounded. Note: events + where the count is zero were removed in M91. + + + + + olivierrobin@chromium.org + rkgibson@chromium.org + + The index of the URL selected by the user in the Content Extension. + + + + + rkgibson@google.com + gambard@chromium.org + + When the content rule list provider updates its lists, this can succeed or + fail. Failure occurs when the rule lists are updated again before the first + update finishes. + + + + + ginnyhuang@chromium.org + bling-team@google.com + + This histogram reflects the frequency of users enrolling in password + auto-fill for Chrome, by counting the number of times the Consent View of + the Credentials Provider shows up on the screen. + + + + + rkgibson@chromium.org + djean@chromium.org + + The number of times the Credential Extension user copied a Password since + last Chrome foregrounding. Reported when Chrome is put in foreground. Note: + events where the count is zero were removed in M91. + + + + + rkgibson@chromium.org + djean@chromium.org + + The number of times the Credential Extension user copied a URL since last + Chrome foregrounding. Reported when Chrome is put in foreground. Note: + events where the count is zero were removed in M91. + + + + + rkgibson@chromium.org + djean@chromium.org + + The number of times the Credential Extension user copied a Username since + last Chrome foregrounding. Reported when Chrome is put in foreground. Note: + events where the count is zero were removed in M91. + + + + + rkgibson@chromium.org + djean@chromium.org + + The number of times the Credential Extension was displayed since last Chrome + foregrounding. Reported when Chrome is put in foreground. Note: events where + the count is zero were removed in M91. + + + + + rkgibson@chromium.org + djean@chromium.org + + The number of times the Credential Extension password util failed to look up + for a password since last Chrome foregrounding. Reported when Chrome is put + in foreground. Note: events where the count is zero were removed in M91. + + + + + rkgibson@chromium.org + djean@chromium.org + + The number of times the Credential Extension pasword util was queried with a + nil argument since last Chrome foregrounding. Reported when Chrome is put in + foreground. Note: events where the count is zero were removed in M91. + + + + + veronguyen@google.com + tmartino@chromium.org + + Logged once per app launch. Logs on startup whether the user had enabled the + credential provider in their iOS settings. + + + + + rkgibson@chromium.org + rkgibson@google.com + + The number of times the Credential Extension failed to save a + newly-generated password into the system Keychain since last Chrome + foregrounding. Reported when Chrome is put in foreground. + + + + + rkgibson@chromium.org + rkgibson@google.com + + Recorded when a new credential is created via the Credential Provider + extension and tracks the username state of the new credential. Reported when + Chrome is put in the foreground. + + + + + rkgibson@chromium.org + rkgibson@google.com + + Recorded when a new password is created via the Credential Provider + extension. Reported when Chrome is put in the foreground. + + + + + rkgibson@chromium.org + djean@chromium.org + + The number of times the Credential Extension user selected for a Password + since last Chrome foregrounding. Reported when Chrome is put in foreground. + Note: events where the count is zero were removed in M91. + + + + + rkgibson@chromium.org + djean@chromium.org + + The number of times the Credential Extension selected a Password without + user intervention since last Chrome foregrounding. Reported when Chrome is + put in foreground. Note: events where the count is zero were removed in M91. + + + + + rkgibson@chromium.org + djean@chromium.org + + The number of times the Credential Extension needed user reauthentication + since last Chrome foregrounding. Reported when Chrome is put in foreground. + Note: events where the count is zero were removed in M91. + + + + + rkgibson@chromium.org + rkgibson@google.com + + The number of times the Credential Extension failed to save a + newly-generated credential to disk since last Chrome foregrounding. Reported + when Chrome is put in foreground. + + + + + rkgibson@chromium.org + djean@chromium.org + + The number of times the Credential Extension user searched for a Password + since last Chrome foregrounding. Reported when Chrome is put in foreground. + Note: events where the count is zero were removed in M91. + + + + + rkgibson@chromium.org + djean@chromium.org + + Recorded when a request to replace identities in ASCredentialIdentityStore + fails. + + + + + rkgibson@chromium.org + djean@chromium.org + + The number of times the Credential Extension user unobfuscated a Password + since last Chrome foregrounding. Reported when Chrome is put in foreground. + Note: events where the count is zero were removed in M91. + + + + + veronguyen@google.com + tmartino@chromium.org + + Logged once per app launch if the status did changed. Logs the new status + value (enabled/disabled) of the credential provider in the user's iOS + settings on startup. + + + + + huitingyu@google.com + hiramahmood@google.com + + The impression count for the credential provider extention promo + corresponding to a source of the promo. + + + + + + + + + huitingyu@google.com + hiramahmood@google.com + + The action taken in the credential provider extention promo displayed for + the user event {PromoSource}. If the promo is as a reminder, the histogram + name is suffixed with "IsReminder". + + + + + + + + + + + + + + + justincohen@chromium.org + gambard@chromium.org + + Workaround for a WKWebView bug where WKNavigations can leak, leaving a + permanent pending URL, thus breaking the omnibox. While it is possible for + navigations to finish out-of-order, it's an edge case that should be handled + gracefully, as last committed will appear in the omnibox instead of the + pending URL. This metric records whether there are old navigations to clean + up each time a navigation finishes. See crbug.com/1010765 for details. + + + + + sebsg@chromium.org + bling-get-set-up@google.com + + The action taken by the user in response to the default browser promo. + + + + + sebsg@chromium.org + bling-get-set-up@google.com + + The action taken by the user in response to the default browser promo with + the Remind Me Later button. + + + + + sebsg@chromium.org + bling-get-set-up@google.com + + The action taken by the user in response to the second default browser promo + after tapping on the Remind Me Later button. + + + + + sebsg@chromium.org + bling-get-set-up@google.com + + The action taken by the user in response to the "All tabs" default + browser tailored promo. + + + + + sebsg@chromium.org + bling-get-set-up@google.com + + The action taken by the user in response to the "Made for iOS" + default browser tailored promo. + + + + + sebsg@chromium.org + bling-get-set-up@google.com + + The action taken by the user in response to the "Stay Safe" + default browser tailored promo. + + + + + sebsg@chromium.org + bling-get-set-up@google.com + + Logs the time on screen for an impression of a non modal promo. iOS only. + + + + + sebsg@chromium.org + bling-get-set-up@google.com + + Logged when an action happens on the {Impression} impression of a non modal + promo. Records the action of the promo. iOS only. + + + + + + + + + sebsg@chromium.org + bling-get-set-up@google.com + + Logged when an action happens on a non modal promo triggered by {PromoType}. + Records the action of the promo. iOS only. + + + + + + + + + + sebsg@chromium.org + bling-get-set-up@google.com + + Logged when the {Action} action happens in a tailored default browser promo. + Records the type of promo. + + + + + + + + + + ewannpv@chromium.org + gambard@chromium.org + bling-team@google.com + + The delay in milliseconds between the Tab is opened from this device and the + last time the same Tab was modified on the other device. The 'last modified' + time is not updated when the Tab is opened from this device. + + + + + olivierrobin@chromium.org + djean@chromium.org + bling-team@google.com + Page on which the iOS web edit menu is dismissed. + + + + olivierrobin@chromium.org + djean@chromium.org + bling-team@google.com + Report errors when reporting metrics for web edit menu. + + + + olivierrobin@chromium.org + djean@chromium.org + bling-team@google.com + + The action that was triggered by the user on the iOS web edit menu. + + + + + olivierrobin@chromium.org + djean@chromium.org + bling-team@google.com + Page on which an iOS web edit menu action is triggered. + + + + olivierrobin@chromium.org + djean@chromium.org + bling-team@google.com + + Page on which the iOS web edit menu is dismissed by updating the selection. + + + + + edchin@chromium.org + justincohen@chromium.org + + Tracks the result of snapshotting when the user enters the tab switcher. + Recorded whenever the user enters the tab switcher. + + + + + djean@chromium.org + erahmaoui@google.com + + The type of calendar chosen by the user on the ExperienceKit context menu. + + + + + djean@chromium.org + erahmaoui@google.com + + The type of calendar the event was created in using the ExperienceKit + context menu. + + + + + rajendrant@chromium.org + sophiechang@chromium.org + + True if TextClassifier TFLite model was available for entity detection for + ExperienceKit Calendar interaction when requested, such as on explicit user + text selection. + + + + + gambard@chromium.org + bling-team@google.com + + When a navigation is finished, it should have a non-null NavigationContext. + This histogram counts the frequency of this invariant holding at the time + when a new navigation is finished. It is used to verify the effectiveness of + code fixes because this issue is not currently reproducible in testing + (http://crbug.com/864769). True means a non-null NavigationContext is + present. + + + + + gambard@chromium.org + bling-team@google.com + + When a navigation is finished, it should have a non-null NavigationItem. + This histogram counts the frequency of this invariant holding at the time + when a new navigation is finished. It is used to verify the effectiveness of + code fixes because this issue is not currently reproducible in testing + (http://crbug.com/864769). True means a non-null NavigationItem is present. + + + + + ajuma@chromium.org + gambard@chromium.org + + When a navigation is finished, the web view URL is expected to match that of + the current back-forward item. WKWebView seems to break this assumption at + times. This histogram counts the frequency of this invariant violation at + the time when a new navigation is finished. True means the URL matches the + current back-forward item. + + + + + eic@google.com + tmartino@chromium.org + + Records whether the ProductSans-Regular was successfully loaded in the Font + Provider Api. + + + + + rohitrao@chromium.org + djean@chromium.org + + Reports exceptions when trying to send a form input accessory action to the + virtual keyboard. + + + + + danieltwhite@chromium.org + ajuma@chromium.org + + Many features include JavaScript injected logic that run in the WebKit + renderer process. One Web Vitals metric that evaluates user experience is + First Contentful Paint. First Contentful Paint is defined as the amount of + time it takes for a page to render a non-trivial element. This histogram + captures the First Contentful Paint time for every main frame. This + histogram's understanding of First Contentful Paint differs from the + traditional understanding because it does not aggregate and compare the + First Contentful Page times across the frames on a page. + + + + + danieltwhite@chromium.org + ajuma@chromium.org + + Many features include JavaScript injected logic that run in the WebKit + renderer process. One Web Vitals metric that evaluates user experience is + First Contentful Paint. First Contentful Paint is defined as the amount of + time it takes for a page to render a non-trivial element. This histogram + captures the First Contentful Paint time for user's subframes. Due to + WebKit's implementation of First Contentful Paint, this histogram only + captures a subframe's First Contentful Paint if it is same-origin relative + to the main frame. This histogram's understanding of First Contentful Paint + differs from the traditional understanding because it does not aggregate and + compare the First Contentful Page times across the frames on a page. + + + + + + Replaced by IOS.Frame.FirstInputDelay.MainFrame2 due to rebucketing. + + danieltwhite@chromium.org + ajuma@chromium.org + + Many features include JavaScript injected logic that run in the WebKit + renderer process. One Web Vitals metric that evaluates user experience is + First Input Delay. First Input Delay is defined as the amount of time + between the a user's first interaction with the page and the page receiving + the input event for this interaction. This histogram captures the First + Input Delay time for every main frame. This histogram's understanding of + First Input Delay differs from the traditional understanding because it does + not aggregate and compare the First Input Delay times across the frames on a + page. + + + + + + Replaced by + IOS.Frame.FirstInputDelay.MainFrame.AfterBackForwardCacheRestore2 due to + rebucketing. + + danieltwhite@chromium.org + ajuma@chromium.org + + Many features include JavaScript injected logic that run in the WebKit + renderer process. One Web Vitals metric that evaluates user experience is + First Input Delay. First Input Delay is defined as the amount of time + between the a user's first interaction with the page and the page receiving + the input event for this interaction. This histogram captures the First + Input Delay time for user's main frame that is loaded from the Back/Forward + cache. This histogram's understanding of First Contentful Paint differs from + the traditional understanding because it does not aggregate and compare the + First Input Delay times across the frames on a page. + + + + + danieltwhite@chromium.org + ajuma@chromium.org + + Many features include JavaScript injected logic that run in the WebKit + renderer process. One Web Vitals metric that evaluates user experience is + First Input Delay. First Input Delay is defined as the amount of time + between the a user's first interaction with the page and the page receiving + the input event for this interaction. This histogram captures the First + Input Delay time for user's main frame that is loaded from the Back/Forward + cache. This histogram's understanding of First Contentful Paint differs from + the traditional understanding because it does not aggregate and compare the + First Input Delay times across the frames on a page. + + + + + danieltwhite@chromium.org + ajuma@chromium.org + + Many features include JavaScript injected logic that run in the WebKit + renderer process. One Web Vitals metric that evaluates user experience is + First Input Delay. First Input Delay is defined as the amount of time + between the a user's first interaction with the page and the page receiving + the input event for this interaction. This histogram captures the First + Input Delay time for every main frame. This histogram's understanding of + First Input Delay differs from the traditional understanding because it does + not aggregate and compare the First Input Delay times across the frames on a + page. + + + + + + Replaced by IOS.Frame.FirstInputDelay.SubFrame2 due to rebucketing. + + danieltwhite@chromium.org + ajuma@chromium.org + + Many features include JavaScript injected logic that run in the WebKit + renderer process. One Web Vitals metric that evaluates user experience is + First Input Delay. First Input Delay is defined as the amount of time + between the a user's first interaction with the page and the page receiving + the input event for this interaction. This histogram captures the First + Input Delay time for user's subframes. This histogram's understanding of + First Contentful Paint differs from the traditional understanding because it + does not aggregate and compare the First Input Delay times across the frames + on a page. + + + + + + Replaced by IOS.Frame.FirstInputDelay.SubFrame.AfterBackForwardCacheRestore2 + due to rebucketing. + + danieltwhite@chromium.org + ajuma@chromium.org + + Many features include JavaScript injected logic that run in the WebKit + renderer process. One Web Vitals metric that evaluates user experience is + First Input Delay. First Input Delay is defined as the amount of time + between the a user's first interaction with the page and the page receiving + the input event for this interaction. This histogram captures the First + Input Delay time for user's subframes that is loaded from the Back/Forward + cache. This histogram's understanding of First Contentful Paint differs from + the traditional understanding because it does not aggregate and compare the + First Input Delay times across the frames on a page. + + + + + danieltwhite@chromium.org + ajuma@chromium.org + + Many features include JavaScript injected logic that run in the WebKit + renderer process. One Web Vitals metric that evaluates user experience is + First Input Delay. First Input Delay is defined as the amount of time + between the a user's first interaction with the page and the page receiving + the input event for this interaction. This histogram captures the First + Input Delay time for user's subframes that is loaded from the Back/Forward + cache. This histogram's understanding of First Contentful Paint differs from + the traditional understanding because it does not aggregate and compare the + First Input Delay times across the frames on a page. + + + + + danieltwhite@chromium.org + ajuma@chromium.org + + Many features include JavaScript injected logic that run in the WebKit + renderer process. One Web Vitals metric that evaluates user experience is + First Input Delay. First Input Delay is defined as the amount of time + between the a user's first interaction with the page and the page receiving + the input event for this interaction. This histogram captures the First + Input Delay time for user's subframes. This histogram's understanding of + First Contentful Paint differs from the traditional understanding because it + does not aggregate and compare the First Input Delay times across the frames + on a page. + + + + + joemerramos@chromium.org + ajuma@chromium.org + + Logs when a user triggers a fullscreen state change for Chrome on iOS. The + enumeration indicates the fullscreen state. This is for the web-exposed + Fullscreen API not the fullscreen that happens when users scroll down and + hides the toolbar. + + + + + erikchen@chromium.org + + This event is recorded each time a Handoff is received by Chrome on iOS. The + enumeration indicates the source of the Handoff. + + + + + thegreenfrog@chromium.org + bling-team@google.com + + This histogram is logged whenever a Home action is taken on the NTP. + + + + + thegreenfrog@chromium.org + bling-team@google.com + + This histogram is logged whenever a Home action is taken on the Start + surface. + + + + + alionadangla@chromium.org + lpromero@chromium.org + Logs the chosen inactive tab threshold at startup. + + + + + + andrewkamau@google.com + arabm@google.com + + Logged once per app launch. Logs whether the biometric incognito + authentication setting is enabled. This metric is designed to measure % of + users who have the setting enabled by using "group by users" in + UMA. + + + + + + + andrewkamau@google.com + arabm@google.com + + Logged when the user attempt to reauthenticate to display the incognito + tabs. This metric is designed to measure the success of the reauth. + + + + + olivierrobin@chromium.org + qpubert@google.com + + The time incognito profile is displayed to the user. Incognito sessions + during less than 10 seconds are not reported. Incognito session paused for + less than 10 seconds is resumed. (Incorrectly reported between M92 and + M107). + + + + + qpubert@google.com + djean@chromium.org + + Logged when the Incognito Interstitial is dismissed, with a value which + depends on what user action led to the dismissal. Before M113, the Cancel + bucket contains all times the Incognito interstitial was dismissed without + opening the URL. Starting M113, it only contains times the user triggered + the Cancel button, and new "Learn more about Incognito" and + "Dismissed by external event" buckets are added. + + + + + qpubert@google.com + djean@chromium.org + + Logged when the "Ask to Open Links from Other Apps in Incognito" + setting is enabled or disabled by the user. + + + + + + This metric is obsolete as of M112, it is now recorded in + InProductHelp.ShouldTriggerHelpUI.IPH_DefaultSiteView. + + gambard@chromium.org + lpromero@chromium.org + + Recorded when the InProductHelp about the DefaultSite is presented to the + user. Can be used as a base number to evaluate the impact of IPH. + + + + + + + thegreenfrog@chromium.org + rohitrao@chromium.org + chrome-metrics-team@google.com + + Prefer to use IOS.IsDefaultBrowser21 as this metric is based in a 7 days + look back window, which appears to be too small. As of iOS14, users will be + able to set a default browser other than Safari. When Chrome is the default + browser, it will receive all URL opens, which is likely to change certain + stability metrics. Thus, it will be good to filter those metrics by default + browser status. This metrics records whether the user was deemed to have set + Chrome as the device's default browser. This metric will be logged once per + metrics log upload. As long as a link is opened in Chrome in the last 7 + days, the user will be considered a default user. + + + + + + + rohitrao@chromium.org + chrome-metrics-team@google.com + + As of iOS14, users will be able to set a default browser other than Safari. + When Chrome is the default browser, it will receive all URL opens, which is + likely to change certain stability metrics. Thus, it will be good to filter + those metrics by default browser status. This metrics records whether the + user was deemed to have set Chrome as the device's default browser. This + metric will be logged once per metrics log upload. As long as link is opened + in Chrome in the last 21 days, the user will be considered a default user. + + + + + thegreenfrog@chromium.org + rohitrao@chromium.org + + This metric reports whether the user was deemed eligible to be shown default + browser fullscreen promos. Eligibility currently includes signed-in users, + external intent app opens, clipboard copies, and GrowthKit opens. This + metric will be logged once per metrics log upload. + + + + + rkgibson@google.com + gambard@chromium.org + + IOS Content Blocking uses special injected Javascript to block access to + things like cookies and local storage. Future changes to iOS/WebKit could + cause these blocks to break. This logs that occurrence. + + + + + tmartino@chromium.org + seblalancette@chromium.org + + The result of conditional disable/enable checking for the Link to Text + feature, including granular failure reasons when the feature is not offered. + + + + + ajuma@chromium.org + bling-fundamentals@google.com + + Records whether Lockdown Mode is enabled for a main-frame navigation action. + This is recorded once for every allowed main-frame navigation action. + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + Recorded when the MainThreadFreezeDetector initializes. If a hang was + detected on a previous run, it's expected the app will be killed and not + exit cleanly. Set to `true` if the app exited cleanly and a hang was + detected, indicating no watchdog kill and an error in freeze detection. + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + Recorded when the main thread recovers immediately after a freeze report was + generated. + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + The time taken to record a freeze report. Logged immediately after + generating a hang report. + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + The time during which main thread was not responding. 0 if application was + killed before recovering. Logged after an action posted on the main thread + is not executed immediately. The histogram is sent when the task is finally + executed or on next application startup. + + + + + + + justincohen@chromium.org + olivierrobin@chromium.org + chrome-analysis-team@google.com + + The durations of time in which the app is too busy to handle user input + responsively. This covers all forms of user input, including all touch + screen input (scrolls, pinches, and taps) and input from any connected input + device such as a keyboard. Logged when a MXMetricPayload is received (one + per day). Each sample corresponds to one hang that happens when the app is + in the foreground and doesn't respond quickly enough to user input. The + minimum observed hang time is 250ms (but this value may change in future + device/OS version). This metric can be normalized by comparing the total + number of hangs or the total time spent hung against the number of clients + emitting to IOS.MetricKit.ForegroundTimePerDay (hangs per users) or against + the total time reported by IOS.MetricKit.ForegroundTimePerDay (fraction of + foreground time spent in hangs). ApplicationHangTime and + ForegroundTimePerDay have the same restrictions about when they're emitted + (opted-in to share diagnostic data with Apple and also opted-in to UMA). + Further, as hangs can only happen during foreground use, + ForegroundTimePerDay makes a good comparison point. Only hangs in the + browser process are reported. + + Recorded only if user opted in for sharing diagnostic data on iOS device. + Note: The date the data is reported is later than the day it account for. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + The amount of time taken to resume the app from the background (not + aggregated). Logged when a MXMetricPayload is received (one per day). + + Recorded only if user opted in for sharing diagnostic data on iOS device. + Note: The date the data is reported is later than the day it account for. + + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + The average amount of memory in use by the app when it's suspended. Averaged + on a 24 hours period. Logged when a MXMetricPayload is received (one per + day). + + Recorded only if user opted in for sharing diagnostic data on iOS device. + Note: The date the data is reported is later than the day it account for. + + + + + + + + justincohen@chromium.org + olivierrobin@chromium.org + chrome-analysis-team@google.com + + The reason for the application termination in background. Recorded when a + MXMetricPayload is received from the OS (at most once per day) at + unspecified time. Records cumulative data collected and agregated since the + previous recording. All buckets from MetricKitExitData are available on iOS + 14 and higher (unless MetricKitExitData bucket comments specify otherwise). + + Note that crashes while in the background are not considered crashes / + unclean shutdowns in UMA stability metrics. This is because the + "CleanExitBeacon" is set when Chrome is put in the background. + + Recorded only if user opted in for sharing diagnostic data on iOS device. + Note: The date the data is reported is later than the day it account for. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + The total time the app is in the background. Logged when a MXMetricPayload + is received (one per day). This correspond as Chrome running but not having + active scene (i.e. the application just has been backgrounded or is doing + background activity like background music or picture in picture). + + Recorded only if user opted in for sharing diagnostic data on iOS device. + Note: The date the data is reported is later than the day it account for. + + + + + + ajuma@chromium.org + justincohen@chromium.org + + The amount of time taken to launch the app until the app UI is ready to + receive input. This measures startup until the same point as + Startup.ColdStartFromProcessCreationTimeV2 but is computed by iOS in a way + that accounts for app pre-warming. The exact adjustments made to account for + pre-warming are not documented by Apple. Logged when a MXMetricPayload is + received (one per day). + + This is only recorded on iOS 16+, and recorded only if user opted in for + sharing diagnostic data on iOS device. + + Note: The date the data is reported is later than the day it accounts for. + + + + + + + + justincohen@chromium.org + olivierrobin@chromium.org + chrome-analysis-team@google.com + + The reason for the application termination in foreground. Recorded when a + MXMetricPayload is received from the OS (at most once per day) at + unspecified time. Records cumulative data collected and agregated since the + previous recording. All buckets from MetricKitExitData are available on iOS + 14 and higher (unless MetricKitExitData bucket comments specify otherwise). + All buckets except "App exited normally" are likely user-visible + terminations (this is a guess rather that verified fact). + + Application is in foreground is at least one scene is active in foreground. + Picture in picture and background music playing are not considered as + foreground. + + Recorded only if user opted in for sharing diagnostic data on iOS device. + Note: The date the data is reported is later than the day it account for. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + The total time the app is in the foreground, aggregated over all foreground + interactions since the last time this metric was reported. This is at most a + 24 hour period. Logged when a MXMetricPayload is received (one per day). + + Application is in foreground is at least one scene is active in foreground. + Picture in picture and background music playing are not considered as + foreground + + Recorded only if user opted in for sharing diagnostic data on iOS device. + Note: The date the data is reported is later than the day it account for. + + + + + + ajuma@chromium.org + justincohen@chromium.org + + The amount of time taken to launch the app in cases where the launch is + pre-warmed. This is identical to IOS.MetricKit.{MXVersion}TimeToFirstDraw + except that TimeToFirstDraw considers all launches while this metric only + considers pre-warmed launches. Logged when a MXMetricPayload is received + (one per day). + + This is only recorded on iOS 16+, and recorded only if user opted in for + sharing diagnostic data on iOS device. + + Note: The date the data is reported is later than the day it accounts for. + + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + The largest amount of memory used by the app since the last time this metric + was reported. This is at most a 24 hour period. Logged when a + MXMetricPayload is received (one per day). + + Because this implemented by Apple, we do not know how peak memory usage is + identified (by polling?). We also do not know if this covers background + usage. We also do not know if the period only includes background usage + whether this is going to be reported. + + Recorded only if user opted in for sharing diagnostic data on iOS device. + Note: The date the data is reported is later than the day it account for. + + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + The amount of time taken to launch the app. Logged when a MXMetricPayload is + received (one per day). + + Recorded only if user opted in for sharing diagnostic data on iOS device. + Note: The date the data is reported is later than the day it account for. + + + + + + marq@chromium.org + djean@chromium.org + MultiWindow configuration sampled once per minute. + + + + marq@chromium.org + djean@chromium.org + + The source of "Open in new Window" user requests. Recorded when a + newly created window is added to a session. + + + + + ajuma@chromium.org + michaeldo@chromium.org + + The method -[CRWWKNavigationHandler loadCancelled] updates the navigation + state to finished if it is any other state. Additionally, if + `beingDestroyed` is false, the webstate's loading state is set to false. + There is a long standing TODO in this method with the comment: "Check + if this function should be removed." This metric is logged when the + logic in this method is triggered. The results will be reviewed to see if + this logic is still ever called or if it can now be removed. + + + + + rohitrao@chromium.org + djean@chromium.org + + NSString API: stringByReplacingCharactersInRange:withString: was invoked + with a nil argument. + + + + + thegreenfrog@chromium.org + bling-team@google.com + The number of excess NTP tabs that are removed. + + + + gambard@chromium.org + bling-team@google.com + + The type of NTP impressions on iOS, split by the feed visibility. Logged + each time an NTP is made visible. + + + + + guiperez@google.com + bling-team@google.com + + The type of overscroll action that occurs on the NTP. This is recorded each + time a user overscrolls on the NTP. + + + + + christianxu@chromium.org + bling-team@google.com + Histogram of the number of lines of search suggestions. + + + + christianxu@chromium.org + stkhapugin@chromium.org + bling-team@google.com + + For every interaction with the Omnibox, this metric records whether the user + scrolled the omnibox while exploring suggestions on {PageClass}. + + This is recorded once per Omnibox interaction, regardless of whether the + User chooses to navigate somewhere or abandons the interaction. + + + + + + + + + + ewannpv@chromium.org + mrefaat@chromium.org + bling-team@google.com + + The result of the download operation done when the user taps "open + in" button to open a file by a different application. + + + + + ewannpv@chromium.org + gambard@chromium.org + bling-team@google.com + + The MIME type of the previwed file when the "Open In" toolbar is + presented. + + + + + rkgibson@google.com + bling-team@google.com + The type of action the user took in the overflow/tools menu + + + + rkgibson@google.com + bling-team@google.com + The amount of time the overflow/tools menu is open. + + + + gambard@chromium.org + ajuma@chromium.org + + Tracks the default mode used by the webview when a page is loaded. True when + the default mode is Mobile (vs Default). + + + + + gambard@chromium.org + bling-team@google.com + The number of navigation started events by navigation type. + + + + gambard@chromium.org + bling-team@google.com + + The "true" value of this boolean histogram counts the number of + page loading started events. The "false" value will never be seen. + + + + + edchin@chromium.org + justincohen@chromium.org + + Tracks the result of snapshotting when the page has been loaded. + + + + + ajuma@chromium.org + gambard@chromium.org + + Measures the time from the end of user input in the omnibox to when the page + is fully loaded. Only measures page loads initiated by user typing a URL or + selecting a suggested entry from the URL bar. + + + + + olivierrobin@chromium.org + djean@chromium.org + The outcome of the partial translate feature. + + + + olivierrobin@chromium.org + djean@chromium.org + The length of the selection received from javascript. + + + + veronguyen@google.com + tmartino@chromium.org + + The number of favicons loaded (image, not monogram string) in the Password + Manager recorded when the view will disappear. + + + + + veronguyen@google.com + tmartino@chromium.org + + The percentage of passwords that have a favicon that is an image in the + Password Manager recorded when the view will disappear. + + + + + veronguyen@google.com + tmartino@chromium.org + + The number of passwords with a favicon loaded in the Password Manager + recorded when the view will disappear. + + + + + ginnyhuang@chromium.org + bling-team@google.com + + Logs when a user's password auto fill status has changed. Value indicates + user's current enrollment status of password auto fill from Chrome, after + the change. + + + + + ginnyhuang@chromium.org + bling-team@google.com + + Logs when a user dismisses Passwords in Other Apps promo. Value indicates + user's enrollment status of password autofill from Chrome. + + + + + ginnyhuang@chromium.org + bling-team@google.com + + Logs when a user opens iOS Password Settings by tapping the button/link in + Passwords in Other Apps promo. Value indicates user's enrollment status of + password autofill from Chrome. + + + + + ginnyhuang@chromium.org + bling-team@google.com + + Logs when a user opens Passwords in Other Apps promo from Chrome settings. + Value indicates user's enrollment status of password autofill from Chrome. + + + + + ewannpv@chromium.org + gambard@chromium.org + bling-team@google.com + + Logs media permission events when the user changes the state of a permission + (e.g. the microphone permission) from the infobar modal. + + + + + ewannpv@chromium.org + gambard@chromium.org + bling-team@google.com + + Logs media permission events when the user changes the state of a permission + (e.g. the microphone permission) from the page info. + + + + + ewannpv@chromium.org + gambard@chromium.org + bling-team@google.com + + Logs media permission requests from websites. (e.g. the microphone + permission is asked from a website). + + + + + scottyoder@google.com + bling-get-set-up@google.com + + Logs a user's choice when presented with the Post Restore Signin Promo.' + + + + + scottyoder@google.com + bling-get-set-up@google.com + + Indicates whether the Post Restore Signin Promo was displayed. + + + + + justincohen@google.com + olivierrobin@google.com + + Whether or not the process was started with ActivePrewarm, an Apple + triggered launch of a nonrunning application processes to reduce the amount + of time the user waits before the app is usable. A significant change in + this metric may indicate a change from Apple outside Chromium's control, or + that Chromium has a reduced 'Duet' score in the system, which merits + investigation. See the UIKit documentation "Prepare Your App for + Prewarming" for more details. + + + + + bwwilliams@google.com + rkgibson@google.com + huitingyu@google.com + + Logs which promo is displayed when the Promos Manager decides to display a + promo. + + + + + bwwilliams@google.com + rkgibson@google.com + huitingyu@google.com + + Logs which promo failed to display. This happens when a promo is requested + for display, but isn't properly registered. This seldom happens in practice, + but may happen during manual testing by disabling a promo right before the + Promos Manager attempts to display it. + + + + + bwwilliams@google.com + rkgibson@google.com + huitingyu@google.com + + Logs which forced promo failed to display. This happens when a promo is + forced for display (via Experimental Settings toggle,) but isn't properly + registered (via chrome://flags). This seldom happens in practice, but may + happen during manual testing. + + + + + bwwilliams@google.com + rkgibson@google.com + huitingyu@google.com + + Promo impression limit evaluations made by the Promos Manager. This + histograms logs the Promos Manager's assessment of each promos impression + limits when presented with the opportunity to display a given promo. + + + + + bwwilliams@google.com + rkgibson@google.com + huitingyu@google.com + + Logs which type of promo is displayed when the Promos Manager decides to + display a promo. + + + + + ajuma@google.com + danieltwhite@google.com + + Logs whether the user's device was or was not able to successfully register + with APNS and retrieve an APNS device token. An APNS device token is needed + to successfully register the user's device with Chime. This histogram is + logged during application startup and each time the user signs into an + account. + + + + + ajuma@google.com + danieltwhite@google.com + + Logs whether the user's device was or was not able to successfully register + with Chime. The device is registered with Chime on the application's + start-up if the difference between the previous time the device was + registered with Chime and the current application start-up is greater than + the predefined time interval threshold (currently set at one day). + + + + + ajuma@google.com + danieltwhite@google.com + + Logs whether the user's push notification permissions for each push + notification enable feature in Chrome were successfully applied to the Chime + server during the device registration process. + + + + + ajuma@google.com + danieltwhite@google.com + + Logs whether the user decided to allow/disallow push notification + permissions for the current device or an error occured. This is logged each + time the user responds to a push notification permission prompt. + + + + + ajuma@google.com + danieltwhite@google.com + + Logs the amount of time it takes for Chrome to process an incoming + notification. iOS allows applications to process notifications and fetch any + additional data needed for up to 30 seconds. iOS tracks the amount of power + Chrome uses, the time it takes for it to finish processing the incoming + notification, and data costs for background downloads. According to the + documentation, if iOS determines that Chrome uses significant amounts of + power when processing remote notifications, iOS may not always wake up + Chrome early to process future notifications. Thus, this histogram uses + processing time as a proxy for iOS' three parameters. + + + + + olivierrobin@chromium.org + justincohen@chromium.org + + Distillation of the page failed because an image was too big (>1MB). + Recorded on distillation attempt. + + + + + olivierrobin@chromium.org + justincohen@chromium.org + + Distillation of the page failed because the page was too big (>10MB). + Recorded on distillation attempt. + + + + + sarraf@google.com + djean@chromium.org + + Tracks the results and attempts of reauthentication when using password + Autofill suggestions. + + + + + sarraf@google.com + djean@chromium.org + + Tracks the results and attempts of reauthentication when using a password in + Manual Fallback. + + + + + olivierrobin@google.com + rohitrao@google.com + + Track the reconciliation of EULA pref and First run sentinel. Reported once + on startup when it is detected that EULA pref is not set but First run + sentinel is set. There is no base event (false) as this should be an + exceptional case and should tend to 0 occurence. + + + + + gambard@chromium.org + justincohen@chromium.org + + [iOS] The number of items Navigation Manager was requested to restore. 100 + is logged when the number of navigation items is greater than 100. This is + just a requested count and actual number of restored items can be smaller. + Restoration is triggered in the following cases (the list is not + exhaustive): app cold start, remote tab was open, cookie were cleared, + recently closed tab was restored. + + + + + gambard@chromium.org + justincohen@chromium.org + + [iOS] Time spent on restoring committed Navigation Manager's items. Recorded + once per restoration, as a cumulative time across all items. Restoration is + triggered in the following cases (the list is not exhaustive): app cold + start, remote tab was open, cookies were cleared, recently closed tab was + restored. This metric will be used for monitoring session restoration + performance which relies on system's WKWebView. + + + + + ajuma@chromium.org + gambard@chromium.org + + This histgram counts the frequency of sad tabs that occur while loading a + PDF file. This is logged once per sad tab shown. + + + + + ajuma@chromium.org + gambard@chromium.org + + This histgram counts the frequency of sad tabs that occur while loading a + chrome://external-file URL. This is logged once per sad tab shown. + + + + + ajuma@chromium.org + gambard@chromium.org + + The URL in a navigation request should have the same host as the URL in the + corresponding response, but this sometimes doesn't hold after a server + redirect because of a WKWebView bug. This histogram counts the frequency of + this invariant violation, and is logged each time that a main-frame + navigation response is received after a server redirect. True means that the + request and response URLs have the same host. + + + + + michaeldo@chromium.org + rohitrao@chromium.org + + The total amount of available storage capacity on the device. Logged once + per application cold launch, on startup. + + + + + michaeldo@chromium.org + rohitrao@chromium.org + + The percentage of the device storage which is available. Logged once per + application cold launch, on startup. + + + + + michaeldo@chromium.org + rohitrao@chromium.org + + The amount of device storage which is available for important storage. + Logged once per application cold launch, on startup. + + + + + michaeldo@chromium.org + rohitrao@chromium.org + + The percentage of the device storage which is available for important + storage. Logged once per application cold launch, on startup. + + + + + michaeldo@chromium.org + rohitrao@chromium.org + + The amount of device storage which is available for opportunistic storage. + Logged once per application cold launch, on startup. + + + + + michaeldo@chromium.org + rohitrao@chromium.org + + The percentage of the device storage which is available for opportunistic + storage. Logged once per application cold launch, on startup. + + + + + michaeldo@chromium.org + rohitrao@chromium.org + + The total amount of storage used by the application Documents directory. + Chrome uses this directory to store files downloaded by the user. Logged at + application startup, maximum once every 2 weeks, if the + `kLogApplicationStorageSizeMetrics` flag is enabled. + + + + + michaeldo@chromium.org + rohitrao@chromium.org + + The total amount of storage used by the application Library directory. + Chrome uses this directory to store application data and caches. Logged at + application startup, maximum once every 2 weeks, if the + `kLogApplicationStorageSizeMetrics` flag is enabled. + + + + + michaeldo@chromium.org + rohitrao@chromium.org + + The number of download directories used by the optimization guide model + downloads. Logged at application startup, maximum once every 2 weeks, if the + `kLogApplicationStorageSizeMetrics` flag is enabled. + + + + + michaeldo@chromium.org + rohitrao@chromium.org + + The total amount of storage used by the optimization guide model downloads. + Logged at application startup, maximum once every 2 weeks, if the + `kLogApplicationStorageSizeMetrics` flag is enabled. + + + + + michaeldo@chromium.org + rohitrao@chromium.org + + The total amount of storage capacity on the device. Logged once per + application cold launch, on startup. + + + + + olivierrobin@chromium.org + rkgibson@chromium.org + The action selected by the user in the Search Extension. + + + + olivierrobin@chromium.org + rkgibson@chromium.org + + The number of times the Search Extension was displayed since last Chrome + foregrounding. Reported when Chrome is put in foreground. Note: events where + the count is zero were removed in M91. + + + + + olivierrobin@chromium.org + djean@chromium.org + The context in which Search With has been triggered. + + + + mrefaat@chromium.org + sdefresne@chromium.org + + Record whether the session (list of tabs, and their snapshots) was migrated + from one place to another. This migration can happen when the user update + Chrome, their device version of iOS or when they restore a backup. The event + is recorded for all Browser creation, so most of the event should be + "No Migration". + + + + + olivierrobin@chromium.org + rkgibson@chromium.org + + The number of items received simultaneously in Chrome from the IOS share + extension. + + + + + olivierrobin@chromium.org + rkgibson@chromium.org + Type of the item received from the iOS share extension. + + + + olivierrobin@chromium.org + rkgibson@chromium.org + + The delay in milliseconds between the item creation in the extension and its + processing in Chrome. + + + + + olivierrobin@chromium.org + rkgibson@chromium.org + + The source application that sent the external command to Chrome. + + + + + gujen@google.com + ios-google-eng-ios@google.com + + Counts the number of Chrome Siri Shortcuts that the user has created in the + Siri Shortcuts app. This is recorded once during startup. The histogram caps + at 20 shortcuts, which is an arbitrary but reasonable limit. Note that + shortcuts that have multiple actions are not counted if at least one action + isn't a Chrome-provided one. For example, a shortcut that opens URLs in + Chrome and then opens URLs in another app won't be counted. As such, this + metric undercounts the true number of Chrome shortcuts. This is a + restriction of the native Shortcuts API. This histogram is actively being + monitored by the iOS at Google team. + + + + + ajuma@chromium.org + edchin@chromium.org + + The overall size of snapshots cache. Recorded when new snapshot is cached. + + + + + ajuma@chromium.org + edchin@chromium.org + + The size of a single snapshot image. Recorded when new snapshot is taken and + RecordSnapshotSize flag is enabled. + + + + + ajuma@chromium.org + edchin@chromium.org + + The size of a single snapshot PDF. Recorded when new snapshot is taken and + RecordSnapshotSize flag is enabled. + + + + + olivierrobin@chromium.org + rohitrao@chromium.org + The Spotlight Action pressed by the user. + + + + rohitrao@chromium.org + olivierrobin@chromium.org + + Tracks the availability of the Spotlight indexation on the device. It is + logged once at each cold start. Note: Spotlight may be available on the + device but disabled by the user. + + + + + olivierrobin@chromium.org + rohitrao@chromium.org + Time spent in Spotlight initial indexation of bookmarks. + + + + olivierrobin@chromium.org + rohitrao@chromium.org + Number of bookmarks indexed during initial indexation. + + + + olivierrobin@chromium.org + rohitrao@chromium.org + + This event is recorded each time a Chrome Spotlight entry is selected by the + user. The enumeration indicates the nature of the Spotlight entry. + + + + + mrefaat@chromium.org + rohitrao@chromium.org + + The result of StoreKit handling for a specific iTunes URL. Not Handled will + be logged when the LinksHandler didn't handle a specific URL on purpose (not + supported), and Failure will be logged when a URL that should have been + handled wasn't handled. + + + + + ewannpv@chromium.org + gambard@chromium.org + bling-team@google.com + + The number of Tab Grid items closed with a bulk or a 'Close All' operation. + A Tab can be recoreded twice if it is restored and closed again. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + bling-team@google.com + + The number of Tab Grid items bookmarked with a single add to bookmarks + operation from the tab grid selection mode. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + bling-team@google.com + + The number of Tab Grid items added to reading list with a single add to + reading list operation from the tab grid selection mode. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + bling-team@google.com + + The number of Tab Grid items closed with a single Close Tab(s) operation + from the tab grid selection mode. + + + + + mrefaat@chromium.org + michaeldo@chromium.org + bling-team@google.com + + The number of Tab Grid items shared with a single share operation from the + tab grid selection mode. + + + + + gambard@chromium.org + lpromero@chromium.org + bling-team@google.com + + Recorded when a tab is selected from the TabGrid. Time spent since the last + time this tab was made active. + + + + + ewannpv@chromium.org + gambard@chromium.org + bling-team@google.com + + Tracks whether the user moved a tabStrip tab to a new index. Recorded when + the user stops the drag interaction. + + + + + ewannpv@chromium.org + gambard@chromium.org + bling-team@google.com + + Tracks whether the user tapped on a tabStrip tab that is not the active one. + Recorded when the tabStrip tab is tapped. + + + + + ewannpv@chromium.org + gambard@chromium.org + bling-team@google.com + + Records tab drag and drop interactions on the tab switcher. An interaction + is recorded twice (one drag and one drop). + + + + + ewannpv@chromium.org + pakzhygitov@google.com + bling-team@google.com + Records the origin of dropped items in the tab switcher. + + + + ewannpv@chromium.org + gambard@chromium.org + bling-team@google.com + + Tracks whether the user closed the incognito tab grid page without doing any + meaningful action. Meaningful actions are creating, moving, deleting or + switching tab. Recorded when the user closed the incognito tab grid page. + + + + + ewannpv@chromium.org + gambard@chromium.org + bling-team@google.com + + Tracks whether the user closed the recent tabs page without doing any + meaningful action. Meaningful action is opening a tab. Recorded when the + user closed the recent tabs page or switched to a tab grid page. + + + + + ewannpv@chromium.org + gambard@chromium.org + bling-team@google.com + + Tracks whether the user closed the regular tab grid page without doing any + meaningful action. Meaningful actions are creating, moving, deleting or + switching tab. Recorded when the user closed the regular tab grid page. + + + + + marq@chromium.org + ewannpv@chromium.org + bling-team@google.com + + The UI interaction by which the user changed the visible page in the tab + switcher. Note that drag interactions can be recorded multiple time for a + single drag. + + + + + ewannpv@chromium.org + pakzhygitov@google.com + bling-team@google.com + + Records tab drag and drop interactions in the pinned tab view. An + interaction is recorded twice (one drag and one drop). + + + + + ewannpv@chromium.org + pakzhygitov@google.com + bling-team@google.com + Records the origin of dropped items in the pinned tab view. + + + + mrefaat@chromium.org + marq@chromium.org + + The time the Tab switcher is displayed to the user. This histogram will + always be recorded once the user exit the tab switcher. + + + + + alionadangla@chromium.org + lpromero@chromium.org + chromeleon@google.com + + The time it takes for a user to open an existing tab. If the user opens a + new tab or closes the tab switcher, this is not recorded. + + + + + lpromero@chromium.org + alionadangla@chromium.org + chromeleon@google.com + + The time spent while the tab grid is scrolled by the user. This includes the + deceleration time. + + + + + rajendrant@chromium.org + sophiechang@chromium.org + + The entity type detected by running entity detection on user-selected text. + This histogram is recorded every time entity detection is attempted on text + that the user explicit selects, such as when displaying context menu actions + on a long press. + + + + + rajendrant@chromium.org + sophiechang@chromium.org + + Records the time taken for the TFLite text classifier model to extract + entities given a full web page text (up to 64k characters). + + + + + rajendrant@chromium.org + sophiechang@chromium.org + + Records the time taken for the TFLite text classifier model to extract + entities given a text string. This metric does not record the duration for + NSDataDetector entity extraction when the TFLite model is unavailable. + + + + + djean@chromium.org + rkgibson@chromium.org + + [iOS] Reports how a thumbstrip opening was cancelled. It uses the same enum + as IOS.Thumbstrip.OpenBy. + + + + + djean@chromium.org + rkgibson@chromium.org + [iOS] Reports how the thumbstrip was closed. + + + + djean@chromium.org + rkgibson@chromium.org + [iOS] Reports how the thumbstrip was opened. + + + + olivierrobin@chromium.org + mcrouse@chromium.org + + When both CLD3 and TFLite language detection method are run, compare their + results. + + + + + olivierrobin@chromium.org + sophiechang@chromium.org + + The method used to detect language in the web page during the + CLD3->TFlite transition. + + + + + thegreenfrog@chromium.org + bling-team@google.com + + Logs a user tapping on a trending query and the index position of that query + in the module. + + + + + ginnyhuang@chromium.org + bling-get-set-up@google.com + + Records the state of the variations seed stored from a previous launch of + Chrome iOS, e.g. not expired. Recorded after the seed is loaded and before + trials are created from the seed. Note that seeds for which this metric is + recorded may not be applied, e.g. when the seed has expired. + + + + + ginnyhuang@chromium.org + bling-get-set-up@google.com + + The result of attempting to fetch an initial variations seed during iOS + Chrome first run. Records both the HTTP code and various error values in one + enumeration. + + + + + ginnyhuang@chromium.org + bling-get-set-up@google.com + + The latency of fetching an initial variations seed during iOS Chrome first + run. Only considers cases where an HTTP 200 result was received. + + + + + + This metric is obsolete as of M105, because the max bucket did reach the + desired hour-level granularity. IOS.BackgroundTimeBeforeWarmStart is the new + metric. + + thegreenfrog@chromium.org + bling-team@google.com + + This event is recorded on every warm start app open. The value represents + how long the app was away from the foreground. + + + + + gambard@chromium.org + justincohen@chromium.org + + A boolean that is used to indicate that the URL property of the WKWebView + has changed to a nil or empty URL. Recorded on the KVO of the URL of the + WKWebView. + + + + + cheickcisse@google.com + sebsg@google.com + + Whether or not the table view of the What's New feature was scrolled. + + + + + cheickcisse@google.com + sebsg@google.com + Logs the time a user spent on What's New. + + + + rkgibson@google.com + muradyan@google.com + + Measures UI interactions in WidgetKit extension. Recorded after a user taps + in a widget and Chrome is opened. + + + + + rkgibson@google.com + muradyan@chromium.org + + Indicates the {Status} of an iOS 14 widget. Logged when the app goes to + foreground. "Current" widgets are logged everytime widgets are + detected, "Install" and "Uninstall" are logged only when + changes are detected. It is important to consider the bias created towards + users that foreground the app more often when doing analysis. This can be + accounted by filtering per unique users when looking at the metric. + + + + + + + + + + + Removed in M111 because windowId injection was removed. + + michaeldo@chromium.org + rohitrao@chromium.org + + Measures the time taken for windowID injection to complete. Logged once per + pageload. + + + + + gambard@chromium.org + bling-team@google.com + + WKWebView should notify navigation commit before navigation finish, but + exceptions have been observed. This histogram counts the frequency of this + invariant violation at the time when a new navigation is finished. True + means navigation finish callback happened before navigation commit. + + + + + tmartino@chromium.org + djean@chromium.org + + [iOS Only] Tracks the number of credentials presented to the user in the + "Use other password..." view in Manual Fallback. This is logged + everytime the user opens this view. + + + + + tmartino@chromium.org + djean@chromium.org + + [iOS Only] Tracks the number of cards presented to the user in Manual + Fallback. This is logged everytime the user opens this view. + + + + + tmartino@chromium.org + djean@chromium.org + + [iOS Only] Tracks the number of credentials presented to the user in the + Passwords Manual Fallback view. This is logged everytime the user opens this + view. + + + + + tmartino@chromium.org + djean@chromium.org + + [iOS Only] Tracks the number of profiles presented to the user in Manual + Fallback. This is logged everytime the user opens this view. + + + + + tmartino@chromium.org + djean@chromium.org + + [iOS Only] Tracks the number of autofill suggestions present when the user + taps on the credit card button in manual fallback. + + + + + tmartino@chromium.org + djean@chromium.org + + [iOS Only] Tracks the number of password suggestions present when the user + taps on the password button in manual fallback. + + + + + tmartino@chromium.org + djean@chromium.org + + [iOS Only] Tracks the number of autofill suggestions present when the user + taps on the profiles (address) button in manual fallback. + + + + + rkgibson@google.com + bling-team@google.com + + [iOS Only] Used on iOS 13+ to report the usage of Light and Dark mode. This + is logged at startup and on each user interface style change. Can be caused + by the system automatic switch or by the user manually changing the style. + + + + + + diff --git a/histograms/metadata/kerberos/histograms.xml b/histograms/metadata/kerberos/histograms.xml new file mode 100644 index 000000000000..cd9257713546 --- /dev/null +++ b/histograms/metadata/kerberos/histograms.xml @@ -0,0 +1,210 @@ + + + + + + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Time in milliseconds to acquire a Kerberos ticket. The value is recorded no + matter if the operation was successful or not. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Type of the Chrome OS login user (primary user) who requests Kerberos + tickets. Reported at most once a day by the Kerberos daemon when a Kebreros + ticket is acquired or Kerberos files are requested, which happens e.g. on + Chrome startup. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + The Kerberos encryption types used while succesfully creating or refreshing + a Kerberos TGT. This value is derived from the Kerberos configuration + 'enctypes' fields. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Number of managed Kerberos accounts owned by the current Chrome OS user. A + managed account is an account that got added via the KerberosAccounts + policy. Reported at most once a day similar to Kerberos.DailyActiveUsers. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Number of Kerberos accounts owned by the current Chrome OS user that use the + 'Remember password' feature, i.e. the account password is stored by the + Kerberos daemon. Reported at most once a day similar to + Kerberos.DailyActiveUsers. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Total number of Kerberos accounts owned by the current Chrome OS user. + Reported at most once a day similar to Kerberos.DailyActiveUsers. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Number of unmanaged Kerberos accounts owned by the current Chrome OS user. + An unmanaged account is an account that was added manually by the user. + Reported at most once a day similar to Kerberos.DailyActiveUsers. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Number of Kerberos accounts owned by the current Chrome OS user that use the + login password for authentication. These accounts were added via the + KerberosAccounts policy, using the '${PASSWORD}' placeholder as password. + Reported at most once a day similar to Kerberos.DailyActiveUsers. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Result from an attempt to acquire a Kerberos ticket. This happens whenever a + new ticket is added or an existing ticket is reauthenticated. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Result from an attempt to add a new Kerberos account, either through the + Kerberos Tickets settings page or via the KerberosAccounts policy. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Result from an attempt to clear Kerberos accounts, usually through toggling + Kerberos related policies. For instance, disabling the KerberosEnabled + policy clears all accounts. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Result from an attempt to retrieve a Kerberos ticket from the Kerberos + daemon. Systems using Kerberos (Chrome, SMB file shares) perform this action + during startup and when they get notified that the files changed. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Result from an attempt to list Kerberos accounts, usually through opening + the Kerberos Tickets settings page or making changes to accounts. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Result from an attempt to remove a new Kerberos account through the Kerberos + Tickets settings page. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Result from an attempt to set Kerberos configuration. This happens right + before acquiring a Kerberos ticket. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Result from an attempt to validate Kerberos configuration. This happens when + the user tries to set configuration in the Advanced section of the dialog to + add new Kerberos tickets. + + + + + fsandrade@chromium.org + src/chrome/browser/ash/kerberos/OWNERS + + Error code from an attempt validate Kerberos configuration. Contains more + specific information than KerberosErrorType about the result of the + validation. + + + + + + diff --git a/histograms/metadata/kiosk/OWNERS b/histograms/metadata/kiosk/OWNERS new file mode 100644 index 000000000000..1a38fb5a12e5 --- /dev/null +++ b/histograms/metadata/kiosk/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the kiosk owners. +# Use chromium-metrics-reviews@google.com as a backup. +file://chrome/browser/ash/app_mode/OWNERS diff --git a/histograms/metadata/kiosk/histograms.xml b/histograms/metadata/kiosk/histograms.xml new file mode 100644 index 000000000000..b753fa8b2cf4 --- /dev/null +++ b/histograms/metadata/kiosk/histograms.xml @@ -0,0 +1,406 @@ + + + + + + + + + + yixie@chromium.org + chromeos-kiosk-eng@google.com + + ChromeOS only. Records the readiness of the app while attempting to launch + the Kiosk app via App Service. + + + + + yixie@chromium.org + chromeos-kiosk-eng@google.com + + ChromeOS only. Records the install result code from Kiosk apps installed as + externally managed apps in a web Kiosk. + + + + + yixie@chromium.org + chromeos-kiosk-eng@google.com + + ChromeOS only. Records whether the web app installed in web app platform is + a placeholder, which happens when the app metadata cannot be fetched due to + external authentication or network error while launching web Kiosk. + + + + + yixie@chromium.org + chromeos-kiosk-eng@google.com + + ChromeOS only. Records the duration for checking updates of secondary apps + and extensions for a Kiosk Chrome app while launching. + + + + + + + + + yixie@chromium.org + chromeos-kiosk-eng@google.com + + ChromeOS only. Records the reason for failed secondary apps and extensions + updates while a Kiosk Chrome app is launching. + + + + + yixie@chromium.org + chromeos-kiosk-eng@google.com + + ChromeOS only. Records whether Kiosk Chrome app update via external USB + drive is successful. + + + + + yixie@chromium.org + chromeos-kiosk-eng@google.com + + ChromeOS only. Records count of in-session updates of primary Kiosk Chrome + app. A forced restart is scheduled in 24 hours. + + + + + yixie@chromium.org + chromeos-kiosk-eng@google.com + + ChromeOS only. Records error for failed initial install of primary Chrome + app in Kiosk. + + + + + yixie@chromium.org + chromeos-kiosk-eng@google.com + + ChromeOS only. Records the result for an update of primary Chrome app in + Kiosk. + + + + + vkovalova@chromium.org + chromeos-kiosk-eng@google.com + + ChromeOS only. Records the number of processes on the machine that are + running from chrome during Kiosk session. Recorded once per hour. + + + + + vkovalova@chromium.org + chromeos-kiosk-eng@google.com + + ChromeOS only. Records the percentage of disk space in use during Kiosk + session. Recorded once per hour. + + + + + yixie@chromium.org + chromeos-kiosk-eng@google.com + + Records the duration for Kiosk launcher to wait for forced extensions to + install. + + + + + yixie@chromium.org + chromeos-kiosk-eng@google.com + + Records the reason for a Kiosk forced {InstallSource} extension install + error. (Chrome OS only) + + + + + + + + + yixie@chromium.org + chromeos-kiosk-eng@google.com + + Records whether Kiosk launcher times out waiting for extensions to install. + Only recorded if forced extensions starts installing while a Web Kiosk is + launching. + + + + + xiyuan@chromium.org + apotapchuk@chromium.org + Tracks cryptohome failure during kiosk launch. + + + + xiyuan@chromium.org + apotapchuk@chromium.org + + Tracks Chrome OS Kiosk launch errors. Recorded when a Kiosk app fails to + launch and returns to the login screen. + + + + + yixie@chromium.org + chromeos-kiosk-eng@google.com + Records the total duration it takes to launch a kiosk app. + + + + + + + + + xiyuan@chromium.org + aghuie@chromium.org + + Records kiosk launches, whether it is an enterprise or consumer kiosk and + whether it is an auto launch or manual launch. + + + + + pbond@chromium.org + chromeos-kiosk-eng@google.com + + ChromeOS only. Records a new browser window type once a new browser window + is attempted to be shown in a kiosk session. Distinguishes settings page, + closed regular browser and opened regular browser. + + + + + vkovalova@chromium.org + chromeos-kiosk-eng@google.com + + ChromeOS only. Records the percentage of RAM in use during Kiosk session. Is + recorded once per hour. + + + + + yixie@chromium.org + chromeos-kiosk-eng@google.com + + Records whether secondary apps are installed successfully in a Chrome App + Kiosk. Only recorded once per Kiosk session which has secondary apps. + + + + + pbond@chromium.org + chromeos-kiosk-eng@chromium.org + + ChromeOS only. Count of Kiosk sessions in the last 24h. Logged each time a + kiosk session is started. + + + + + pbond@chromium.org + chromeos-kiosk-eng@chromium.org + + ChromeOS only. Records the highest severity of low disk notification of a + kiosk session. Logged on every kiosk session start, even if there was no + notification during the last session. + + + + + pbond@chromium.org + chromeos-kiosk-eng@chromium.org + + ChromeOS only. Records low disk notifications being issued. Logged once a + low disk notification is supposed to be shown. + + + + + pbond@chromium.org + chromeos-kiosk-eng@chromium.org + + ChromeOS only. Number of network drops during a kiosk session. Logged on the + next kiosk session start. + + + + + pbond@chromium.org + chromeos-kiosk-eng@chromium.org + + ChromeOS only. Duration of a kiosk session that ended with a crash. Metrics + in this histogram are capped to 1 day (24 hours) to measure the number of + long sessions compared to short ones. See also + Kiosk.SessionDurationInDays.Crashed. + + Note: Duration may be longer than actual session duration, because some + crashes can be detected only on the next session start up. In those cases a + duration effectively is a time between crashed session start and the + following kiosk session start. + + + + + pbond@chromium.org + chromeos-kiosk-eng@chromium.org + + ChromeOS only. Duration of a kiosk session that ended successfully. Metrics + in this histogram are capped to 1 day (24 hours) to measure the number of + long sessions compared to short ones. See also + Kiosk.SessionDurationInDays.Normal. + + + + + pbond@chromium.org + chromeos-kiosk-eng@chromium.org + + ChromeOS only. Duration in days of a kiosk session that ended with a crash. + This metric only tracks kiosk sessions that last longer than 1 day. + + Note: Duration may be longer than actual session duration, because some + crashes can be detected only on the next session start up. In those cases a + duration effectively is a time between crashed session start and the + following kiosk session start. + + + + + pbond@chromium.org + chromeos-kiosk-eng@chromium.org + + ChromeOS only. Duration in days of a kiosk session that ended successfully. + This metric only tracks kiosk sessions that last longer than 1 day. + + + + + irfedorova@google.com + chromeos-kiosk-eng@google.com + + ChromeOS only. Records the Internet access info of the previous kiosk + session during the session restart. The Internet access info is saved to the + local state every hour. The Internet access info contains information + whether device is offline and kiosk session supports offline mode. + + + + + irfedorova@google.com + chromeos-kiosk-eng@google.com + + ChromeOS only. Records the reason of a kiosk session restart. This metric is + recorded when a new kiosk session started. It is based on the previous kiosk + session end reason. + + + + + irfedorova@google.com + chromeos-kiosk-eng@google.com + + ChromeOS only. Records the last saved user activity of the previous kiosk + session. The user activity is saved to the local state every hour. It + contains information whether the user was actively using the device or the + device was idle during the last check-in. + + + + + pbond@chromium.org + chromeos-kiosk-eng@chromium.org + + ChromeOS only. Records kiosk session states, whether it is started, closed, + crashed, etc. Emitted when the kiosk session state changes. Crashed kiosk + sessions can be detected on the following kiosk start. + + + + + vkovalova@chromium.org + chromeos-kiosk-eng@google.com + + ChromeOS only. Records the percentage of swap memory in use during Kiosk + session. Recorded once per hour. + + + + + yixie@chromium.org + chromeos-kiosk-eng@google.com + + Records the reason for Web App install error in a Web Kiosk. + + + + + + diff --git a/histograms/metadata/language/DIR_METADATA b/histograms/metadata/language/DIR_METADATA new file mode 100644 index 000000000000..256e29ab7285 --- /dev/null +++ b/histograms/metadata/language/DIR_METADATA @@ -0,0 +1,11 @@ +# Metadata information for this directory. +# +# For more information on DIR_METADATA files, see: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md +# +# For the schema of this file, see Metadata message: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto + +monorail { + component: "UI>Browser>Language" +} \ No newline at end of file diff --git a/histograms/metadata/language/OWNERS b/histograms/metadata/language/OWNERS new file mode 100644 index 000000000000..8fdc08d7cd92 --- /dev/null +++ b/histograms/metadata/language/OWNERS @@ -0,0 +1,9 @@ +# When sending a CL with metrics for review, if a member of +# METRIC_REVIEWER_OWNERS is a good choice of reviewer, please send the CL to +# them. Otherwise, send the CL to chromium-metrics-reviews@google.com. Googlers +# can read more about chromium-metrics-reviews@google.com at go/gwsq-gerrit. +per-file histograms.xml=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +perrier@chromium.org +curranmax@chromium.org +mcrouse@chromium.org diff --git a/histograms/metadata/language/histograms.xml b/histograms/metadata/language/histograms.xml new file mode 100644 index 000000000000..b951e226d524 --- /dev/null +++ b/histograms/metadata/language/histograms.xml @@ -0,0 +1,503 @@ + + + + + + + + + + mcrouse@chromium.org + chrome-language@google.com + + The state of the language detection model used by a TranslateAgent. Recorded + once per model load attempt for each renderer process. + + + + + mcrouse@chromium.org + chrome-language@google.com + + Whether the TFLite-based language detection model was available when page + content was extracted and a language determination was needed. Recorded once + per page load. + + + + + mcrouse@chromium.org + chrome-language@google.com + + Whether the request to load the TFLite-based language detection model + deferred because the associated frame was hidden. This is recorded once per + render frame only in frames that the model is not already available. + + + + + mcrouse@chromium.org + chrome-language@google.com + + Whether the model was unavilable for detecting the page language because the + request to load the model was deferred because the frame was hidden when the + translate agent was initialized. This is recorded once per page load. + + + + + perrier@chromium.org + chrome-language@google.com + + The actions on the languages settings page that result in a preference + change. This histogram will record every single event that happens + separately. See LanguageSettings.PageImpressions for how often language + settings sections are seen. + + + + + perrier@chromium.org + chrome-language@google.com + + The action taken by a user from the app language prompt shown on second run. + Each option can only be taken once for each time the prompt is shown. An + action must be taken if the prompt is shown, unless the application is + closed while the prompt is displayed. Recorded when the prompt is dismissed. + + + + + perrier@chromium.org + chrome-language@google.com + + Whether or not the device is online when the App Language Prompt should be + shown. If offline the prompt is not shown and will be shown the next time + Chrome starts and is online. + + Reported each time all other conditions for showing the App Language Prompt + have been met. + + + + + perrier@chromium.org + chrome-language@google.com + + Whether or not the language selected for the app language prompt is one of + the top suggested languages or not. + + Reported after the OK button is selected on the prompt. Only reported if the + language is changed. Not recorded if the current app language is selected. + Not reported if the Cancel button is pressed. + + + + + perrier@chromium.org + chrome-language@google.com + + The ISO-639 language code for the selected language from the app language + prompt shown at second run. The default system language is recorded as the + "empty string". + + Reported after the OK button is selected on the prompt. Reported even if the + OK button is pressed but there is no language change. Not reported if the + Cancel button is pressed. + + + + + perrier@chromium.org + chrome-language@google.com + + Whether or not the "Other Languages" have been shown for the + AppLanguagePrompt was displayed. + + Reported when the AppLanguagePrompt dialog is dismissed for any reason. + + + + + perrier@chromium.org + chrome-language@google.com + + The count of top languages not hidden behind the "Other languages" + button. + + Logged once when the AppLanguagePrompt is shown. + + + + + perrier@chromium.org + chrome-language@google.com + + Whether or not the Chrome UI language matches the top ULP language when the + AppLanguagePrompt should be shown. Logged when checking if the prompt should + be shown and it has not already been shown. + + Only the base languages are compared so pt-PT is considered equal to pt-BR. + + + + + googleo@chromium.org + chrome-language@google.com + + Impressions of pages, sections, or dialogs viewed from language settings. + Page impressions do not result in preferences changes. See + LanguageSettings.Actions for preference change counts. + + + + + perrier@chromium.org + chrome-language@google.com + + Records the status of a language split install when it has reached a final + status. + + Recorded once per attempted install. + + + + + perrier@chromium.org + chrome-language@google.com + + Accept languages with country codes removed. Recorded once per profile + intitalization. Incognito profiles are ignored. + + + + + dvallet@chromium.org + chrome-language@google.com + + The number of accepted languages in the user preferences recored once per + profile initialization. Incognito profiles are ignored. + + + + + victortan@chromium.org + potassium-katabolism@google.com + + Metrics that record matches between the Content-Language response header and + Accept-Language request header values. This is recorded every time + DocumentLoader commit navigation. + + + + + victortan@chromium.org + potassium-katabolism@google.com + + Metrics that record matches between the xml:lang, html lang and + Accept-Language request header values. This is recorded every time the + translate agent captures the page. + + + + + perrier@chromium.org + chrome-language@google.com + + Records the source page languages from the UrlLanguageHistogram service. + + The UrlLanguageHistogram service saves a dict pref of the page language to + frequency for the last 1000 page loads. This histogram is emitted once for + all languages that appear in at least 5% of previous page loads. If a + profile has 10 or fewer page loads no languages are recorded. + + This histogram is recorded once per profile per eligible language during + initialization. Incognito profiles are ignored and it is not recorded on + ChromeOS. + + + + + perrier@chromium.org + chrome-language@google.com + + The availability status of Android system languages for use as the Chromium + UI language. If the Chromium UI language is overridden, it must be + avaliable. The default language is the one used by the JVM for localization. + This will be different from the top Android language if the top Android + language is not available for localization in Chromium. For more info, see + the Android documentation on LocaleList.getDefault(). + + This histogram is recorded during onForgroundStart() for Android. + + + + + perrier@chromium.org + chrome-language@google.com + + The status of the current Chromium UI. It is correct when the UI matches + what the JVM default language is set to. + + This histogram is recorded during onForgroundStart() for Android. + + + + + perrier@chromium.org + chrome-language@google.com + + The status of the current Chromium UI when the UI language is not + overridden. The UI language is correct when it matches the default Android + system language. If no Android language is available as the Chromium + language, then the UI is by definition incorrect. + + This histogram is recorded during onForgroundStart() for Android. + + + + + perrier@chromium.org + chrome-language@google.com + + The status of the current Chromium UI when the UI language is overridden. + The UI language is correct when it matches the override UI value set as the + default locale. The Native UI language can be different from the Java UI + language if Play Store daily hygiene has not run since an override language + was set. + + This histogram is recorded during onForgroundStart() for Android. + + + + + perrier@chromium.org + chrome-language@google.com + + Records if and how the system or override locale has changed. The status is + found by comparing the current system locale to the previous system locale. + The system locale is a list of locales and if overriden the override locale + is prepended to the front. + + This histogram is recorded during onForgroundStart() for Android. + + + + + perrier@chromium.org + chrome-language@google.com + + The ISO-639 language code for the Android override language. If no override + is set the empty string is recorded. Before M93 the empty string was also + recorded if the overide language exactly matched the system language. + + Reported once per application start on Android. + + + + + perrier@chromium.org + chrome-language@google.com + + Whether or not the Chrome override language matches the Android system + language. An exact match means that the full locale tag matches (e.g. + en-GB). The same base language means that only the language part of the + locale matches. Since Android requires a country in the locale but Chrome + only has country variants for a few languages an exact match is rare. + + Reported once per application start on Android. + + + + + perrier@google.com + chrome-language@google.com + + The ratio of page languages in the user's Accept Languages over the total + number of languages in their LanguageProfile. This answers the question: + "What percentage of Accept Languages are page languages?". + + Only base languages are compared (e.g. pt-BR == pt-MZ). + + Recorded once at startup when ULP is initialized. + + + + + perrier@google.com + chrome-language@google.com + + The ratio of ULP languages in the user's Accept Languages over the total + number of languages in their LanguageProfile. This answers the question: + "What percentage of Accept Languages are ULP languages?". + + Only base languages are compared (e.g. pt-BR == pt-MZ). + + Recorded once at startup when ULP is initialized. + + + + + perrier@google.com + chrome-language@google.com + + Records whether Chrome's UI language exists in the user's ULP + LanguageProfile and if it is the top language. Also records if it is an + exact match (e.g. pt-BR != pt-PT) or only a base match (e.g. pt-BR = pt-PT). + + Recorded once at startup when ULP is initialized. + + + + + perrier@google.com + chrome-language@google.com + + The number of unique languages present in the user's LanguageProfile. + + Recorded once at startup when ULP is initialized. + + + + + perrier@google.com + chrome-language@google.com + + The language code of each Never Translate language that is not in a users + ULP. + + Recorded once at startup when ULP is initialized. + + + + + perrier@google.com + chrome-language@google.com + + Count of Never Translate languages that are not in a users ULP. + + Recorded once at startup when ULP is initialized. + + + + + perrier@google.com + chrome-language@google.com + + The language code of each page language that is not in a users ULP. + + Recorded once at startup when ULP is initialized. + + + + + perrier@google.com + chrome-language@google.com + + Count of page languages that are not in a users ULP. + + Recorded once at startup when ULP is initialized. + + + + + perrier@google.com + chrome-language@google.com + + The result of initializing ULP, including {AccountType}. + + Recorded once at startup when ULP is initialized. + + + + + + + + + + perrier@google.com + chrome-language@google.com + + Records whether the first accept language exists in the user's ULP + LanguageProfile and if it is the top language. Also records if it is an + exact match (e.g. pt-BR != pt-PT) or only a base match (e.g. pt-BR = pt-PT). + + Recorded once at startup when ULP is initialized. + + + + + perrier@google.com + chrome-language@google.com + + Records whether the current translate target language exists in the user's + ULP LanguageProfile and if it is the top language. Also records if it is an + exact match (e.g. pt-BR != pt-PT) or only a base match (e.g. pt-BR = pt-PT). + + Recorded once at startup when ULP is initialized. + + + + + + diff --git a/histograms/metadata/leveldb_proto/OWNERS b/histograms/metadata/leveldb_proto/OWNERS new file mode 100644 index 000000000000..ade5e7bb6899 --- /dev/null +++ b/histograms/metadata/leveldb_proto/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +nyquist@chromium.org diff --git a/histograms/metadata/leveldb_proto/histograms.xml b/histograms/metadata/leveldb_proto/histograms.xml new file mode 100644 index 000000000000..25109ea25d2c --- /dev/null +++ b/histograms/metadata/leveldb_proto/histograms.xml @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + nyquist@chromium.org + salg@google.com + chrome-owp-storage@google.com + + The approximate MemTable memory use of a LevelDB in bytes. Recorded right + after initializing an on-disk database. + + + + + + nyquist@chromium.org + ssid@chromium.org + Whether a ProtoDB Destroy call was successful or not. + + + + + nyquist@chromium.org + ssid@chromium.org + + The LevelDB Status returned from a failed ProtoDatabase Get call. + + + + + + nyquist@chromium.org + ssid@chromium.org + Whether a ProtoDB Get call found what was requested. + + + + + nyquist@chromium.org + ssid@chromium.org + Whether a ProtoDB Get call was successful or not. + + + + + nyquist@chromium.org + ssid@chromium.org + The LevelDB Status from a ProtoDatabase Init call. + + + + + nyquist@chromium.org + ssid@chromium.org + Whether a ProtoDB LoadEntries call was successful or not. + + + + + nyquist@chromium.org + ssid@chromium.org + + Whether a ProtoDB LoadKeysAndEntries call was successful or not. + + + + + + nyquist@chromium.org + ssid@chromium.org + Whether a ProtoDB LoadKeys call was successful or not. + + + + + ssid@chromium.org + salg@chromium.org + + Tracks the init state progress of a proto database. An enum value is + recorded for each state of progression through the initialization process. + Shows the number of users hitting each stage. The enum values starting with + success and failure indicate that the final output of initialization is a + success or failure. See + //components/leveldb_proto/internal/proto_init_state_description.md. + + + + + nyquist@chromium.org + ssid@chromium.org + + The LevelDB Status returned from a failed Protodatabase UpdateEntries call. + + + + + + nyquist@chromium.org + ssid@chromium.org + Whether a ProtoDB UpdateEntries call was successful or not. + + + + + + diff --git a/histograms/metadata/local/OWNERS b/histograms/metadata/local/OWNERS new file mode 100644 index 000000000000..e94d94072d92 --- /dev/null +++ b/histograms/metadata/local/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +tby@chromium.org diff --git a/histograms/metadata/local/histograms.xml b/histograms/metadata/local/histograms.xml new file mode 100644 index 000000000000..25fe2b859f26 --- /dev/null +++ b/histograms/metadata/local/histograms.xml @@ -0,0 +1,299 @@ + + + + + + + + + + + + + + + + + + + + + + + + + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + Whether or not BindIndex calls to LocalSearchService have errors. It is + reported once for every BindIndex call. Chrome OS only. + + + + + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + Reasons why local search daily metrics were reported. Chrome OS only. + + + + + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + Time taken to add/update content to the index. It is reported once for every + AddOrUpdate call. Chrome OS only. {IndexId} + + + + + + + + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + Type of backend requested from the Local Search Service. It is reported once + at the initialization of an Index. Chrome OS only. {IndexId} + + + + + + + + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + Time taken to clear all content from the index. It is reported once for + every ClearIndex call. Chrome OS only. {IndexId} + + + + + + + + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + Number of times the local search service has been requested to perform a + search on a device. Reported daily. The count is accumulated through the + day, spanning reboots, and sent once the system clock indicates that a full + day or more has passed since the last report. If the system is suspended or + off for more than a day, the current count will be reported the next time + the system boots, but the skipped days will not be reported. Chrome OS only. + {IndexId} + + + + + + + + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + Time taken to delete content from the index. It is reported once for every + Delete call. Chrome OS only. {IndexId} + + + + + + + + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + Number of documents in the corpus. Recorded each time the index is updated + (documents added, updated or removed) and if the index is not empty. Chrome + OS only. {IndexId} + + + + + + + + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + Number of results for each successful search. Chrome OS only. {IndexId} + + + + + + + + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + This is recorded each time a search is successfully performed using + LocalSearchService. Always records true. Chrome OS only. {IndexId} + + + + + + + + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + Search request response status for Cros Settings. Chrome OS only. {IndexId} + + + + + + + + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + Time taken to find search results. Only recorded if search response status + is success, i.e. neither index nor query is empty. Chrome OS only. {IndexId} + + + + + + + + tby@chromium.org + thanhdng@chromium.org + wrong@chromium.org + + Time taken to update contents from the index. It is reported once for every + UpdateDocuments call. Chrome OS only. {IndexId} + + + + + + + + ssid@chromium.org + + Total size of the HTML5 LocalStorage browser-side cache purged in KB when + memory pressure signal was triggered or cache size hit the limits. + + + + + ssid@chromium.org + + Total size of the HTML5 LocalStorage databases in KB in the browser-side + cache recorded each time a new database is opened in memory. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Size of the HTML5 LocalStorage DB in KB in the renderer-side cache using + Mojo implementation. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Time (in ms) to load HTML5 LocalStorage into the renderer-side cache using + Mojo implementation. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Time (in ms) to load HTML5 LocalStorage into the renderer-side cache using + Mojo implementation, split by size. {LocalStorageSizes} + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The renderer side cache hit rate metrics for new HTML5 LocalStorage DB + opened. + + Warning: this histogram was expired from M78 to M92; data may be missing. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Size of the HTML5 LocalStorage DB in KB in the renderer-side cache. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + + diff --git a/histograms/metadata/login/OWNERS b/histograms/metadata/login/OWNERS new file mode 100644 index 000000000000..3cb5249a9a76 --- /dev/null +++ b/histograms/metadata/login/OWNERS @@ -0,0 +1,8 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +jorgelo@chromium.org +rsorokin@google.com +alemate@chromium.org +osamafathy@google.com diff --git a/histograms/metadata/login/histograms.xml b/histograms/metadata/login/histograms.xml new file mode 100644 index 000000000000..71f0e87b6177 --- /dev/null +++ b/histograms/metadata/login/histograms.xml @@ -0,0 +1,466 @@ + + + + + + + + + + emaamari@google.com + cros-lurs@google.com + cros-oac@google.com + + Chrome OS histogram that keeps track of cases where the user_allowlist + policy is not present, forcing us to use the user_whitelist policy instead. + We emit false to this histogram when user_allowlist is present. We emit true + when user_allowlist is not present and user_whitelist is present and used as + fallback. These checks happen during login policies decoding, which occurs + every time device settings are loaded or stored. + + + + + + Removed in M110. + + mhasank@google.com + arc-core@google.com + + Tracks the time to back up ARC bug reports when starting ARC fails. This is + emitted when we upgrade the ARC container from mini to full. + + + + + vsomani@google.com + arc-core@google.com + + Records the status of Arc continue boot impulse. This is emitted every time + we upgrade from a mini to full container. + + + + + + Removed 2022/02, replaced with ArcContinueBootImpulseTime2. + + mhasank@google.com + arc-core@google.com + + Tracks the time to execute arc-boot-continue impulse. This is emitted when + we successfully upgrade the ARC container from mini to full. + + + + + + Removed 2022/09, replaced with ArcContinueBootImpulseTime3. + + mhasank@google.com + arc-core@google.com + + Tracks the time to execute arc-boot-continue impulse. This is emitted when + we successfully upgrade the ARC container from mini to full. This metrics + increases the number of buckets to 50 and a maximum duration of 60 seconds. + + + + + mhasank@google.com + arc-core@google.com + + Tracks the time to execute arc-boot-continue impulse. This is emitted when + we successfully upgrade the ARC container from mini to full. This metrics + increases the number of buckets to 50 and a maximum duration of 40 seconds. + + + + + xiyuan@chromium.org + cros-oac@google.com + + Tracks the browser process shutdown time from when SIGTERM is sent to the + browser process to when the browser process group exits (or gets killed by + SIGABRT). + + + + + yunkez@google.com + cros-lurs@google.com + + Records the time taken for the Cryptohome recovery when it {Result}. + + + + + + + + + yunkez@google.com + cros-lurs@google.com + + Tracks the result of the cryptohome recovery and the failure reason. + Recorded when the recovery attempt finished. + + + + + + + alemate@chromium.org + rsorokin@chromium.org + + A set of chrome flags that triggered browser restart on Chrome OS after user + sign in. Chrome needs to be restarted if the device owner set of flags is + different from the user flags. Which means that there is a flag difference + which led to this restart. This difference is reported by this metric. + + + + + igorcov@chromium.org + chromeos-commercial-remote-management@chromium.org + + Reports the device ownership, the state of the device policy and the state + of the owner key. Logged only for the devices that have ownership taken as + per install attributes. Is logged at every device policy load. + + + + + achuith@chromium.org + antrim@chromium.org + cros-lurs@google.com + Chrome OS login failure reason. + + + + anastasiian@chromium.org + cros-lurs@google.com + + Report the type of user login and the number of it on a device. It is + triggered when a login is successful + + + + + + + + + + + + + + + + emaamari@google.com + src/chromeos/ash/components/policy/OWNERS + + Chrome OS histogram that keeps track of cases where devices have an invalid + combination of allow_new_users and user_allowlist policies. This is emitted + during the decoding of login policies. + + + + + + Removed in M103. + + achuith@chromium.org + omrilio@chromium.org + + Chrome OS histogram that keeps track of the days since the least frequently + used account signed in. Reported on every boot and once a day after that. + + + + + alemate@chromium.org + Records whether a new user's priority prefs sync timed out. + + + + alemate@chromium.org + + Time spent waiting for priority preferences to sync after new user sign in. + The operation will time out after 10s. + + + + + mslus@chromium.org + chromeos-commercial-identity@google.com + + Records the number of users the login screen was initialized with. It is + emitted on processing the user list before displaying the screen. The count + includes all Regular, Child and Active Directory users. + + + + + mslus@chromium.org + chromeos-commercial-identity@google.com + + Records offline login attempts with user pods hidden on the login screen. + + + + + + Removed 03/2022 + + antrim@chromium.org + cros-lurs@google.com + + On offline login success, records number of attempts, including success. + + + + + rajendrant@chromium.org + mcrouse@chromium.org + + Type of login detected for a page load based on different heuristics. + Recorded once per page load. + + + + + antrim@chromium.org + cros-lurs@google.com + + Tracks the reason why a user was sent through the GAIA re-auth flow which + caused the local password change. + + + + + antrim@chromium.org + cros-lurs@google.com + + Tracks the reason why a user was sent through the GAIA re-auth flow which + did not cause the local password change. + + + + + rajendrant@chromium.org + mcrouse@chromium.org + + Records whether the passworded sites list is initialized when the query for + sites happens. This is used to measure how many queries happened before the + list got populated the first time. Recorded on every query to the password + store. + + + + + antrim@chromium.org + achuith@chromium.org + cros-lurs@google.com + + Time from first display of the login prompt until the user completes signing + in. + + + + + khmel@chromium.org + antrim@chromium.org + cros-lurs@google.com + + Time from first display of the login prompt until the existing user + completes signing in. + + + + + yunkez@google.com + cros-lurs@google.com + + Records the fetch duration of the reauth request token from the recovery + service when it {Result}. This is recorded on the GAIA reauth screen when + Cryptohome recovery is deemed to be needed in high probablity. + + Warning: this histogram was expired from 2022-06-02 to 2022-08-18; data may + be missing. + + + + + + + + + iby@chromium.org + + Tracks whether a ChromeOS user was logged out because Chrome repeatedly + crashed. + + + + + sergiyb@chromium.org + chromeos-commercial-remote-management@chromium.org + + Result of a state key generation operation. Warning: this histogram was + expired from 2019-10-22 (M78) to 2023-02-07 (M110); data may be missing. + + + + + achuith@chromium.org + antrim@chromium.org + cros-lurs@google.com + Chrome OS login success reason. + + + + mnissler@chromium.org + xiyuan@chromium.org + + Tracks whether switches were mapped to feature flags in session_manager for + compatibility. session_manager does this and emits UMA samples when + encountering old device settings files that still contain feature + configuration in command line switch representation. This data will inform + the decision when to remove this compatibility code. + + + + + antrim@chromium.org + cros-lurs@google.com + + Time between sending a request to, and receiving a reply from, GAIA token + endpoint to validate TokenInfo. + + + + + raleksandrov@google.com + antrim@chromium.org + rsorokin@chromium.org + cros-oac@google.com + + Time between sending a request to, and receiving a reply from, GAIA token + endpoint to obtain TokenInfo. + + + + + + Removed in M103. + + alemate@chromium.org + achuith@chromium.org + + Chrome OS histogram that keeps track of number of users who have logged in + in the last 28 days. Reported on every boot and once a day after that. + + + + + + Removed in M103. + + alemate@chromium.org + achuith@chromium.org + + Chrome OS histogram that keeps track of number of users who have logged in + in the last day. Reported on every boot and once a day after that. + + + + + + Removed in M103. + + alemate@chromium.org + achuith@chromium.org + + Chrome OS histogram that keeps track of number of users who have logged in + in the last 7 days. Reported on every boot and once a day after that. + + + + + + Removed in M103. + + alemate@chromium.org + achuith@chromium.org + + Chrome OS histogram that keeps track of percentage of local users who have + logged in in the last 7 days. Reported on every boot and once a day after + that. + + + + + cmasone@chromium.org + + Chrome OS histogram that keeps track of the way a user logs in and whether + Chrome OS is running normal or developer mode. + + + + + + diff --git a/histograms/metadata/media/OWNERS b/histograms/metadata/media/OWNERS new file mode 100644 index 000000000000..e7ab3eefd4df --- /dev/null +++ b/histograms/metadata/media/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +evliu@google.com +kron@chromium.org +toyoshim@chromium.org diff --git a/histograms/metadata/media/histograms.xml b/histograms/metadata/media/histograms.xml new file mode 100644 index 000000000000..854cf14adba0 --- /dev/null +++ b/histograms/metadata/media/histograms.xml @@ -0,0 +1,6840 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jophba@chromium.org + mfoltz@chromium.org + + Records which audio codec was negotiated during a mirroring session. + + + + + jophba@chromium.org + mfoltz@chromium.org + + Records the currently set video bit rate during a Cast Streaming mirroring + session. This metric is subsampled every 500 frames. + + + + + jophba@chromium.org + mfoltz@chromium.org + + Records which video codec was negotiated during a mirroring session. + + + + + jophba@chromium.org + mfoltz@chromium.org + + Records the reason when an frame is dropped during a Cast Streaming session. + + + + + + jophba@chromium.org + mfoltz@chromium.org + + Records the total percentage of frames dropped for a given Cast Streaming + session. + + + + + + vikassoni@chromium.org + media-dev@chromium.org + + Error codes to handle AImage and AImageReader api calls. This is recorded + when AImageReader acquireNextImage or acquireLatestImage is called and the + returned code is other than AMEDIA_OK. This histogram was enabled in the + past and became absolete on 2018-11-25. + + + + + vasilyt@chromium.org + media-dev@chromium.org + + Logs whether AImageReader provided an acquire fence in acquireNextImage or + acquireLatestImage. Logged once for each successfuly acquired frame. + + + + + liberato@chromium.org + media-dev@chromium.org + + Android-specific metric. Occasionally, we cannot start a foreground service + when headphones are unplugged. This tracks how often that occurs, which is + one recorded boolean per "user unplugs headphones while media is + playing". See https://crbug.com/1245017 for more details. + + + + + vasilyt@chromium.org + liberato@chromium.org + media-dev@chromium.org + + Android: Whether we successfuly got ColorSpace from MediaCodec or not. + Recorded each time output format changes from MediaCodec. + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Indicates if MediaCodecInfo for the given codec type was available and + non-empty. Reported once per GPU process instance if and only if encoder or + decoder info are requested respectively. + + + + + + + + + tguilbert@chromium.org + media-dev@chromium.org + Android: Whether MediaPlayer exited without errors. + + + + sandersd@chromium.org + media-dev@chromium.org + + Wall time of MediaPlayer playbacks. Each count represents one second of + media playback. Multiple MediaPlayer instances can together accumulate watch + time faster than real time. + + + + + evliu@google.com + media-dev@chromium.org + + Records when an audible tab is closed and we now only have one audible tab + open. Warning: this histogram was expired from 2019-05-30 to 4-18-22; data + may be missing. + + + + + evliu@google.com + media-dev@chromium.org + + Records how long more than one tab is audible at the same time. The + concurrent tabs might change during this period. The time recorded starts + when the browser goes from one to two audbile tabs and stops when it is back + below two. Warning: this histogram was expired from 2020-09-05 to 4-18-22; + data may be missing. + + + + + evliu@google.com + media-dev@chromium.org + + Records how many tabs were audible when a new tab started to be audible. + Warning: this histogram was expired from 2020-09-05 to 4-18-22; data may be + missing. + + + + + evliu@google.com + media-dev@chromium.org + + Records how many tabs are audible at the same time during the session. It is + recording the maximum audible tab count everytime it increases. In other + words, a session with N concurrent audible tabs will record entries from 1 + through N exactly once. Warning: this histogram was expired from 2020-09-05 + to 4-18-22; data may be missing. + + + + + dalecurtis@chromium.org + evliu@google.com + media-dev@chromium.org + Records the autoplay source of audios. + + + + guidou@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Whether missing callbacks where detected during audio capture. Logged when + AudioInputDevice is stopped. + + + + + guidou@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + The number of captured audio frames that is provided by the operating system + in each callback. Typically, Chrome will want to use a 10 ms buffer (e.g. + 480 frames for a sample rate of 48 kHz), but the OS may decide to capture + e.g. 256 frames of audio at a time. If the desired frame size is used, the + emitted value is special-cased to be 0. This histogram then shows how + frequent it is that the desired number of frames is used and if not, the + number of frames used in practice. The number of frames per callback is + normally constant or very rarely changed throughout the lifetime of the + audio stream. The first value that differs from the desired value is stored + and logged when an audio input stream is closed. Any further differences + during the lifetime will be ignored. + + + + + olka@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + This histogram measures the duration of every input stream, as seen from the + renderer. It counts from when it has been successfully started, until it is + stopped. Streams that fail to start are not logged. + + + + + guidou@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + A boolean that reflects whether or not an error was reported during audio + capture for a low latency stream. + + + + + toprice@chromium.org + video-cmi-apis@google.com + webrtc-audio-uma@google.com + + The time from the first microphone access failure due to blocked system + permission before the last browser restart to startup after browser restart. + Logged once at browser startup if the system permission then is allowed. + Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may + be missing. + + + + + toprice@chromium.org + video-cmi-apis@google.com + webrtc-audio-uma@google.com + + The time from the last microphone access failure due to blocked system + permission before the last browser restart to startup after browser restart. + Logged once at browser startup if the system permission then is allowed. + Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may + be missing. + + + + + toprice@chromium.org + video-cmi-apis@google.com + webrtc-audio-uma@google.com + + The Mac system permission state for microphone. Logged once at browser + startup. For more information on the values, see + https://developer.apple.com/documentation/avfoundation/avauthorizationstatus. + Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may + be missing. + + + + + toprice@chromium.org + video-cmi-apis@google.com + webrtc-audio-uma@google.com + + The Mac system permission state for microphone. Logged once at browser + startup if there was a failure accessing the microphone due to blocked + system permission before the last browser restart. For more information on + the values, see + https://developer.apple.com/documentation/avfoundation/avauthorizationstatus. + Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may + be missing. + + + + + toprice@chromium.org + video-cmi-apis@google.com + webrtc-audio-uma@google.com + + The Mac system permission state for microphone at the time of a user media + request. Logged when the system permission is checked. If the permission is + "not determined" this is logged, permission is requested, and the + resulting permission (from the user response) is also logged. For more + information on the values, see + https://developer.apple.com/documentation/avfoundation/avauthorizationstatus. + Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may + be missing. + + + + + tguilbert@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Maximum size (in buffers) of the unprocessed data queue, reached over a + sampling interval (1000 callbacks). Not logged for streams received less + than 1000 callbacks. + + + + + tguilbert@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Number of times over a sampling interval (1000 callbacks) a + ProcessingAudioFifo has overflowed and dropped buffers. Capped at 100 (1/10 + of all callbacks). Not logged for streams received less than 1000 callbacks. + + + + + + + guidou@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + When AudioInputDevice is stopped, this stat is recorded with whether an + error callback was ever received over IPC, and in that case whether the + error occurred during or after stream creation. + + + + + olka@chromium.org + henrika@chromium.org + media-dev@chromium.org + webrtc-audio-uma@google.com + + The number of glitches that were detected at the OS level while an audio + input stream was active. A glitch in this case corresponds to a certain + error code from the IAudioCaptureClient::GetBuffer() API: + AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY. This value is logged every 1000 OS + callbacks on Windows. + + + + + olka@chromium.org + tommi@chromium.org + guidou@chromium.org + webrtc-audio-uma@google.com + + Error codes from IAudioClient::Initialize() in + WASAPIAudioInputStream::InitializeAudioEngine on Windows. + + + + + fhernqvist@google.com + olka@chromium.org + webrtc-audio-uma@google.com + + Errors from IAudioClient::Initialize() in + WASAPIAudioInputStream::InitializeAudioEngine on Windows that are related to + the audio format. Each error is split by whether format conversion was used + or not. Warning: this histogram was expired from 2022-10-17 to 2022-10-18; + data may be missing. + + + + + gudiou@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Success/error cases for opening an audio input stream on Windows. + + + + + fhernqvist@google.com + olka@chromium.org + webrtc-audio-uma@google.com + + Tracks support and initialization success/failure of the CoreAudio dispatch + override hotfix. Logged during initialization of AudioManagerMac. The fix is + not supported on macOS earlier than version 10.10. Warning: this histogram + was expired from 2022-10-01 to 2022-12-08; data may be missing. + + + + + fhernqvist@google.com + olka@chromium.org + webrtc-audio-uma@google.com + + Logged whenever the CoreAudio dispatch override hotfix needs to look up the + calling function using dladdr(). Once ResumeIO and PauseIO have been + identified, no more lookups should be performed during the session. Warning: + this histogram was expired from 2022-10-09 to 2022-10-18; data may be + missing. + + + + + peah@chromium.org + hychao@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Error codes reported by the NotifyStreamError function in CrasInputStream. + + + + + peah@chromium.org + hychao@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Logged at each call to CrasInputStream::Open to indicate any errors. + + + + + peah@chromium.org + hychao@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Logged at each call to CrasInputStream::Start to indicate any errors. + + + + + peah@chromium.org + hychao@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Error codes reported by the NotifyStreamError function in CrasUnifiedStream. + + + + + peah@chromium.org + hychao@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Logged at each call to CrasUnifiedStream::Open to indicate any errors. + + + + + peah@chromium.org + hychao@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Logged at each call to CrasUnifiedStream::Start to indicate any errors. + + + + + henrika@chromium.org + webrtc-audio-uma@google.com + + Indicates if audio capturing did start after stream startup was requested. + Sampled once, a few seconds after a stream has been asked to start. + + + + + henrika@chromium.org + media-dev@chromium.org + webrtc-audio-uma@google.com + + Indicates if the volume level of the audio session is set to zero when the + input audio session starts. Sampled once when the stream starts but only on + Windows platforms. See http://crbug.com/1014443. Warning: this histogram was + expired from 2022-10-09 to 2022-12-07; data may be missing. + + + + + agpalak@chromium.org + dalecurtis@chromium.org + webrtc-audio-uma@google.com + + Reports the number of occurences of null output dictionary when + AudioObjectGetPropertyData for kAudioAggregateDevicePropertyComposition is + called. This is equivalent to the number of crashes that were reported in + crbug.com/1428619. + + + + + dalecurtis@chromium.org + media-dev@chromium.org + webrtc-audio-uma@google.com + + Errors from various methods on WASAPIAudioOutputStream. Recorded upon a + failure being returned from a call into WASAPI. + + + + + + + + + + + + guidou@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Time delta between the moment output device authorization request is + received by the browser and the moment its processessing is finished (and + reply is to be sent back to the renderer if IPC is not closed yet). + + + + + olka@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + Duration of the interval when a listener listens to a specific output + device. Recorded when a listener chooses to listen to another output device, + or stops listening altogether. + + + + + + + + + olka@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + Maximum number of listeners receiving the reference output signal during + mixed playback. Recoreded when mixing stops (i.e. when all reference signal + listeners are gone.) + + + + + + + + + + olka@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + Maximum number of output streams mixed simlutaniously by OutputDeviceMixer. + Recoreded when mixing stops (when all reference signal listeners are gone). + + + + + + + + + + olka@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + Health status of the mixed playback. Recorded when mixed playback stopped or + failed to start. + + + + + olka@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + Duration of the interval between the moment OutputDeviceMixer started mixed + playback (referece playback signal is requested by at least one listener and + there is at least one stream managed by the mixer playing) and the moment + OutputDeviceMixer stopped mixed playback (there are no more listeners). It + may include intervals recorded by + Media.Audio.OutputDeviceMixer.NoopMixingDuration histogram. + + + + + + + + + + olka@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + Duration of the interval when there are no output streams to mix but there + are reference signal listeners present, so OutputDeviceMixer renders silence + and feeds it to the listeners as well. Recorded when an output stream starts + playing (and thus playback is not empty any more) or when all listeners are + gone (and thus mixing stops). There may be multiple such intervals during an + interval recorded by Media.Audio.OutputDeviceMixer.MixingDuration. + + + + + olka@chromium.org + saza@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + Number of times over a sampling interval (1000 callbacks) when the mixing + callback took longer than the playback buffer duration to finish. Capped at + 100 (1/10 of all callbacks). Not logged if the mixer was called less than + 1000 times. + + + + + olka@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + Duration of the interval when an output stream managed by OutputDeviceMixer + is playing independently (Unmixed) or as a part of the mix (Mixed). Measured + between the moment the stream starts playing or its playback mode + (Mixed/Unmixed) changes, and the moment the stream stops playing or its + playback mode changes. + + + + + + + + + + + + + + + + olka@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + Health status of each output stream managed by mixer. Recorded when the + stream is closed. + + + + + olka@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + A path OutputDeviceMixerManager uses to create an output stream. + + + + + saza@google.com + olka@chromium.org + webrtc-audio-uma@google.com + + The time, in milliseconds, between when a block of audio is read from the + soundcard and when it's presented to the audio processor. Used in + calculating the total system delay for the audio processor. + + + + + saza@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + The variance of the capture delay in milliseconds (see + Media.Audio.Processing.CaptureDelayMs). Logged once every second and + calculated over the past second of data. + + + + + saza@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + The time, in milliseconds, between when a block of audio is presented to the + audio processor and the time it's played out on the soundcard. Used in + calculating the total system delay for the audio processor. + + + + + saza@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + The variance of the render delay in milliseconds (see + Media.Audio.Processing.RenderDelayMs). Logged once every second and + calculated over the past second of data. + + + + + saza@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + The estimated total audio system delay presented to the audio processor. The + sum of the individual capture and render delays at similar points in time. + + + + + saza@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + The variance of the total delay in milliseconds (see + Media.Audio.Processing.TotalDelayMs). Logged once every second and + calculated over the past second of data. + + + + + henrika@chromium.org + media-dev@chromium.org + webrtc-audio-uma@google.com + + Whether the capture device supports raw audio capture or not. Emitted when + the audio input stream is closed but only on Windows platforms. Only + uploaded for the case when analog AGC is enabled, i.e., for WebRTC-based + audio input streams. + + + + + guidou@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + The number of frames audio is actually rendered at if the number is + different from the desired number of frames. If the desired frame size is + used, this value will be 0. Typically, Chrome will want to use a 10ms buffer + (e.g. 480 frames for a sample rate of 48kHz), but we might have to render + audio 256 frames at a time. This histogram gives us an indication as to how + frequent that is and what buffer sizes are used in practice. This value is + logged when an audio output stream is stopped. + + + + + guidou@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + The time spent to get audio data from the source. For WebRTC, it's the time + spent in WebRtcAudioRenderer::SourceCallback. Logged every function call, + which is every 10 ms. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + guidou@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + The maximum time spent to get audio data from the source during a session. + For WebRTC, it's the time spent in WebRtcAudioRenderer::SourceCallback. A + session is between Start() and Stop() of WebRtcAudioRenderer. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + olka@chromium.org + henrika@chromium.org + webrtc-audio-uma@google.com + + Similar to Media.Audio.OutputDeviceAuthorizationTime, this histogram + measures the time required for device authorization, but it is measured on + the renderer side when AudioOutputDevice calls RequestDeviceAuthorization on + the IO thread until it receives OnDeviceAuthorized, also on the IO thread. + Note that an authorization timeout will cause OnDeviceAuthorized to be + called, so for platforms that use a timeout, very few times will be above + the timeout value. Warning: this histogram was expired from 2020-04-05 to + 2021-06-04; data may be missing. + + + + + guidou@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Whether audio output device timed out waiting for authorization reply from + the browser side. + + + + + dalecurtis@chromium.org + olka@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + The time delta from an AudioOutputDevice sending its first PlayStream + message to it getting its first data callback. + + + + + dalecurtis@chromium.org + guidou@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Device status received in response to device authorization request. + + + + + olka@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + This histogram measures the duration of every output stream, as seen from + the renderer. It counts from when it has been successfully started, until it + is stopped. Streams that fail to start are not logged. + + + + + guidou@chromium.org + olka@chromium.org + + Whether a cached sink was used to get audio output device information, or a + new sink was created for that. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + webrtc-audio-uma@google.com + + When AudioOutputDevice is stopped, this stat is recorded with whether an + error callback was ever received over IPC, and in that case whether the + error occurred during or after stream creation. Expired in Apr 2020 and + re-enabled in May 2021. + + + + + evliu@google.com + chrome-media-ux@google.com + + Logged when a user clicks on the audio indicator button in the tab strip. + Logs true if the click mutes the tab and false if the click unmutes the tab. + + + + + + + + + olka@chromium.org + fhernqvist@google.com + webrtc-audio-uma@google.com + + Device status received during TrackAudioRenderer initialization. This is a + specific case of Media.Audio.Render.OutputDeviceStatus histogram. + + + + + + + + + olka@chromium.org + fhernqvist@chromium.org + webrtc-audio-uma@google.com + + Device status received by TrackAudioRenderer when switching the output + device. This is a specific case of Media.Audio.Render.OutputDeviceStatus + histogram. + + + + + + + + + olka@chromium.org + fhrenqvist@chromium.org + webrtc-audio-uma@google.com + + Device status received during WebRTCAudioRenderer initialization. This is a + specific case of Media.Audio.Render.OutputDeviceStatus histogram. + + + + + + + + + olka@chromium.org + fhernqvist@chromium.org + webrtc-audio-uma@google.com + + Device status received by WebRTCAudioRenderer when switching the output + device. This is a specific case of Media.Audio.Render.OutputDeviceStatus + histogram. + + + + + olka@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + Whether a glitch in the capture/render audio at the OS level was detected + during the first 1000 OS callbacks of an active input/output stream. A + glitch is detected if the OS skips providing/requesting any frames of audio, + and is recorded when the stream ends, as long as the stream saw at least one + OS callback. Reported on Windows and Mac. + + + + + + + + + olka@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + The number of glitches that were detected at the OS level while an audio + input (Capture) or output (Render) stream was active. A glitch is detected + if the OS skips providing/requesting any frames of audio. This value is + aggregated over a period of 1000 OS callbacks (every 10 seconds for buffer + size 10 ms) and is logged at the end of each collection interval. Not + recorded for streams shorter than 1000 callbacks. Reported on Windows and + Mac. + + + + + + + + + olka@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + The length in milliseconds of the largest glitch that was detected at the OS + level by an audio input (Capture) or output (Render) stream. This value is + aggregated over a period of 1000 OS callbacks (every 10 seconds for buffer + size 10 ms) and is logged at the end of each collection interval if any + glitches were detected. Not recorded for streams shorter than 1000 + callbacks. Reported on Windows and Mac. + + + + + + + + + olka@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + The combined length in milliseconds of input (Capture) or output (Render) + audio glitches detected at the OS level. This is useful to know in + particular for audio processing such as echo cancellation. This value is + aggregated over a period of 1000 OS callbacks (every 10 seconds for buffer + size 10 ms) and is logged at the end of each collection interval if any + glitches were detected. Not recorded for streams shorter than 1000 + callbacks. Reported on Windows and Mac. + + + + + + + + + dalecurtis@chromium.org + Bits per channel of HTML5 audio sample data. + + + + olka@chromium.org + gustaf@chromium.org + webrtc-audio-uma@google.com + + Whether there is input audio glitches due to dropped input audio data or + not. Sampled when a low-latency input audio stream is destructed. + + + + + fhernqvist@google.com + olka@chromium.org + webrtc-audio-uma@google.com + + The number of input audio data blocks that were dropped at the + browser/renderer boundary due to for example buffer overflow in the writer + side buffer or in the socket. This value is aggregated over a period of 1000 + input data pushes (every 10 seconds for buffer size 10 ms) and is logged at + the end of each collection interval. Not recorded for streams with less than + 1000 input data pushes. + + + + + + Deprecated in favor of Media.AudioCapturerDroppedData10sIntervals and + Media.AudioCapturerDroppedDataBelow10s. Data is no longer collected. + + olka@chromium.org + gustaf@chromium.org + webrtc-audio-uma@google.com + + The proportion of input audio data that was dropped at the browser/renderer + boundary due to for example buffer overflow in the writer side buffer or in + the socket. Reported at the destruction of low-latency audio input stream. + Rounded up, cropped to 1/10 of all callbacks. + + + + + + + + + fhernqvist@google.com + olka@chromium.org + webrtc-audio-uma@google.com + + The number of input audio data blocks that were dropped at the + browser/renderer boundary due to for example buffer overflow in the writer + side buffer or in the socket. This value is only logged for streams with + less than 1000 input data pushes (10 seconds for buffer size 10 ms). + + + + + fhernqvist@google.com + olka@chromium.org + webrtc-audio-uma@google.com + + The number of times input audio data blocks that had to be buffered because + there was not room in the shared memory ring buffer on the browser/renderer + boundary. This happens if the reading side hasn't read data in time. This + value is aggregated over a period of 1000 input data pushes (every 10 + seconds for buffer size 10 ms) and is logged at the end of each collection + interval. Not recorded for streams with less than 1000 input data pushes. + + + + + + Deprecated in favor of Media.AudioCapturerMissedReadDeadline10sIntervals and + Media.AudioCapturerMissedReadDeadlineBelow10s. Data is no longer collected. + + olka@chromium.org + gustaf@chromium.org + webrtc-audio-uma@google.com + + The proportion of input audio data blocks that had to be buffered because + there was not room in the shared memory ring buffer on the browser/renderer + boundary. This happens if the reading side hasn't read data in time. + Reported at the destruction of low-latency audio input stream. Rounded up, + cropped to 1/10 of all callbacks. + + + + + + + + + fhernqvist@google.com + olka@chromium.org + webrtc-audio-uma@google.com + + The number of times input audio data blocks that had to be buffered because + there was not room in the shared memory ring buffer on the browser/renderer + boundary. This happens if the reading side hasn't read data in time. This + value is only logged for streams with less than 1000 input data pushes (10 + seconds for buffer size 10 ms). + + + + + + + dalecurtis@chromium.org + Audio codec used in HTML5 media. + + + + dalecurtis@chromium.org + media-dev@chromium.org + Audio codec profile used in HTML5 media for AAC playback. + + + + + + dalecurtis@chromium.org + olka@chromium.org + media-dev@chromium.org + webrtc-audio-uma@google.com + Measures the time taken for AudioInputController:: + + + + fhernqvist@google.com + olka@chromium.org + webrtc-audio-uma@google.com + + The audio capture delay in the Audio Service, including the IPC and the OS. + Logged at every CaptureCallback::Capture() call at AudioInputDevice level. + + + + + fhernqvist@google.com + olka@chromium.org + webrtc-audio-uma@google.com + + The difference between the largest and the lowest audio capture delay + observed during the sample interval. This stat considers the audio capture + delay in the Audio Service, including the IPC and the OS. Logged at the end + of each 1000-callback interval for Intervals. Logged at the end of the + stream for Short. + + + + + + fhernqvist@google.com + olka@chromium.org + webrtc-audio-uma@google.com + + The number of events causing audio capture glitches in the Audio Service, + including the IPC and the OS. A glitch is when capture data is dropped due + to a buffer overflow. Logged at the end of each 1000-callback interval for + Intervals. Logged at the end of the stream for Short. + + + + + + fhernqvist@google.com + olka@chromium.org + webrtc-audio-uma@google.com + + The proportion of the audio capture interval that was dropped due to buffer + overflows in the Audio Service, including the IPC and the OS. Logged at the + end of each 1000-callback interval for Intervals. Logged at the end of the + stream for Short. + + + + + + olka@chromium.org + guidou@chromium.org + webrtc-audio-uma@google.com + + A boolean that reflects whether or not an error was reported during audio + rendering, reported after a stream has stopped, if it was started. + + + + + + + + + olka@chromium.org + guidou@chromium.org + webrtc-audio-uma@google.com + + Time interval from the output stream controller construction to its + destruction. + + + + + guidou@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Whether an AudioOutputController succeeded in creating and opening an output + stream proxy. Only logged for the initial creation, subsequent re-creations + due to device change events are logged in the + Media.AudioOutputController.ProxyStreamCreationResultForDeviceChange + histogram. + + + + + guidou@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Whether an AudioOutputController succeeded in creating and opening an output + stream proxy after receiving a default device change event. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + webrtc-audio-uma@google.com + + Time spent waiting in AudioOutputController::WaitTillDataReady() if the data + was not initially available. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + webrtc-audio-uma@google.com + + Whether playback started successfully after stream startup was requested. + + + + + fhernqvist@google.com + olka@chromium.org + dalecurtis@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + The difference between the largest and the lowest audio playout delay + observed during the sample interval. This stat considers the audio playout + delay in the Audio Service, including the IPC and the OS. Logged at the end + of each 1000-callback interval for Intervals. Logged at the end of the + stream for Short. + + + + + + + fhernqvist@google.com + olka@chromium.org + dalecurtis@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + The audio playout delay in the Audio Service, including the IPC and the OS. + Logged at every RenderCallback::Render() call at AudioPlayoutDevice level. + + + + + + fhernqvist@google.com + olka@chromium.org + dalecurtis@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + The number of events causing audio playout glitches in the Audio Service, + including the IPC and the OS. A glitch is an inserted silence due to an + underrun. Logged at the end of each 1000-callback interval for Intervals. + Logged at the end of the stream for Short. + + + + + + + fhernqvist@google.com + olka@chromium.org + dalecurtis@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + The proportion of the audio playout interval that was silent due to + underruns in the Audio Service, including the IPC and the OS. Logged at the + end of each 1000-callback interval for Intervals. Logged at the end of the + stream for Short. + + + + + + + olka@chromium.org + armax@chromium.org + guidou@chromium.org + webrtc-audio-uma@google.com + + Whether a low latency stream to be rendered through the resampler was opened + successfully or which type of fallback stream was used instead. In case a + fake fallback stream is used it means audio rendered through the resampler + will be muted. In case fallback fails entirely, renderer callback error will + be signalled. + + + + + olka@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + Records format used by AudioManager to create audio output stream proxy. If + a fake stream is created it results in muted audio playback. Warning: this + histogram was expired from 2021-01-01 to 2022-01-21; data may be missing. + + + + + + Deprecated in favor of Media.AudioRendererAudioGlitches2. Data is no longer + collected. + + henrika@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Captures if render-side audio glitches are detected or not. Sampled when a + low-latency output audio stream is destructed. + + + + + dalecurtis@chromium.org + olka@chromium.org + tguilbert@chromium.org + fhernqvist@google.com + webrtc-audio-uma@google.com + + Captures if render-side audio glitches are detected or not. Sampled when a + low-latency output audio stream is destructed. + + + + + + + + + + + + + olka@chromium.org + fhernqvist@google.com + webrtc-audio-uma@google.com + + Status of audio sink used by AudioRendererImpl. If not OK, a NullAudioSink + will be used for audio output instead. This is logged for every call to + AudioRendererImpl::Initialize, which generally occurs once per active audio + session (i.e., between a play and pause). If audio track changes are ever + enabled, it may additionally be called for every audio track change. + + + + + + Deprecated in favor of Media.AudioRendererMissedDeadline3. Data is no longer + collected. + + dalecurtis@chromium.org + olka@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + Proportion of SyncReader::Read() calls where the renderer missed its + realtime deadline. Rounded up, clipped to 1/10 of the stream callbacks. + Sampled when a low-latency output audio stream is destructed. + + + + + + + + + + + + + + + + + + + + + fhernqvist@google.com + olka@chromium.org + dalecurtis@chromium.org + tguilbert@chromium.org + webrtc-audio-uma@google.com + + The number of SyncReader::Read() calls where the renderer missed its + realtime deadline. Logged at the end of each 1000-read interval for + Intervals. Logged at the end of the stream for Short. + + + + + + + + + + + + + + + + + + + + + fhernqvist@google.com + olka@chromium.org + webrtc-audio-uma@google.com + + How long it take for the audio manager instance to be created by the audio + service, in case the audio service owns the audio manager. + + + + + toprice@chromium.org + olka@chromium.org + + Records whether AudioSystemToServiceAdapter::GetDeviceDescriptions calls to + the audio service returned successfully, or failed and retured an default + empty list due to an audio service crash. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + webrtc-audio-uma@google.com + + State of the audio thread. A value of "started" is emitted once + the hang monitor has been initialized. If the thread is detected as hung + later, a value of "hung" is emitted. If the hung thread later + recovers a value of "recovered" is emitted. + + + + + liberato@chromium.org + videostack-eng@chromium.org + + Record a count for each frame sent to the client by AVDA, separated by what + type of frame it is: Non Overlay, secure overlay, etc. + + + + + liberato@chromium.org + videostack-eng@chromium.org + + Record a count for each frame sent to the client by AVDA. True counts + indicate that the frame was an overlay (SurfaceView). False counts are for + Non Overlay frames. This will be deprecated in favor of + Media.AVDA.FrameInformation in M63. + + + + + guidou@chromium.org + hta@chromium.org + tguilbert@chromium.org + + Usage of various BreakoutBox features. Recorded when a stream is created or + transferred in MediaStreamTrackProcessor or MediaStreamTrackGenerator. + + + + + + + chcunningham@chromium.org + media-dev@chromium.org + + Time spent between receiving a decodingInfo() call and resolving it. It only + record successful calls and ignores audio-only. + + + + + + + chcunningham@chromium.org + media-dev@chromium.org + + Time spent between receiving a decodingInfo() call and resolving it. It only + record successful calls and ignores audio-only. This is a subset of + Media.Capabilities.DecodingInfo.RequestTime.Video that only takes into + account clear content. + + + + + + + chcunningham@chromium.org + media-dev@chromium.org + + Time spent between receiving a decodingInfo() call and resolving it. It only + record successful calls and ignores audio-only. This is a subset of + Media.Capabilities.DecodingInfo.RequestTime.Video that only takes into + account encrypted content. + + + + + eladalon@chromium.org + toprice@chromium.org + + Records (1) explicit conditional-focus API invocations, (2) microtask-borne + decisions and (3) timer-triggered decisions. + + + + + eladalon@chromium.org + toprice@chromium.org + + Records the delay experienced by late explicit invocations of the focus() + API. By "late" we mean those calls which had no effect, on account + of arriving after the browser-side timer forced an implicit decision. (Note + that post-microtask explicit invocations are not recorded. They're simply an + application error.) + + + + + eladalon@chromium.org + toprice@chromium.org + + Records the delay experienced by on-time explicit invocations of the focus() + API. By "on-time" we mean those calls which had an effect, on + account of arriving before either the microtask or the browser-side timer + forced an implicit decision. + + + + + eladalon@chromium.org + toprice@chromium.org + + Track the delay distribution of invocations of the microtask. Measure this + independently of whether an explicit API call was made, and independently of + whether the browser-side timer expired. + + + + + + Removed 02/2023 due to lack of further need for this data. + + cassew@google.com + media-dev@chromium.org + + Duration of decoder selection during config changes, measured from first + call to 'DecoderSelector::SelectDecoder' to + 'DecoderSelector::FinalizeSelection'. The HW/SW suffix indicates the type of + the decoder that was ultimately selected. + + + + + steimel@chromium.org + media-dev@chromium.org + + Records events related to click through rate (CTR) calculation. + + The CTR can be calculated by computing "Interacted" / + "Displayed". "Interacted", for buttons, means that they + were clicked. For sliders, it will reflect any change in the internal state + and includes other events in addition to clicks. "Displayed" means + that the control element was meant to be displayed in the controls. It does + not mean that the user have seen the element so is not to be confused with + visibility. Furthermore, because the controls UI changes while loading, + "Displayed" is only computed when metadata are available unless + preloading was disabled on the element or the browser. + + Data is missing from 2020-04-05 to 2021-05-18. + + + + + steimel@chromium.org + media-dev@chromium.org + + Record the playback speed selected by the user in the list of playback + speeds on the media controls. + + + + + steimel@chromium.org + media-dev@chromium.org + + Record whether the default media controls of an audio element were shown and + why every time they could be shown. Note that audio elements that were not + insterted to the DOM and do not have a controls attribute are not taken into + account. + + + + + steimel@chromium.org + media-dev@chromium.org + + Record whether the default media controls of a video element were shown and + why every time they could be shown. + + + + + dalecurtis@chromium.org + + The state of the user selected virtual beamforming audio device on CrOS. + It's logged whenever the format of the audio input stream is queried, which + at least happens on stream startup, but could happen at other times as well. + + + + + jazzhsue@chromium.org + media-dev@chromium.org + + Record each time user pins/unpins CrOS global media controls. + + + + + jazzhsue@chromium.org + media-dev@chromium.org + + The action user clicked on the media controls in quick settings. + + + + + jazzhsue@chromium.org + media-dev@chromium.org + + Record each time media controls' sub-menu in quick settings is opened. True + if it is a repeat usage. + + + + + jazzhsue@chromium.org + media-dev@chromium.org + + Record each time global media controls on the shelf is opened. True if it is + a repeat usage. + + + + + liberato@chromium.org + tmathmeyer@chromium.org + + This enum allows us to count D3D11VideoDecoder specific crashes and + initialization failures. This is recorded whenever the decoder is + initialized or destroyed. + + + + + liberato@chromium.org + tmathmeyer@chromium.org + + This records the media::StatusCode that was sent to NotifyError. kOk is not + recorded here. It is recorded when D3D11VideoDecoder reports an error to the + client. For decoder failures, an additional status code may be logged by the + accelerator -- see Media.D3D11{H264,VP9}Status for that. + + + + + liberato@chromium.org + tmathmeyer@chromium.org + + This histogram lets us count how many PictureBuffers we've overallocated + when we're allocating each texture separately. This case is relatively + simple to optimize compared to SingleTexture. + + + + + liberato@chromium.org + tmathmeyer@chromium.org + + This histogram lets us count how many PictureBuffers we've overallocated + when we're allocating in contiguous blocks. This case is harder to optimize + than the MultiTexture variant, but it is good to know the proportion of the + two of them to determine usage. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Audio codec used in HTML5 media. Reporting corrected in M51 to include all + detected audio codecs, not just those up to and including the first one + supported. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + Audio codec used in HTML5 media for a local file playback. + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Container used for HTML5 media. Views that include pre-M34 data will + categorize dash (38) and smooth streaming (39) in the "Other" + bucket. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + Container used for HTML5 media for a local file playback. + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Video codec used in HTML5 media. Reporting corrected in M51 to include all + detected video codecs, not just those up to and including the first one + supported. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + Video codec used in HTML5 media for a local file playback. + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Count of dropped frames between pipeline start and stop. Media pipeline + starts/stops when an HTML5 video is loaded/unloaded respectively in the + browser. + + + + + dalecurtis@chromium.org + frankli@microsoft.com + media-dev@chromium.org + + Monitors the DroppedFrameCount that is originated from a {RendererType} and + the video playback is {ClearOrEncrypted}. It is the count of dropped video + frames when an HTML5 video is unloaded. + + + + + + + + + + + Removed 05/2022 due to lack of further need for this data. + + liberato@chromium.org + tmathmeyer@chromium.org + + This enum allows us to count DXVAVideoDecoderWin specific crashes and + initialization failures. This is recorded whenever the decoder is + initialized or destroyed, or encounters an error. + + + + + liberato@chromium.org + sandersd@chromium.org + + This enum measures how often each of the various DXVAVDA PictureBuffer + display mechanisms are used. Each count represents the mechanism selected at + the end of DXVA::Initialize; i.e., there is one count per decoder. + + + + + liberato@chromium.org + tmathmeyer@chromium.org + sandersd@chromium.org + + Records how many times the DXVA VDA successfully initializes a D3D11 device + vs. D3D9 device. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Size in KB of the last file successfully read by the CDM through CDM FileIO + before a specific error happens. This is reported only when the error + happens, which should be rare. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Size in KB of the first file successfully read by the CDM through CDM + FileIO. This is recorded once per CDM instance. + + + + + jrummell@chromium.org + media-dev@chromium.org + + The actual time spent by the CDM FileIO {FileOperation} operation under + {IncognitoOrNormal} mode. Only recorded for successful operations. + + + + + + + jrummell@chromium.org + media-dev@chromium.org + + Whether a CDM FileIO {FileOperation} operation succeded or not under + {IncognitoOrNormal} mode. + + + + + + + xhwang@chromium.org + media-dev@chromium.org + + The status of file open received by MojoCdmFileIO. This is reported every + time the CDM tries to open a file for read or write. + + + + + xhwang@chromium.org + media-dev@chromium.org + + The status of CDM host verification. This is reported per CDM load. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Chromium could support multiple versions of CDM interface. This metric + records the CDM interface version that the CDM created by Chromium uses. + This is recorded once per CDM instance. + + + + + xhwang@chromium.org + media-dev@chromium.org + + The error code of a library CDM load failure. Only reported on Windows. + + + + + xhwang@chromium.org + media-dev@chromium.org + The result from an attempt to load a library CDM. + + + + xhwang@chromium.org + media-dev@chromium.org + The time spent to load a library CDM. + + + + jkardatzke@chromium.org + cros-gfx-video@google.com + + Whether we used the platform CDM on Chrome OS that includes HW secure + Widevine support, or fell back to the Chrome SW CDM. + + + + + jkardatzke@chromium.org + cros-gfx-video@google.com + System code in promise rejection for ChromeOS platform CDM. + + + + xhwang@chromium.org + media-dev@chromium.org + + Whether EME encrypted event has been fired. Every time a WebMediaPlayerImpl + object is created a "false" value is reported to provide a + baseline. Every time an encrypted event is fired, a "true" value + will be reported. Note that it is possible to have multiple encrypted events + during the lifetime of a WebMediaPlayerImpl object. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Whether encrypted media is enabled when requestMediaKeySystemAccess() is + called. User can enable and disable encrypted media in content settings. + Recorded when requestMediaKeySystemAccess() is called but will be reported + at most once per renderer process. + + + + + jrummell@chromium.org + media-dev@chromium.org + + The encryption scheme used by the audio stream in an HTML5 video. Reported + when metadata is available if the initial config is encrypted. + + + + + jrummell@chromium.org + media-dev@chromium.org + + The encryption scheme used by the video stream in an HTML5 video. Reported + when metadata is available if the initial config is encrypted. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Whether a given WebMediaPlayer instance, with a CDM attached, is played in + an incognito window or in Chrome OS guest mode. Players that never started + playback are excluded. Recorded once at time of player destruction. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Whether MediaCrypto is available on a MediaDrm-based CDM. Reported once per + MediaDrmBridge creation. In normal cases it should always be available. + + + + + jrummell@chromium.org + media-dev@chromium.org + + The status of every attempt to obtain a pre-provisioned origin ID to be used + by MediaDrm. This will only be reported for applications that use + MediaDrmOriginIdManager. + + + + + jrummell@chromium.org + media-dev@chromium.org + + The number of pre-provisioned origin IDs available shortly after startup on + devices that do not support per-application provisioning. + + + + + jrummell@chromium.org + media-dev@chromium.org + + The number of pre-provisioned origin IDs available shortly after startup on + devices that support per-application provisioning. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Whether MediaDrmBridge supports the key system. Reported once per + MediaDrmBridge creation. In normal cases it should always be supported. + + + + + sangbaekpark@chromium.org + media-dev@chromium.org + + HRESULT of MediaFoundationCdmModule::ActivateCdmFactory(). This is only + reported when ActivateCdmFactory() fails. + + + + + sangbaekpark@chromium.org + media-dev@chromium.org + + The error code of a library CDM load failure. Only reported on Windows. + + + + + sangbaekpark@chromium.org + media-dev@chromium.org + + The result from an attempt to load a library MediaFoundation CDM. + + + + + sangbaekpark@chromium.org + media-dev@chromium.org + The time spent to load a library MediaFoundation CDM. + + + + xhwang@chromium.org + media-dev@chromium.org + + HRESULT of the first (and only the first) MediaFoundationCdm initialization + in a MeidaFoundationService process when using Widevine in hardware secure + mode. Reported on both successes and failures. + + + + + xhwang@chromium.org + media-dev@chromium.org + + HRESULT of MediaFoundationCdm initialization when using Widevine in hardware + secure mode. Only reported on failures. + + + + + xhwang@chromium.org + media-dev@chromium.org + + HRESULT of MediaFoundationCdm and MediaFoundationCdmSession operations when + using Widevine in hardware secure mode. + + + + + + xhwang@chromium.org + media-dev@chromium.org + + Whether a MediaFoundationService process crash is within 5 seconds after + power or display change. Reported when the MediaFoundationService process + crashes. + + + + + xhwang@chromium.org + media-dev@chromium.org + + HRESULTs associated with errors happened in the MediaFoundationService + process within 5 seconds after power or display change. + + + + + xhwang@chromium.org + media-dev@chromium.org + + HRESULTs associated with errors happened in the MediaFoundationService + process NOT within 2 seconds after power or display change. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Whether a HardwareContextReset event happened in the MediaFoundationService + process within 5 seconds after power or display change. Reported whenever + such an event happens. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Time for MediaFoundationService.IsKeySystemSupported() to finish. Reported + once per browser session lifetime. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Time for IMFContentDecryptionModuleFactory::IsTypeSupported() to finish in + MediaFoundationService when using Widevine in hardware secure mode, which + are called by MediaFoundationService.IsKeySystemSupported() (called once per + browser session lifetime). IsKeySystemSupported() calls IsTypeSupported() + multiple times, for different audio/video codecs and encryption schemes. + + + + + vpasupathy@chromium.org + media-dev@chromium.org + + SQLite specific errors reported while attempting to unsuccessfully open the + Media License Database. + + + + + + Deprecated in favor for Media.EME.MediaLicenseStorageHostOpenError.Incognito + and Media.EME.MediaLicenseStorageHostOpenError.NotIncognito in 2/2023. + + vpasupathy@chromium.org + media-dev@chromium.org + + General errors reported while attempting to open the MediaLicenseDatabase. + + + + + vpasupathy@chromium.org + media-dev@chromium.org + + General errors reported while attempting to open the MediaLicenseDatabase. + This UMA further breaks down the UMA above by only reporting errors if the + media license storage host error occurs during an incognito process. + + + + + vpasupathy@chromium.org + media-dev@chromium.org + + General errors reported while attempting to open the MediaLicenseDatabase. + This UMA further breaks down the UMA above by only reporting errors if the + media license storage host error occurs during a non incognito process. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Whether connection error has happened for MojoCdm. Every time a MojoCdm + object is created a "false" value is reported to provide a + baseline. Every time a mojo connection error happened, a "true" + value will be reported, which typically means a remote CDM process crash. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Output protection query status and result. One query and one positive (no + unprotected external links) result (if any) are reported per CDM instance. + + + + + jkardatzke@chromium.org + cros-gfx-video@google.com + + Output protection query status and result. One query and one positive (no + unprotected external links) result (if any) are reported per CDM instance. + + + + + xhwang@chromium.org + media-dev@chromium.org + + {KeySystem} support query status and result, as reported by + RequestMediaKeySystemAccess. Each value will be reported at most once per + renderer process. + + + + + + jrummell@chromium.org + media-dev@chromium.org + + The net error or HTTP response code of provisioning requests made by + UrlProvisionFetcher on Android and Cast devices. + + + + + xhwang@chromium.org + media-dev@chromium.org + + The CdmInfo::Status of Widevine hardware secure CDM capability. Reported at + most once per browser session when EME query is triggered by a website. + + + + + vpasupathy@chromium.org + media-dev@chromium.org + + Record for whether clear lead content is supported by the platform for + hardware security. This is reported only on Windows devices, only when codec + is supported for hardware security, per codec, and once per browser session + lifetime. + + + + + + xhwang@chromium.org + media-dev@chromium.org + + Whether Media Foundation Widevine CDM is enabled or disabled based on + previous disabled timestamps in "Local State" pref. This is + reported once per browsing session around browser startup time if Media + Foundation Widevine CDM is enabled and available. + + + + + xhwang@chromium.org + media-dev@chromium.org + + When hardware secure decryption is enabled, whether Widevine hardware secure + decryption is actually supported by the platform (device). Reported at most + once per browser session when EME query is triggered by a website, and when + Widevine hardware secure CDM was registered. + + + + + xhwang@chromium.org + media-dev@chromium.org + + When hardware secure decryption is enabled and supported by Widevine, + whether {VideoCodec} video codec is supported by the platform (device). + Reported at most once per browser session when EME query is triggered by a + website, and when Widevine hardware secure CDM was registered. + + + + + + xhwang@chromium.org + media-dev@chromium.org + + System code in promise rejection when using Widevine key system in software + secure mode. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Whether the robustness level of any video capability in the supported + configuration passed into requestMediaKeySystemAccess() is empty. This is + specific to the Widevine key system. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Whether the CDM instance is created successfully for {KeySystem}. Reported + each time a CDM instance creation is attempted, usually as a result of + Javascript call of createMediaKeys(). + + + + + + xhwang@chromium.org + media-dev@chromium.org + Time took to create the CDM instance for {KeySystem}. + + + + + xhwang@chromium.org + media-dev@chromium.org + EME session type passed into CreateSession. + + + + + xhwang@chromium.org + media-dev@chromium.org + + The timeout status of MojoCdm::CreateSessionAndGenerateRequest() call. + + + + + + xhwang@chromium.org + media-dev@chromium.org + System code associated with key status for {KeySystem}. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Whether the CDM is available for {KeySystem} or not. In normal cases, this + is reported once per render process if the EME API is used. In rare cases it + could be reported more than once if the CDM is not available and then is + component updated. + + + + + + xhwang@chromium.org + media-dev@chromium.org + The time it takes to {ResolveOrReject} a EME promise. + + + + + + + xhwang@chromium.org + media-dev@chromium.org + Result of EME promises that were handled by Chromium code. + + + + + + xhwang@chromium.org + media-dev@chromium.org + System code in promise rejection. + + + + + + beccahughes@chromium.org + media-dev@chromium.org + + The media engagement score recorded at the time of playback. It is converted + to a percentage so should be divided by 100 to get the actual score. It is + only recorded for playback that is either lacking an audio track or not + muted. + + + + + beccahughes@chromium.org + media-dev@chromium.org + + Recorded when the Media Engagement service doesn't determine a player to be + significant. If a player is not significant the reasons why will be + individually recorded to this histogram each time except for the first time + which is recorded to a different histogram. + + The significant state of a player is reevaluated any time the state of the + player changes (e.g. muted, playing/paused). If the player was not + considered signficiant and still is not then we will record the reasons why + in this histogram. + + + + + beccahughes@chromium.org + media-dev@chromium.org + + Recorded when the Media Engagement service doesn't determine a player to be + significant. If a player is not significant the reasons why will be + individually recorded to this histogram the first time only. + + The significant state of a player is reevaluated any time the state of the + player changes (e.g. muted, playing/paused). If the player was not + considered signficiant and still is not then we will record the reasons why + in this histogram. + + + + + beccahughes@chromium.org + media-dev@chromium.org + + Recorded when the Media Engagement service no longer determines a player to + be significant. If a player is no longer significant, the reasons why will + be individually recorded to this histogram. + + The significant state of a player is re-evaluted any time the state of the + player changes (e.g. muted, playing/paused). If the player was previously + considered significant and is no longer considered that we will record the + reasons why in this histogram. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + webrtc-audio-uma@google.com + + Whether Chrome had to fallback to the high latency audio path or not. + + + + + dalecurtis@chromium.org + frankli@microsoft.com + media-dev@chromium.org + + Monitors the number of video frames being read back from a {RendererType}. + It is the count of video frames being read back from an HTML5 video when it + is unloaded. + + + + + + eladalon@chromium.org + fbeaufort@chromium.org + + Records whether getDisplayMedia was called with the displaySurface + constraint. + + + + + eladalon@chromium.org + fbeaufort@chromium.org + + Records whether getDisplayMedia was called with the selfBrowserSurface + constraint. + + + + + eladalon@chromium.org + fbeaufort@chromium.org + webrtc-audio-uma@google.com + + Records whether getDisplayMedia was called with the + suppressLocalAudioPlayback constraint. + + + + + eladalon@chromium.org + fbeaufort@chromium.org + + Records whether getDisplayMedia was called with the surfaceSwitching + constraint. + + + + + eladalon@chromium.org + fbeaufort@chromium.org + webrtc-audio-uma@google.com + + Records whether getDisplayMedia was called with the systemAudio constraint. + + + + + eladalon@chromium.org + fbeaufort@chromium.org + hendrich@chromium.org + + Records whether getDisplayMedia was called with a user gesture (transient + activation) or whether it wasn't required. The requirement is only enforced + once `blink::features::kGetDisplayMediaRequiresUserActivation` is enabled + and can be bypassed with the `ScreenCaptureWithoutGestureAllowedForOrigins` + policy. + + + + + steimel@chromium.org + media-dev@chromium.org + + Records if the Global Media Controls device selector was available. Recorded + once per notification either when the device selector was shown or when the + notification disappears. + + + + + steimel@chromium.org + media-dev@chromium.org + + Records if the Global Media Controls device selector was opened. Recorded + once per notification either when the device selector was opened or when the + notification disappears. This histogram is only recorded if the device + selector was available. + + + + + steimel@chromium.org + media-dev@chromium.org + + Recorded each time a media session is dismissed or removed from the Global + Media Controls. Records the reason why it happened (e.g. user clicked the + dismiss button or playback stopped). + + + + + takumif@chromium.org + openscreen-eng@google.com + media-dev@chromium.org + + Records the entry point whenever the user opens the Global Media Controls + UI. + + + + + takumif@chromium.org + openscreen-eng@google.com + media-dev@chromium.org + + Records whether a media session is from a WebContents with a default + PresentationReuqest. Recorded whenever a session is instantiated in the + global media controls, even if the user doesn't open the UI to view it. + + + + + steimel@chromium.org + media-dev@chromium.org + + Recorded each time a paused media session is interacted with (e.g. playing + the media or clicking on the notification to go back to the tab). Records + the time passed since it was last interacted with (or since when it was + paused if this is the first post-pause interaction). + + + + + muyaoxu@google.com + openscreen-eng@google.com + + Records the type of Media Route that users {Action} from the Global Media + Controls dialog. Recorded when users click on a button and this histogram + doesn't represent the actual number of sessions {Action}ed from the GMC + dialog. + + + + + + + + + steimel@chromium.org + media-dev@chromium.org + + Recorded each time the Global Media Controls Device picker dialog is opened + and is populated with devices. Records the number of device options + displayed, possibly including the default fallback device. + + + + + steimel@chromium.org + media-dev@chromium.org + + Recorded each time the Global Media Controls dialog is opened. True if this + was repeat usage of the dialog (e.g. if it's not the first time the dialog + has been opened this session). + + + + + steimel@chromium.org + media-dev@chromium.org + + The focused state of the WebContents associated with the MediaSession that + the user is interacting with via the Global Media Controls. Recorded when + the user presses an action on the Global Media Controls dialog (e.g. play). + + + + + dcastagna@chromium.org + + Records when a context provider is acquired in media, and when it's released + because a context loss has been detected. + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Records the VideoDecoderType used for GPU based video decoding. Recorded + once per GPU mojo media client creation (~once per GPU process). + + + + + andrescj@chromium.org + chromeos-gfx-video@google.com + + Counts of status values returned from calls to + GpuArcVideoDecodeAccelerator::Initialize(). + + + + + andrescj@chromium.org + chromeos-gfx-video@google.com + + Counts how many GpuArcVideoDecodeAccelerator instances are alive at the time + a new GpuArcVideoDecodeAccelerator is created. + + + + + andrescj@chromium.org + chromeos-gfx-video@google.com + + Counts how many GpuArcVideoDecodeAccelerator instances that have gone + through initialization (i.e., have an underlying + media::VideoDecodeAccelerator) are alive at the time a + GpuArcVideoDecodeAccelerator goes through initialization and successfully + creates its underlying media::VideoDecodeAccelerator. + + + + + magchen@chromium.org + mcasas@chromium.org + + GpuMemoryBufferVideoFramePool is called with an unsupported VideoFrame pixel + format. Emitted on VideoFrame arrival. + + + + + vikassoni@chromium.org + liberato@chromium.org + + The error code returned when GetSharedContextState() fails or MakeCurrent() + on the SharedContextState fails. + + + + + + + dalecurtis@chromium.org + webrtc-audio-uma@google.com + Channel count of the hardware audio device. + + + + + + dalecurtis@chromium.org + webrtc-audio-uma@google.com + Channel layout of the hardware audio device. + + + + + + dalecurtis@chromium.org + webrtc-audio-uma@google.com + Samples per second of the hardware audio device. + + + + steimel@chromium.org + media-dev@chromium.org + + Records media key presses that are handled by the + HardwareKeyMediaController. + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Tracks accelerated video decoding support for a given codec. Recorded once + per GPU process after an attempt to use accelerated video decoding. + + + + + + + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Whether a given WebMediaPlayer instance, after preload, started playback; + recorded once at time of player destruction. + + + + + + Removed 02/2023 due to lack of further need for this data. + + cassew@google.com + media-dev@chromium.org + + Duration of initial decoder selection. Measured from first call to + 'DecoderSelector::SelectDecoder' to 'DecoderSelector::FinalizeSelection'. + The HW/SW suffix indicates the type of the decoder that was ultimately + selected. + + + + + + + olka@chromium.org + fhernqvist@google.com + henrika@hromium.org + webrtc-audio-uma@google.com + + Error codes that we encounter while setting up an AUAudioInputStream on Mac. + + + + + + + henrika@chromium.org + media-dev@chromium.org + webrtc-audio-uma@google.com + + Duration in milliseconds of low-latency audio input streams. Sampled when + the stream is closed by the AudioInputController. + + + + + olka@chromium.org + henrika@chromium.org + webrtc-audio-uma@google.com + + Duration in milliseconds of low-latency audio input streams which never got + any callbacks. Warning: this histogram was expired from 2020-10-11 to + 2021-06-04; data may be missing. + + + + + + + liberato@chromium.org + chcunningham@chromium.org + + Confusion matrix for UMA-reported regresssion tasks for media local learning + experiments. Each bucket is interpreted as follows: + + TrueNegative - prediction was negative, observation was negative. + FalseNegative - prediction was negative, observation was positive. + FalsePositive - prediction was positive, observation was negative. + TruePositive - prediction was positive, observation was positive. + + For those observations for which we could not make a prediction due to data + sparsity, the "no-prediction" buckets indicate whether the + observation was positive or negative. + + + + + + + liberato@chromium.org + chcunningham@chromium.org + + Confusion matrices, split out by the feature index used to train the model. + Each confusion matrix has 6 entries: + + TrueNegative - prediction was negative, observation was negative. + FalseNegative - prediction was negative, observation was positive. + FalsePositive - prediction was positive, observation was negative. + TruePositive - prediction was positive, observation was positive. + No-prediction Negative - no prediction made, observation was negative. + No-prediction Positive - no prediction made, observation was positive. + + The confusion matrix entry will also be labelled with a bucket number, which + for this histogram represents the index of the feature that was used. The + feature index matches |LearningTask::feature_descriptions| for the + appropriate task. + + + + + + + liberato@chromium.org + chcunningham@chromium.org + + Confusion matrices, split out by the total amount of training data used to + train the model. Each confusion matrix has 6 entries: + + TrueNegative - prediction was negative, observation was negative. + FalseNegative - prediction was negative, observation was positive. + FalsePositive - prediction was positive, observation was negative. + TruePositive - prediction was positive, observation was positive. + No-prediction Negative - no prediction made, observation was negative. + No-prediction Positive - no prediction made, observation was positive. + + The bucket number mentioned in the enum label indicates how much weight the + training set had. To convert from bucket number to an actual weight range, + one must know the particular settings in the corresponding LearningTask. + + Please see |LearningTask::max_reporting_weight| and + |LearningTask::num_reporting_weight_buckets| for the the appropriate task. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Load type of HTML5 media, such as URL, MediaSource and MediaStream. + + + + + Please list the metric's owners. Add more owner tags as needed. + + State of the WebRtc local renderer, sampled once during the lifetime of a + local renderer. + + + + + steimel@chromium.org + media-dev@chromium.org + + The reason why the lock screen media controls were hidden if they were + previously shown. Recorded when the controls are destroyed by the lock + screen (e.g. unlock, switch user, shutdown). Warning: this histogram was + expired from 2020-01-31 to 2021-11-30; data may be missing. + + + + + steimel@chromium.org + media-dev@chromium.org + + Whether the lock screen media controls were shown and if they will not be + shown the reason why. Warning: this histogram was expired from 2020-01-31 to + 2021-11-30; data may be missing. + + + + + steimel@chromium.org + media-dev@chromium.org + + The action (e.g. pause) that a user clicked on the lock screen media + controls. Warning: this histogram was expired from 2020-01-31 to 2021-11-30; + data may be missing. + + + + + armax@chromium.org + guidou@chromium.org + olka@chromium.org + + Whether capture started successfully after a low-latency input stream + startup was requested. + + + + + liberato@chromium.org + sandersd@chromium.org + tguilbert@chromium.org + + The time between MediaCodec::dequeueOutputBuffer() and the dispatch of the + corresponding VideoFrame from MediaCodecVideoDecoder. + + + + + dalecurtis@chromium.org + + The total watch time (see Media.WatchTime) of a given playback divided by + the number of rebuffering events that occured during that playback. Only + reported when rebuffering happened. Therefore, alway refer to other UMAs + like `Media.RebuffersCount` when checking this UMA. + + + + + toprice@chromium.org + agpalak@chromium.org + + The latency of calls to the navigator.mediaDevices.enumerateDevices() API + which resolve, including both successes and failures. Note very long calls + which record a EnumerateDevices.Result of kTimedOut but do eventually + resolve will have their latency recorded. + + + + + toprice@chromium.org + agpalak@chromium.org + + The results of all calls to the navigator.mediaDevices.enumerateDevices() + API, including successful promise resolutions, error codes, or kTimedOut, if + the promise was still pending after 4 seconds. + + + + + toprice@chromium.org + agpalak@chromium.org + video-cmi-apis@google.com + + The latency of calls to the navigator.mediaDevices.GetDisplayMedia() API + which resolve, including both successes and failures. Note very long calls + which record a GetDisplayMedia.Result of kTimedOut but do eventually resolve + will have their latency recorded. + + + + + toprice@chromium.org + agpalak@chromium.org + video-cmi-apis@google.com + + The results of all calls to the navigator.mediaDevices.GetDisplayMedia() + API, including successful promise resolutions, error codes, or kTimedOut, if + the promise was still pending after 6 seconds. + + + + + simonha@google.com + video-cmi-apis@google.com + + The latency of calls to the navigator.mediaDevices.GetDisplayMediaSet() API + which resolve, including both successes and failures. Note very long calls + which record a GetDisplayMediaSet.Result of kTimedOut but do eventually + resolve will have their latency recorded. + + + + + simonha@google.com + video-cmi-apis@google.com + + The results of all calls to the navigator.mediaDevices.GetDisplayMediaSet() + API, including successful promise resolutions, error codes, or kTimedOut, if + the promise was still pending after 6 seconds. + + + + + toprice@chromium.org + agpalak@chromium.org + video-cmi-apis@google.com + + The latency of calls to the navigator.mediaDevices.GetUserMedia() API which + resolve, including both successes and failures. Note very long calls which + record a GetUserMedia.Result of kTimedOut but do eventually resolve will + have their latency recorded. + + + + + toprice@chromium.org + agpalak@chromium.org + video-cmi-apis@google.com + + The results of all calls to the navigator.mediaDevices.GetUserMedia() API, + including successful promise resolutions, error codes, or kTimedOut, if the + promise was still pending after 8 seconds. + + + + + toprice@chromium.org + agpalak@chromium.org + + The success or failure code of MediaDevicesManager requests to enumerate + video devices (ie cameras) with the camera capture service. + + + + + toprice@chromium.org + agpalak@chromium.org + video-cmi-apis@google.com + + Count of MediaDevicesManager starting enumerating video devices (ie cameras) + with the camera capture service, including enumerations which never + finished. + + + + + + Removed 07/2022 due to lack of further need for this data. + + jrummell@chromium.org + media-dev@chromium.org + + Whether the content type provided to HTMLMediaElement would parse with + ParsedContentType or not. + + + + + dalecurtis@chromium.org + macrabil@microsoft.com + media-dev@chromium.org + + Recorded when the VideoColorSpace VideoPrimaries value is passed to + MediaFoundation for HDR content. + + + + + dalecurtis@chromium.org + wicarr@microsoft.com + media-dev@chromium.org + + Recorded when the VideoColorSpace TransferFunction value is passed to + MediaFoundation for HDR content. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Recorded when the MediaFoundationRenderer::CreateMediaEngine() fails. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Recorded when the MediaFoundationRenderer or MediaFoundationRendererClient + hits an error. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Recorded when the MediaFoundationRenderer hits an error when trying to set + direct composition mode. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Whether or not playback has started when DRM_E_TEE_INVALID_HWDRM_STATE + happens in MediaFoundationRenderer. + + + + + xhwang@chromium.org + media-dev@chromium.org + + The number of video frames decoded when DRM_E_TEE_INVALID_HWDRM_STATE + happens in MediaFoundationRenderer. + + + + + xhwang@chromium.org + media-dev@chromium.org + + Recorded when the MediaFoundationRenderer hits a playback error. Some errors + are part of the normal user flow (e.g. sleep/resume) and are not a bug. + + + + + steimel@chromium.org + media-dev@chromium.org + + Whether or not the MediaKeysListener was able to successfully register a hot + key. Failure typically indicates that the hotkey was already registered by a + different application. + + + + + clarissagarvey@chromium.org + mcasas@chromium.org + + The codec and hardware/software variant used by MediaRecorder, recorded once + when the VideoTrackRecorder initializes the encoder. + + + + + mcasas@chromium.org + wtlee@chromium.org + The errors HW video encode encounters in MediaRecorder. + + + + mcasas@chromium.org + wtlee@chromium.org + Whether HW video encode is used in MediaRecorder. + + + + eladalon@chromium.org + tovep@chromium.org + + Records media stream request responses for desktop-video capture + media-device-update requests. + + + + + eladalon@chromium.org + tovep@chromium.org + + Records media stream request responses for display-video capture + media-device-update requests. + + + + + henrika@chromium.org + webrtc-audio@google.com + + Heuristically detects if the user has muted the microphone or not. Measured + approximately four times per minute while an audio input stream is active. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + Reports whether any data was sent or received by a MidiManager. Recorded + once per MidiManager instantiation, upon destruction. MidiManager is + instantiated when the first Web MIDI client starts a session, and destroyed + when the last client ends the session. + + Warning: this histogram was expired from M86 to M91; data may be missing. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + Reports sysex message size. + + Warning: this histogram was expired from M86 to M91; data may be missing. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + The MidiManager instance use count, but this is not intended to understand + the real API usage because this can be counted by feature scanning scripts + that are often used for footprinting. You may want to track SendReceiveUsage + to monitor only instances that actually send or receive MIDI messages. + + Warning: this histogram was expired from M86 to M91; data may be missing. + + + + + sandersd@chromium.org + media-dev@chromium.org + + Records the number of active MojoVideoDecoderService instances that are + alive each time an instance becomes active. An instance is active if + Decode() has been called at least once. This provides an estimate of the + concurrent hardware resource requirements. + + + + + + + mcasas@chromium.org + chromeos-gfx@chromium.org + + Delay between a DecodeBuffer (and encoded chunk) input and a decoded + VideoFrame being produced by the remote MojoVideoDecoder. Output once per + successful decode. + + + + + eugene@chromium.org + liberato@chromium.org + + Total number of instances of MojoVideoDecoder used by a page (i.e. render + frame) when an instance of MojoVideoDecoder encountered a decoding error or + a crash during the first 150 frames of a video stream. + + + + + eugene@chromium.org + liberato@chromium.org + + Total number of instances of MojoVideoDecoder used by a page (i.e. render + frame) when an instance of MojoVideoDecoder successfuly decode the first 150 + frames of a video stream. + + + + + hiroh@chromium.org + mcasas@chromium.org + + The storage type of media::VideoFrame passed to MojoVideoEncodeAccelerator + for encoding. The histogram is recorded every frame encode request. + + + + + + + wolenetz@chromium.org + media-dev@chromium.org + + Audio codec used in Media Source Extensions playback. Set when MediaSource + addSourceBuffer() is successfully called during playback. Also set twice + during a successful SourceBuffer changeType() operation. See issue 535738 + for reworking MSE codec histograms to record on each successfully parsed + initialization segment (possibly filtered to record only when actual new + codec configurations are parsed). + + + + + + Removed 02/2023 due to lack of further need for this data. + + wolenetz@chromium.org + sandersd@chromium.org + media-dev@chromium.org + + Duration of config changes that include codec changes, measured from before + decoder flush until after the first output frame is returned. The HW/SW + suffix indicates the type of the decoder that was ultimately selected. + + + + + wolenetz@chromium.org + media-dev@chromium.org + + Amount of time taken to destroy one ChunkDemuxer object, not including + initial background task scheduling delay. + + + + + + Removed 02/2022 due to lack of further need for this data. + + dalecurtis@chromium.org + media-dev@chromium.org + + Tracks if ShakaPackager metadata was detected in the MP4 'moov' atom during + MSE based media playback. Recorded for every 'moov' atom, which is expected + once per asset. Multiple assets may be played within the same MSE session. + + + + + wolenetz@chromium.org + media-dev@chromium.org + + For each MediaSource instance, records the type of thread that created the + instance. + + + + + + Removed Jan 2023, no further data needed. + + wolenetz@chromium.org + sandersd@chromium.org + + Reports the number of consecutive empty samples in a sequence within a track + run. There can be zero or more such sequences in a track run, and each + sequence is reported separately. This metric is expected to inform a + heuristic to realistically bound the parsing complexity of track runs that + may contain empty samples. See https://crbug.com/907268. + + + + + + Removed Jan 2023, no further data needed. + + wolenetz@chromium.org + sandersd@chromium.org + + Reports the number of empty samples within a track run. This metric is + expected to inform a heuristic to realistically bound the parsing complexity + of track runs that may contain empty samples. See https://crbug.com/907268. + + + + + + Removed Jan 2023, no further data needed. + + wolenetz@chromium.org + sandersd@chromium.org + + Reports the size of each sample parsed. This metric is expected to inform a + heuristic to realistically bound the parsing complexity of track runs that + may contain empty or huge samples. See https://crbug.com/907268. + + + + + + Removed Jan 2023, no further data needed. + + wolenetz@chromium.org + sandersd@chromium.org + + Reports the number of samples in each track run. This metric is expected to + inform a heuristic to realistically bound the parsing complexity of track + runs that may contain huge numbers of samples. See https://crbug.com/907268. + + + + + + + wolenetz@chromium.org + media-dev@chromium.org + + Video codec used in Media Source Extensions playback. Set when MediaSource + addSourceBuffer() is successfully called during playback. Also set twice + during a successful SourceBuffer changeType() operation. See issue 535738 + for reworking MSE codec histograms to record on each successfully parsed + initialization segment (possibly filtered to record only when actual new + codec configurations are parsed). + + + + + + + wolenetz@chromium.org + media-dev@chromium.org + + Video codec used in Media Source Extensions playback if the media container + is MP4. Set when MediaSource addSourceBuffer() is successfully called during + playback. Also set twice during a successful SourceBuffer changeType() + operation. See issue 535738 for reworking MSE codec histograms to record on + each successfully parsed initialization segment (possibly filtered to record + only when actual new codec configurations are parsed). + + + + + + + wolenetz@chromium.org + media-dev@chromium.org + + Video codec used in Media Source Extensions playback if the media container + is WebM. Set when MediaSource addSourceBuffer() is successfully called + during playback. Also set twice during a successful SourceBuffer + changeType() operation. See issue 535738 for reworking MSE codec histograms + to record on each successfully parsed initialization segment (possibly + filtered to record only when actual new codec configurations are parsed). + + + + + beccahughes@chromium.org + media-dev@chromium.org + + Whether the media notification (including ones for Cast sessions) is + displaying artwork. This is recorded when the artwork is updated by the + underlying media session. + + + + + takumif@chromium.org + openscreen-eng@google.com + media-dev@chromium.org + + Whether the Cast media notification is displaying artwork. This is recorded + a few seconds after a notification is shown for the first time, which is + different from when Media.Notification.ArtworkPresent is recorded. + + + + + takumif@chromium.org + openscreen-eng@google.com + media-dev@chromium.org + + The number of Cast media notifications that are currently being displayed. + This is recorded when a media notification starts being displayed. + + + + + takumif@chromium.org + openscreen-eng@google.com + media-dev@chromium.org + + Whether the Cast media notification is displaying certain types of metadata. + This is recorded a few seconds after a notification is shown for the first + time, which is different from when Media.Notification.MetadataPresent is + recorded. + + + + + takumif@chromium.org + openscreen-eng@google.com + media-dev@chromium.org + + Recorded when the user starts or stops a Cast session. Records the action + and how the Global Media Controls UI was opened. + + + + + takumif@chromium.org + openscreen-eng@google.com + media-dev@chromium.org + + Records the type of the action (e.g. pause) whenever the user makes an + action on a Cast media notification. Starting and stopping casting is + recorded in Media.Notification.Cast.StartStop. + + + + + mlamouri@chromium.org + media-dev@chromium.org + + The type of media notification the user clicked to go back to Chrome. + + + + + beccahughes@chromium.org + media-dev@chromium.org + + The number of media notifications that are currently being displayed + (including ones for Cast sessions). This is recorded when a media + notification starts being displayed. + + + + + beccahughes@chromium.org + media-dev@chromium.org + + Whether the media notification (including ones for Cast sessions) is + displaying certain types of metadata. This is recorded when the metadata is + updated by the underlying media session. + + + + + beccahughes@chromium.org + media-dev@chromium.org + + The source of the underlying media session (e.g. ARC, web, Cast) that + displayed the media notification. This is recorded when a notification is + available to be shown. + + + + + beccahughes@chromium.org + media-dev@chromium.org + + The action (e.g. pause) that a user clicked on a media notification + (including ones for Cast sessions). + + + + + guidou@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Duration of an audio output stream. Measured in AudioOutputController from + when a stream is started until it is stopped. A stream is stopped when it is + paused, closed (i.e. destructed), or when a device change event causes it to + be restarted. + + + + + + Removed 04/2022 due to lack of further need for this data. + + dalecurtis@google.com + media-dev@chromium.org + + Records the peak number of WebMediaPlayer objects per RenderFrame upon + RenderFrame destruction (both cleanly and via render process termination). + + + + + + + pmolinalopez@chromium.org + chromeos-gfx-video@google.com + + The hardware/software decoding behavior used for a PPB_VideoDecoder API + instance. This UMA is recorded when the PepperVideoDecoderHost is destroyed. + + + + + sandersd@chromium.org + dalecurtis@chromium.org + + Counts every output picture emitted to a PPAPI client, categorized by size + and decoder type. Flash will only use platform decoders, but NaCl clients + can use either decoder type. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Status of the media pipeline at the end of its lifecycle for audio-video + streams with {VideoCodec} video codec using {Pipeline}. + + + + + + + + + + + + + + + xhwang@chromium.org + media-dev@chromium.org + + Status of the media pipeline starting process (including demuxer and + renderer initialization). If the media pipeline is destroyed during the + starting process nothing will be reported, but this should relatively rare. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Status of the media pipeline at the end of its lifecycle for {StreamType} + streams. + + + + + + + + + + tmathmeyer@chromium.org + media-dev@chromium.org + + Video chroma sub-sampling format requested for decoding through platform + decoders. This collection happens regardless of whether the platform decoder + supports non-420 video format decoding or not. + + + + + + + mcasas@chromium.org + chromeos-gfx@chromium.org + + Time for the platform-specific (set of) video decode acceleration command(s) + to be executed. Output once per decode request submit. + + + + + liberato@chromium.org + videostack-eng@chromium.org + + Total battery (0-100 percent) consumed by playback. When divided by + Media.PlaybackPower.ElapsedTime, this provides the average rate of battery + drain for that category of playback. Units are (total) percent. This is + recorded when an entire percent (or more) is consumed during playback. Since + devices have different battery sizes, methods of measuring battery, and + different power consumption rates, it's a good idea to filter by a specific + device type and OS version before trying to interpret these results. The + magnitude of these numbers, alone, is also likely hard to use, for this + reason. Instead, consider comparing A/B experiments to see if they get + larger or smaller. Playbacks under one msec are ignored. + + + + + liberato@chromium.org + videostack-eng@chromium.org + + Total time, in msec, elapsed while consuming the battery described by + Media.PlaybackPower.BatteryDelta. See that histogram for details. Recorded + when one or more percent of battery is consumed during playback. + + + + + fdoray@chromium.org + media-dev@chromium.org + + Records the state of an HTMLMediaElement when its "progress event" + timer fires. Used to determine how often the timer causes unnecessary wake + ups, to prioritize crbug.com/1143317 and measure the impact of eventual + fixes. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Indicates the number of rebuffers a given watch time session had. + + + + + eladalon@chromium.org + jophba@chromium.org + mfoltz@chromium.org + + Duration in milliseconds of the time it takes for a + BrowserCaptureMediaStreamTrack.cropTo() call to resolve(either successfully + or with an error). Note a call which never resolves won't be counted in this + metric. + + + + + eladalon@chromium.org + jophba@chromium.org + mfoltz@chromium.org + + Tracks the result of calls to BrowserCaptureMediaStreamTrack.cropTo(). + + + + + eladalon@chromium.org + jophba@chromium.org + mfoltz@chromium.org + + Tracks the result of calls to MediaDevices.produceCropTarget(). + Specifically, this histogram tracks whether a new Promise was produced, and + if not, why not. Another histogram tracks the result of new Promises, i.e. + whether they were resolved or rejected. + + + + + eladalon@chromium.org + jophba@chromium.org + mfoltz@chromium.org + + When ProduceCropTarget() is called for the first time on a given + HTMLElement, a new Promise is produced. This histogram tracks the result of + this Promise - whether it was resolved or rejected. + + + + + jophba@chromium.org + openscreen-eng@google.com + + Measured audio content transfer bitrate while remoting content. + + + + + jophba@chromium.org + openscreen-eng@google.com + Audio channel layout used while remoting content. + + + + jophba@chromium.org + openscreen-eng@google.com + Audio codec used while remoting content. + + + + jophba@chromium.org + openscreen-eng@google.com + Audio sampling rate while remoting audio content. + + + + jophba@chromium.org + openscreen-eng@google.com + + Audio sampling rate while remoting audio content (atypical values, in Hz). + + + + + takumif@chromium.org + openscreen-eng@google.com + + Whether the given media is compatible with media remoting. Recorded whenever + the conditions are met to start remoting (e.g. the media element is the + dominant page content and is not paused). + + + + + jophba@chromium.org + openscreen-eng@google.com + + Tracks whether a web page allows content to be remoted. Recorded when the + media player finishes loading and when the site changes this attribute + afterwards. + + + + + jophba@chromium.org + openscreen-eng@google.com + Measures the duration of each remoting session. + + + + muyaoxu@google.com + openscreen-eng@google.com + Tracks the reason that a session failed to start. + + + + jophba@chromium.org + openscreen-eng@google.com + Tracks the trigger for starting a remoting session. + + + + jophba@chromium.org + openscreen-eng@google.com + Tracks the trigger for stopping a remoting session. + + + + jophba@chromium.org + openscreen-eng@google.com + + Measures the duration of each remoting session shorter than 15 seconds. + + + + + jophba@chromium.org + openscreen-eng@google.com + + Measures how long, from the start of a remoting session, until content began + playing out on the remote device. + + + + + jophba@chromium.org + openscreen-eng@google.com + + Measures how long, from the start of a remoting session, until a message was + received from the remote device indicating initialization succeeded. + + + + + jophba@chromium.org + openscreen-eng@google.com + Tracks whether audio or video or both are remoted. + + + + jophba@chromium.org + openscreen-eng@google.com + Aspect ratio of video while remoting content. + + + + jophba@chromium.org + openscreen-eng@google.com + + Measured video content transfer bitrate while remoting content. + + + + + jophba@chromium.org + openscreen-eng@google.com + Video codec used while remoting content. + + + + jophba@chromium.org + openscreen-eng@google.com + Video codec profile used while remoting content. + + + + jophba@chromium.org + openscreen-eng@google.com + Video width while remoting content. + + + + takumif@chromium.org + openscreen-eng@google.com + + Pixels-per-second in a video and whether the receiver supports its playback. + Recorded whenever we are about to start media remoting a video. + + + + + kron@chromium.org + webrtc-video@google.com + + 10 times the average queue length when Render() is called in the RTC + low-latency video renderer. Repeatedly measured with a period of 100 s for + as long as the stream is active. + + + + + kron@chromium.org + webrtc-video@google.com + + Per mille of frames drained in the RTC low-latency video renderer. + Repeatedly measured with a period of 100 s for as long as the stream is + active. + + + + + kron@chromium.org + webrtc-video@google.com + + Per mille of frames dropped in the RTC low-latency video renderer. + Repeatedly measured with a period of 100 s for as long as the stream is + active. + + + + + kron@chromium.org + webrtc-video@google.com + + Number of times drain mode is entered. Repeatedly measured with a period of + 100 s for as long as the stream is active. + + + + + kron@chromium.org + webrtc-video@google.com + + The maximum queue length that is observed when Render() is called in the RTC + low-latency video renderer. Repeatedly measured with a period of 100 s for + as long as the stream is active. + + + + + kron@chromium.org + webrtc-video@google.com + + Number of times the maximum queue size is exceeded and the entire queue is + dropped. Repeatedly measured with a period of 100 s for as long as the + stream is active. + + + + + kron@chromium.org + webrtc-video@google.com + + Per mille of render times where the queue is empty and there is no new frame + to render. Repeatedly measured with a period of 100 s for as long as the + stream is active. + + + + + kron@chromium.org + webrtc-video@google.com + + Number of times the reduce steady state queue feature is activated. + Repeatedly measured with a period of 100 s for as long as the stream is + active. + + + + + kron@chromium.org + webrtc-video@google.com + + Total number of frames enqueued to the RTC low-latency video renderer. + Repeatedly measured with a period of 100 s for as long as the stream is + active. + + + + + kron@chromium.org + webrtc-video@google.com + + Number of times we try to render a new frame. Repeatedly measured with a + period of 100 s for as long as the stream is active. + + + + + posciak@chromium.org + liberato@chromium.org + webrtc-video@google.com + + Counts of video decode errors reported to RTCVideoDecoder, recorded when an + error is reportd to RTCVideoDecoder. Also used for DecoderStream. Expired in + M83 and re-added in M92. Warning: this histogram was expired between + 2023-04-16 to 2023-04-20; data may be missing. + + + + + kron@chromium.org + webrtc-video@google.com + + The reason for fallback to software decoding for the codec {Codecs}. + Reported when a fallback to software decoding occurs. + + + + + + + + + + + liberato@chromium.org + webrtc-video@google.com + + Time from decoder creation until the first frame is decoded. + + + + + + + mcasas@chromium.org + sprang@chromium.org + chromeos-gfx@chromium.org + + Indicates whether we were successful in initializing hardware video decoder + for use in the RTC pipeline. + + + + + kron@chromium.org + webrtc-video@google.com + + Initialization latency of the hardware video decoder that is used in the RTC + pipeline. + + + + + liberato@chromium.org + webrtc-video@google.com + + Max number of frames sent for video decode via the DecoderStream adapter, + that have not also returned a decoded video frame. The metric is emitted + once per RTCVideoDecoderStreamAdapter instance, as the max observed value + over that instance's lifetime. Warning: this histogram was expired between + 2022-08-14 to 2023-04-20; data may be missing. + + + + + + + mcasas@chromium.org + sprang@chromium.org + chromeos-gfx@chromium.org + Video codec profile used in RTC video decoder. + + + + kron@chromium.org + webrtc-video@google.com + + Reinitialization latency of the hardware video decoder that is used in the + RTC pipeline. + + + + + liberato@chromium.org + webrtc-video@google.com + + This records the media::StatusCode from the RTCVideoDecoderStreamAdapter. It + is emitted when the adapter encounters an error during decoding. + + + + + + + mcasas@chromium.org + sprang@chromium.org + chromeos-gfx@chromium.org + + Indicates whether we were successful in initializing hardware video encoder + for use in the RTC pipeline. + + + + + + + mcasas@chromium.org + sprang@chromium.org + chromeos-gfx@chromium.org + Video codec profile used in RTC video encoder. + + + + + + mcasas@chromium.org + sprang@chromium.org + chromeos-gfx@chromium.org + + Records if the {Codecs} encoder was torn down because the stream ended, or + if it was due to an encoder error. Recorded once when shutting down an + accelerated (or out of process) video encoder. + + + + + + + + + + + + emircan@chromium.org + + Indicates whether we were successful in preserving timestamps in hardware + video encoder session. It is tracked during the session and logged after it + ends. + + + + + steimel@chromium.org + media-dev@chromium.org + + Time during which a media session has been active, in other words, the time + between an activation and deactivation, without counting time while it was + suspended. If a session is activated after being deactivated, there will be + two entries. For example, if a user plays a song but is interrupted by a + phone call, it will only account for the song playing time. + + + + + steimel@chromium.org + media-dev@chromium.org + + The number of times the user paused playback of a media session using other + means than the pause button on the page. + + + + + steimel@chromium.org + media-dev@chromium.org + + The number of times the user started playback of a media session using other + means than the play button on the page. + + + + + steimel@chromium.org + media-dev@chromium.org + + Indicate whether the native requestAudioFocus() call was successful. + + + + + steimel@chromium.org + media-dev@chromium.org + + The number of times the user stopped a media session using other means than + the pause button on the page. + + + + + steimel@chromium.org + media-dev@chromium.org + + The number of times a media session is suspended and why it has been + suspended. + + + + + beccahughes@chromium.org + media-dev@chromium.org + + The number of times user interacts with MediaSession sorted by action type. + + + + + steimel@chromium.org + media-dev@chromium.org + + The focused state of the WebContents associated with the MediaSession that + the user is interacting with. Recorded when the user interacts with a + MediaSession (e.g. by pressing the play/pause key on their keyboard). + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Video codec used in plain src= (not MSE) HTML5 media if the media container + is MP4. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Video codec used in plain src= (not MSE) HTML5 media if the media container + is WebM. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Time in milliseconds from when WebMediaPlayerImpl starts loading until the + first video frame has been shown. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Time in milliseconds from when WebMediaPlayerImpl starts loading until + metadata is known. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Time in milliseconds from when WebMediaPlayer starts loading until it has + buffered enough to start playback. + + + + + hajimehoshi@chromium.org + kouhei@chromium.org + scherkus@chromium.org + Size of HTML5 media (when known), in MB. + + + + eladalon@chromium.org + fbeaufort@chromium.org + + Records the result of the user's interaction with the media picker dialog + which is displayed following a call to getDisplayMedia that results in the + basic flow (preferCurrentTab either unspecified or is false). + + + + + eladalon@chromium.org + guidou@chromium.org + + Records whether the display-capture permission policy allows/disallows this + call to getDisplayMedia. + + + + + eladalon@chromium.org + fbeaufort@chromium.org + + Records the result of the user's interaction with the media picker dialog + which is displayed following a call to getDisplayMedia where + preferCurrentTab was specified. + + + + + + + + + dalecurtis@chromium.org + + The amount of time taken to leave the underflow state (i.e. resume playback) + for playbacks. This doesn't report initial zero samples, which was + previously used to compensate for playbacks that don't rebuffer. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + URL scheme used with HTML5 media; only recorded for src=URL playbacks and + not for Media Source Extensions playbacks. Each URL provides one sample. + + + + + tmathmeyer@chromium.org + videostack-eng@google.com + + Records the usage of VaapiVideoDecoder VaapiVideoDecodeAccelerator based on + vulkan support and Vaapi driver version on linux. This is recorded on GPU + process startup when hardware accelerated video decoding support is checked. + + + + + mcasas@chromium.org + chromeos-gfx@chromium.org + + The codec-specific delegate in VaapiVideoDecoder has returned an error from + Decode(). This could be a parse error, or a VA error itself. + + + + + mcasas@chromium.org + chromeos-gfx-video@google.com + + Whether the creation of VaapiWrapper succeeded or not inside + VaapiVideoDecoder. + + + + + mcasas@chromium.org + chromeos-gfx-video@google.com + + Whether the call to VaapiWrapper's VADisplayState::Initialize() succeeded or + not. Warning: this histogram was expired between 2023-02-12 to 2023-04-20; + data may be missing. + + + + + andrescj@chromium.org + chromeos-gfx@chromium.org + + The response given to the client by VaapiJpegDecodeAccelerator for a decode + request. This is recorded when the decode succeeds or fails. The recorded + value corresponds to a MjpegDecodeAccelerator::Error. + + + + + wtlee@chromium.org + chromeos-gfx@chromium.org + + Result codes reported by jpeg encode using VA-API hardware jpeg encoder. + + + + + mcasas@chromium.org + chromeos-gfx-video@google.com + + Whether the creation of VaapiWrapper succeeded or not inside VaVDA. + + + + + dalecurtis@chromium.org + evliu@google.com + media-dev@chromium.org + + Records the autoplay source of videos. This includes + Media.Video.Autoplay.Muted. + + + + + dalecurtis@chromium.org + evliu@google.com + media-dev@chromium.org + + Records muted video started playing with play() become visible at some + point. The UMA for false is not complete since it is recorded in a + destructor which is garbage-collected. Please subtract + Media.Video.Autoplay.Muted "play() method" count with the true + count of this histogram to obtain the real false count. + + + + + dalecurtis@chromium.org + evliu@google.com + media-dev@chromium.org + + Records the offscreen playing duration of a muted video autoplaying from + play() method. + + + + + dalecurtis@chromium.org + evliu@google.com + media-dev@chromium.org + + Status of the unmute action on a video that autoplayed because it was muted. + + + + + toprice@chromium.org + video-cmi-apis@google.com + + The time from the first camera access failure due to blocked system + permission before the last browser restart to startup after browser restart. + Logged once at browser startup if the system permission then is allowed. + Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may + be missing. + + + + + toprice@chromium.org + video-cmi-apis@google.com + + The time from the last camera access failure due to blocked system + permission before the last browser restart to startup after browser restart. + Logged once at browser startup if the system permission then is allowed. + Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may + be missing. + + + + + toprice@chromium.org + video-cmi-apis@google.com + + The Mac system permission state for camera. Logged once at browser startup. + For more information on the values, see + https://developer.apple.com/documentation/avfoundation/avauthorizationstatus. + Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may + be missing. + + + + + toprice@chromium.org + video-cmi-apis@google.com + + The Mac system permission state for camera. Logged once at browser startup + if there was a failure accessing the camera due to blocked system permission + before the last browser restart. For more information on the values, see + https://developer.apple.com/documentation/avfoundation/avauthorizationstatus. + Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may + be missing. + + + + + toprice@chromium.org + video-cmi-apis@google.com + + The Mac system permission state for camera at the time of a user media + request. Logged when the system permission is checked. If the permission is + "not determined" this is logged, permission is requested, and the + resulting permission (from the user response) is also logged. For more + information on the values, see + https://developer.apple.com/documentation/avfoundation/avauthorizationstatus. + Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may + be missing. + + + + + bur@chromium.org + mark@chromium.org + + The Mac system permission state for screen capture. Logged once at browser + startup and when attempting to screen capture. Requires macOS 10.15+. + Samples will not be collected on earlier macOS versions. + + + + + eugene@chromium.org + videostack-eng@chromium.org + + Video playback roughness for a 100s interval. Suffixed by the framerate. + + + + + mcasas@chromium.org + jophba@chromium.org + + Video Capture Device captured aspect ratio, as a rounded integer multiplied + by 100. The collection is made in the VideoCaptureController upon reception + of the first frame. + + + + + mcasas@chromium.org + + Counts appearances of Blacklisted Video Capture devices during enumeration. + This collection happens during first enumeration in the appropriate + platforms' VideoCaptureDeviceFactory. + + + + + armax@chromium.org + video-cmi-mpp@google.com + + Time it takes from the moment that a VideoCaptureController is requested to + start to the moment the first video frame arrives at + VideoCaptureController::OnFrameReadyInBuffer(). + + + + + eshr@google.com + handellm@google.com + + Counts each pixel format an enumerated video capture device supports. This + is recorded during the first device enumeration per Capture process launch. + (This is usually once per launch of Chrome unless the Capture process + crashes.) + + + + + eshr@google.com + handellm@google.com + jophba@chromium.org + + Counts each resolution supported by an enumerated video capture device. + These are categorized by designation (eg. QVGA, HD, 4KUHD, etc) instead of + pixel count. This is recorded during the first device enumeration per + Capture process launch. (This is usually once per launch of Chrome unless + the Capture process crashes.) + + + + + mcasas@chromium.org + guidou@chromium.org + armax@chromium.org + + Breaks down the events counted in Media.VideoCaptureManager.Event bucket + "Stopping video capture due to error" by the origin of the error. + This allows narrowing down what is causing errors. An event for this + histogram is emitted once for each time a client disconnects from a video + capture session because the session has reported an error. + + + + + mcasas@chromium.org + guidou@chromium.org + armax@chromium.org + jophba@chromium.org + + An event for this histogram is emitted once for each time a video frame is + dropped on the way from a capture source, e.g. a webcam, to a corresponding + media::VideoCaptureController instance running in the Browser process. If + more than + |VideoCaptureController::max_consecutive_frame_drop_for_same_reason_count()| + frames are dropped consecutively for the same reason, no more events for the + same reason will be counted for that session until either a frame is + delivered successfully or the reason for the frame dropping changes. + + + + + mcasas@chromium.org + guidou@chromium.org + armax@chromium.org + handellm@chromium.org + jophba@chromium.org + + Video Capture Device frame rate requested by VideoCaptureManager on + AllocateAndStart(). The collection is made in the VideoCaptureController + upon reception of the first frame. + + + + + orphis@chromium.org + toprice@chromium.org + + Used to track the resolution of + ServiceVideoCaptureProvider::GetDeviceInfosAsync() and if a retry has been + used to get to the current result. See http://crbug.com/1379392. + + + + + mcasas@chromium.org + handellm@chromium.org + jophba@chromium.org + + Video Capture Device captured frame height in pixels. The collection is made + in the VideoCaptureController upon reception of the first frame. + + + + + eshr@google.com + handellm@google.com + + A count of how often the capture device delivers an IOSurface to the capture + pipeline. This is recorded once per opening of the camera, when the first + video frame is captured. + + + + + eshr@google.com + handellm@google.com + + A boolean count of how often the requested pixel format is the one that was + actually captured. This is recorded once per opening of the camera, when the + first video frame is captured. + + + + + eshr@google.com + handellm@google.com + + An enumeration count of whether or not the requested resolution equals the + captured resolution, detailing which dimensions differ in the enum. This is + recorded once per opening of the camera, when the first video frame is + captured. + + + + + eshr@google.com + handellm@google.com + + Counts the pixel formats requested by the VideoCaptureDevice on Mac. This is + recorded when the first video frame is captured. + + + + + chfremer@chromium.org + + Indicates how many times Chrome has asked AVFoundation to enumerate devices + since the process start when zero devices are returned. This event is only + emitted for the first time that zero devices are returned since the process + start. This is used in the context of investigating http://crbug.com/582931. + + + + + perkj@chromium.org + + MacBook hardware version used when Chrome cannot enumerate a video device. + This is used for tracking http://crbug.com/582931. + + + + + perkj@chromium.org + + Number of video capture devices detected by Chrome during device + enumeration. Zero devices indicate a problem since all MacBooks should have + a built-in camera. This is used for tracking http://crbug.com/582931. + + + + + chfremer@chromium.org + + An event for this histogram is emitted when a video capture session drops + more than + |VideoCaptureController::max_consecutive_frame_drop_for_same_reason_count()| + consecutive video frames for the same reason. After this event is emitted + once, no additional events are emitted for consecutively dropped frames for + the same reason until the count is reset by either a frame being delivered + successfully or a frame being dropped for a different reason. See also + Media.VideoCapture.FrameDrop. + + + + + fbeaufort@chromium.org + guidou@chromium.org + + Number of times a video capture device is accessed simultaneously. Recorded + when video capturing starts. + + + + + jophba@chromium.org + klausw@chromium.org + + The scalar multiplier used for adjusting the content size during tab capture + to align with the requested capture size, multiplied by 100. Recorded when + capture of a web contents is started, the content size of the capture + changes, and when capture stops. + + + + + jophba@chromium.org + klausw@chromium.org + + The number of times the scale override changed in a single capture session. + Recorded when capture of a web contents is stopped. + + + + + toprice@chromium.org + guidou@chromium.org + + Counts the start attempts for video capture, to be compared with the + StartOutcome enum histogram. + + + + + toprice@chromium.org + video-cmi-apis@google.com + + Counts detailed outcomes of first starting video capture, as a breakdown of + Media.VideoCapture.StartOutcome based on the error codes which caused + failures, or kNone if we started successfully. Can also be viewed as the + subset of reports to Media.VideoCapture.Error which occur before + VideoCaptureImpl first transitions to STARTED. + + + + + toprice@chromium.org + guidou@chromium.org + + Counts the times Starting video capture results in success or failure (due + to eg timeouts etc). + + + + + mcasas@chromium.org + handellm@chromium.org + jophba@chromium.org + + Video Capture Device captured frame width in pixels. The collection is made + in the VideoCaptureController upon reception of the first frame. + + + + + ilnik@chromium.org + video-cmi-mpp@chromium.org + + Error codes received by VideoCaptureDeviceMFWin when checking for D3D11 + device removal reason. + + + + + ilnik@google.com + video-cmi-mpp@google.com + + Counts the pixel formats produced by the VideoCaptureDevice on Windows. This + is recorded when the camera is opened. + + + + + ilnik@google.com + video-cmi-mpp@google.com + + Counts the pixel formats used internaly by Windows VideoCaptureEngine. This + is recorded when the camera is opened. + + + + + ilnik@google.com + video-cmi-mpp@google.com + + Counts the pixel formats requested by the consumer on Windows. This is + recorded when the camera is opened. + + + + + ilnik@google.com + handellm@google.com + video-performance-team@google.com + + The Capture API that is used on Windows. This is recorded when the camera is + opened. + + + + + toprice@chromium.org + hta@chromium.org + + Error codes received by VideoCaptureDeviceMFWin on Windows which caused a + kWinMediaFoundationGetMediaEventStatusFailed error, ending video capture. + + + + + chfremer@chromium.org + + Indicates which video capture backend is used on Windows. A count is + recorded each time a new VideoCaptureDeviceFactoryWin instance is created. + + + + + chfremer@chromium.org + + Counts number of times taking a still image on Windows fails/succeeds. + + + + + chfremer@chromium.org + + Counts how many retries are needed for calls to MediaFoundation function + GetAvailableDeviceMediaType before getting a result different from + MF_E_INVALIDREQUEST or giving up. + + + + + guidou@chromium.org + webrtc-dev@chromium.org + + Counts how many retries are needed for calls to MediaFoundation function + GetDeviceStreamCategory before getting a result different from + MF_E_INVALIDREQUEST or giving up. + + + + + guidou@chromium.org + webrtc-dev@chromium.org + + Counts how many retries are needed for calls to MediaFoundation function + GetDeviceStreamCount before getting a result different from + MF_E_INVALIDREQUEST or giving up. + + + + + henryhsu@chromium.org + + Indicates whether we were successful in initializing hardware jpeg decoder + for attempts to VideoCaptureGpuJpegDecoder::Initialize(). + + + + + mcasas@chromium.org + Measures the time taken for VideoCaptureManager:: + + + + handellm@chromium.org + ccameron@chromium.org + + Indicates which desktop capture implementation and DesktopID::Type was used + for a desktop capture session. Recorded on instantiation of the desktop + capturer. + + + + + + Removed 04/2023. No longer needed. + + dalecurtis@chromium.org + media-dev@chromium.org + + Records the length of time the screen was locked while a device capture + session is active. An entry is recorded upon screen unlock or upon closure + of all active device capture sessions. + + + + + + Removed 04/2023. No longer needed. + + dalecurtis@chromium.org + media-dev@chromium.org + + Indicates if a device capture session encountered a screen lock during its + lifetime. An entry is recorded once upon session closure. + + + + + chfremer@chromium.org + + Measures the duration from the time the Browser connected to the video + capture service to the time it closed the connection. Entries are only + logged if the service was used for creating an actual capture session as + opposed to enumerating devices only. + + + + + chfremer@chromium.org + + Measures the duration from the time the Browser connected to the video + capture service to the time it closed the connection. Entries are only + logged if the service was used for enumerating devices only, but not for + creating an actual capture session. + + + + + chfremer@chromium.org + + Measures the duration from the time the Browser connected to the video + capture service to the time the connection was lost. + + + + + chfremer@chromium.org + + Measures the duration from the time the Browser last closed or lost + connection to the video capture service to the time it reconnects. This + duration only gets logged for reconnects after usage of the service for + capture (as opposed to enumeration-only usage). + + + + + chfremer@chromium.org + + Measures the duration from the time the Browser last closed or lost + connection to the video capture service to the time it reconnects. This + duration only gets logged for reconnects after enumeration-only usage of the + service. + + + + + chfremer@chromium.org + + Counts video capture service events, such as startup, shutdown, and + connection lost. + + + + + + + dalecurtis@chromium.org + Video codec used in HTML5 media. + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Whether Chrome had to fall back to a secondary video decoder with + {VideoCodec} video codec after the primary decoder failed reinitialization. + + + + + + + + chcunningham@chromium.org + media-dev@chromium.org + + Indicates whether we were successful performing the operation to + {DbOperation}. Recorded once the operation completes. + + + + + + + + chcunningham@chromium.org + media-dev@chromium.org + + Indicates duration of time performing the operation to {DbOperation}. + Recorded once the operation completes or times out. Reported for all users + regardless of clock resolution. + + + + + + + + mcasas@chromium.org + chromeos-gfx@chromium.org + + Delay between a VideoFrame being decoded and it being consumed by the OS + presentation API (on ChromeOS, this includes the display controller too). + + + + + + + mcasas@chromium.org + chromeos-gfx@chromium.org + + Delay between a VideoFrame being decoded and it being handed over to the + CompositorFrameSink, essentially capturing the buffering in the Renderer. + This value is strictly included in Media.VideoFrameSubmitter + + + + + xhwang@chromium.org + media-dev@chromium.org + + The height of the first video frame in an HTML5 video for {PlaybackType} + playbacks. Reported when the first video frame is available. + + + + + + + + + + + peconn@chromium.org + media-dev@chromium.org + + Every time a video persistence session could be triggered, it records the + result of the attempt. + + + + + peconn@chromium.org + media-dev@chromium.org + + Record the type of controls a persisted video is using. This is recorded + every time a video enters persistence mode + + + + + peconn@chromium.org + media-dev@chromium.org + + Records the length during which a video was in a persistent state. It is + recorded once per video persistence session. + + + + + peconn@chromium.org + media-dev@chromium.org + + Records the reason why a video persistence session has ended. + + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Indicates how many cadence changes have occurred during playback, a zero + value is emitted at the beginning of playback. Subsequent values are emitted + during video rendering for each cadence change (up to a maximum of 10). + + + + + + Removed 09/2022. No longer needed. + + xhwang@chromium.org + media-dev@chromium.org + + Indicates whether video is rendering in low delay mode. It's recorded when a + video starts playing. + + + + + sandersd@chromium.org + media-dev@chromium.org + + Whether a VTDecompressionSession is internally using hardware accelerated + decoding. + + + + + sandersd@chromium.org + media-dev@chromium.org + + Count of VTVDA session failure reasons. Successful initializations are + counted as a special failure type. Since only successfully initialized + session can fail, failures rates are computed as a simple ratio. + + + + + dalecurtis@chromium.org + + Watch time is defined as the amount of elapsed media time for audio+video + media aggregated per player instance. A minimum of 7 seconds of unmuted, + foreground media must be watched to start watch time monitoring. Watch time + is checked on a regular basis and reported to UMA upon one of the stop + events mentioned below or at player destruction if none occur prior. + + Any one of paused, hidden, or muted is sufficient to stop watch time metric + reports. Each of these has a hysteresis where if the state change is undone + within some time, the watch time will be counted as uninterrupted. + + Power events (on/off battery power) have a similar hysteresis, but unlike + the aforementioned properties, will not stop metric collection. + + Each seek event will result in a new watch time metric being started and the + old metric finalized as accurately as possible. + + + + + cassew@chromium.org + tguilbert@chromium.org + media-dev@chromium.org + + When an HLS manifest is found during loading (on Android only), and the + response is CORS cross-origin, this histogram records whether the response + included an Access-Control-Allow-Origin header. Such requests are likely to + be supported by fetch() if the mode is correctly configured. + + + + + cassew@chromium.org + tguilbert@chromium.org + media-dev@chromium.org + + When an HLS manifest is found during loading (on Android only), records + whether the request was CORS cross-origin. These are cases that could not be + implemented using fetch(). Note: subresources referenced by the manifest are + not considered; they may have different origins or CORS configurations. + + + + + cassew@chromium.org + tguilbert@chromium.org + media-dev@chromium.org + + When an HLS manifest is found during loading (on Android only), records + whether the request would be mixed content. These are cases that could not + be implemented using fetch(). Note: subresources referenced by the manifest + are not considered; they may have different origins. + + + + + cassew@chromium.org + lukasza@chromium.org + media-dev@chromium.org + + When an HLS manifest is found during loading (on Android only), {Variant} + then this histogram records the MIME type of the response. + + This metric should help assess the web compatibility risk of strict MIME + type enforcement, as discussed in + https://github.com/annevk/orb/issues/29#issuecomment-967432934 + + + + + + + + + + Removed 09/2022. + + sandersd@chromium.org + media-dev@chromium.org + + Wall time of WebMediaPlayer playbacks. Each count represents one second of + media playback. Multiple WebMediaPlayer instances can together accumulate + watch time faster than real time. + + + + + handellm@google.com + video-performance-team@google.com + + Boolean indicating if {Domain} stream timestamps had to be corrected during + a muxing session with {StreamTypesRecorded} present. Reported on muxer + destructor. + + + + + + + + + + + + + + + kron@chromium.org + webrtc-video@google.com + + The video codec profile that was used when calling GetPerfInfo. Recorded for + each call to GetPerfInfo if certain sanity checks pass. + + + + + kron@chromium.org + webrtc-video@google.com + + The video codec profile that was provided to SavePerfRecord. Recorded for + each call to SavePerfRecord if certain sanity checks pass. + + + + + kron@chromium.org + webrtc-video@google.com + + Tracks how the smoothness prediction value was determined (smooth by + default, smooth from data, not smooth from data, implicitly smooth, smooth + override, or implicitly not smooth) multiplexed with the configuration + (codec, pixels, hardware_accelerated). See the code for details. This gives + a sparse histogram that is best interpreted using a script for + demultiplexing. The value is reported each time either encodingInfo() or + decodingInfo() are called and requests a smoothness prediction from + WebrtcVideoPerfHistory. + + + + + + + + + kron@chromium.org + webrtc-video@google.com + + Tracks the volatilty of the smoothness predictions after updates to the + database, that is, if the smoothness prediction changes or stays at the same + value. Recorded after each update to the WebRTC MediaCapabilities database + if there was an existing record for the corresponding configuration. + + + + + + + + + + + + + + + kron@chromium.org + webrtc-video@google.com + + Indicates whether we were successful performing the operation to + {DbOperation}. Recorded once the operation completes. + + + + + + + + kron@chromium.org + webrtc-video@google.com + + Indicates duration of time performing the operation to {DbOperation}. + Recorded once the operation completes or times out. Reported for all users + regardless of clock resolution. + + + + + + Please list the metric's owners. Add more owner tags as needed. + + Time needed to pre-buffer A/V data before the actual playback for the + YouTube application. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Time needed to buffer A/V data after an underrun for the YouTube + application. + + + + + mcasas@chromium.org + chromeos-gfx@chromium.org + + Error codes reported by libva (via VaapiWrapper) while being used from the + specified client name. {VaapiClientName} + + + + + + + + + + + + + + + + + + vandebo@chromium.org + If a media scan was cancelled, the duration (in ms) it ran. + + + + vandebo@chromium.org + + The number of directories with media files found during a scan. + + + + + vandebo@chromium.org + + Duration in milliseconds taken to do a media scan that ran to completion. + + + + + vandebo@chromium.org + + The percentage of galleries accepted (not deselected) from the scan result + dialog. + + + + + vandebo@chromium.org + + The number of galleries added or updated in preferences after a scan. + + + + + vandebo@chromium.org + Various usage counts for media galleries. + + + + steimel@chromium.org + media-dev@chromium.org + + True if the MediaLauncherActivity was successfully able to open the file. + Recorded when the MediaLauncherActivity starts the CustomTabActivity. + + + + + steimel@chromium.org + media-dev@chromium.org + + The type of media that a user is opening via the MediaLauncherActivity. + + + + + + + takumif@chromium.org + mfoltz@chromium.org + openscreen-eng@google.com + + Round trip time for a Cast app availability request. Can be suffixed with + Success or Failure. + + + + + mfoltz@chromium.org + openscreen-eng@google.com + + Whether opening Cast channel succeeds or not. Recorded when all opening + channel attempts (including retry attempts) finish. + + + + + mfoltz@chromium.org + openscreen-eng@google.com + + Errors encountered on a Cast channel. Recorded when a Cast channel fails to + open, or when an opened channel fails to respond to keepalive ping request + and times out. + + + + + takumif@chromium.org + openscreen-eng@google.com + + Records the length of the friendly name of a Cast device when we succeed to + open a Cast channel to it. + + + + + mfoltz@chromium.org + openscreen-eng@google.com + + The number of connected Cast devices. Recorded when browser finishes + discovering Cast devices. Recording happens roughly once per hour. + + + + + mfoltz@chromium.org + openscreen-eng@google.com + + The number of known Cast devices. Recorded when browser finishes discovering + Cast devices. Recording happens roughly once per hour. + + + + + btolsch@chromium.org + openscreen-eng@google.com + The source of discovery for a newly-created Cast sink. + + + + jrw@google.com + openscreen-eng@google.com + Events related to the WebUI Cast feedback dialog. + + + + muyaoxu@google.com + openscreen-eng@google.com + + The types of apps supported by the sender page. Recorded when requesting the + receiver to launch a new session. + + + + + muyaoxu@google.com + openscreen-eng@google.com + + The type of app that the receiver device choose to launch. Recorded when + receiving a receiver status response to the launch request. + + + + + mfoltz@chromium.org + openscreen-eng@google.com + + Duration in milliseconds taken to fail to open a cast channel. Recorded when + one opening channel attempt fails. + + + + + mfoltz@chromium.org + openscreen-eng@google.com + + Duration in milliseconds taken to successfully open a cast channel. Recorded + when one opening channel attempt succeeds. + + + + + ahmedmoussa@google.com + takumif@chromium.org + openscreen-eng@google.com + + In some scenarios casting doesn't start until the user approves it on the + receiver side. This histogram records the time it takes between requesting + to start casting and receiving a response from the receiver that it is now + waiting for user approval. + + + + + ahmedmoussa@google.com + takumif@chromium.org + openscreen-eng@google.com + + This histogram is recorded whenever the user attempts to start casting and a + receiver-side prompt is shown, and when the user disapproves it. The other + two cases, when the user approves it or when it times out, are not recorded. + As both these cases can be received without a prompt before it and this + should not be recorded. + + + + + takumif@chromium.org + muyaoxu@google.com + openscreen-eng@google.com + + Records whether audio is played on the receiver device. If not, then on the + sender side. Recorded when a new site-initiated mirroring session is + started. + + + + + takumif@chromium.org + openscreen-eng@google.com + Total time to launch a Cast Streaming mirror session. + + + + takumif@chromium.org + openscreen-eng@google.com + + Total length of a Cast Streaming mirror session of any type, including the + time spent in media remoting. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + Total length of a Cast Streaming mirror session of any type, when the cast + sink was discovered via access code. + + + + + + Removed 04/2022 as local file casting is no longer done via the Cast UI. + + takumif@chromium.org + openscreen-eng@google.com + Total length of a Cast Streaming File mirror session. + + + + takumif@chromium.org + openscreen-eng@google.com + + Total length of a Cast Streaming Offscreen Tab mirror session. + + + + + takumif@chromium.org + openscreen-eng@google.com + Total length of a Cast Streaming Screen mirror session. + + + + takumif@chromium.org + openscreen-eng@google.com + + Total length of a Cast Streaming mirror session of type Tab and NOT of types + offscreen tab or local file. This includes the time spent in media remoting. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + Whenever a Cast Streaming session to a device discovered by access code + manual entry fails to start, record the error associated with the event. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + Whenever a Cast Streaming session to a device discovered by access code and + remembered via caching fails to start, record the error associated with the + event. + + + + + takumif@chromium.org + openscreen-eng@google.com + + Whenever a Cast Streaming session fails to start, record the error + associated with the event. This is recorded only for the native Cast MRP. + See MediaRouter.CastStreaming.Start.Failure for the extension MRP. + + + + + takumif@chromium.org + openscreen-eng@google.com + + Whenever a Cast Streaming session is successfully started, record if it was + for a Tab or Desktop mirroring session. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + Whenever a Cast Streaming session is successfully started, when the device + was discovered by access code maual entry, record if it was for a Tab or + Desktop mirroring session. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + Whenever a Cast Streaming session is successfully started, when the device + was discovered by access code remembered device caching, record if it was + for a Tab or Desktop mirroring session. + + + + + mfoltz@chromium.org + takumif@chromium.org + openscreen-eng@google.com + + The number of available DIAL devices. Recorded when browser finishes + discovering DIAL devices. Recording happens roughly once per hour. + + + + + takumif@chromium.org + mfoltz@chromium.org + openscreen-eng@google.com + + The result of a DIAL CreateRoute request. Recorded when the user requests to + create a media route to a DIAL device. + + + + + takumif@chromium.org + mfoltz@chromium.org + openscreen-eng@google.com + + Result from parsing DIAL device description XML text. Recorded when utility + process returns a DIAL device description object to the DIAL Media Route + Provider. + + + + + takumif@chromium.org + mfoltz@chromium.org + openscreen-eng@google.com + + The result of a DIAL app info request. Recorded when an app info request is + issued to a DIAL device. + + + + + takumif@chromium.org + mfoltz@chromium.org + openscreen-eng@google.com + + The number of known DIAL devices. Recorded when browser finishes discovering + DIAL devices. Recording happens roughly once per hour. + + + + + + Replaced by MediaRouter.Dial.DeviceDescriptionParsingResult. + + takumif@chromium.org + mfoltz@chromium.org + openscreen-eng@google.com + + Error encountered while parsing DIAL device description XML text. Recorded + when utility process returns an invalid DIAL device description object to + browser. + + + + + takumif@chromium.org + openscreen-eng@google.com + Location the user clicked to open the Media Router dialog. + + + + takumif@chromium.org + openscreen-eng@google.com + + Records errors encountered by the Mirroring Service. If an error occurs + while media remoting, the service attempts to revert to mirroring. Otherwise + mirroring is terminated. + + + + + takumif@chromium.org + mfoltz@chromium.org + openscreen-eng@google.com + + The type of Presentation URL used in a PresentationRequest by a web page. + + + + + mfoltz@chromium.org + openscreen-eng@google.com + + Logged when the Media Router starts a presentation according to the type of + presentation URL and the type of media sink. + + + + + + + takumif@chromium.org + mfoltz@chromium.org + openscreen-eng@google.com + + Result of a request to a MediaRouteProvider to create a route. + CreateRoute.Result (without a suffix) is recorded for the extension or an + unknown MRP. + + + + + + + takumif@chromium.org + mfoltz@chromium.org + openscreen-eng@google.com + + Result of a request to a MediaRouteProvider to join a route. + JoinRoute.Result (without a suffix) is recorded for the extension or an + unknown MRP. + + + + + + + takumif@chromium.org + mfoltz@chromium.org + openscreen-eng@google.com + + Result of a request to a MediaRouteProvider to terminate a route. + TerminateRoute.Result (without a suffix) is recorded for the extension or an + unknown MRP. + + + + + muyaoxu@chromium.org + openscreen-eng@google.com + + Measures how long, from the start of a streaming session, until it switches + to Remoting for Remote Playback sessions. The start time is measured when + the streaming session has started and the end time is measured when the + remoting starts. The metric is recorded when both the start time and end + time are measured and duration time is calculated. + + + + + muyaoxu@chromium.org + openscreen-eng@google.com + + Whether Remoting starts before it timeouts for Remote Playback sessions. + Recorded when the timeout callback is fired and when Remoting starts. + + + + + muyaoxu@google.com + openscreen-eng@google.com + + Recorded when a Cast sink is discovered for a Remote Playback MediaSource + and this sink supports the MediaSource's AudioCodec. It is not recorded if + the model is not known to support Remoting, in which case the sink's audio + capability is unknown. + + + + + muyaoxu@google.com + openscreen-eng@google.com + + Recorded when a Cast sink is discovered for a Remote Playback MediaSource + and this sink supports the MediaSource's VideoCodec. It is not recorded if + the model is not known to support Remoting, in which case the sink's video + capability is unknown. + + + + + muyaoxu@google.com + openscreen-eng@google.com + + Recorded when a Cast sink is discovered for a Remote Playback MediaSource + and this sink does not support the MediaSource's AudioCodec. It is not + recorded if the model is not known to support Remoting, in which case the + sink's audio capability is unknown. + + + + + muyaoxu@google.com + openscreen-eng@google.com + + Recorded when a Cast sink is discovered for a Remote Playback MediaSource + and this sink does not support the MediaSource's VideoCodec. It is not + recorded if the model is not known to support Remoting, in which case the + sink's video capability is unknown. + + + + + muyaoxu@google.com + openscreen-eng@google.com + + Records whether the discovered sink is known to support Media Remoting. It + is recorded when media sink query results are sent to the + CastMediaRouteProvider. + + + + + takumif@chromium.org + openscreen-eng@google.com + + The type of the Media Sink that media is being cast to. Recorded each time + the user selects a Media Sink to start casting. Recorded for all the UI + entry points. + + + + + takumif@chromium.org + openscreen-eng@google.com + + The type of the Media Sink that media is being cast to. Recorded each time + the user selects a Media Sink to start casting from {Ui}. + + + + + + + + + takumif@chromium.org + openscreen-eng@google.com + + The source of a Media Router session. This is recorded to keep track of what + kind of media is being streamed. + + + + + takumif@chromium.org + openscreen-eng@google.com + + Duration in milliseconds taken from the user opening the Media Router dialog + to the user closing the dialog. This is only recorded if closing the dialog + is the first action the user takes. + + + + + takumif@chromium.org + openscreen-eng@google.com + + Duration in milliseconds taken from the Media Router dialog showing the sink + list and being populated with at least one device to the user selecting a + device immediately after to create a new route. + + + + + takumif@chromium.org + openscreen-eng@google.com + The index of the sink that was selected in the sink list. + + + + takumif@chromium.org + openscreen-eng@google.com + The number of times a user stops different types of routes. + + + + muyaoxu@google.com + openscreen-eng@google.com + + A Mediarouter dialog can be two types: (1) A route controller dialog where + users can stop casting. (2) A device picker where users can select a device + and cast to it. This histogram records when users interact with the dialog + (start or stop casting). + + + + + muyaoxu@google.com + openscreen-eng@google.com + + A MediaRouter dialog is opened when users click on the Cast buttons supplied + by the Cast SDK or the default HTML media player. This histogram records the + type of the dialog when the dialog is created. + + + + + takumif@chromium.org + openscreen-eng@google.com + + Counts the number of devices known and populated to the Media Router dialog + (or the Global Media Controls' device picker) three seconds after the dialog + loads. Always expected to be non-negative. This includes data recorded from + Clank, which uses Android's MediaRouter framework. + + + + + takumif@chromium.org + openscreen-eng@google.com + + This records how the Cast dialog was opened and what Cast mode was used + whenever a Cast session starts. + + + + + takumif@chromium.org + openscreen-eng@google.com + + Whether the Cast toolbar icon is in its ephemeral state (shown only when the + feature is active), or is pinned to the toolbar by user pref / admin policy. + + + + + takumif@chromium.org + openscreen-eng@google.com + + Duration in milliseconds taken from the user click to open the Media Router + dialog to initializing the dialog with data. + + + + + takumif@chromium.org + openscreen-eng@google.com + + Duration in milliseconds taken from a user click to open the Media Router + dialog to the initial paint. + + + + + takumif@chromium.org + openscreen-eng@google.com + + The first action taken by the user after opening the Media Router dialog. + + + + + takumif@chromium.org + openscreen-eng@google.com + + Whether the Cast toolbar icon is in its ephemeral state (shown only when the + feature is active), or is pinned to the toolbar by user pref / admin policy. + Recorded whenever the browser is initialized for a regular (not incognito or + guest) profile. + + + + + takumif@chromium.org + openscreen-eng@google.com + + The number of Media Sinks available for Casting a Presentation API URL to + local screens. Recorded at most once an hour, when the Wired Display Media + Route Provider reports an update on the sink count. + + + + + + diff --git a/histograms/metadata/memory/OWNERS b/histograms/metadata/memory/OWNERS new file mode 100644 index 000000000000..ad8af7cdb9ac --- /dev/null +++ b/histograms/metadata/memory/OWNERS @@ -0,0 +1,8 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +lizeb@chromium.org + +# For HeapProfiling.* histograms: +joenotcharles@google.com \ No newline at end of file diff --git a/histograms/metadata/memory/histograms.xml b/histograms/metadata/memory/histograms.xml new file mode 100644 index 000000000000..8bb27d09c726 --- /dev/null +++ b/histograms/metadata/memory/histograms.xml @@ -0,0 +1,2918 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + olka@chromium.org + fhernqvist@google.com + tguilbert@chromium.org + webrtc-audio-uma@google.com + + + xhwang@chromium.org + media-dev@chromium.org + + + xhwang@chromium.org + media-dev@chromium.org + + + ckitagawa@chromium.org + fredmello@chromium.org + + + jam@chromium.org + + + + + joenotcharles@google.com + chrome-memory@google.com + + The stack unwinder implementation used by the SamplingHeapProfiler. Emitted + on Android devices only each time the profiler is started, which happens at + Chrome launch when HeapProfiling.InProcess.Enabled is true. + + + + + joenotcharles@google.com + chrome-memory@google.com + + For every stack captured by the in-process heap profiler in {Process} on + Android, records the percentage of stack frames whose address was not found + in the Chrome module. Emitted at the time a snapshot is taken with an entry + for every stack in the snapshot. + + + + + + joenotcharles@google.com + chrome-memory@google.com + + For every stack captured by the in-process heap profiler in {Process} on + Android, records if it has fewer than 5 frames. Stacks with few frames are + low-quality and may indicate a problem with the stack unwinder. Emitted at + the time a snapshot is taken with an entry for every stack in the snapshot. + + + + + + joenotcharles@google.com + chrome-memory@google.com + + One metric is emitted on every process start, recording whether the + in-process heap profiler is enabled in {Process} for this Chrome session. + + + + + + joenotcharles@google.com + chrome-memory@google.com + + The number of samples in a heap snapshot taken in {Process}. Emitted once + per snapshot when the in-process heap profiler is enabled. + + + + + + joenotcharles@google.com + chrome-memory@google.com + + The time between heap snapshots taken in {Process} on {Platform}. Emitted + for each snapshot when the in-process heap profiler is enabled, at the + beginning and end of the snapshot interval. *.Scheduled histograms are + recorded at the beginning of the interval, when the snapshot is scheduled. + *.Taken histograms are recorded at the end of the interval, when the + snapshot is taken. Entries in *.Scheduled that don't appear in *.Taken show + which snapshot intervals are interrupted before the snapshot is taken. + + + + + + + + + + + + + + joenotcharles@google.com + etienneb@chromium.org + chrome-memory@google.com + + The total amount of memory in a heap snapshot taken in {Process}. This is an + estimate of total memory allocations in the code being sampled. Because it + is collected through random sampling it is only statistically accurate when + aggregated over many reports. Emitted once per snapshot when the in-process + heap profiler is enabled. + + + + + + erikchen@chromium.org + chrome-memory@google.com + + One metric is emitted every 24-hours after Chrome is launched for every + process that is being profiled by the out-of-process heap profiler. The + timer is reset if Chrome exits. + + + + + erikchen@chromium.org + chrome-memory@google.com + + One metric is emitted every 24-hours after Chrome is launched for every + Chrome instance that is using out of process heap profiling. The timer is + reset if Chrome exits. + + + + + joenotcharles@google.com + chrome-memory@google.com + + The mean number of kilobytes between samples used by the + SamplingHeapProfiler. Emitted each time the profiler is started, which + happens at Chrome launch when HeapProfiling.InProcess.Enabled is true. + + + + + hajimehoshi@chromium.org + kenjibaheux@google.com + kouhei@chromium.org + TBD. + + + + + + erikchen@chromium.org + ajuma@chromium.org + chrome-analysis-team@google.com + + This metric is only recorded on iOS. This measures the sum of + PrivateMemoryFootprint and SharedMemoryFootprint, which is possible because + Chromium on iOS is single-process. Note that this does not include memory + consumed by WebKit-launched processes, such as the WebContent and Network + processes. + + Emitted when closing a log in order to upload it. This happens shortly after + startup and again at regular intervals (usually 5 minutes, regardless of the + type of network connection). Not emitted in logs that are closed when Chrome + loses focus or closes. Yet, it is emitted on logs that are constructed from + data persisted from a previous session, i.e., persisted from an unclean + shutdown. + + Many changes in memory usage on iOS come from changes to WebKit, rather than + changes within Chromium code. To assess whether a change in this metric is + caused by a WebKit change, split by OS version. WebKit changes always come + with an OS version change. + + As with other memory metrics, memory use tends to increase over time. + Restarts due to OS or Chrome updates tend to make this metric drop. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + justincohen@chromium.org + ajuma@chromium.org + + This metric is only recorded on iOS. Same as Memory.Browser.MemoryFootprint + but only recorded when UIApplication.sharedApplication.applicationState is + UIApplicationStateActive. + + + + + justincohen@chromium.org + ajuma@chromium.org + + This metric is only recorded on iOS when + UIApplication.sharedApplication.applicationState is + UIApplicationStateActive. True if the sum of PrivateMemoryFootprint and + SharedMemoryFootprint is greater than 200MB. According to Apple, apps on + iPhone 6 and older devices get terminated by the OS if memory usage crosses + 200MB watermark, so it's important to keep the memory usage under 200MB. + "true" value may not show up on iPhone 6 and older devices if iOS + is strict about the advertised watermark. + + + + + justincohen@chromium.org + ajuma@chromium.org + + This metric is only recorded on iOS. Same as Memory.Browser.MemoryFootprint + but only recorded when UIApplication.sharedApplication.applicationState is + UIApplicationStateBackground. According to Apple, apps get terminated by the + OS if memory usage in background crosses 50MB watermark, so it's important + to keep the memory usage under 50MB. The timing of this metric will line up + so that it rarely occurs when the app is in the background. With a small + data set, the metrics might be biased in ways that we can't think of right + now. + + + + + justincohen@chromium.org + ajuma@chromium.org + + This metric is only recorded on iOS. Same as Memory.Browser.MemoryFootprint + but only recorded when UIApplication.sharedApplication.applicationState is + UIApplicationStateInactive. The timing of this metric will line up so that + it rarely occurs when the app is inactive. With a small data set, the + metrics might be biased in ways that we can't think of right now. + + + + + ajuma@chromium.org + rkgibson@google.com + + Investigation into crbug.com/1102494 shows that OverscrollActionsController + is allocating thousands of objects in it's -initWithScrollView:. This is + likely because thousands of OverscrollActionsControllers are being + initialized. The theory is that there are users that have many many tabs, + causing many OverscrollActionsControllers to be allocated. This histogram + tests that theory by logging how many live OverscrollActionsControllers + there are. This is recorded every time histograms are uploaded. + + + + + ajuma@chromium.org + rkgibson@google.com + + Investigation into crbug.com/1102494 shows that OverscrollActionsController + is allocating thousands of objects in it's -initWithScrollView:. This is + likely because thousands of OverscrollActionsControllers are being + initialized. The theory is that there are users that have many many tabs, + causing many OverscrollActionsControllers to be allocated. This histogram + tests that theory by logging how many open tabs there are. This is recorded + every time histograms are uploaded. + + + + + justincohen@chromium.org + ajuma@chromium.org + + This metric is only recorded on iOS. Same as Memory.Browser.MemoryFootprint + but recorded right after the app transitions into background. According to + Apple, apps get terminated by the OS if memory usage in background crosses + 50MiB watermark so it's important to keep the memory usage under 50MiB. + + + + + + + erikchen@chromium.org + chrome-analysis-team@google.com + + + A rough estimate of the private memory footprint of the browser process. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + This memory footprint metric cannot be compared across platforms because + each platform relies on platform-level APIs for accounting. As such, though + this attempts to measure private memory footprint as best as possible, it + does not measure the same thing on each platform. We have not found a good + way to compare any system level memory metric across platforms due to the + different nature of memory management on each platform. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + This histogram was used to measure the impact of the + DestroyProfileOnBrowserClose prior to its general launch. Now that it's 100% + launched, there is no active A/B test. + + nicolaso@chromium.org + cbe-eng@google.com + + Same as Memory.Browser.PrivateMemoryFootprint, but only gets recorded after + a Profile becomes safe to delete during this browsing session. This lets us + measure the memory impact of destroying Profile objects and their + KeyedServices. + + This is not meant to be compared with Memory.Browser.PrivateMemoryFootprint, + as it measures a different scenario. Instead, it should be compared with + itself in an A/B test with the DestroyProfileOnBrowserClose variation. + + + + + erikchen@chromium.org + ssid@chromium.org + + An amount of private memory of the browser process placed in swap (VmSwap). + Available on Android, Linux and ChromeOS. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + fdoray@chromium.org + + The size of the resident memory in the browser process. This is influenced + by factors we control (e.g. memory that is not accessed can be swapped) and + factors we don't control (e.g. an unrelated process using a lot of memory + can force memory in our process to be swapped). Recorded on + Windows/Linux/ChromeOS/Android. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + This resident memory metric cannot be compared across platforms because each + platform relies on platform-level APIs for accounting. As such, though this + attempts to measure private memory footprint as best as possible, it does + not measure the same thing on each platform. We have not found a good way to + compare any system level memory metric across platforms due to the different + nature of memory management on each platform. + + + + + erikchen@chromium.org + + A rough estimate of the shared memory footprint of the browser process. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + hajimehoshi@chromium.org + kenjibaheux@google.com + kouhei@chromium.org + TBD. + + + + thiabaud@google.com + lizeb@chromium.org + + Records how long it takes for memory to be released from the freelist of the + discardable shared memory allocator with |madvise|. + + Note that clients without high-resolution clocks will report 0 for very + short times. + + + + + thiabaud@google.com + lizeb@chromium.org + + Amount of resident memory that was in use but has now been moved to the + freelist. Recorded during |OnMemoryDump|. + + + + + thiabaud@google.com + lizeb@chromium.org + + Freelist size used by ClientDiscardableMemoryManager in the foreground only. + Recorded during |OnMemoryDump|. + + + + + thiabaud@google.com + lizeb@chromium.org + + Boolean metric which tracks whether or not large chunks of discardable + memory are allocated from the freelist or via IPC. + + + + + thiabaud@google.com + lizeb@chromium.org + + Boolean metric which tracks whether or not discardable memory had already + been discarded when an attempt is made to lock it. + + + + + thiabaud@google.com + lizeb@chromium.org + + Effective memory used by ClientDiscardableMemoryManager in the foreground + only. Recorded during |OnMemoryDump|. + + + + + thiabaud@google.com + lizeb@chromium.org + + Virtual memory used by ClientDiscardableMemoryManager in the foreground + only. Recorded during |OnMemoryDump|. + + + + + reveman@chromium.org + thiabaud@google.com + + The discardable memory allocation size in KB. Recorded each time a new + discardable memory instance is created. + + + + + anthonyvd@chromium.org + catan-team@chromium.org + + The amount of available physical memory on the system as reported by + base::SysInfo::AmountOfAvailablePhysicalMemory(). + + Recorded every 2 minutes. + + + + + anthonyvd@chromium.org + catan-team@chromium.org + + The percentage of physical memory on the system considered + "available" by base::SysInfo::AmountOfAvailablePhysicalMemory() + and base::SysInfo::AmountOfPhysicalMemory(). + + Recorded every 2 minutes. + + + + + + + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The browser process's memory usage reported by the memory instrumentation + service in MB. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The browser process's memory usage reported by the memory instrumentation + service in bytes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The browser process's memory usage reported by the memory instrumentation + service in KB. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The browser process's memory usage reported by the memory instrumentation + service in bytes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The extension process's memory usage reported by the memory instrumentation + service in MB. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The extension process's memory usage reported by the memory instrumentation + service in bytes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The extension process's memory usage reported by the memory instrumentation + service in KB. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The extension process's memory usage reported by the memory instrumentation + service in bytes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + erikchen@chromium.org + + The physical footprint of the GPU process on macOS. Other measurements fail + to correctly account for OpenGL memory usage. This metric also has flaws and + is not intended for permanent use. It's an emergency measure added to help + debug https://crbug.com/713854. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The gpu process's memory usage reported by the memory instrumentation + service in MB. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The gpu process's memory usage reported by the memory instrumentation + service in bytes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The gpu process's memory usage reported by the memory instrumentation + service in KB. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The gpu process's memory usage reported by the memory instrumentation + service in bytes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + anthonyvd@chromium.org + catan-team@chromium.org + + The percentage of physical memory on the system considered + "available" by base::SysInfo::AmountOfAvailablePhysicalMemory() + and base::SysInfo::AmountOfPhysicalMemory(). The amount of + "file-backed" memory is subtracted from the amount of available + memory to attempt to estimate the available memory, counting the Page Cache + as available. + + Recorded every 2 minutes on MacOS. + + + + + anthonyvd@chromium.org + catan-team@chromium.org + + The amount of memory reported as "file-backed" or associated to + "external_pages" by vm_stat. + + Recorded every 2 minutes on MacOS. + + + + + + + mmenke@chromium.org + morlovich@chromium.org + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The network service process's memory usage reported by the memory + instrumentation service in MiB. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The network service process's memory usage reported by the memory + instrumentation service in bytes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + mmenke@chromium.org + morlovich@chromium.org + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The network service process's memory usage reported by the memory + instrumentation service in KiB. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The network service process's memory usage reported by the memory + instrumentation service in bytes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + ssid@chromium.org + bashi@chromium.org + + The renderer process' private memory footprint when a foreground OOM occurs. + This was last recorded metric by renderer a few seconds before getting + killed. + + + + + yuzus@chromium.org + keishi@chromium.org + + Records the time since last main frame navigation start on the renderer + process when high memory usage is detected. Record only when navigation + happened at least once. + + + + + ssid@chromium.org + haraken@chromium.org + + Records the time since last main frame navigation start on the renderer + process when it OOMs in foreground visible state. Record 0 if no navigation + was started. + + + + + yuzus@chromium.org + keishi@chromium.org + + Records the time since starting monitor on renderer when high memory usage + is detected. + + + + + + + keishi@chromium.org + + The renderer process's memory usage at the specific timing, i.e. after a + page load and 5/10/15minutes after backgrounded. + + + + + tasak@google.com + bartekn@google.com + + The highest private memory footprint of a renderer process in (X mins after + the first page navigation, Y mins after the first page navigation]. (X, Y] + is (0, 2], (2, 4], (4, 8], and (8, 16]. The metric is recorded at the Y's + timing. + + This memory footprint metric cannot be compared across platforms because + each platform relies on platform-level APIs for accounting. As such, though + this attempts to measure private memory footprint as best as possible, it + does not measure the same thing on each platform. We have not found a good + way to compare any system level memory metric across platforms due to the + different nature of memory management on each platform. + + + + + tasak@google.com + bartekn@google.com + + The peak RSS size(VmHMW) of a render process when the highest private memory + footprint is observed after the first navigation start. + + This resident memory metric cannot be compared across platforms because each + platform relies on platform-level APIs for accounting. As such, though this + attempts to measure private memory footprint as best as possible, it does + not measure the same thing on each platform. We have not found a good way to + compare any system level memory metric across platforms due to the different + nature of memory management on each platform. + + + + + tasak@google.com + bartekn@google.com + + The number of webpages when the highest private memory footprint of renderer + process is observed after the first navigation start. + + + + + + + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The renderer process's memory usage reported by the memory instrumentation + service in MB. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The renderer process's memory usage reported by the memory instrumentation + service in bytes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The renderer process's memory usage reported by the memory instrumentation + service in KB. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The renderer process's memory usage reported by the memory instrumentation + service in bytes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + keishi@chromium.org + tasak@chromium.org + + The renderer process' private memory footprint 10 seconds after a memory + pressure signal is generated. + + + + + keishi@chromium.org + tasak@chromium.org + + The renderer process' private memory footprint right before a memory + pressure signal is generated. + + This memory footprint metric cannot be compared across platforms because + each platform relies on platform-level APIs for accounting. As such, though + this attempts to measure private memory footprint as best as possible, it + does not measure the same thing on each platform. We have not found a good + way to compare any system level memory metric across platforms due to the + different nature of memory management on each platform. + + + + + tasak@google.com + chrome-memory-tok@google.com + + The total private memory footprint 10 seconds after a user-level memory + pressure signal is generated. Recorded on Android. + + + + + tasak@google.com + chrome-memory-tok@google.com + + The total private memory footprint right before a user-level memory pressure + signal is generated. Recorded on Android. + + This memory footprint metric cannot be compared across platforms because + each platform relies on platform-level APIs for accounting. As such, though + this attempts to measure private memory footprint as best as possible, it + does not measure the same thing on each platform. We have not found a good + way to compare any system level memory metric across platforms due to the + different nature of memory management on each platform. + + + + + tasak@google.com + chrome-memory-tok@google.com + + The total private memory footprint excluding lower priority renderers' 10 + seconds after a user-level memory pressure signal is generated. Recorded on + Android. + + + + + tasak@google.com + chrome-memory-tok@google.com + + The total private memory footprint excluding lower priority renderers' right + before a user-level memory pressure signal is generated. Recorded on + Android. + + This memory footprint metric cannot be compared across platforms because + each platform relies on platform-level APIs for accounting. As such, though + this attempts to measure private memory footprint as best as possible, it + does not measure the same thing on each platform. We have not found a good + way to compare any system level memory metric across platforms due to the + different nature of memory management on each platform. + + + + + + + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The utility process's memory usage reported by the memory instrumentation + service in MB. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The utility process's memory usage reported by the memory instrumentation + service in bytes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The utility process's memory usage reported by the memory instrumentation + service in KB. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + erikchen@chromium.org + ssid@chromium.org + lizeb@chromium.org + + The utility process's memory usage reported by the memory instrumentation + service in bytes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + erikchen@chromium.org + ssid@chromium.org + + A rough estimate of the private memory footprint of the extension process. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + This memory footprint metric cannot be compared across platforms because + each platform relies on platform-level APIs for accounting. As such, though + this attempts to measure private memory footprint as best as possible, it + does not measure the same thing on each platform. We have not found a good + way to compare any system level memory metric across platforms due to the + different nature of memory management on each platform. + + + + + + + fdoray@chromium.org + + The size of the resident memory in an extension process. This is influenced + by factors we control (e.g. memory that is not accessed can be swapped) and + factors we don't control (e.g. an unrelated process using a lot of memory + can force memory in our process to be swapped). Recorded on + Windows/Linux/ChromeOS. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + This resident memory metric cannot be compared across platforms because each + platform relies on platform-level APIs for accounting. As such, though this + attempts to measure private memory footprint as best as possible, it does + not measure the same thing on each platform. We have not found a good way to + compare any system level memory metric across platforms due to the different + nature of memory management on each platform. + + + + + erikchen@chromium.org + ssid@chromium.org + + A rough estimate of the shared memory footprint of the extension process. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + hajimehoshi@chromium.org + kenjibaheux@google.com + kouhei@chromium.org + + The number of glyph pages present in the renderer when it commits a load. + Since this is per-sub-process, you can get the average number of glyph pages + in the system by multiplying this number with the average number of + renderers. Note that this typically won't count the glyph pages added as a + result of the load that just committed, since layout will happen after the + commit. There are 512 bytes per glyph page, but this number also very + closely approximates the number of glyph width map pages in the same + renderer. The only difference is that if you have font fallback, it will + make a new glyph page and no width page, but in most common cases there is + no fallback). Width pages are 1K each (256 floats), so you could think of + this value as being the number of "1.5K units related to glyphs per + renderer per page load". + + + + + jonross@chromium.org + graphics-dev@chromium.org + + The maximum amount of memory of the GPU process allocated by {Source} during + the following user interaction: {Usage}. + + See Memory.GPU.PeakMemoryUsage2. + + + + + + + + + + + + + jonross@chromium.org + graphics-dev@chromium.org + + The maximum amount of memory of the GPU process during the following user + interaction: {Usage}. + + + + + + + + erikchen@chromium.org + ssid@chromium.org + chrome-analysis-team@google.com + + + A rough estimate of the private memory footprint of the gpu process. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + This memory footprint metric cannot be compared across platforms because + each platform relies on platform-level APIs for accounting. As such, though + this attempts to measure private memory footprint as best as possible, it + does not measure the same thing on each platform. We have not found a good + way to compare any system level memory metric across platforms due to the + different nature of memory management on each platform. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + erikchen@chromium.org + ssid@chromium.org + + An amount of private memory of the GPU process placed in swap (VmSwap). + Available on Android, Linux and ChromeOS. + + + + + + + fdoray@chromium.org + + The size of the resident memory in the GPU process. This is influenced by + factors we control (e.g. memory that is not accessed can be swapped) and + factors we don't control (e.g. an unrelated process using a lot of memory + can force memory in our process to be swapped). Recorded on + Windows/Linux/ChromeOS/Android. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + This resident memory metric cannot be compared across platforms because each + platform relies on platform-level APIs for accounting. As such, though this + attempts to measure private memory footprint as best as possible, it does + not measure the same thing on each platform. We have not found a good way to + compare any system level memory metric across platforms due to the different + nature of memory management on each platform. + + + + + erikchen@chromium.org + ssid@chromium.org + + A rough estimate of the shared memory footprint of the gpu process. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + + + hajimehoshi@chromium.org + erikchen@chromium.org + kenjibaheux@google.com + kouhei@chromium.org + bgeffon@chromium.org + + System-wide graphics driver memory consumption. Recorded on Chrome OS for + platforms where it is exposed by the kernel (for example, Intel i915 and + Exynos Mali). Recorded once per UMA ping. + + + + + khmel@google.com + vovoy@google.com + + Cumulative count of low memory kills in one user session. This is recorded + by MemoryKillsMonitor every time a low memory kill occurs. + + + + + khmel@google.com + vovoy@google.com + + When Chrome OS is in low memory state, TabManager kills some victims to free + memory. This value is the elapsed time between TabManager receiving the low + memory notification and the first kill. + + + + + khmel@google.com + vovoy@google.com + The memory size freed by each low memory kill event. + + + + lizeb@chromium.org + pasko@chromium.org + + The size of the resident memory for the native library code across all + processes. This metric is computed by parsing proc/self/pagemap and counting + native library pages that are mapped and present in RAM for at least one + Chrome process. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + lizeb@chromium.org + pasko@chromium.org + + Result of an attempt to read /proc/self/pagemap when determining the amount + of resident memory mapped by the current process. Reading the file is + performed as part of computing the + Memory.NativeLibrary.MappedAndResidentMemoryFootprint2 histogram. Available + only on Android. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + lizeb@chromium.org + pasko@chromium.org + + The size of the native library code which was ordered, yet is not resident + in memory, across all processes. This metric is computed by parsing + proc/self/pagemap and counting native library pages that are mapped and + present in RAM for at least one Chrome process. Available only on Android. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + lizeb@chromium.org + pasko@chromium.org + + The size of the native library code which is outside the ordered section, + yet is resident in memory, across all processes. This metric is computed by + parsing proc/self/pagemap and counting native library pages that are mapped + and present in RAM for at least one Chrome process. Available only on + Android. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + mmenke@chromium.org + morlovich@chromium.org + erikchen@chromium.org + ssid@chromium.org + + A rough estimate of the private memory footprint of the network service + process. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + This memory footprint metric cannot be compared across platforms because + each platform relies on platform-level APIs for accounting. As such, though + this attempts to measure private memory footprint as best as possible, it + does not measure the same thing on each platform. We have not found a good + way to compare any system level memory metric across platforms due to the + different nature of memory management on each platform. + + + + + mmenke@chromium.org + morlovich@chromium.org + erikchen@chromium.org + ssid@chromium.org + + An amount of private memory of the network service process placed in swap + (VmSwap). Available on Android, Linux and ChromeOS. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + Note: Histogram data may be missing for mid-2020 due to expiry. + + + + + mmenke@chromium.org + morlovich@chromium.org + erikchen@chromium.org + ssid@chromium.org + + The size of the resident memory in a network service process. This is + influenced by factors we control (e.g. memory that is not accessed can be + swapped) and factors we don't control (e.g. an unrelated process using a lot + of memory can force memory in our process to be swapped). Recorded on + Windows/Linux/ChromeOS/Android. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + This resident memory metric cannot be compared across platforms because each + platform relies on platform-level APIs for accounting. As such, though this + attempts to measure private memory footprint as best as possible, it does + not measure the same thing on each platform. We have not found a good way to + compare any system level memory metric across platforms due to the different + nature of memory management on each platform. + + + + + mmenke@chromium.org + morlovich@chromium.org + erikchen@chromium.org + ssid@chromium.org + + A rough estimate of the shared memory footprint of the network service + process. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + Note: Histogram data may be missing for mid-2020 due to expiry. + + + + + oshima@chromium.org + alemate@chromium.org + + System-wide memory allocation right after a renderer was killed by + oom-killer, roughly equivalent to the sum of memory allocated with malloc() + in userspace plus graphics driver memory. + + + + + oshima@chromium.org + alemate@chromium.org + + System-wide file-backed memory plus free memory right after a renderer was + killed by oom-killer, which should be smaller than or close to what the + kernel uses to trigger low-memory notifications for tab discards. If this is + higher than the kernel's threshold for tab discards, renderers may be killed + due to reasons other than out-of-memory. + + + + + oshima@chromium.org + alemate@chromium.org + + Graphics driver (GEM object) memory right after a renderer was killed by + oom-killer. + + + + + oshima@chromium.org + alemate@chromium.org + + System-wide shared memory right after a renderer was killed by oom-killer. + Used primarily for shared buffers in the graphics system. Tracked because + it's a historical source of leaks on Chrome OS. + + + + + oshima@chromium.org + alemate@chromium.org + + System-wide memory allocation right after a renderer was killed by + oom-killer, roughly equivalent to the sum of memory allocated with malloc() + in userspace plus graphics driver memory. + + + + + oshima@chromium.org + alemate@chromium.org + + System-wide file-backed memory plus free memory right after a renderer was + killed by oom-killer, which should be smaller than or close to what the + kernel uses to trigger low-memory notifications for tab discards. If this is + higher than the kernel's threshold for tab discards, renderers may be killed + due to reasons other than out-of-memory. + + + + + oshima@chromium.org + alemate@chromium.org + + Graphics driver (GEM object) memory right after a renderer was killed by + oom-killer. + + + + + oshima@chromium.org + alemate@chromium.org + + System-wide shared memory right after a renderer was killed by oom-killer. + Used primarily for shared buffers in the graphics system. Tracked because + it's a historical source of leaks on Chrome OS. + + + + + vovoy@google.com + wvk@google.com + Cumulative count of OOM kills in one user session. + + + + vovoy@google.com + src/chromeos/ash/components/memory/OWNERS + + The number of OOM kills since last emit. The emit interval is at least 24 + hours, see metrics::DailyEvent for more details. + + + + + + + dcastagna@chromium.org + ssid@chromium.org + + The total number of open file descriptors opened per process. Recorded once + per UMA ping. + + + + + + + dcastagna@chromium.org + ssid@chromium.org + + The limit of open file descriptors that can be opened per process. Recorded + once per UMA ping. + + + + + thiabaud@google.com + lizeb@chromium.org + + Whether the disk allocator is usable. Recorded at the same time as + "Memory.ParkableImage.*.5min". The disk may not be usable for + several reasons, including the profile being an Incognito one, permssions + error, or disk write error. + + + + + thiabaud@google.com + lizeb@chromium.org + + Size of encoded image data of ParkableImages that are on disk. Collected + once, 5 minutes after the first ParkableImage is created. + + + + + thiabaud@google.com + lizeb@chromium.org + + Recorded each time a ParkableImage is read from disk. Records the time taken + to read a ParkableImage from disk. Note: This metric drops reports on + clients with low-resolution clocks, which means these reports will be biased + against a portion of the population on Windows. See + Windows.HasHighResolutionTimeTicks for the affected sample. + + + + + thiabaud@google.com + lizeb@chromium.org + + Recorded each time a ParkableImage is read from disk. Records the size of + the read, in KiB. + + + + + thiabaud@google.com + lizeb@chromium.org + + Recorded each time a ParkableImage is read from disk. Records the throughput + of reading the ParkableImage from disk, in MiB/s. + + + + + thiabaud@google.com + lizeb@chromium.org + + Recorded each time a ParkableImage is read from disk. Records the time since + the ParkableImage was frozen. + + + + + thiabaud@google.com + lizeb@chromium.org + + Total time spent reading images from disk. Collected once, 5 minutes after + the first ParkableImage is created. + + + + + thiabaud@google.com + lizeb@chromium.org + + Total size of encoded image data of ParkableImages. Collected once, 5 + minutes after the first ParkableImage is created. + + + + + thiabaud@google.com + lizeb@chromium.org + + Total time spent writing images to disk. Collected once, 5 minutes after the + first ParkableImage is created. + + + + + thiabaud@google.com + lizeb@chromium.org + + Size of encoded image data of ParkableImages that are not written to disk. + Collected once, 5 minutes after the first ParkableImage is created. + + + + + thiabaud@google.com + lizeb@chromium.org + + Recorded each time a ParkableImage is written to disk. Records the time + taken to write the ParkableImage to disk. Note: This metric drops reports on + clients with low-resolution clocks, which means these reports will be biased + against a portion of the population on Windows. See + Windows.HasHighResolutionTimeTicks for the affected sample. + + + + + thiabaud@google.com + lizeb@chromium.org + + Recorded each time a ParkableImage is written to disk. Records the size of + the write, in KiB. + + + + + thiabaud@google.com + lizeb@chromium.org + + Recorded each time a ParkableImage is written to disk. Records the + throughput of writing the ParkableImage to disk, in MiB/s. + + + + + lizeb@chromium.org + + Total size of compressed ParkableStrings, in KB. Recorded at the same time + as "Memory.ParkableString.TotalSizeKb". + + + + + lizeb@chromium.org + thiabaud@google.com + + Time to compress a ParkableString, in us. Note: This metric drops reports on + clients with low-resolution clocks, which means these reports will be biased + against a portion of the population on Windows. See + Windows.HasHighResolutionTimeTicks for the affected sample. + + + + + lizeb@chromium.org + thiabaud@google.com + + Size of a compressed ParkableString, recorded at compression time. + + + + + lizeb@chromium.org + thiabaud@google.com + + Size of a compressed ParkableString, recorded at compression time. + + + + + lizeb@chromium.org + pasko@chromium.org + + Average compression ratio, 100 * compressed_size / initial_size, for all + compressed ParkableStrings. Recorded at the same time as + "Memory.ParkableString.TotalSizeKb.5min". + + + + + lizeb@chromium.org + thiabaud@google.com + + Time to decompress a ParkableString, in us. Note: This metric drops reports + on clients with low-resolution clocks, which means these reports will be + biased against a portion of the population on Windows. See + Windows.HasHighResolutionTimeTicks for the affected sample. + + + + + lizeb@chromium.org + thiabaud@google.com + + Original size of a compressed ParkableString, recorded at decompression + time. + + + + + lizeb@chromium.org + thiabaud@google.com + + Original size of a compressed ParkableString, recorded at decompression + time. + + + + + lizeb@chromium.org + pasko@chromium.org + + Whether the disk allocator is usable. Recorded at the same time as + "Memory.ParkableString.TotalSizeKb.5min". The disk may not be + usable for several reasons, including the profile being an Incognito one, + permssions error, or disk write error. + + + + + lizeb@chromium.org + pasko@chromium.org + + Total main thread time used by ParkableStrings for reading over the first 5 + minutes of a renderer lifetime. Starting time is from the first + ParkableString being added. + + + + + lizeb@chromium.org + pasko@chromium.org + + Total time used by ParkableStrings for writing to disk over the first 5 + minutes of a renderer lifetime. Starting time is from the first + ParkableString being added. + + + + + lizeb@chromium.org + pasko@chromium.org + + Total main thread time used by ParkableStrings over the first 5 minutes of a + renderer lifetime. Starting time is from the first ParkableString being + added. + + + + + lizeb@chromium.org + pasko@chromium.org + + Sum of memory saved by compression and disk discarding, in KB. Recorded at + the same time as "Memory.ParkableString.TotalSizeKb.5min", when + disk discarding is enabled. + + + + + lizeb@chromium.org + pasko@chromium.org + + Total disk footprint used by ParkableStrings including allocator waste, in + KB. Recorded once, 5 minutes after the first ParkableString is added to a + renderer, at the same time as + "Memory.ParkableString.MemorySavings.5min". + + + + + lizeb@chromium.org + pasko@chromium.org + + Total size of ParkableStrings discarded to disk, excluding allocator waste, + in KB. Recorded once, 5 minutes after the first ParkableString is added to a + renderer, at the same time as + "Memory.ParkableString.MemorySavings.5min". + + + + + lizeb@chromium.org + pasko@chromium.org + + Total thread time used by ParkableStrings for parking over the first 5 + minutes of a renderer lifetime. Starting time is from the first + ParkableString being added. + + + + + lizeb@chromium.org + pasko@chromium.org + + Time to read a ParkableString from disk, in us. Note: This metric drops + reports on clients with low-resolution clocks, which means these reports + will be biased against a portion of the population on Windows. See + Windows.HasHighResolutionTimeTicks for the affected sample. + + + + + lizeb@chromium.org + pasko@chromium.org + + When reading a parked string from disk, time since it was last parked. + + + + + lizeb@chromium.org + pasko@chromium.org + Size read from disk for a ParkableString. + + + + lizeb@chromium.org + pasko@chromium.org + Read throughput from disk for a ParkableString. + + + + lizeb@chromium.org + pasko@chromium.org + + Sum of memory saved by compression, in KB. Recorded at the same time as + "Memory.ParkableString.TotalSizeKb". + + + + + lizeb@chromium.org + pasko@chromium.org + + Sum of memory saved by compression, in KB. Recorded at the same time as + "Memory.ParkableString.TotalSizeKb.5min". + + + + + peilinwang@google.com + lizeb@google.com + + Whether the compressed string is larger than the original string, if it were + compressed by snappy. + + + + + lizeb@chromium.org + pasko@chromium.org + + Total size of ParkableStrings assuming no compression, in KB. Recorded once, + 5 minutes after the first ParkableString is added to a renderer, at the same + time as "Memory.ParkableString.MainThreadTime.5min". + + + + + lizeb@chromium.org + pasko@chromium.org + + Time to write a ParkableString to disk, in us. Note: This metric drops + reports on clients with low-resolution clocks, which means these reports + will be biased against a portion of the population on Windows. See + Windows.HasHighResolutionTimeTicks for the affected sample. + + + + + lizeb@chromium.org + pasko@chromium.org + Size of an on-disk ParkableString, recorded at write time. + + + + lizeb@chromium.org + pasko@chromium.org + Throughput of a ParkableString disk write. + + + + lizeb@chromium.org + bartekn@chromium.org + + Time it takes for PartitionAlloc's MemoryReclaimer to reclaim once. + Collected at each reclaim, for all process types. + + Note that clients without high-resolution clocks will report 0 for very + short times. + + + + + lizeb@chromium.org + bartekn@chromium.org + + Time it takes for PartitionAlloc's periodic purge to run once. Collected at + each purge, for all process types. + + Note that clients without high-resolution clocks will report 0 for very + short times. + + + + + lizeb@chromium.org + bartekn@chromium.org + + Fraction of PartitionAlloc's thread cache allocations requests that required + a batch fill, that is cache hits touching the central allocator. Recorded + during memory dumps, at the same time as the Memory.*.PartitionAlloc.* + histograms. Data is collected for {ThreadType}. + + + + + + + + + lizeb@chromium.org + bartekn@chromium.org + + Hit rate for PartitionAlloc's thread cache. Recorded during memory dumps, at + the same time as the Memory.*.PartitionAlloc.* histograms. Data is collected + for {ThreadType}. + + + + + + + + + + + fdoray@chromium.org + catan-team@chromium.org + + The time spent in each memory pressure state, in seconds. Recorded when the + memory pressure state changes, at shutdown, or when it hasn't been recorded + in the last 5 minutes. + + The values from this histogram shouldn't be used directly, users of this + metric should look at the percentage of samples in each bucket to understand + the average time that Chrome spend in each pressure state. + + + + + chrisha@chromium.org + + The number of pressure level state changes for each possible pairwise state + change. + + + + + + + fdoray@chromium.org + catan-team@chromium.org + + The time spent in each of the memory pressure state. Recorded when + transitioning from a memory pressure state to the other and when exiting + memory pressure. + + + + + creis@chromium.org + nasko@chromium.org + + The count of all active processes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + pasko@chromium.org + leszeks@chromium.org + + The state of CachedMetadata on every attempt to use it for a script + resource. Used for experiment in http://crbug.com/1045052. + + + + + hajimehoshi@chromium.org + + The esitimated memory size which would be reduced when reusing disk cache is + implemented. If it is 100% sure that the encoded data is in disk cache, the + same data in memory can be dropped to reduce memory usage. This is rencorded + when an ImageResource is pruned. See crbug/664437. + + + + + + + erikchen@chromium.org + ssid@chromium.org + speed-metrics-dev@chromium.org + chrome-analysis-team@google.com + + + A rough estimate of the private memory footprint of the renderer process. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + This memory footprint metric cannot be compared across platforms because + each platform relies on platform-level APIs for accounting. As such, though + this attempts to measure private memory footprint as best as possible, it + does not measure the same thing on each platform. We have not found a good + way to compare any system level memory metric across platforms due to the + different nature of memory management on each platform. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org AND chrome-analysis-team@google.com. + + + + + + + fdoray@chromium.org + + The size of the resident memory in a renderer process. This is influenced by + factors we control (e.g. memory that is not accessed can be swapped) and + factors we don't control (e.g. an unrelated process using a lot of memory + can force memory in our process to be swapped). Recorded on + Windows/Linux/ChromeOS/Android. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + This resident memory metric cannot be compared across platforms because each + platform relies on platform-level APIs for accounting. As such, though this + attempts to measure private memory footprint as best as possible, it does + not measure the same thing on each platform. We have not found a good way to + compare any system level memory metric across platforms due to the different + nature of memory management on each platform. + + + + + erikchen@chromium.org + ssid@chromium.org + + A rough estimate of the shared memory footprint of the renderer process. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + creis@chromium.org + nasko@chromium.org + + The count of active renderer processes. Excludes renderers hosting + chrome-extension:// and/or chrome:// URLs. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + Computed based on OS data. + + WARNINGS: Not reliable on Android, see https://crbug.com/875400. Ignores + processes that do not host a widget, see https://crbug.com/949977#c36. + Consider using Memory.RenderProcessHost.Count.* instead. + + + + + alexmos@chromium.org + creis@chromium.org + lukasza@chromium.org + nasko@chromium.org + + The count of all renderer processes. Covers all renderer processes, + including ones hosting web content (i.e. http(s):// and/or file://), + extensions (i.e. chrome-extension://) and WebUI (i.e. chrome://). + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + Computed based on count of RenderProcessHost objects, even if 1) they have + not been launched yet (e.g. during session restore) or 2) they are dead + (e.g. killed by the browser process or the OS). + + + + + alexmos@chromium.org + creis@chromium.org + lukasza@chromium.org + nasko@chromium.org + + The count of active renderer processes. Recorded once per UMA ping. Covers + all renderer processes, including ones hosting web content (i.e. http(s):// + and/or file://), extensions (i.e. chrome-extension://) and WebUI (i.e. + chrome://). + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + Computed based on count of RenderProcessHost objects that are + IsInitializedAndNotDead (i.e. have been launched and not terminated yet). + + + + + wjmaclean@chromium.org + alexmos@chromium.org + creis@chromium.org + + An estimate of additional processes created due to OriginAgentCluster (OAC). + Computed assuming no coalescing of multiple BrowsingInstances into a single + RenderProcess (including no subframe process reuse), and only when + cross-process origin isolation occurs due to the OAC header. Given this, the + count of additional SiteInstances corresponds exactly to the additional + number of RenderProcesses that OAC gives rise to, and therefore gives a + sense of how much process count overhead it creates. Recorded once per UMA + ping. + + + + + wjmaclean@chromium.org + alexmos@chromium.org + creis@chromium.org + + The number of renderer processes that represent sandboxed iframes, computed + by counting the number of RenderProcessHosts allocated to them. This will be + zero when SiteIsolationPolicy::AreIsolatedSandboxedIframesEnabled() is + false. Recorded once per UMA ping. + + + + + wjmaclean@chromium.org + alexmos@chromium.org + creis@chromium.org + + The percentage of the total renderer process count that is due to the + OriginAgentCluster (OAC) header, based on the overhead estimate from + Memory.RenderProcessHost.Count.OriginAgentClusterProcesses. That value is + computed assuming no coalescing of multiple BrowsingInstances into a single + RenderProcess (including no subframe process reuse), and only when + cross-process origin isolation occurs due to the OAC header. Given this, the + percentage of total SiteInstances due to the OAC header corresponds exactly + to the percentage of RenderProcesses that OAC gives rise to. Recorded once + per UMA ping. + + + + + reveman@chromium.org + + The amount of free space in temporary directory for shared memory files. + Recorded each time a new discardable memory manager instance is created. + + + + + + Replaced by Memory.StackSamplingProfiler.StackSampleSize2. Min bucket size + was too large to be useful. Replaced April 2023. + + iby@chromium.org + cros-telemetry@google.com + + The size of the stack copied during a stack-sampled metric capture. One + sample per 199 stack captures. Only recorded by clients in the stack-sampled + metrics experiment. ChromeOS only. + + + + + iby@chromium.org + cros-telemetry@google.com + + The size of the stack copied during a stack profiler capture. One sample per + 199 stack captures. Only recorded by clients in the stack-sampled metrics + experiment or recording a Chrometto trace. ChromeOS only. + + + + + hajimehoshi@chromium.org + kenjibaheux@google.com + kouhei@chromium.org + + The swap used by each worker process. Each worker process provides one + sample. Recorded once per process per UMA ping if the system has swapped. + + + + + fdoray@chromium.org + catan-team@chromium.org + + The amount of available physical memory on the system. Recorded every 5 + seconds on Windows only. + + From + https://learn.microsoft.com/en-us/windows/win32/api/sysinfoapi/ns-sysinfoapi-memorystatusex, + this is memory that can be reused without having to write its content to + disk first. It includes the standby, free and zero lists. + + + + + andreaorru@chromium.org + hidehiko@chromium.org + + System-wide estimate of memory available in ChromeOS, without swapping. + Calculated from MemFree, SReclaimable, the size of the file LRU lists, and + the low watermarks in each zone. The estimate takes into account that the + system needs some page cache to function well, and that not all reclaimable + slab will be reclaimable, due to items being in use. + + + + + andreaorru@chromium.org + hidehiko@chromium.org + + System-wide estimate of memory used in ChromeOS, calculated as the + difference between the amount of total and available memory. + + + + + lizeb@chromium.org + chrome-memory@chromium.org + + Total size of all hibernated canvases across all renderers, prior to + compression. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android. + + + + + lizeb@chromium.org + chrome-memory@chromium.org + + Total size of all hibernated canvases across all renderers. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android. + + + + + + + erikchen@chromium.org + ssid@chromium.org + chrome-analysis-team@google.com + + + A rough estimate of the private memory footprint of all processes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + This memory footprint metric cannot be compared across platforms because + each platform relies on platform-level APIs for accounting. As such, though + this attempts to measure private memory footprint as best as possible, it + does not measure the same thing on each platform. We have not found a good + way to compare any system level memory metric across platforms due to the + different nature of memory management on each platform. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + This histogram was used to measure the impact of the + DestroyProfileOnBrowserClose prior to its general launch. Now that it's 100% + launched, there is no active A/B test. + + nicolaso@chromium.org + cbe-eng@google.com + + Same as Memory.Total.PrivateMemoryFootprint, but only gets recorded after a + Profile becomes safe to delete during this browsing session. This lets us + measure the memory impact of destroying Profile objects and their + KeyedServices. + + This is not meant to be compared with Memory.Total.PrivateMemoryFootprint, + as it measures a different scenario. Instead, it should be compared with + itself in an A/B test with the DestroyProfileOnBrowserClose variation. + + + + + ckitagawa@chromium.org + yfriedman@chromium.org + + A rough estimate of the private memory footprint of all processes on Android + ignoring Renderers with only Waived process bindings. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android. + + + + + ckitagawa@chromium.org + yfriedman@chromium.org + + A rough estimate of the private memory footprint of all visible or higher + importance processes on Android. This ignores Renderers with Waived or Not + Perceptible effective process bindings. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android. + + + + + keishi@chromium.org + bartekn@chromium.org + + A rough estimate of memory allocated by malloc in all renderer processes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + tommckee@chromium.org + + A rough estimate of the private memory footprint of all renderer processes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + This memory footprint metric cannot be compared across platforms because + each platform relies on platform-level APIs for accounting. As such, though + this attempts to measure private memory footprint as best as possible, it + does not measure the same thing on each platform. We have not found a good + way to compare any system level memory metric across platforms due to the + different nature of memory management on each platform. + + + + + ckitagawa@chromium.org + yfriedman@chromium.org + + A rough estimate of the private memory footprint of all renderer processes + on Android ignoring Renderers with only Waived process bindings. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android. + + + + + ckitagawa@chromium.org + yfriedman@chromium.org + + A rough estimate of the private memory footprint of all renderer processes + with visible or higher importance on Android. This ignores Renderers with + Waived or Not Perceptible effective process bindings. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android. + + + + + + + fdoray@chromium.org + + The size of the resident memory in all processes. This is influenced by + factors we control (e.g. memory that is not accessed can be swapped) and + factors we don't control (e.g. an unrelated process using a lot of memory + can force memory in our process to be swapped). Recorded on + Windows/Linux/ChromeOS/Android. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + Note: This metric is a simple sum of the resident set of all processes and + this cause some double accounting for the shared portion of the working set. + As a result this metric doesn't give an exact representation of how much + physical memory is used by Chrome. + + This resident memory metric cannot be compared across platforms because each + platform relies on platform-level APIs for accounting. As such, though this + attempts to measure private memory footprint as best as possible, it does + not measure the same thing on each platform. We have not found a good way to + compare any system level memory metric across platforms due to the different + nature of memory management on each platform. + + + + + erikchen@chromium.org + ssid@chromium.org + + A rough estimate of the shared memory footprint of all processes. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + zmo@chromium.org + graphics-dev@chromium.org + + Records the system commit limit (number of total pages) x page size, + collected in the info collection GPU process, once per UMA ping. This is + Windows platform only. + + + + + lizeb@chromium.org + chrome-gpu-memory@google.com + + Total (GPU) memory used for tiles, across all consumers. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + + + + erikchen@chromium.org + meredithguo@google.com + + The arm that the user has opted into for UX Study 1. Logged once on startup. + + + + + hajimehoshi@chromium.org + kenjibaheux@google.com + kouhei@chromium.org + + The private working set used by each worker process. Each worker process + provides one sample. Recorded once per process per UMA ping. + + + + + bgeffon@chromium.org + fdoray@chromium.org + + Cumulative number of ARC processes trimmed during a user's session, recorded + each time an ARC process is trimmed. Available on ChromeOS. + + + + + khmel@chromium.org + bgeffon@chromium.org + + Number of ARCVM's crosvm trimmed in the last 30 minutes. Recorded every 30 + minutes as long as ARCVM trimming is enabled. Available on ChromeOS. Also, + one last report is emitted for the <= 30 minute period since the last + report, at browser exit, and that the sample is scaled. For example, when 1 + trim was done since the last report and the browser exits 15 minutes after + the last report, 2 is recorded on the browser exit. + + + + + raging@google.com + khmel@chromium.org + bgeffon@chromium.org + + Tracks the number of failures that resulted from ArcVM trim operations. + Recorded every 30 minutes as long as ARCVM trimming is enabled. Available on + ChromeOS. Also, one last report is emitted for the <= 30 minute period + since the last report, at browser exit. + + + + + raging@google.com + khmel@chromium.org + bgeffon@chromium.org + + Tracks the ongoing computed value used to limit the number of pages to trim + each time the ArcVM operation runs. Available on ChromeOS. If VM trimming is + enabled, this is recorded at the start of every trim operation, with the + page limit computed for each operation. Values tracked as zero mean + unlimited trimming. + + + + + bgeffon@chromium.org + fdoray@chromium.org + + Cumulative number of renderers trimmed during a user's session, recorded + each time a renderer is trimmed. Available on Windows and ChromeOS. + + + + + + + erikchen@chromium.org + ssid@chromium.org + + A rough estimate of the private memory footprint of the {UtilityProcessType} + process. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + This memory footprint metric cannot be compared across platforms because + each platform relies on platform-level APIs for accounting. As such, though + this attempts to measure private memory footprint as best as possible, it + does not measure the same thing on each platform. We have not found a good + way to compare any system level memory metric across platforms due to the + different nature of memory management on each platform. + + + + + + erikchen@chromium.org + ssid@chromium.org + + An amount of private memory of the {UtilityProcessType} process placed in + swap (VmSwap). Available on Android, Linux and ChromeOS. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + Note: Histogram data may be missing for mid-2020 due to expiry. + + + + + + + + fdoray@chromium.org + + The size of the resident memory in a {UtilityProcessType} process. This is + influenced by factors we control (e.g. memory that is not accessed can be + swapped) and factors we don't control (e.g. an unrelated process using a lot + of memory can force memory in our process to be swapped). Recorded on + Windows/Linux/ChromeOS/Android. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + This resident memory metric cannot be compared across platforms because each + platform relies on platform-level APIs for accounting. As such, though this + attempts to measure private memory footprint as best as possible, it does + not measure the same thing on each platform. We have not found a good way to + compare any system level memory metric across platforms due to the different + nature of memory management on each platform. + + + + + + erikchen@chromium.org + ssid@chromium.org + + A rough estimate of the shared memory footprint of the {UtilityProcessType} + process. + + Recorded at Poisson sampled time intervals with a mean of 5 minutes on + Android and 30 minutes on other platforms. + + Note: Histogram data may be missing between M77 to M87 due to expiry. + + + + + + jonross@chromium.org + chrome-gpu-metrics@google.com + + The total count of viz::SurfaceIds being evicted for the current FrameTree. + Along with any surfaces that were embedded before a navigation occurred. + + This will be emitted whenever we evict one DelegatedFrameHostAndroid. + + + + + hajimehoshi@chromium.org + kenjibaheux@google.com + kouhei@chromium.org + + Reasons behind evictions of individual tabs, recorded upon each tab + eviction. + + + + + hajimehoshi@chromium.org + kenjibaheux@google.com + kouhei@chromium.org + + Number of loaded (memory-resident) tabs when LowMemory notification is + delivered. + + + + + + + ssid@chromium.org + chrome-metrics-team@google.com + + Whether Chrome is running in low ram mode. This histogram is reported on + every upload by Android devices. A device is considered low-RAM if it has + 512MiB of RAM or lower (see SysUtils.detectLowEndDevice()). + + + + + + diff --git a/histograms/metadata/mobile/OWNERS b/histograms/metadata/mobile/OWNERS new file mode 100644 index 000000000000..b2bacfb2f4a8 --- /dev/null +++ b/histograms/metadata/mobile/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +ender@google.com +mthiesse@chromium.org +andzaytsev@google.com diff --git a/histograms/metadata/mobile/histograms.xml b/histograms/metadata/mobile/histograms.xml new file mode 100644 index 000000000000..22e17116a67e --- /dev/null +++ b/histograms/metadata/mobile/histograms.xml @@ -0,0 +1,1324 @@ + + + + + + + + + + + + + + + + + + + + + + + + + gangwu@chromium.org + twellington@chromium.org + + The time it takes for the user to abandon the app menu after it's shown by + pressing back or touching outside the menu. This is only logged if the menu + is abandoned. See Mobile.AppMenu.TimeToTakeAction.SelectedItem for the cases + where it is closed as a result of user interaction with the menu. Android + only. + + + + + gangwu@chromium.org + twellington@chromium.org + + The time it takes for the user to select an item. This is only logged if the + menu is closed as a result of the user clicking a menu item. See + Mobile.AppMenu.TimeToTakeAction.Abandoned for the cases where it is + abandoned by the user. Android only. + + + + + pkl@chromium.org + sebsg@chromium.org + tedchoc@chromium.org + + The result of the operation to retrieve the page's canonical URL. + + + + + djean@chromium.org + gambard@chromium.org + + Logged when "copy image" from context menu is invoked. Log the + events happening during the copying image procedure. + + + + + gambard@chromium.org + bling-team@chromium.org + + Tracks which context menu was shown. To drill down into a specific context + menu's usage, take a look at its actions' histogram (the format for actions + histograms is Mobile.ContextMenu.*.Actions). Currently only on iOS. + + + + + djean@chromium.org + gambard@chromium.org + + Result of getting image data by JavaScript for CopyImage, SaveImage and + SearchByImage from iOS context menu. Recorded when the JavaScript returns, + or fails for timeout. + + + + + hujasonx@google.com + lens-in-bling-team@google.com + + Whether or not Lens is supported, and if not, the reason why. Recorded only + if the feature is enabled when the long-press context menu is shown for an + image. + + + + + hujasonx@google.com + lens-in-bling-team@google.com + + Logs the time it takes to process an image before sending it to Lens. + Recorded when Lens is used from any entry point. + + + + + hujasonx@google.com + lens-in-bling-team@google.com + + The status of the upload of image data to Lens. Recorded only when the Lens + feature is triggered via the context menu entry from an image long-press. + + + + + hujasonx@google.com + lens-in-bling-team@google.com + + Logs the time it takes to upload image data to the Lens Web servers. + Recorded only when the Lens feature is triggered via the context menu entry + from an image long-press. + + + + + gambard@chromium.org + bling-team@chromium.org + + Tracks which action was selected in the context menu shown for a + {EntryPoint}. To view how often this context menu was shown, take a look at + this other histogram: Mobile.ContextMenu.EntryPoints. Currently only on iOS. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + dtrainor@chromium.org + nyquist@chromium.org + + Android: The number of browsers installed on the device. Logged when a new + session is started. + + + + + + + dtrainor@chromium.org + nyquist@chromium.org + + Android: Whether or not the device has a default browser and whether or not + it is a system installed browser. Logged when a new session is started. + + + + + + + + + dtrainor@chromium.org + nyquist@chromium.org + + Android: The number of system installed browsers. Logged when a new session + is started. + + + + + hujasonx@google.com + lens-in-bling-team@google.com + + Whether or not Lens is supported in the Omnibox keyboard accessory view + (shown above the number keys upon focusing the omnibox for edit), and if + not, the reason why. Recorded each time the Omnibox keyboard is opened. + + + + + sczs@chromium.org + thegreenfrog@chromium.org + + Records the state of a badge when it was tapped. {MobileInfobarType} + + + + + + sczs@chromium.org + thegreenfrog@chromium.org + + Records the reason why an infobar banner was dismissed. {MobileInfobarType} + + + + + + sczs@chromium.org + thegreenfrog@chromium.org + Records infobar banner events. {MobileInfobarType} + + + + + thegreenfrog@chromium.org + bling-team@google.com + + Records the time an Infobar (Messages) Banner is visible on screen. Used to + know how long it takes a user to act on the banner before it gets + auto-dismissed. + + + + + sczs@chromium.org + thegreenfrog@chromium.org + + Tracks the number of multiple Infobars being presented at the same time. + This will be recorded everytime an Infobar is presented. + + + + + + + sczs@chromium.org + thegreenfrog@chromium.org + + Records the time between the Infobar Delegate is created, and the user + accepts a Confirm Infobar action. + + + + + + + sczs@chromium.org + thegreenfrog@chromium.org + + Records the events related to Confirm Infobars (e.g. Presented, Accepted, + Dismissed,etc.) + + + + + sczs@chromium.org + thegreenfrog@chromium.org + Records generic infobar modal events. {MobileInfobarType} + + + + + sczs@chromium.org + thegreenfrog@chromium.org + Records a tap on an Infobar overflow menu row. + + + + + + sczs@chromium.org + thegreenfrog@chromium.org + Records the reason why a Password Modal was dismissed. + + + + + + sczs@chromium.org + thegreenfrog@chromium.org + Records Password specific Infobar Modal events. + + + + + + sczs@chromium.org + thegreenfrog@chromium.org + Records the context when a Password Modal was presented. + + + + sczs@chromium.org + thegreenfrog@chromium.org + Records Save Card specific Infobar Modal events. + + + + sczs@chromium.org + thegreenfrog@chromium.org + + Records the context when an iOS user taps on a Translate Banner Action + Button. + + + + + sczs@chromium.org + thegreenfrog@chromium.org + + Records when an iOS user initiates an Translate specific Infobar Modal + event. + + + + + sczs@chromium.org + thegreenfrog@chromium.org + + Records the context when an iOS user initiates a Translate Modal + presentation. + + + + + hujasonx@google.com + lens-in-bling-team@google.com + + Whether or not Lens is supported in the new tab page, and if not, the reason + why. Recorded when a new tab is created. Subsequent navigations to an + existing new tab page will not log the event. + + + + + sczs@chromium.org + edchin@chromium.org + + Records the total number of tabs opened when Open all was selected from + other devices in Recent Tabs, iOS only. + + + + + ellyjones@chromium.org + bling-team@google.com + chrome-with-friends-robots@google.com + + + Tracks which sharing entry point was triggered. To view the outcome of these + sharing scenarios, take a look at their actions' histogram (the format is + Mobile.Share.*.Actions). Currently only on iOS. + + + + + ellyjones@chromium.org + bling-team@google.com + chrome-with-friends-robots@google.com + + Tracks the sharing actions executed when the sharing scenario was initiated + for a {EntryPoint}. To view how often this sharing scenario was triggered, + take a look at: Mobile.Share.EntryPoints. Currently only on iOS. + + + + + + + + + + + + + + + + + + + + + dtrainor@chromium.org + + Records which Android notifications users interact with. Recorded when an + user taps the button in a notification, for any Chrome-generated + notification on Android that includes a button tap-target. + + + + + + + + + dtrainor@chromium.org + + Records the duration in minutes from the time when the system notification + is shown to the time that the user clicked on an action button on the + Android notification. + + + + + + + dtrainor@chromium.org + + Android: Represents the number of system notifications that were blocked and + could not be shown by type. + + + + + + + dtrainor@chromium.org + + Android: Represents the type of notification that was last shown before the + user disabled notification permissions on Chrome. This is only logged the + first time we attempt to show a notification and fail. + + + + + + + peter@chromium.org + + Android: Represents the number of system notifications by type that we + attempted to show but were blocked, due to their notification channel being + blocked. Only applies to devices on Android O and above. + + + + + + + dtrainor@chromium.org + chrome-analysis-team@google.com + + Records the type of notification when the user clicks the body of Android + notification. This does not include clicks on notification action buttons. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + + + + dtrainor@chromium.org + + Records the duration in minutes from the time when the system notification + is shown to the time that the user clicked the notification on Android. + + + + + + + dtrainor@chromium.org + + Records the type of notification when the user dismisses the Android + notification. + + + + + + + + + dtrainor@chromium.org + + Records the duration in minutes from the time when the system notification + is shown to the time that the user dismissed the notification on Android. + + + + + salg@google.com + shaktisahu@chromium.org + + Records the notification permission state every time Android notifies Chrome + of a change, this includes when granting access via the OS prompt and + granting/blocking access via the OS settings. + + + + + salg@google.com + shaktisahu@chromium.org + + Records the action taken by the user after being shown the OS prompt to + grant notification permissions. Only recorded on Android T+. + + + + + salg@google.com + shaktisahu@chromium.org + + Records the action taken by the user after being shown the notification + rationale prompt. Only recorded on Android T+. + + + + + salg@google.com + shaktisahu@chromium.org + + Records how many times we've shown the user any notification permission UI + (either rationale and/or OS prompt) on startup. Recorded every time we are + about to show any UI. Only recorded on Android T+. + + + + + salg@google.com + shaktisahu@chromium.org + + Records the current state of the notification permission and if disabled the + reason. Recorded on startup before any permission prompts are shown. Only + recorded on Android T+. + + + + + + + dtrainor@chromium.org + + Android: Represents the number of system notifications that will be + successfully shown to the user by type. + + + + + sczs@chromium.org + thegreenfrog@chromium.org + + Records a histogram for an infobar (both legacy and Messages) that the user + did not interact with throughout its lifetime. + + + + + shaktisahu@chromium.org + clank-downloads@google.com + + Android: Records whether download later dialog will be shown to the user. + Recorded when the download later preference is initialized in native. + + + + + qinmin@chromium.org + clank-downloads@google.com + + Android: Records whether download dialog will be shown to the user. Recorded + when the download preference is initialized in native. + + + + + qinmin@chromium.org + clank-downloads@google.com + + Records the directory type when the user selects the download directory + through download location dialog. May be recorded even when the user didn't + download anything. + + + + + qinmin@chromium.org + clank-downloads@google.com + + Records whether the user accepted or dismissed the dialog to select a + download location. + + + + + qinmin@chromium.org + clank-downloads@google.com + Records the download location suggestion event. + + + + qinmin@chromium.org + clank-downloads@google.com + Records the download location suggestion choice. + + + + qinmin@chromium.org + clank-downloads@google.com + + Records the download location dialog type when the dialog is shown to the + user. + + + + + dtrainor@chromium.org + qinmin@chromium.org + + Records the directory type shown when a user opens download location dialog + or download location setting. This is recorded when the directory provider + generates a list of available directories. + + + + + qinmin@chromium.org + clank-downloads@google.com + Records the directory type when download is completed. + + + + qinmin@chromium.org + clank-downloads@google.com + + Records the directory type when the user selects the download directory + through download preference. May be recorded even when the user didn't + download anything. + + + + + qinmin@chromium.org + + Android: Records the number of resumptions for a download by resumption + type. For all resumption types, this is recorded when a download is + finished, completed or cancelled. For automatic resumptions, it is also + recorded when user manually resumes the download to clear the auto retry + count. + + + + + qinmin@chromium.org + + Android: Records various counts when requesting the storage permission. + + + + + skym@chromium.org + wenyufu@chromium.org + + Android: Records the time it takes from ToS fragment attached to the + activity to the enterprise policy check completing. This check is often + skipped when its result becomes irrelevant. + {MobileFreInflationSpeedComparison} + + + + + + skym@chromium.org + wenyufu@chromium.org + + Android: Records the time it takes from ToS fragment attached to the + activity to the device ownership check completing. + {MobileFreInflationSpeedComparison} + + + + + + skym@chromium.org + wenyufu@chromium.org + + Android: Records how long it takes to load the enterprise CCT/ToS fragment. + + + + + skym@chromium.org + wenyufu@chromium.org + + Android: The amount of time spent fetching child account status during the + FRE. Not applicable for light weight FRE. + + + + + skym@chromium.org + wenyufu@chromium.org + + Android: Enterprise FRE cannot fully show the first page until the + appRestrictions call returns. This suffixed histogram measures when fragment + inflation was slower or faster than the appRestrictions call, and wether the + UI had to wait. Note this is recorded for all clients, not just enterprise. + Not applicable for light weight FRE. + + + + + skym@chromium.org + wenyufu@chromium.org + + The amount of time between when the FRE intent was initially constructed and + when {Target}. Not emitted for the light-weight FRE. Android chrome only. + + + + + + + + + Removed in 2022/05. Replaced by NativePolicyAndChildStatusLoaded. + + + + + + + + + + + + skym@chromium.org + wenyufu@chromium.org + + Android: Records the time it takes from Lightweight FRE launch to the + enterprise policy check completing. This check is often skipped when its + result becomes irrelevant. {MobileFreInflationSpeedComparison} + + + + + + skym@chromium.org + wenyufu@chromium.org + + Android: Records the time it takes from from Lightweight FRE launch to the + device ownership check completing. This check is often skipped when its + result becomes irrelevant. {MobileFreInflationSpeedComparison} + + + + + + skym@chromium.org + wenyufu@chromium.org + + Android: Records how long it takes waiting from the dialog for Lightweight + FRE created to content fully loaded - either ToS is shown or FRE is skipped. + + + + + skym@chromium.org + wenyufu@chromium.org + + Android: The amount of time spent between FRE started and native + initialization. Recorded when native is fully initialized. + + + + + skym@chromium.org + wenyufu@chromium.org + + Android: The amount of time spent between native initialized and the + decision "whether we need to wait to load policy service from + native" has been made. The decision is made when no on-device policy is + found, or policy service is fully initialized. If the decision has been made + before native initialization, it will not be recorded. Recorded during FRE + only, when on-device policy is {PolicyPresence} + + + + + + + + + bsazonov@chromium.org + msarda@chromium.org + droger@chromium.org + gogerald@chromium.org + chrome-signin-team@google.com + + Android: Records which states of the "first run experience" have + been reached. Each bucket represents a state and recorded everytime the + state changed. Pages can be double counted if the user goes backwards in the + flow. + + + + + aruslan@chromium.org + + Android: How the user left the sign-in part of the "first run + experience" activity (M-38+). + + + + + triploblastic@chromium.org + chrome-signin-team@google.org + + Slowest loading point among native, policy and child account status in the + signin mobile FRE. Not emitted for the light-weight FRE. Android chrome + only. + + + + + skym@chromium.org + wenyufu@chromium.org + + Android: The amount of time that the small spinner, which become visible + after the ToS is accepted, is showing on screen. + + + + + qinmin@chromium.org + + Android: Records the duration that a fullscreen video is played after device + rotates from portrait to landscape mode for the first time, and before it + exits fullscreen. If there is no device rotation or if the video starts with + landscape mode, it is not recorded. If there are mutiple rotations between + portrait and landscape mode, only one record is emitted and it is equal to + the time period from the first rotation to the moment when the video exits + fullscreen. + + + + + qinmin@chromium.org + + Android: Records the duration that a fullscreen video is played in landscape + mode. If a video starts playing in landscape mode, and then it is switched + back and forth between landscape and portrait mode, only the time period + before the first switch is accounted. If a video starts playing in portrait + mode, it is not recorded. + + + + + qinmin@chromium.org + + Android: Records whether a fullscreen video is switched from landscape to + portrait mode at any point during playback. + + + + + qinmin@chromium.org + + Android: Records the device orientation when a video enters fullscreen. The + value is true if device orientation is portrait, or false otherwise. The + video doesn't necessarily needs to be in a playing state. + + + + + qinmin@chromium.org + + Android: Records the duration that a fullscreen video is played in portrait + mode. If a video starts playing in portrait mode, and then it is switched + back and forth between landscape and portrait mode, only the time period + before the first switch is accounted. If a video starts playing in landscape + mode, it is not recorded. + + + + + qinmin@chromium.org + + Android: Records whether a fullscreen video is switched from portrait to + landscape mode at any point during playback. + + + + + qinmin@chromium.org + + Android: Records whether a video has a larger height than width when it + enters the fullscreen mode. + + + + + + + tedchoc@chromium.org + + Android: Count of page loads started by intents from external apps. In M87 + the reporting of this histogram was updated to exclude intents sent from + Chrome itself. + + + + + gangwu@chromium.org + jdonnelly@chromium.org + + Recorded when user long presses and pastes clipboard content into omnibox. + The value indicates the estimated age of the clipboard. + + Intended to be compared to Omnibox.ClipboardSuggestionShownAge. + + + + + stkhapugin@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + + Recorded when the omnibox popup is closed. Indicates the duration it was + open. + + + + + jdonnelly@chromium.org + mpearson@chromium.org + + When a user presses an omnibox suggestion based on the content of the + clipboard, this histograms records how long ago Chrome detected a change in + the clipboard. + + Intended to be compared to Omnibox.ClipboardSuggestionShownAge. + + If Chrome never detected a change to the clipboard, no clipboard suggestion + is shown, meaning this histogram will never be emitted to. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Counts how many times the signin promo is implicitly dismissed (by closing + the bookmark manager) per impression. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Counts how many times one of the "sign in" buttons (any of the + signed-out "Sign in to Chrome" button, the "Continue as + |name|" button, or the "Not |email|?" button) is clicked per + impression. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Counts how many times the explicit "X"-to-close button is clicked + per impression. + + + + + + Removed in 2022/05. Replaced with Signin.SyncPromo.Dismissed.Count.Ntp. + + bsazonov@chromium.org + chrome-signin-team@google.com + + Counts how many times the explicit "X"-to-close button is clicked + per impression. Recorded when the signin promo is dismissed using the + "X". + + + + + mrefaat@chromium.org + jlebel@chromium.org + chrome-signin-team@google.com + + Counts how many times the signin promo is implicitly dismissed (by leaving + the NTP) per impression of the NTP feed top section sign in promo. + + + + + mrefaat@chromium.org + jlebel@chromium.org + chrome-signin-team@google.com + + Counts how many times one of the "sign in" buttons (any of the + signed-out "Sign in to Chrome" button, the "Continue as + |name|" button, or the "Not |email|?" button) is clicked per + impression of the NTP feed top section sign in promo. + + + + + mrefaat@chromium.org + jlebel@chromium.org + chrome-signin-team@google.com + + Counts how many times the explicit "X"-to-close button is clicked + per impression of the NTP feed top section sign in promo. + + + + + myuu@google.com + chrome-signin-team@google.com + + Counts how many times the signin promo is implicitly dismissed (by closing + the reading list) per impression. Recorded when the sign-in promo is removed + from the reading list view without being used. If the promo is removed by + user authentication (eg. sign-in from another view), the histogram is not + recorded. + + + + + myuu@google.com + chrome-signin-team@google.com + + Counts how many times one of the "sign in" buttons (any of the + signed-out "Sign in to Chrome" button, the "Continue as + |name|" button, or the "Not |email|?" button) is clicked per + impression in the reading list. Recorded when one of those buttons from the + reading list sign-in promo is clicked. + + + + + myuu@google.com + chrome-signin-team@google.com + + Counts how many times the explicit "X"-to-close button is clicked + per impression in the reading list. Recorded when the "X"-to-close + button from the reading list sign-in promo is clicked. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Counts how many times the signin promo is implicitly dismissed (by closing + the settings view) per impression. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Counts how many times one of the "sign in" buttons (any of the + signed-out "Sign in to Chrome" button, the "Continue as + |name|" button, or the "Not |email|?" button) is clicked per + impression. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Counts how many times the explicit "X"-to-close button is clicked + per impression. + + + + + tedchoc@chromium.org + twellington@chromium.org + + Android only. + + The number of times the tabbed mode of Chrome is launched within a given 24 + hour window. Recall that custom tabs is not considered tabbed mode. A + "launch" here is defined as anytime the tabbed mode is made + visible (foregrounded), but all Chrome activities must be completely hidden + before we'll count an additional launch. It includes all kinds of intents, + such as MAIN and VIEW. By ensuring all Chrome activities are hidden, we + avoid overcounting by going to Settings and returning to Chrome. + + This launch definition includes some items one might not expect: (i) click a + link in Chrome that opens in another app, then click back. (ii) have Chrome + in the foreground, then the screen times out (goes blank) or engages the + lock screen, then wake up/unlock the device. (iii) switch to + "Recents", then re-select Chrome. In all these cases, Chrome has + gone to the background so returning to it counts as another launch. + + The value reported reflects activity over a 24-hour window in the past, + possibly the distant past. Reporting is controlled by storing an initial + launch timestamp and counting all "launches" as a count until a + new launch happens after the 24hr window has elapsed (at this point, a new + 24hr window is started). The count is reported at the start of the next 24hr + window, so this is a retroactive count. For example, if a user uses Chrome + in one day two months ago, then doesn't use Chrome at all, then when Chrome + launches today it'll report the value during that 24-hour window. + + + + + tedchoc@chromium.org + twellington@chromium.org + yfriedman@chromium.org + + Android: The time it takes from creating an intent for ChromeActivity to + activity creation. This includes activity creation time spent in the + framework. + + + + + mthiesse@chromium.org + tedchoc@chromium.org + yfriedman@chromium.org + + Records what caused Chrome to be launched. + + Recorded for all types of ChromeActivity, in all cases where Chrome becomes + visible to the user, or intentionally transitions between Chrome Activities. + + + + + tedchoc@chromium.org + twellington@chromium.org + + The type of launching Chrome mobile app, e.g launch by hitting icon. + + Only recorded for tabbed mode launches of Chrome. Recall that custom tabs is + not considered tabbed mode. + + + + + pasko@chromium.org + + Android: The time spent performing toolbar layout inflation. + + + + + + diff --git a/histograms/metadata/na_cl/OWNERS b/histograms/metadata/na_cl/OWNERS new file mode 100644 index 000000000000..35554478696f --- /dev/null +++ b/histograms/metadata/na_cl/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +dschuff@chromium.org + diff --git a/histograms/metadata/na_cl/histograms.xml b/histograms/metadata/na_cl/histograms.xml new file mode 100644 index 000000000000..85f688373a13 --- /dev/null +++ b/histograms/metadata/na_cl/histograms.xml @@ -0,0 +1,461 @@ + + + + + + + + + + + Deprecated in M110 in favor of NaCl.EmbedderType, which has more + fine-grained categories such as extensions and their manifest version. + + dschuff@chromium.org + fabiansommer@chromium.org + + Type of NaCl/PNaCl application/extension. Recorded at plugin creation time + after the permission check. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + When the browser started, what happened with the NaCl helper process? + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + When a NaCl application process was created, what had happened with the NaCl + helper process when the browser was started? + + + + + dschuff@chromium.org + fabiansommer@chromium.org + The OS/Architecture of a nexe that was loaded. + + + + dschuff@chromium.org + fabiansommer@chromium.org + + Type of NaCl/PNaCl application/extension. Recorded at plugin creation time + after the permission check. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The status code returned when trying to load a manifest inside an installed + app. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The status code returned when trying to load a manifest from a source other + than an installed app. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The status code returned when trying to load a NaCl executable inside an + installed app. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The status code returned when trying to load a NaCl executable from a source + other than an installed app. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + The error code returned by NaCl's Chrome plugin. + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The error code returned by NaCl's Chrome plugin, but only for installed + apps. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The error code returned by NaCl's Chrome plugin, but excluding installed + apps. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + The error code returned by NaCl's sel_ldr. + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The error code returned by NaCl's sel_ldr, but only for installed apps. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The error code returned by NaCl's sel_ldr, but excluding installed apps. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + Was the manifest specified as a data URI rather than a .nmf file? + + + + + dschuff@chromium.org + fabiansommer@chromium.org + The time a NaCl module ran before it crashed. + + + + dschuff@chromium.org + fabiansommer@chromium.org + The time a NaCl module ran without crashing, at shutdown. + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The optimization level set for the initial Portable Native Client + translation from bitcode to native code. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + Did the Portable Native Client translation cache find an executable + translated from bitcode? + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The rate for compiling a Portable Native Client bitcode file to an object + file in Kilobytes per second. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The time it took to compile a Portable Native Client bitcode file to an + object file. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The time it took to link a Portable Native Client generated object file into + a Native Client executable. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The time it took to load and validate the Portable Native Client compiler. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The time it took to load and validate the Portable Native Client linker. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The percentage of a Portable Native Client application that is compiled by + the time the application is fully downloaded (compile and download happen in + parallel). + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The rate for completely translating a Portable Native Client bitcode file + into a Native Client executable and caching the result in Kilobytes per + second. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The total time it took to completely translate a Portable Native Client + bitcode file into a Native Client executable, and cache the result. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + The time it took the NaCl module to shut down. + + + + dschuff@chromium.org + fabiansommer@chromium.org + The size of the manifest file. + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The size of the main .nexe file downloaded for a Native Client module. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The size of the main .pexe bitcode file downloaded for a Portable Native + Client module. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The size of the main .pexe bitcode file divided by the size of the .nexe + that is the result of translating the bitcode file, times 100. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The size of the main .nexe file that is the result of translating a Portable + Native Client .pexe bitcode file. This reflects the amount of cache + consumed. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + The time it took to load the NaCl module into sel_ldr. + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The time it took to load the NaCl module into sel_ldr. Normalized by the + size of the .nexe, in megabytes. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The time it took to download the manifset file for a Native Client module. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The time it took between the Native Client plugin initialization and when + proxied execution of the NaCl module begins. This is the general startup + overhead of running as a NaCl module vs a trusted PPAPI plugin. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The time it took between the Native Client plugin initialization and when + proxied execution of the NaCl module begins. This is the general startup + overhead of running as a NaCl module vs a trusted PPAPI plugin. Normalized + by the size of the .nexe, in megabytes. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The time it took to download the main .nexe for a Native Client module. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The time it took to download the main .nexe for a Native Client module. + Normalized by the size of the .nexe, in megabytes. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The time it took between the Native Client plugin initialization and when + the NaCl module is ready to be used. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + The time it took between the Native Client plugin initialization and when + the NaCl module is ready to be used. Normalized by the size of the .nexe, in + megabytes. + + + + + blundell@chromium.org + dschuff@chromium.org + + True is emitted when ResourceCreationImpl::CreateVideoDecoderDev() is + invoked. Targeted metric to get clarity on whether there are any attempted + creations of this API against production Chrome as we work toward + eliminating support for the API. + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + Did a validation cache query find a previously known validation result? + + + + + dschuff@chromium.org + fabiansommer@chromium.org + + Was the validation cache updated with a new validation result? + + + + + + diff --git a/histograms/metadata/navigation/OWNERS b/histograms/metadata/navigation/OWNERS new file mode 100644 index 000000000000..7e4fc00fbf93 --- /dev/null +++ b/histograms/metadata/navigation/OWNERS @@ -0,0 +1,9 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +altimin@chromium.org +cthomp@chromium.org +tbansal@chromium.org +toyoshim@chromium.org +wanderview@chromium.org diff --git a/histograms/metadata/navigation/histograms.xml b/histograms/metadata/navigation/histograms.xml new file mode 100644 index 000000000000..c48c15b39dbd --- /dev/null +++ b/histograms/metadata/navigation/histograms.xml @@ -0,0 +1,1998 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Base histogram. Use suffixes of this histogram instead. Non-suffix name + was removed in Feb 2022. + + + + + + + + + + + fergal@chromium.org + bfcache-dev@chromium.org + + Records the reason why the page is evicted from the back-forward cache but + after the document is restored. This happens when there is a race between + eviction and restoring. This also records when the page is restored to + calculate how often this eviction happens. + + This is recorded for all websites regardless whether back-forward cache is + enabled or not. + + + + + fergal@chromium.org + bfcache-dev@chromium.org + + When navigating back to a page in the session history, this records whether + the page was restored from the BackForwardCache or not. + + This is recorded for all websites regardless whether back-forward cache is + enabled or not. + + + + + fergal@chromium.org + bfcache-dev@chromium.org + + When navigating back to a page in the session history, this records what + blocklisted features were used when the page was loaded and prevented this + page from being stored in the back-forward cache. Multiple blocklisted + features can be recorded for the same page. + + This is recorded for all websites regardless whether back-forward cache is + enabled or not. + + + + + fergal@chromium.org + bfcache-dev@chromium.org + + When navigating back to a page in the session history and the + BackForwardCache wasn't used because of the related browsing instances, this + records the reason why the browsing instance wasn't swapped. + + This is recorded for all websites regardless whether back-forward cache is + enabled or not. + + + + + fergal@chromium.org + rakina@chromium.org + bfcache-dev@chromium.org + + For history navigations, records the reason passed to + BackForwardCache::DisableForRenderFrameHost calls. + + The metric is recorded when a history navigation commits and emits a sample + for each reason. Compare this with + BackForwardCache.HistoryNavigationOutcome, which contains the total number + of navigations which where not cached + + This is recorded for all websites regardless whether back-forward cache is + enabled or not. + + + + + fergal@chromium.org + bfcache-dev@chromium.org + + When navigating back to a page in the session history, record why it wasn't + restored from the cache. The page might not have entered the back-forward in + the first place based on the features used, or it might have been evicted + while being in the cache. + + This is recorded for all websites regardless whether back-forward cache is + enabled or not. + + + + + yuzus@chromium.org + bfcache-dev@chromium.org + + This metric is emitted when we try to enforce the cache size limit, which is + 1) when a page enters BackForwardCache and 2) when a page entering + BackForwardCache receives an acknowledgement from the renderer. + + This reports the number of the entries that have not received an + acknowledgement from the renderer. + + + + + fergal@chromium.org + bfcache-dev@chromium.org + + Records the reason why the page is evicted from the back-forward cache but + after the document is restored. This happens when there is a race between + eviction and restoring. This also records when the page is restored to + calculate how often this eviction happens. + + This is recorded when back-forward cache is enabled for this navigation + (back-forward cache feature is enabled and the domain is in the scope of the + experiment). + + + + + rakina@chromium.org + bfcache-dev@chromium.org + + Records the reason of renderer-initiated back-forward cache eviction. + Emitted when renderer evicts the page from back-forward cache. + + + + + fergal@chromium.org + bfcache-dev@chromium.org + + Records the time duration between the last time when the entry goes to the + back-forward cache and the time when the process is killed. + + + + + fergal@chromium.org + bfcache-dev@chromium.org + + Track number of times an unexpected IPC message is posted to frames in the + renderer process while they are frozen in the back-forward cache. IPC tasks + are denoted by md5 hash of the mojo bindings method name or message hash for + legacy IPCs. + + Recorded when an IPC task is posted to frames that have already been stored + in the back-forward cache, after a 15 second delay to account for completion + of all freezing-related operations. + + + + + fergal@chromium.org + bfcache-dev@chromium.org + + Duration between start of page being stored in the back-forward cache and + when the unexpected IPC call is received by a frame while in the cache. + + Recorded when an IPC task is posted to frames that have already been stored + in the back-forward cache, after a 15 second delay to account for completion + of all freezing-related operations. + + + + + fergal@chromium.org + bfcache-dev@chromium.org + + When navigating back to a page in the session history, this records whether + the page was restored from the BackForwardCache or not. + + This is recorded when back-forward cache is enabled for this navigation + (back-forward cache feature is enabled and the domain is in the scope of the + experiment). + + + + + fergal@chromium.org + bfcache-dev@chromium.org + + When navigating back to a page in the session history, this records what + blocklisted features were used when the page was loaded and prevented this + page from being stored in the back-forward cache. Multiple blocklisted + features can be recorded for the same page. + + This is recorded when back-forward cache is enabled for this navigation + (back-forward cache feature is enabled and the domain is in the scope of the + experiment). + + + + + fergal@chromium.org + bfcache-dev@chromium.org + + When navigating back to a page in the session history and the + BackForwardCache wasn't used because of the related browsing instances, this + records the reason why the browsing instance wasn't swapped. + + This is recorded when back-forward cache is enabled for this navigation + (back-forward cache feature is enabled and the domain is in the scope of the + experiment). + + + + + fergal@chromium.org + bfcache-dev@chromium.org + + For history navigations, records the reason passed to + BackForwardCache::DisableForRenderFrameHost calls. + + The metric is recorded when a history navigation commits and emits a sample + for each reason. Compare this with + BackForwardCache.HistoryNavigationOutcome, which contains the total number + of navigations which where not cached + + This is recorded for all websites regardless whether back-forward cache is + enabled or not. + + + + + fergal@chromium.org + bfcache-dev@chromium.org + + For history navigations, records the reason passed to + RenderFrameHost::IsInactiveAndDisallowActivation calls. + + The metric is recorded when a history navigation commits and emits a sample + for each reason. Compare this with + BackForwardCache.HistoryNavigationOutcome, which contains the total number + of navigations which where not cached + + This is recorded for all websites regardless whether back-forward cache is + enabled or not. + + + + + yuzus@chromium.org + bfcache-dev@chromium.org + + For history navigations, records the AX event type that caused + RenderFrameHost::IsInactiveAndDisallowActivation calls. The value refers to + AX enum in ui/accessibility/ax_enums.mojom. + + The metric is recorded when a history navigation commits and emits the + breakdown of a specific bucket in HistoryNavigationOutcome.NotRestoredReason + (AXEvent). Compare this with BackForwardCache.HistoryNavigationOutcome, + which contains the total number of navigations which were not cached. + + This is recorded for all websites regardless whether back-forward cache is + enabled or not. + + + + + fergal@chromium.org + bfcache-dev@chromium.org + + When navigating back to a page in the session history, record why it wasn't + restored from the cache. The page might not have entered the back-forward in + the first place based on the features used, or it might have been evicted + while being in the cache. + + This is recorded when back-forward cache is enabled for this navigation + (back-forward cache feature is enabled and the domain is in the scope of the + experiment). + + + + + altimin@chromium.org + hajimehoshi@chromium.org + bfcache-dev@chromium.org + + Records whether a page restored from the back-forward cache has pageshow + handlers installed in its main frame. Recorded when the renderer resumes + page when restoring it from the back-forward cache. + + + + + wenyufu@chromium.org + bfcache-dev@chromium.org + + Record for a page that has form attached is about to restored from the back + forward cache, to understand the success rate for bfcaching a page that has + form / input entry attached. This is recorded for page with form attached + only. + + Recorded during a cross-page history navigation. If a page with form is + restored from the cache, "PageRestored" will be recorded; if the + page is not egligible to be restored due to any reason, + "PageNotRestored" will be recorded. + + + + + wenyufu@chromium.org + bfcache-dev@chromium.org + + Record for a page that has form attached is egligible to be stored in back + forwad cache, to understand the success rate for bfcaching a page that has + form / input entry attached. This is recorded for page with form attached + only. + + Recorded when a navigation is committed. If a page has form attached + "PageSeen" will be recorded; if the page is egligible to be stored + in the back forward cache, "PageStored" will be recorded. + + + + + sreejakshetty@chromium.org + altimin@chromium.org + bfcache-dev@chromium.org + + Records the number of reloads after a history navigation both for the cases + when page is served and not served from back-forward cache. + + This is recorded when navigation is committed, only for the domains which + are in the scope of back-forward cache experiment and they are of same + NavigationEntry (e.g. back and reload in different tab do not count). + + + + + sreejakshetty@chromium.org + altimin@chromium.org + bfcache-dev@chromium.org + + Records the total number of history navigations along with the number of + reloads if the previous navigation was a history one. + + This is recorded when navigation is committed, only for the domains which + are in the scope of back-forward cache experiment. + + + + + sreejakshetty@chromium.org + altimin@chromium.org + bfcache-dev@chromium.org + + Duration between start of navigation restoring a document from back-forward + cache and the first paint. + + This is recorded when a history navigation is served from back-forward cache + but in a foreground tab. + + + + + rakina@chromium.org + altimin@chromium.org + bfcache-dev@chromium.org + + Records occurences of certain actions triggered by script running on a page + after the pagehide event gets dispatched in the page, which might be + possible if we dispatch the pagehide event without unloading/freezing the + page (only happens when we're doing a same-site navigation and we did a + proactive BrowsingInstance swap but we're reusing the old page's process). + + Note: We will only track actions that might affect the user after we've + navigated away from the old page, such as modifications to storage, + navigations, or sending/receiving postMessage. + + Note 2: We will not track actions taken when the unload event is currently + in progress, which means the page is not actually stored in the back-forward + cache and the actions are expected to happen after pagehide. + + + + + fergal@google.com + bfcache-dev@chromium.org + + Hash (base::HashMetricName) of a mojo interface name. + + A sample is recorded for every message the browser receives from a renderer + for a page that is in the back-forward cache. Logging can be disabled via + the back-forward cache feature parameter + "message_handling_when_cached". + + Renderers should not be sending messages back to the browser for pages that + are in the back-forward cache. Eventually we will be killing such renderers + (as we could assume that it is misbehaving because it got compromised). But + first we must make sure that we are not sending messages by mistake (i.e. + bugs in the renderer). + + + + + arthursonzogni@chromium.org + chrome-security-owp-team@google.com + + Record whether iframe with the anonymous attribute contains sandboxed + document or not. + + + + + clamy@chromium.org + The cache flags set on back-forward navigations. + + + + shivanisha@chromium.org + csharrison@chromium.org + + This metric logs true if the existing entry being navigated to is marked to + be skipped on back/forward UI. This is logged at the start of navigation + initiated using long-press back/forward button. + + + + + leimy@chromium.org + bfcache-dev@chromium.org + + The time spent between the back navigation menu model's opening and the + activation of a menu item. This is recorded when the back navigation menu + model receives signal that indicates the item from the menu is activated. + See `BackForwardMenuModel::MenuWillShow()` and + `BackForwardMenuModel::ActivatedAt()` for more details. + + + + + leimy@chromium.org + bfcache-dev@chromium.org + + The time spent between the back navigation menu model's opening and the + closing. There might or might not be a menu item activation in between. This + is recorded when the back navigation menu model receives signal that + indicates it will be closed. See `BackForwardMenuModel::MenuWillShow()` and + `BackForwardMenuModel::MenuWillClose()` for details. + + + + + clamy@chromium.org + Whether the back-forward navigation was served from cache. + + + + jkokatsu@google.com + chrome-security-owp-team@google.com + + Record if navigation has occured to Blob URL, to better understand the usage + of Blob URL in active document (i.e. both main frame and iframes). This + record is taken in Navigator::DidNavigate. + + + + + jkokatsu@google.com + chrome-security-owp-team@google.com + + Record if navigation has occured to Blob URL in main frame or iframe, to + better understand the usage of Blob URL in active document. + + + + + jkokatsu@google.com + chrome-security-owp-team@google.com + + Record if navigation has occured to opaque Blob URL, to better understand + the usage of Blob URL in active document. + + + + + xiaochenzh@chromium.org + shivanisha@chromium.org + + For navigation requests with FLEDGE or SharedStorage generated urn:uuid, + record whether it is rendered in a fenced frame or iframe. Recorded when + navigation requests begin (i.e. during + NavigationRequest::BeginNavigation()). + + + + + cduvall@chromium.org + jam@chromium.org + + Measures how long it takes to fetch from the code cache. Logged every time + the code cache is fetched for the navigation body or a resource. + + + + + + + + + + peilinwang@google.com + woa-performance-bugs+jank@google.com + + Measures the amount of time it takes to call + RenderFrameHostImpl::DidCommitSameDocumentNavigation(). Logged once per call + to RenderFrameHostImpl::DidCommitSameDocumentNavigation(). + + + + + csharrison@chromium.org + yaoxia@chromium.org + + When a navigation results in a download, logs the download policy applied to + that navigation. This is logged once per download and when multiple policies + exist, an arbitrary one will be chosen. + + + + + csharrison@chromium.org + yaoxia@chromium.org + + When a navigation results in a download, for each download policy applied to + that navigation, logs the policy. + + + + + + + estark@chromium.org + security-enamel@chromium.org + + The amount of time that an HTTP page was in the foreground. Recorded on + every page close/transition. This metric is exposed publicly on the HTTPS + Transparency Report at + https://transparencyreport.google.com/https/overview?hl=en. + + + + + + + estark@chromium.org + security-enamel@chromium.org + + The amount of time that an HTTPS page was in the foreground. Recorded on + every page close/transition. This metric is exposed publicly on the HTTPS + Transparency Report at + https://transparencyreport.google.com/https/overview?hl=en. + + + + + estark@chromium.org + security-enamel@chromium.org + + The percentage of time that HTTPS pages were in the foreground, as compared + to total foreground time. Recorded whenever user metrics are uploaded. + + + + + peilinwang@google.com + woa-performance-bugs+jank@google.com + + Measures the amount of time it takes to call + RenderFrameHostManager::GetFrameHostForNavigation(). Logged once per call to + RenderFrameHostManager::GetFrameHostForNavigation(), most often two times + per navigation. + + + + + alexmos@chromium.org + creis@chromium.org + wjmaclean@chromium.org + + Whether the committing guest navigation targets an HTTP(S) URL. Logged at + ready-to-commit time for navigations in a webview tag (also known as + "guest" in process model terminology), excluding same-document + navigations and errors. + + + + + alexmos@chromium.org + creis@chromium.org + wjmaclean@chromium.org + + Whether the committing guest navigation is in a main frame. Logged at + ready-to-commit time for navigations in a webview tag (also known as + "guest" in process model terminology), excluding same-document + navigations and errors. + + + + + + + mpearson@chromium.org + amaralp@chromium.org + chrome-analysis-team@google.com + + Emitted every time a user uses a Home button to go to their home page. + Records whether the page is chrome-internal (most likely the New Tab Page or + about:blank) or not (most likely an actual web site). For the purpose of + this histogram, about:, chrome: and chrome-native: are considered + chrome-internal; everything else is not. + + The user action Navigation.Home.NotChromeInternal is also logged in the case + that false is logged to this histogram. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + meacer@chromium.org + chrome-trusty-transport@google.com + + Counts the number of typed and pasted main frame navigations to hostnames + that contain characters that are treated differently between IDNA 2003 and + IDNA 2008, aka deviation characters. Ignores reload navigations. + + + + + alexmos@chromium.org + creis@chromium.org + wjmaclean@chromium.org + + Whether the committing navigation is for a webview tag (also known as + "guest" in process model terminology). Logged at ready-to-commit + time for every navigation, excluding same-document navigations and errors. + + + + + alexmos@chromium.org + lukasza@chromium.org + + Whether the navigation commits in a process that is locked to an origin. + Logged at ready-to-commit time for every navigation excluding same-document + navigations and errors. + + + + + alexmos@chromium.org + lukasza@chromium.org + + Whether the navigation commits in a process that is locked to an origin. + Logged at ready-to-commit time for every navigation that commits with a HTTP + or HTTPS URL scheme, excluding same-document navigations and errors. + + + + + peilinwang@google.com + woa-performance-bugs+jank@google.com + + Measures the amount of time it takes to call + RenderFrameHostImpl::IsNavigationSameSite(). Logged once per call to + RenderFrameHostImpl::IsNavigationSameSite(), potentially numerous times per + navigation. + + + + + arthursonzogni@chromium.org + clamy@chromium.org + nasko@chromium.org + + Whether a main frame navigation led to a change of BrowsingInstance or not. + + + + + arthursonzogni@chromium.org + clamy@chromium.org + nasko@chromium.org + + Whether the navigation led to a change of SiteInstance or not. + + + + + ryansturm@chromium.org + spelchat@chromium.org + + The time the user waits beyond what is configured for the latency ablation + study. The enabled arms of the latency ablation study prescribe an amount of + time to delay the navigation, and this histogram records the amount of time + that was waited beyond that prescription. Recorded upon resuming the + navigation after the ablation occurs. This ablation occurs for most + navigations, but does not occur for subframes, prerenders, fenced frames, + bf/restore style navigations, and client redirects. The experiment can be + configured to only affect default search (or only affect non default + search). + + + + + + + boliu@chromium.org + alexmos@chromium.org + src/base/android/OWNERS + + The type of the source of a load from LoadIfNecessary. Recorded when + LoadIfNecessary starts a page load. For example, on Android, + kRequestedByClient is recorded when user switch back to a tab with a dead + renderer, which causes the tab to reload. + + + + + michaelpg@chromium.org + yilkal@chromium.org + cros-families-eng@google.com + + The number of frames that are present in a WebContents. Recorded once when + the main frame finishes loading. + + + + + michaelpg@chromium.org + yilkal@chromium.org + cros-families-eng@google.com + + The maximum number of loaded frames that are present in a WebContents. + Recorded once when the main frame is moving away from current page. This can + be when the WebContents is being destroyed or when it starts loading new + content. + + + + + yaoxia@chromium.org + cammie@chromium.org + + Whether the initiator frame is present when a renderer-initiated primary + main frame navigation has started. Recorded for each renderer-initiated + primary main frame navigation when the navigation has started (i.e. during + WebContentsObserver::DidStartNavigation()). + + + + + meacer@chromium.org + security-enamel@chromium.org + + Site engagement level of the URL of the top frame of a navigation. Only + counts HTTP or HTTPS URLs and ignores downloads. + + + + + dullweber@chromium.org + feuunk@chromium.org + + Records whether third party cookie blocking was enabled for a site. Recorded + for each main-frame navigation when that navigation commits. Only counts + HTTP or HTTPS URLs and ignores downloads. + + + + + meacer@chromium.org + security-enamel@chromium.org + + Site engagement level of the URL of the top frame of a form submission. This + is a subset of Navigation.MainFrame.SiteEngagementLevel. + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Whether the main-frame navigation was to a URL with an RTL domain name. This + is only recorded for finished navigations and not attempts. Warning: this + histogram was expired from M92 through M95; data may be missing. + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Whether the main-frame navigation was to a URL with an RTL domain name, + recorded for each main-frame avigation that replaces a document object. This + is not reported for reference fragment navigations, pushState/replaceState + or same page history navigation. This is only recorded for finished + navigations and not attempts. + + + + + rhalavati@chromium.org + chrome-privacy-core@google.com + + The browser profile type for each main-frame navigation, recorded after + navigation completion, including NTP. + + + + + estark@chromium.org + elawrence@chromium.org + trusty-transport@chromium.org + + The scheme of the URL for each main-frame navigation. This is only recorded + for finished navigations and not attempts. Warning: this histogram was + expired from 2021-06-01 through M95; data may be missing. + + + + + + + estark@chromium.org + elawrence@chromium.org + trusty-transport@chromium.org + + The scheme of the URL for each main-frame navigation that replaces a + document object. This is not reported for reference fragment navigations, + pushState/replaceState or same page history navigation. This is only + recorded for finished navigations and not attempts. + + + + + estark@chromium.org + elawrence@chromium.org + trusty-transport@chromium.org + + The scheme of the URL for each main-frame navigation that replaces a + document object while in incognito. This is not reported for reference + fragment navigations, pushState/replaceState or same page history + navigation. This is only recorded for finished navigations and not attempts. + + + + + elawrence@chromium.org + estark@chromium.org + + The scheme of the URL for each main-frame navigation while in incognito. + This is only recorded for finished navigations and not attempts. Warning: + this histogram was expired from 2021-06-01 through M97; data may be missing. + + + + + + Obsolete after 2022-06-30. + + rakina@chromium.org + dcheng@chromium.org + + Records whether a speculative RenderFrameHost for an older navigation + existed when a new NavigationRequest is created, causing the speculative + RenderFrameHost to be deleted. + + + + + sky@chromium.org + swarm-team@chromium.org + + Time from navigation start to before task is posted to continue with + navigation. This is only logged if there are no before-unload handlers and a + post task is used rather than synchronously continuing (referred to as + for_legacy in code). + + + + + sky@chromium.org + swarm-team@chromium.org + + Time from navigation start to calling NavigationRequest::BeginNavigation(). + This is only logged if before-unload handlers are skipped because the + feature AvoidUnnecessaryBeforeUnloadCheckSync is enabled. + + + + + sky@chromium.org + jam@chromium.org + + Time it takes for the renderer to receive the request to process + before-unload handlers. + + + + + sky@chromium.org + jam@chromium.org + + Time it takes for navigation to start when a PostTask() is used for legacy + before-unload handlers. Only logged if the feature + AvoidUnnecessaryBeforeUnloadCheck is enabled. + + + + + clamy@chromium.org + nasko@chromium.org + + Overhead time spent handling the OnBeforeUnload event from the browser + standpoint. More precisely, it is the total time between dispatch and + acknowledgment of the BeforeUnload event on the browser side, minus the + actual time spent executing the BeforeUnload handlers on the renderer side. + + + + + chikamune@chromium.org + chrome-loading@google.com + + Milliseconds spent to process all the beforeunload events in JavaScript and + waiting time for beforeunload dialog is closed if necessary. Recorded only + when a non-reload navigation occurs. + + + + + alexmos@chromium.org + creis@chromium.org + wjmaclean@chromium.org + + For every successful cross-document commit, this logs whether or how + OriginAgentCluster was involved. It tracks whether it was requested, as well + as whether the isolation was granted, which can be affected by other + documents in the same browsing context group. If OriginAgentCluster-by- + default is not enabled, the first four enum values track this state. If + OriginAgentCluster-by-default is enabled, then the second (disjoint) set of + six enum values tracks this state, plus the two additional cases where + OriginAgentCluster was explicitly not requested, and was or wasn't granted. + + + + + alexilin@chromium.org + blundell@chromium.org + lizeb@chromium.org + pasko@chromium.org + + Measures the amount of time that a requested preresolve job spends queueing + before being executed (e.g., due to a max # of preconnects being in flight). + Recorded for each presolve job. + + + + + alexilin@chromium.org + blundell@chromium.org + lizeb@chromium.org + pasko@chromium.org + + Measures the length of the queue of preresolve jobs at the beginning of + PreconnectManager processing this queue to execute jobs. Recorded each time + that PreconnectManager processes the queue of pending jobs. + + + + + alexilin@chromium.org + blundell@chromium.org + lizeb@chromium.org + pasko@chromium.org + + Measures the amount of time that the task corresponding to the completion + callback for a proxy lookup performed as part of navigation preconnect spent + being queued before executing. Recorded for each proxy lookup. + + + + + alexilin@chromium.org + lizeb@chromium.org + pasko@chromium.org + + Measures the duration from initiation to completion for a proxy lookup + performed as part of navigation preconnect. Recorded for each proxy lookup. + Note: Does not capture any delay spent queuing *before* initiating the proxy + lookup (e.g., due to a max # of preconnects being in flight). + + + + + alexilin@chromium.org + blundell@chromium.org + lizeb@chromium.org + pasko@chromium.org + + Measures the amount of time that the task corresponding to the completion + callback for a host resolution performed as part of navigation preconnect + spent being queued before executing. Recorded for each host resolution. + + + + + alexilin@chromium.org + lizeb@chromium.org + pasko@chromium.org + + Measures the duration from initiation to completion for a host resolution + performed as part of navigation preconnect. Recorded for each host + resolution. Note: Does not capture any delay spent queuing *before* + initiating the host resolution (e.g., due to a max # of preconnects being in + flight). + + + + + blundell@chromium.org + ryansturm@chromium.org + sophiechang@chromium.org + + Measures the amount of time that a requested prefetch job spends queueing + before being executed (e.g., due to a max # of prefetches being in flight). + Recorded for each prefetch job. + + + + + blundell@chromium.org + ryansturm@chromium.org + sophiechang@chromium.org + + Measures the length of the queue of prefetch jobs at the beginning of + PrefetchManager processing this queue to execute jobs. Recorded each time + that PrefetchManager processes the queue of pending jobs. + + + + + sreejakshetty@chromium.org + altimin@chromium.org + + Measures time a PrerenderCommitDeferringCondition defers activation waiting + to commit an ongoing mainframe prerender navigation. Logged every time a + PrerenderCommitDeferringCondition defers navigation. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the amount of time the task to run {Method} was queued before + running. Logged every time {Method} is run for a {FrameType} in + NavigationURLLoaderImpl with a valid queue time. + + + + + + + + + + clamy@chromium.org + nasko@chromium.org + + The time needed to commit a navigation once it is ready to commit. This is + the time between ReadyToCommit and DidFinishNavigation (for a navigation + that commits). + + Warning: this histogram was expired after M85 and brought back 2021-04-13; + data may be missing. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the delay between when the navigation commit was sent by the + browser to when it is received by the renderer. Recorded for every + cross-document non-page activation navigation commit. + + + + + + cduvall@chromium.org + jam@chromium.org + + Measures how long the navigation commit was waiting for the renderer process + to start before it was able to receive the commit. Recorded for every + cross-document non-page activation navigation commit which waits on a + process start. + + + + + + cduvall@chromium.org + jam@chromium.org + + Measures queue time for the navigation commit mojo task on the renderer + side. Recorded for every cross-document non-page activation navigation + commit. + + + + + + cduvall@chromium.org + jam@chromium.org + + Measures time it takes to call + NavigationControllerImpl::RendererDidNavigate. Recorded for each navigation + that is not a same document navigation. + + + + + + + Obsolete after 2022-10-21. All cancellation window ends within 10000ms. See + UMA result: + https://docs.google.com/document/d/1VNmvEVuaiNH3ypt6YfrYPsJJp8okCTYjooekarOiWN8/edit#heading=h.tlh3g7tofz2 + + rakina@chromium.org + dcheng@chromium.org + + Measures the amount of time it takes from + RendererCancellationThrottle::WillProcessResponse() to + RendererCancellationThrottle::NavigationCancellationWindowEnded. Recorded + for each navigation that gets deferred by RendererCancellationThrottle. + + + + + alexmos@chromium.org + lukasza@chromium.org + + Whether the navigation commits in a SiteInstance that requires a dedicated + process. Logged at ready-to-commit time for every navigation excluding + same-document navigations and errors. + + + + + alexmos@chromium.org + lukasza@chromium.org + + Whether the navigation commits in a SiteInstance that requires a dedicated + process. Logged at ready-to-commit time for every navigation that commits + with a HTTP or HTTPS URL scheme, excluding same-document navigations and + errors. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time RenderFrameHostImpl::SendCommitNavigation takes to run. + Recorded every time the method executes. + + + + + + nasko@chromium.org + csharrison@chromium.org + + The time delta between the start of a navigation and the time it is + committed. + + Warning: this histogram was expired after M85 and brought back 2021-04-13; + data may be missing. + + + + + fergal@chromium.org + rakina@chromium.org + + Records the combination of mainframe/subframe and what sudden termination + disablers were present. This is recorded on every cross-document navigation. + Currently only covers Unload. The SameOrigin variant only considers a frame + to be same origin as the main frame if it can be reached through a chain of + same-origin frames. So e.g. in a->b->a, the second a is not + same-origin. + + + + + + + + + cduvall@chromium.org + jam@chromium.org + + Measures time a navigation throttle was deferred when on {Event}. Logged + every time a throttle defers a navigation. + + + + + + cduvall@chromium.org + jam@chromium.org + + Measures time a navigation throttle took to execute {Event}. Logged every + time a throttle runs. + + + + + + nhiroki@chromium.org + sreejakshetty@chromium.org + chrome-prerendering@chromium.org + + The time needed to commit a navigation using prerender activation. This is + the time from the beginning of NavigationStart to the end of + DidCommitPageActivation. + + This metric is logged everytime prerender activation navigation commits. + + + + + + clamy@chromium.org + nasko@chromium.org + + The time delta between the start of a navigation and the time it is ready to + commit. + + Warning: this histogram was expired after M85 and brought back 2021-04-13; + data may be missing. + + + + + + Obsolete after 2022-06-30. + + rakina@chromium.org + dcheng@chromium.org + + Records whether a speculative RenderFrame is live when UndoCommitNavigation + is called. + + + + + miketaylr@chromium.org + potassium-katabolism@google.com + + The type of the user agent string value sent in the User-Agent header on a + navigation request. The reduced user agent string is only sent in the + presence of a valid UserAgentReduction origin trial token. This histogram is + recorded when a NavigationRequest is constructed, prior to sending the + request to the network stack. + + + + + rakina@chromium.org + altimin@chromium.org + + Logs inconsistencies between browser- vs renderer-calculated values of + DidCommitProvisionalLoadParams which are detected in RenderFrameHostImpl's + VerifyThatBrowserAndRendererCalculatedDidCommitParamsMatch(). This is used + to trigger traces to be uploaded to analyze what happened in these + navigations. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the amount of time the {Stage} stage takes in early navigation. + Logged for any navigation that reaches the stage. + + + + + + + + + + + + meacer@chromium.org + security-enamel@chromium.org + + Tracks events when the currently navigated domain name is a lookalike to one + of the top 10K domains or a domain that the user interacted with, resulting + in a navigation suggestion interstitial. + + Before M88, NavigationSuggestion.Event recorded a separate entry for each + lookalike URL in a redirect chain. E.g. lookalike1.com -> site.com -> + lookalike2.com recorded two events. This updated histogram only records an + entry for the first or last URL in the redirect if any of those is a + lookalike. + + + + + meacer@chromium.org + blundell@chromium.org + security-enamel@chromium.org + + Records the time duration that PerformChecks() spent in calls to + GetDomainInfo() before the navigation was ultimately allowed to proceed. + Recorded only for navigations that + LookalikeUrlNavigationThrottle::PerfomChecks() directly allows to proceed + (i.e., not those that result in showing interstitials and/or digital asset + manifest checks). + + + + + meacer@chromium.org + blundell@chromium.org + security-enamel@chromium.org + + Records the time duration that PerformChecks() spent in calls to + IsLookalikeUrl() before the navigation was ultimately allowed to proceed. + Recorded only for navigations that + LookalikeUrlNavigationThrottle::PerfomChecks() directly allows to proceed + (i.e., not those that result in showing interstitials and/or digital asset + manifest checks). + + + + + meacer@chromium.org + blundell@chromium.org + security-enamel@chromium.org + + Records the time duration the navigation was deferred while PerformChecks() + was executing before the navigation was ultimately allowed to proceed. + Recorded only for navigations that + LookalikeUrlNavigationThrottle::PerfomChecks() directly allows to proceed + (i.e., not those that result in showing interstitials and/or digital asset + manifest checks). + + + + + meacer@chromium.org + cduvall@chromium.org + security-enamel@chromium.org + + Records the time duration the navigation was deferred while waiting for + engaged sites data. Recorded whenever a navigation is deferred waiting for + engaged sites. + + + + + lingqi@chromium.org + chrome-prerendering@chromium.org + + Tracks the prerender cancellations caused by inactive RenderFrameHosts' + restrictions, recording the reason passed to + RenderFrameHost::IsInactiveAndDisallowActivation calls. + + This metric is recored when a RenderFrameHost is going to perform some + actions that are not allowed for a prerendering RenderFrameHost, such as + showing context menu. At that time, the detailed reason will be passed to + RenderFrameHost::IsInactiveAndDisallowActivation, which will cancel + prerendering and record this metric. + + Note: This histogram does not track prerender activation behavior, but to + analyze PrerenderHostFinalStatus::kInactivePageRestriction. + + Warning: this histogram was expired from 2023-03-01 to 2023-03-29; data may + be missing. + + + + + + lingqi@chromium.org + chrome-prerendering@google.com + + Breakdown metric for + PrerenderActivationNavigationParamsMatch::kHttpRequestHeader. We are + considering whether we should loosen this restriction, so this metric is + added to figure out the usage of headers during prerender navigation and + activation navigation. See https://crbug.com/1378921 for more information. + + When we are attempting to activate a prerendered page, we compare the + prerendered page's NavigationRequest's headers with the incoming + NavigationRequest's (called activation navigation). If they mismatch, + PrerenderHost will post a task. The task scans the two headers, and will + report a mismatching record if it detects any differences between them. It + records the hashed number of a mismatching header, together with the + mismatching reason: Missing in prerendering navigation, missing in + activation navigation, or the values mismatch. + + Warning: this histogram was expired from 2023-01-31 to 2023-03-29; data may + be missing. + + + + + + nhiroki@chromium.org + chrome-prerendering@google.com + + Records the mismatched parameters between the prerender initial navigation + parameters and the prerender activation navigation parameters. Recorded by + PrerenderHost in the browser process when comparing these two parameters. + + + + + + robertlin@chromium.org + toyoshim@chromium.org + chrome-prerendering@google.com + + The metrics for preload bookmark to understand the distribution of delay to + press {ButtonType}. Recorded when the mouse {ButtonType} is pressed. + + + + + + + + + robertlin@chromium.org + toyoshim@chromium.org + chrome-prerendering@google.com + + The metrics for preload boomark to understand the distribution of mouse + hovering duration from {OriginType}. It records mouse hovering duration time + when mouse leaves the bookmark button areas without using it as NotTaken, or + when the bookmark is actually clicked as Taken. + + + + + + + + + + + + + robertlin@chromium.org + toyoshim@chromium.org + chrome-prerendering@google.com + + This metric is to count the combination of bookmark bar triggering + prerender's predictor's decision and result. Recorded on mouse leaving a + bookmark button in the bookmark bar. + + + + + robertlin@chromium.org + toyoshim@chromium.org + chrome-prerendering@google.com + + The metrics for preload bookmark to evaluate the ratio of mouseover and + mousedown translating into full mouse click. + + + + + lingqi@chromium.org + nhiroki@chromium.org + src/content/browser/preloading/prerender/OWNERS + + A breakdown metric for analyzing cross-origin redirection cases during + embedder-triggered prerendering, Recorded when redirections were caused due + to HTTP protocol upgrades. + + Note that for now it is not used for prerendering that are triggered by + speculation rules. + + + + + + lingqi@chromium.org + chrome-prerendering@google.com + + Records whether the search terms obtained via the search_terms_args are the + same as the search terms extracted from the URLs. This is recorded when + PrerenderManager attempts to start a new prerender. + + + + + asamidoi@chromium.org + chrome-prerendering@google.com + + Records the prediction status started by omnibox. In particular, this + records whether they were used or not. It's recorded when omnibox-initiated + navigation finishes. Consider it as a success when the prediction is correct + and note that the activation of prerendering may fail. + + + + + asamidoi@chromium.org + chrome-prerendering@google.com + + Records the prediction status started by omnibox. In particular, this + records whether they were used or not. It's recorded when omnibox-initiated + navigation finishes. Consider it as a success when the prediction is correct + and note that the activation of prerendering may fail. + + + + + nhiroki@chromium.org + toyoshim@chromium.org + lingqi@chromium.org + + Mojo interfaces that cause the cancellation of prerendering. Recorded by + MojoBinderPolicyApplier in the browser process once it receives the binding + request of a kCancel Mojo interface. + + + + + + nhiroki@chromium.org + toyoshim@chromium.org + lingqi@chromium.org + + This histogram tracks the interfaces that + Prerender.Experimental.PrerenderCancelledInterface fails to track. It is + needed because: + + * Embedders can set their own policies, so Prerender2 cannot map all of them + to enums. + + * Channel-associated interfaces' policies are set to kCancel implicitly. + It's hard to track all of them, especially the newly added + channel-associated interfaces. + + This sparse histogram allows Prerender2 to record all of these interfaces + separately. + + It is recored by MojoBinderPolicyApplier in the browser process once it + receives the binding request of a kCancel Mojo interface and cannot find an + accurate enum type for this interface. + + + + + + lingqi@chromium.org + nhiroki@chromium.org + src/content/browser/preloading/prerender/OWNERS + + A breakdown metric for analyzing cross-origin redirection cases during + embedder-triggered prerendering. Recorded when the embedder-triggered + prerendering was redirected to another origin that differs from the initial + one. + + The cases are encoded into 3 bits(scheme mismatch, host mismatch, port + mismatch). + + Note that for now it is not used for prerendering that are triggered by + speculation rules. + + + + + + nhiroki@chromium.org + toyoshim@chromium.org + lingqi@chromium.org + asamidoi@chromium.org + + Final status for a prerendering attempt. Recorded by PrerenderHost or + PrerenderHostRegistry in the browser process when the attempt finishes. + + + + + + lingqi@chromium.org + chrome-prerendering@google.com + + PrerenderManager records the duration period from the time to start + prerendering with the search hints to the time to navigate the search hints. + This duration is recorded when it finds the search hints predicts correctly, + e.g. users do search and results in activating the prerendered page, or + users do saerch the prerender hints but the prerendered page has been + destroyed due to expiration. + + |====== HitFinishedSearchResultLifeTime=======| + + @ Timestamp X ------------------------------- @ Timestamp Y + + or + + |====== HitFinishedSearchResultLifeTime=============| + + @ Timestamp X ------------------------------------- @ Timestamp Z + + Where: + + * Timestamp X: Chrome receives the first prerender hints for a search term + A. + + * Timestamp Y: User selects the search term A. + + * Timestamp Z: Timestamp X + Fixed period T. + + HitFinishedSearchResultLifeTime = min(Timestamp Y, Timestamp Z) - Timestamp + X = min(Timestamp Y - Timestamp X, T). + + It aims to: + + 1. Track the prerenders which were canceled due to expiration(Fixed period + T). + + 2. Gain the understanding of the duration between the moment when browser + receives the first prerender hint and the moment when the hint is selected. + This data will be used to determine the threshold of deciding whether to + reuse a prefetched response or to resend a prefetch request. + + + + + ryansturm@chromium.org + tbansal@chromium.org + + Final status for prerender pages - either success, or why it was canceled. + + + + + hajimehoshi@chromium.org + jkarlin@chromium.org + kouhei@chromium.org + + Number of bytes transferred on the network for URLRequests (not including + HTTP/TLS/TCP/IP overhead). Reported on event of a PrerenderContents + deletion. Includes prerender bytes. Bytes are only counted when prerendering + is enabled and not in a control group. The sum of the distribution for a + single user represents all of that user's network transfers for resource for + that time period while prerendering was enabled. + + + + + hajimehoshi@chromium.org + jkarlin@chromium.org + kouhei@chromium.org + + Number of bytes transferred on the network for URLRequests (not including + HTTP/TLS/TCP/IP overhead) for a prerender that was not used. All + nostate-prefetch bytes are currently counted as wasted because it is hard to + track byte use in HTTP cache. + + + + + droger@chromium.org + mattcary@chromium.org + pasko@chromium.org + + Length of the redirect chain for main resources loaded by NoStatePrefetch. + Recorded when the final response in the chain is received. + + + + + droger@chromium.org + mattcary@chromium.org + pasko@chromium.org + + Type of responses received by NoStatePrefetch, distinguishing cacheable + resources from no-store resources, and main resources from sub-resources. + Recorded when a response is received, including on each redirect. + + + + + droger@chromium.org + mattcary@chromium.org + pasko@chromium.org + + Length of the redirect chain for sub-resources loaded by NoStatePrefetch. + Recorded when the final response in the chain is received. + + + + + gambard@chromium.org + justincohen@chromium.org + + Whether the load was completed when the pre-render was used. If the + prerender is cancelled, this is not logged. Only on iOS. + + + + + justincohen@chromium.org + + Whether or not a successful prerender happens on a NTP with no history. + + + + + justincohen@chromium.org + + The last comitted index before a successful preload is committed. Recorded + only on iOS. + + + + + ryansturm@chromium.org + tbansal@chromium.org + + The number of sessions that have at least X successful prerenders. Recorded + only on iOS since 2017-09. + + + + + gambard@chromium.org + justincohen@chromium.org + + This is the time from when a prerendered page begins to load to when it is + swapped in as the main page load or to when the pre-loaded page is fully + loaded, whichever came first. Recorded when the swap occurs, only on iOS. + + + + + pasko@chromium.org + + A boolean that indicates how often we fail to delete an old prerendered tab + before the timeout. + + + + + + diff --git a/histograms/metadata/nearby/OWNERS b/histograms/metadata/nearby/OWNERS new file mode 100644 index 000000000000..a3e769bce86c --- /dev/null +++ b/histograms/metadata/nearby/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +crisrael@google.com +hansberry@chromium.org +julietlevesque@google.com diff --git a/histograms/metadata/nearby/histograms.xml b/histograms/metadata/nearby/histograms.xml new file mode 100644 index 000000000000..a5df5f91aff8 --- /dev/null +++ b/histograms/metadata/nearby/histograms.xml @@ -0,0 +1,1241 @@ + + + + + + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records whether the request to set the adapter's name has succeeded. Emitted + when the request succeeds or fails. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records whether the request to set the adapter's scan mode has succeeded. + Emitted when the request succeeds or fails. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records time spent in milliseconds to establish a Bluetooth service + connection successfully. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + Records the result of {Operation}. + + + + + + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records whether the request to start advertising has succeeded. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records whether BLE scanning has been initiated successfully. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records whether the request to stop advertising has succeeded. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + Records whether BLE scanning has been stopped successfully. + + + + julietlevesque@chromium.org + nearby-share-chromeos-eng@google.com + + Records the number of parsing attempts it takes the stream parser to check + byte by byte if the data it received forms a valid StreamBody proto. Emitted + every time we get a receive-express HTTP response from the Instant Messaging + API. + + + + + cclem@chromium.org + nearby-share-chromeos-eng@google.com + + Records whether the cache was used to satisfy the GetIceServers request. + Emitted when GetIceServers is called. + + + + + cclem@chromium.org + nearby-share-chromeos-eng@google.com + + Records the HTTP response code or net error code of the GetIceServers API + call to the Tachyon server. Emitted only on failure or timeout. + + + + + cclem@chromium.org + nearby-share-chromeos-eng@google.com + + Records whether the Tachyon OAuth token was successfully fetched. Emitted + when the token fetcher request returns. + + + + + cclem@chromium.org + nearby-share-chromeos-eng@google.com + + Records the result of the GetIceServers API call to the Tachyon server. + Emitted when the http response is received or when the call times out. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records whether or not the user was able to fetch the OAuth token necessary + to {Direction} the Instant Messaging API. Emitted at the conclusion of the + token request, which is attempted right before making HTTPS requests to the + Instant Messaging API. + + + + + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records whether an HTTPS call to {Direction} the Instant Messaging API + succeeds or fails. Emitted when the HTTPS call succeeds or fails. + + + + + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records the network error code or HTTPS response code from a failed HTTPS + call to {Direction} the Instant Messaging API. Emitted when the HTTPS call + fails. + + + + + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records why the Sharing utility process, which hosts Nearby Connections, was + shut down: for an expected reason (i.e., shut down request from a client), + or another unexpected reason (e.g., a crash). + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records which Mojo dependency of the Sharing utility process disconnected + from the browser process. This will not necessarily line up with the counts + in the Mojo disconnect bucket of + Nearby.Connections.UtilityProcessShutdownReason which tracks disconnects on + the utility process side. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records the result of trying to connect to another device's TCP server + socket. Emitted after a cross-device connection attempts to be established + over TCP sockets. Note: One device listens for incoming connections while + the other device tries to connect. This metric is logged by the connecting + device. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records the result of listening for and accepting incoming TCP socket + connections. Emitted after a cross-device connection attempts to be + established over TCP sockets. Note: One device listens for incoming + connections while the other device tries to connect. This metric is logged + by the listening device. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records the result of a TCP server socket accepting incoming connections. + This is a lower-level metric that tracks the result code from the TCP server + socket accept call made in the networking layer. Emitted after a + cross-device connection attempts to be established over TCP sockets. Note: + Only one device opens a server socket, which the other device attempts to + connect to. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records the time it takes to successfully connect to another device's TCP + server socket. Emitted after a cross-device connection is established over + TCP sockets. Not emitted on failure. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records success or failure when {Operation} of a {Medium} socket. Emitted + during cross-device data transfers. + + + + + + + + + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records each step in the background scanning notification flow if Nearby + Share onboarding is complete. Emitted after the notification that a nearby + device is trying to share is shown, and again when the user acts on the + notification by clicking enable, dismiss or exit. Clicking enable puts the + user in high-visibility mode. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records how long it takes for a user to act on a background scanning + notification if Nearby Share onboarding is complete. Emitted after the user + acts on the notification by clicking enable, dismiss or exit. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Logs an event when there were previously no devices nearby trying to share + and now there are nearby devices trying to share. Emitted when the nearby + devices trying to share changes from zero to greater than zero. A + notification will not be shown on this event if the user dismissed the + notification in the last 15 minutes.This metric is not emitted if the + background scanning feature is disabled. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records for how long nearby devices were trying to share. Emitted after the + number of devices trying to share goes from greater than zero to zero. This + metric is not emitted if the background scanning feature is disabled. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records whether an attempt to start a background scanning session succeeded + or failed. Emitted after the bluetooth adapter notifies whether starting the + background scanning session was successfully started. This metric is not + emitted if the background scanning feature is disabled. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records each step in the background scanning notification flow if Nearby + Share onboarding is not complete. Emitted after the notification that a + nearby device is trying to share is shown, and again when the user acts on + the notification by clicking setup, dismiss or exit. Clicking setup + initiates Nearby Share onboarding. + + + + + hansenmichael@google.com + nearby-share-chromeos-eng@google.com + + Records how long it takes for a user to act on a background scanning + notification if Nearby Share onboarding is not complete. Emitted after the + user acts on the notification by clicking setup, dismiss or exit. + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records whether or not a Bluetooth MAC address was able to be fetched during + the local device's private certificate creation. Emitted after private + certificates attempt to be created, which typically occurs every three days + if Nearby Share is enabled. This will only be emitted once if multiple + certificates are created at a time, for example, when all certificates are + created after onboarding. + + + + + cclem@chromium.org + nearby-share-chromeos-eng@google.com + + If the Nearby Share certificate manager successfully downloads public + certificates, then record the total number of certificates downloaded across + all pages. + + + + + cclem@chromium.org + nearby-share-chromeos-eng@google.com + + If the Nearby Share certificate manager fails to download public + certificates, then record the page number of the page on which the failure + occurred. + + + + + cclem@chromium.org + nearby-share-chromeos-eng@google.com + + Records the result of the async ListPublicCertificates API call to the + Nearby Sharing server when the certificate manager periodically downloads + public certificates. Recorded when the async callback is invoked or when the + call times out. + + + + + cclem@chromium.org + nearby-share-chromeos-eng@google.com + + If the Nearby Share certificate manager successfully downloads public + certificates, then record the number of pages downloaded by the RPC. + + + + + cclem@chromium.org + nearby-share-chromeos-eng@google.com + + Records whether the Nearby Share certificate manager successfully downloaded + public certificates from the server and stored them in leveldb. + + + + + cclem@chromium.org + nearby-share-chromeos-eng@google.com + + Records the result of the async GetDecryptedPublicCertificate call in + certificate manager. + + + + + cclem@chromium.org + nearby-share-chromeos-eng@google.com + + If the Nearby Share certificate storage successfully initializes the public + certificate database, then record the number of attempts it took. + + + + + cclem@chromium.org + nearby-share-chromeos-eng@google.com + + For individual initialization attempts of the Nearby Share certificate + storage public certificate database, record the init status returned by + leveldb_proto. + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records the time necessary to successfully initialize the Nearby Share + public certificates database. Emitted once after sign-in when the Nearby + Share service starts. + + + + + cclem@chromium.org + nearby-share-chromeos-eng@google.com + + Record success rate of Nearby Share storage operation {Operation}. + + + + + + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records whether an attempt to establish a connection to a receiving device + succeeded or failed; cancellations are ignored. Emitted after the user + selects a device to send a payload to but before the payload begins its + transfer. Because the sending device initiates the connection--via the + Nearby Connections library--this metric is only emitted for outgoing + transfers. + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records whether an attempt to establish a connection to a receiving device + succeeded, failed, or was cancelled. Emitted after the user selects a device + to send a payload to but before the payload begins its transfer. Because the + sending device initiates the connection--via the Nearby Connections + library--this metric is only emitted for outgoing transfers. + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records the time necessary to successfully establish a connection to a + receiving device. Emitted after the user selects a device to send a payload + to but before the payload begins its transfer, and this is only emitted + after a successful connection is established. Because the sending device + initiates the connection--via the Nearby Connections library--this metric is + only emitted for outgoing transfers. + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records whether or not we able to retrieve the profile user name--think + email address--from the Chromebook's profile data. This value is sent to the + Nearby Share server to allow sharing with other devices logged in with the + same account. Emitted every time contacts are downloaded for use in Nearby + Share. Because contacts are not stored locally, contacts are periodically + downloaded for users with Nearby Share enabled and additionally whenever a + user enters Nearby Share settings or participates in a sharing flow. + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Contacts are downloaded in pages, i.e., multiple ListContactPeople RPC + request/responses. Records the {Result}. Emitted every time contacts are + downloaded for use in Nearby Share. Because contacts are not stored locally, + contacts are periodically downloaded for users with Nearby Share enabled and + additionally whenever a user enters Nearby Share settings or participates in + a sharing flow. + + + + + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records whether or not the full, possibly paginated contact download from + the Nearby server was successful. Emitted every time contacts are downloaded + for use in Nearby Share. Because contacts are not stored locally, contacts + are periodically downloaded for users with Nearby Share enabled and + additionally whenever a user enters Nearby Share settings or participates in + a sharing flow. + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records the result of each ListContactPeople RPC call to the Nearby Share + server. Emitted every time contacts are downloaded for use in Nearby Share. + Due to pagination, this is emitted for every page of contacts downloaded. + Because contacts are not stored locally, contacts are periodically + downloaded for users with Nearby Share enabled and additionally whenever a + user enters Nearby Share settings or participates in a sharing flow. + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records the number of {Type} contacts downloaded from the Nearby server. + Emitted every time contacts are downloaded for use in Nearby Share. Because + contacts are not stored locally, contacts are periodically downloaded for + users with Nearby Share enabled and additionally whenever a user enters + Nearby Share settings or participates in a sharing flow. + + + + + + + + + + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records the percentage of {Type} Emitted every time contacts are downloaded + for use in Nearby Share. Because contacts are not stored locally, contacts + are periodically downloaded for users with Nearby Share enabled and + additionally whenever a user enters Nearby Share settings or participates in + a sharing flow. + + + + + + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records the time spent {Result}. Emitted every time contacts are downloaded + for use in Nearby Share. Because contacts are not stored locally, contacts + are periodically downloaded for users with Nearby Share enabled and + additionally whenever a user enters Nearby Share settings or participates in + a sharing flow. + + + + + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records the device type that the user {Direction}. Emitted when a transfer + completes successfully, fails, or was aborted by the user, for example, by + cancelling the transfer. + + + + + + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records the delay between the start of the discovery session and {EndState}. + + + + + + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records the furthest state reached in a single Nearby Share discovery + session. Emitted when the per-session discovery manager is destroyed. + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records whether or not the selected share target on the Nearby Share + discovery page can be found in the per-session discovery manager's map of + discovered share targets. Emitted when the user selects a share target from + the discovery page and tries to proceed to the next step in the UI. + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records the number of share targets {Variation} in a single discovery + session. Emitted once during the discovery session. + + + + + + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records the result of {Operation}. Emitted immediately after the operation + is attempted for each discovery session. + + + + + + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records if the user has the Nearby Share feature enabled, and if not, + records why the feature is not enabled. For example, the feature is not + allowed by policy, or the user onboarded but later disabled the feature. + Emitted on sign-in and whenever the feature state changes, for instance, + from disabled to enabled. + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records the enabled/disabled state of Nearby Share. Emitted when the feature + state changes from disabled to enabled or vice versa. This can happen after + Nearby Share onboarding or when the user enables/disables the Nearby Share + feature toggle in Settings. + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records whether or not the device shared with is a known contact, i.e., + contact-based sharing. Emitted when a transfer completes successfully, + fails, or was aborted by the user, for example, by cancelling the transfer. + + + + + cclem@chromium.org + nearby-share-chromeos-eng@google.com + + Records the result of the async UpdateDevice API call to the Nearby Sharing + server when the device data updater makes a request. Recorded when the async + callback is invoked or when the call times out. + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records the data-transfer medium that the Nearby Connections library + successfully switches to during a Nearby Share transfer. Emitted when the + Nearby Connections library notifies the client of a bandwidth upgrade. + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records the result of Nearby Share starting a bandwidth upgrade via the + Nearby Connections library. This metric only records the result of + initiating the change not the result of fully finishing an upgrade. Also, + this metric does not capture automatic bandwidth upgrades initiated + internally by the Nearby Connections library. Emitted when the Nearby + Connections client explicitly requests a bandwidth upgrade. + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records if the transfer medium was successfully upgraded after an explicit + bandwidth upgrade request from the client. Emitted when the transfer channel + is disconnected after a bandwidth upgrade request was made by the client. + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records the time that it took the user to successfully complete the + onboarding flow. Only emitted on successful completion of onboarding. + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records how the user entered the onboarding flow. The options are from OS + Settings, the tray icon and the share sheet. Emitted as soon as the user + embarks on the one-time Nearby Share onboarding flow, regardless of whether + or not they successfully finish. + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records how users interacte with the onboarding flow. Emitted when users + embark the Nearby Share onboarding flow, click buttons during the process. + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records how far the user made it through the onboarding flow. The user has + an option to cancel onboarding on the device name page or visibility page. + Once the user confirms device visibility onboarding is complete. Emitted + when the user cancels onboarding during one of the steps or on successful + completion. + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records the attachment types from {Variation}. Emitted after all attachment + transfers conclude, successfully or not, for a given share target. + + + + + + + + + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records whether a payload transfer succeeded, failed, or was cancelled when + transmitted over {UpgradedMedium}. Emitted when the payload transfer + finishes, independent of whether the transfer was successful. + + + + + + + + + + + + + Removed in 10/2022. Now using + Nearby.Share.Payload{Operation}.Success{FilePath} to support different + operation and file path types. + + alanding@google.com + cros-sharesheet@google.com + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records if a payload transfer used an upgraded bandwidth medium, and if so, + which medium. Emitted when the payload transfer finishes, independent of + whether the transfer was successful. + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records if a payload transfer with {ShareTargetType} used an upgraded + bandwidth medium, and if so, which medium. Emitted when the payload transfer + finishes if over 5MB was transferred, independent of whether the transfer + was successful. + + + + + + + + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records the number of {Type} attachments intended to be sent in a Nearby + Share transfer. Emitted when the transfer concludes, successfully or not. + + + + + + + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records the total payload size of a Nearby Share transfer {Variation}. + Emitted when the transfer concludes. + + + + + + + + + + + + + + + + + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records the payload transfer rate of a Nearby Share transfer {Variation}. + Emitted when the transfer concludes. + + + + + + + + + + + + + + + + + + + + + alanding@google.com + cros-sharesheet@google.com + nearby-share-chromeos-eng@google.com + + Records the success/failure of a Nearby Share file {Operation} where the + file path is created within a mount point owned by file manager. Emitted + when the {Operation} on file(s) from {FilePath} are completed successfully + or with failure. + + + + + + + + + + + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records the reason Nearby Share advertising failed to start in {Mode} mode. + + + + + + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records the result of starting Nearby Share advertising in {Mode} mode. + + + + + + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records the time from initiating a send on a share target to sending the + introduction frame. This roughly measures the delay between choosing a share + target to initiate a transfer and displaying the accept/reject notification + on the receiving device. Emitted after the user selects a device when the + introduction frame has been sent, and this is only emitted after a + successful connection is established. This metric is only emitted for + outgoing transfers. + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records the time from accepting a share on the receiving device until the + first payload byte is processed. Emitted after accepting a share when the + first in progress payload transfer update is received. This metric is only + emitted for incoming transfers. + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records the final status of a Nearby Share transfer {Variation}. Emitted + when a transfer completes successfully, fails, or was aborted by the user, + for example, by cancelling the transfer. + + + + + + + + + + + + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records the success/failure of a Nearby Share transfer. Emitted when a + transfer completes successfully or definitively fails, but not for + indeterminate states like cancellation. + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records the success/failure of a Nearby Share {Direction} transfer with + {ShareTargetType} using {ContactStatus}. Emitted when a transfer completes + successfully or definitively fails, but not for indeterminate states like + cancellation. + + + + + + + + + + + + + + + + + + + pushi@google.com + nearby-share-chromeos-eng@google.com + + Records the user's chosen degree of visibility to their contacts, selected + during onboarding or updated in settings. Emitted at login for users that + have Nearby Share enabled. + + + + + crisrael@google.com + nearby-share-chromeos-eng@google.com + + Records the success/failure of the Wi-Fi Network Configuration Handler. When + Wi-Fi credentials are successfully received, the Configuration Handler will + attempt to configure that network automatically. Emitted immediately after + the transfer has completed and the Configuration Handler attempted to + configure the network. + + + + + + diff --git a/histograms/metadata/net/OWNERS b/histograms/metadata/net/OWNERS new file mode 100644 index 000000000000..0b42afee6eb2 --- /dev/null +++ b/histograms/metadata/net/OWNERS @@ -0,0 +1,8 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer the below owners for histograms in this directory (or +# chromium-metrics-reviews@google.com as a fallback). +csharrison@chromium.org +dschinazi@chromium.org +nidhijaju@chromium.org +toyoshim@chromium.org diff --git a/histograms/metadata/net/histograms.xml b/histograms/metadata/net/histograms.xml new file mode 100644 index 000000000000..674bc5fbd855 --- /dev/null +++ b/histograms/metadata/net/histograms.xml @@ -0,0 +1,5638 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + kristianm@chromium.org + agl@chromium.org + + Collected on Windows at startup. Records status for various virtual TPM + operations that Chrome artificially triggers on startup for measurement + purposes. Note that if new key creation fails, wrapped key creation and + message signing will not take place. + + + + + + + + + + + + + + kristianm@chromium.org + wfh@chromium.org + + Collected on Windows at startup. Records status for various TPM operations + that Chrome artificially triggers on startup for measurement purposes. Note + that if new key creation fails, wrapped key creation and message signing + will not take place. + + + + + + + + + + + + + + kristianm@chromium.org + agl@chromium.org + + Error code returned by NCryptCreatePersistedKey. One of the error codes from + https://learn.microsoft.com/en-us/windows/win32/com/com-error-codes-4. + + + + + kristianm@chromium.org + agl@chromium.org + + Error code returned by NCryptFinalizeKey. One of the error codes from + https://learn.microsoft.com/en-us/windows/win32/com/com-error-codes-4. + + + + + kristianm@chromium.org + agl@chromium.org + + Error code returned by NCryptOpenKey. One of the error codes from + https://learn.microsoft.com/en-us/windows/win32/com/com-error-codes-4. + + + + + kristianm@chromium.org + agl@chromium.org + + Error code returned by NCryptOpenStorageProvider. One of the error codes + from https://learn.microsoft.com/en-us/windows/win32/com/com-error-codes-4. + + + + + kristianm@chromium.org + agl@chromium.org + + Collected on Windows at startup. Records status for various virtual TPM + actions that Chrome artificially triggers on startup for measurement + purposes. Note that if new key creation fails, wrapped key creation and + message signing will not take place. + + + + + + + + + + + + + + + kristianm@chromium.org + wfh@chromium.org + + Collected on Windows at startup. Records status for various TPM actions that + Chrome artificially triggers on startup for measurement purposes. Note that + if new key creation fails, wrapped key creation and message signing will not + take place. + + + + + + + + + + + + + + + agl@chromium.org + davidben@chromium.org + wfh@chromium.org + + Collected on Windows at startup. Records whether a TPM is present and, if + so, what the best supported algorithm is. + + + + + kristianm@chromium.org + agl@chromium.org + + Collected on Windows at startup. Records whether a virtual and/or hardware + TPM is present. + + + + + morlovich@chromium.org + yhirano@chromium.org + + For every http cache transaction with a pattern (see HttpCache.Pattern), the + time from the first access to the disk cache until the transaction was done. + + + + + bashi@chromium.org + net-dev@chromium.org + + The time taken an HttpCache::Transaction to be added to ActiveEntry. It + roughly captures time to acquire a write lock for an disk cache. Recorded + every time a transaction (re)starts. Not recorded if the cache is + memory-backed. + + + + + morlovich@chromium.org + yhirano@chromium.org + + For http cache transactions in which a network request was sent, the time + elapsed between beginning the request and sending it over the network; this + is the time spent accessing the disk cache. + + + + + yhirano@chromium.org + net-dev@chromium.org + + The time taken to create a disk cache entry. Recorded when the entry is + created for the first time in the HttpCacheTransaction. Not recorded if the + cache is memory-backed. + + + + + bashi@chromium.org + blink-network-stack@google.com + + Whether or not a response has `Cache-Control: no-store`. Recorded when a + HTTP transaction is finished. This histogram is for {Type}. + + + + + + + + + shivanisha@chromium.org + jkarlin@chromium.org + + Max file size allowed to be cached in the http cache. This is logged at the + time the backend is created. + + + + + yhirano@chromium.org + net-dev@chromium.org + + The time taken to open a disk cache entry. Recorded when the entry is + created for the first time in the HttpCacheTransaction. Not recorded if the + cache is memory-backed. + + + + + morlovich@chromium.org + jkarlin@chromium.org + For each http cache transaction, the recorded pattern. + + + + nrosenthal@chromium.org + src/net/OWNERS + + The time between the prefetch has been saved to cache and the time it was + reused for the first time. Recorded when a request matches a previously + cached prefetch response. + + + + + nrosenthal@chromium.org + src/net/OWNERS + + For each request that matched a previously prefetched cached response, + record the cache state of the entry. - Is it the first reuse of the entry? - + Is it reused within the allotted time window? - Would the entry be + reused/revalidated if not for the prefetch time window? Recorded when a + request matches a previously cached prefetch response. + + + + + nrosenthal@chromium.org + src/net/OWNERS + + The time between the prefetch has been saved to cache and the time it was + reused, including subsequent attempts to reuse beyond the first. Recorded + when a request matches a previously cached prefetch response. + + + + + nrosenthal@chromium.org + src/net/OWNERS + + For each http cache transaction, recorded whether a restricted prefetch (a + cross-origin prefetch with as=document) was reused, when response read from + the cache completes. + + + + + bashi@chromium.org + blink-network-stack@google.com + + For each HTTP cache transaction, record total time spent {AccessType} the + disk cache. Recorded when a transaction finished. This histogram does not + record partial requests. + + + + + + + + + dschinazi@chromium.org + src/net/OWNERS + + Breakdown of the locations when SetBrokenAlternateProtocol is called. + + + + + dschinazi@chromium.org + src/net/OWNERS + + Breakdown of how requests which could potentially make use of an alternate + protocol use or don't use the protocol. + + + + + dschinazi@chromium.org + src/net/OWNERS + + Breakdown of how requests which could potentially make use of an alternate + protocol use or don't use the protocol, for connections to Google servers. + + + + + tbansal@chromium.org + dschinazi@chromium.org + src/net/OWNERS + + Positive net error codes that failed alternative protocol requests end with. + Recorded only when an alternative job fails, and the main job succeeds. + + + + + horo@chromium.org + src/net/OWNERS + + Positive net error codes that failed alternative protocol requests end with. + Recorded only when an DNS alpn H3 job fails, and the main job succeeds. + + + + + dschinazi@chromium.org + src/net/OWNERS + + Information about the AlternativeService used for each request. + + + + + martinkr@google.com + + Whether certificate validation was disabled for a set of public keys because + the --ignore-certificate-errors-spki-list switch was set on startup. + + + + + martinkr@google.com + + Whether certificate validation was disabled because the + --ignore-certificate-errors switch was set on startup. + + + + + estark@chromium.org + + This histogram is recorded every time Chrome successfully verifies a + certificate that chains to a private root. A value of true indicates that + the certificate contains the TLS Feature Extension, and false indicates that + it doesn't. + + + + + estark@chromium.org + + This histogram is recorded every time Chrome successfully verifies a + certificate that chains to a private root and the certificate contains the + TLS Feature Extension. A value of true indicates that the connection had an + OCSP response stapled, and a value of false indicates that it did not. + + + + + + + rsleevi@chromium.org + + The SHA-256 hash of the subjectPublicKeyInfo of the most-specific trust + anchor encountered in a successfully-verified certificate chain, during an + HTTP URL request. The associated root certificate can be looked up using + https://crt.sh/?spkisha256= . + + + + + + + rsleevi@chromium.org + + The SHA-256 hash of the subjectPublicKeyInfo of the most-specific trust + anchor encountered in a successfully-verified certificate chain, during + verification time. The associated root certificate can be looked up using + https://crt.sh/?spkisha256= . + + + + + + + rsleevi@chromium.org + + This histogram is recorded every time Chrome successfully validates a + certificate, but cannot determine a public trust anchor from the verified + chain. A value of true indicates that the trust anchor list is out of date, + as the OS believes a public trust anchor is being used, but the built-in + list does not know about this trust anchor, while a value of false indicates + that a public trust anchor was not used, thus there is no evidence that the + list is out of date. This histogram is temporary until the transition to a + unified root store (in source), at which point, the OS store will no longer + be consulted for known roots. + + + + + estark@chromium.org + rsleevi@chromium.org + + Time to verify the SCTs (Signed Certificate Timestamps) when setting up a + TLS connection. Recorded on each connection setup where at least one SCT is + verified. Histogram was expired between M70 and M97. Histogram is only + reported for clients with high resolution clocks. + + + + + estark@chromium.org + trusty-transport@chromium.org + + The origin breakdown of Signed Certificate Timestamps (SCTs). Emitted once + for every SCT when first validated, which means 0 or more times during every + SSL connection establishment. + + + + + estark@chromium.org + rsleevi@chromium.org + + Breakdown of Signed Certificate Timestamps (SCTs) validation status. Emitted + once for every SCT when first validated, which means 0 or more times during + every SSL connection establishment. + + + + + + Removed 2022-02. + + bcb@chromium.org + rsleevi@chromium.org + + While parsing an RSASSA-PSS signature algorithm, whether any invalid + parameters were encountered that currently are not enforced as parsing + errors. + + + + + mattm@chromium.org + hchao@chromium.org + + When initializing the builtin certificate verifier on Mac using the + DomainCacheFullCerts implementation of the system trust store integration, + this records how long it took to query the Mac keychain and initialize the + cache of intermediate certificates. + + + + + mattm@chromium.org + hchao@chromium.org + + When initializing the builtin certificate verifier on Mac using the + DomainCacheFullCerts or KeychainCacheFullCerts implementation of the system + trust store integration, this records the number of certificates that were + included in the cache of intermediate certificates. + + + + + mattm@chromium.org + hchao@chromium.org + + When initializing the builtin certificate verifier on Mac using the + DomainCacheFullCerts or KeychainCacheFullCerts implementation of the system + trust store integration, this records the number of certificates found in + the Mac keychain. + + + + + mattm@chromium.org + hchao@chromium.org + + When initializing the builtin certificate verifier on Mac using the + KeychainCacheFullCerts implementation of the system trust store integration, + this records the number of certificates found in the Mac keychain which had + trust records marking them as either trusted or distrusted. + + + + + mattm@chromium.org + hchao@chromium.org + + When the builtin certificate verifier is used on Mac and the platform + trusted certificates cache is initialized (or re-initialized if keychain + trust settings changed), records how long it took to initialize all the + trust domain caches. Only recorded by the DomainCacheFullCerts + implementation, which may or may not be used depending on Finch trial + parameters. + + + + + mattm@chromium.org + hchao@chromium.org + + When the builtin certificate verifier is used on Mac and the platform + trusted certificates cache is initialized (or re-initialized if keychain + trust settings changed), records the number of certificates read from the + {Domain} trust domain. Only counts certificates that were successfully + parsed. Only recorded by the DomainCacheFullCerts implementation, which may + or may not be used depending on Finch trial parameters. + + + + + + + + + + mattm@chromium.org + hchao@chromium.org + + When the builtin certificate verifier is used on Mac and the platform + trusted certificates cache is initialized (or re-initialized if keychain + trust settings changed), records how long it took to initialize both the + trust cache and the intermediates cache. Only recorded by the + DomainCacheFullCerts and KeychainCacheFullCerts implementations, which may + or may not be used depending on Finch trial parameters. + + + + + mattm@chromium.org + rsleevi@chromium.org + + Whether Name normalization was used in successfully validated certificate + chains, only recorded for chains ending in privately trusted roots. Suffixed + by the CertVerifyProc implementation. + + + + + mattm@chromium.org + rsleevi@chromium.org + + When using the builtin cert verifier, records the number of iterations taken + during path building for each attempted verification. + + + + + + + mattm@chromium.org + rsleevi@chromium.org + + The actual amount of time spent verifying a certificate using the underlying + cryptographic APIs. Because parallel verifications for the same certificate + may be coalesced, histograms such as Net.SSLCertVerificationTime may be + skewed, due to later verifications taking less overall time. This records + the overall time spent verifying the first job to capture initialization + costs. + + + + + + + rsleevi@chromium.org + mattm@chromium.org + + The actual amount of time spent verifying a certificate using the underlying + cryptographic APIs. Because parallel verifications for the same certificate + may be coalesced, histograms such as Net.SSLCertVerificationTime may be + skewed, due to later verifications taking less overall time. This records + the overall time spent verifying a single request, regardless of how many + parallel requests are being served by the verification. + + + + + mattm@chromium.org + rsleevi@chromium.org + + If the CertDualVerificationTrial is enabled, each certificate verification + associated with a (non-incognito) profile which is opted-in to SBER2(Scout) + will record the outcome of comparing the primary verifier and secondary + verifier results. + + + + + dschinazi@chromium.org + src/net/OWNERS + + Application protocol used for main frame resources. Logged by the renderer + only for request that accessed the network and have received response + headers. + + + + + dschinazi@chromium.org + src/net/OWNERS + + Application protocol used for subresources (resources other than main + frame). Logged by the renderer only for request that accessed the network + and have received response headers. + + + + + mef@chromium.org + pauljensen@chromium.org + + For each CONTENT_DECODING_FAILED, record the filter that failed. + + + + + toyoshim@chromium.org + src/services/network/OWNERS + + The distribution of CORS access check results. This reports whenever CORS + AccessCheck runs. This is recorded when a CORS enabled request receives a + response and completes CORS checks. + + + + + carlosil@chromium.org + estark@chromium.org + toyoshim@chromium.org + src/services/network/OWNERS + + The distribution of CORS access check results for not potentially + trustworthy requestors. This reports whenever CORS AccessCheck runs and the + requesting site origin is not potentially trustworthy. + + + + + toyoshim@chromium.org + src/services/network/OWNERS + + The distribution of the key size in the CORS preflight cache. This counts + each key size when a new entry is added to the cache. + + + + + toyoshim@chromium.org + src/services/network/OWNERS + + The distribution of the CORS preflight cache query results. This counts on + each cache query. + + + + + toyoshim@chromium.org + src/services/network/OWNERS + + The distribution of CORS error types on preflight requests. This reports + whenever CORS checks detect an error on a preflight request. The + InvalidResponse case corresponds to net errors for which there was no CORS + error, e.g. CONNECTION_REFUSED, NX_DOMAIN, etc. + + + + + titouan@chromium.org + clamy@chromium.org + src/services/network/OWNERS + + The distribution of CORS error types on preflight requests which are treated + as warnings. This reports whenever CORS checks detect an error on a + preflight request without failing the whole original network request, due to + being configured to ignore these failures. + + + + + dschinazi@chromium.org + src/net/OWNERS + + The number of broken alternative services loaded from the prefs file on + startup. Alternative services allow an origin server to specify additional + means of interacting with it on the network. A broken alternative service is + one whose most recent connection attempt failed and whose retry timeout + period has not yet expired. Recorded when broken alternative services are + loaded from the prefs file on startup. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + This counts the number of server configs persisted in prefs file. + + + + + dschinazi@chromium.org + src/net/OWNERS + + The number of recently broken alternative services loaded from the prefs + file on startup. Alternative services allow an origin server to specify + additional means of interacting with it on the network. A recently broken + alternative service is one whose most recent connection attempt failed. + Recorded when broken alternative services are loaded from the prefs file on + startup. + + + + + horo@chromium.org + src/net/OWNERS + + Whether or not `prefs::kAdditionalDnsQueryTypesEnabled` is enabled. Recorded + at startup if disabled or whenever Chrome is believed to be + enterprise-managed (per the same detection as the default disabling of DoH). + Measures whether or not enterprise admins are setting the disable, + potentially due to issues encoutered with HTTPS/INTEGRITY query experiments. + + + + + horo@chromium.org + src/net/OWNERS + + Whether or not the DNS configuration read from a nsswitch.conf file is + considered compatible with Chrome, that is that the configuration did not + contain any options that Chrome is unable to support using the built-in + resolver. Reported whenever a nsswitch.conf file is read by Chrome. + + + + + horo@chromium.org + src/net/OWNERS + + Counter enum recorded whenever `net::DnsConfigService` detects a change to + the nsswitch.conf DNS configuration file. + + + + + horo@chromium.org + src/net/OWNERS + + Whether or not the "hosts:" database was found in an nsswitch.conf + DNS configuration file. Reported whenever Chrome has successfully read the + nsswitch.conf file and is beginning to attempt to parse it. + + + + + horo@chromium.org + src/net/OWNERS + + Enumeration of the nsswitch.conf service that caused a compatibility issue, + leading to the nsswitch.conf DNS configuration being considered incompatible + with Chrome. Only emitted when a specific token is present in the + nsswitch.conf file, causing the incompatibility, e.g. because the service is + always incompatible with Chrome or because the service is configured with + incompatible actions. + + + + + + Deprecated 2022-20. As of M108, NIS is treated as incompatible. Instances + where it was the cause of incompatibility will be recorded in + Net.DNS.DnsConfig.Nsswitch.IncompatibleService. + + horo@chromium.org + src/net/OWNERS + + Whether or not NIS service is registered in the "hosts:" database + of an nsswitch.conf. Recorded when a resolv.conf file is successfully read + by Chrome and the DNS configuration read from the resolv.conf file is + considered compatible with Chrome. + + + + + horo@chromium.org + src/net/OWNERS + + Whether or not an attempt to read nsswitch.conf succeeded. May fail due to + missing file or filesystem issues, but does not consider it a failure if the + file is larger than the size limit (see Net.DNS.DnsConfig.Nsswitch.TooLarge + for that case). Reported for all attempts to read nsswitch.conf. + + + + + horo@chromium.org + src/net/OWNERS + + Whether or not an attempt to read nsswitch.conf failed due to the file size + being unreasonably large. Reported for all attempts to read nsswitch.conf. + + + + + horo@chromium.org + src/net/OWNERS + + Whether or not the DNS configuration read from a resolv.conf file is + considered compatible with Chrome, that is that the configuration did not + contain any options that Chrome is unable to support using the built-in + resolver. Reported whenever a resolv.conf file is successfully read by + Chrome. + + + + + horo@chromium.org + src/net/OWNERS + + Counter enum recorded whenever `net::DnsConfigService` detects a change to + the resolv.conf DNS configuration file. + + + + + horo@chromium.org + src/net/OWNERS + + Whether or not an attempt to read resolv.conf succeeded and produced a + `__res_state` struct for Chrome to attempt to use. Reported on all attempts + to read the configuration. + + + + + horo@chromium.org + src/net/OWNERS + + Whether or not the DNS configuration read from a resolv.conf file is + considered "valid", that is that it contains at least one DNS + server. Reported whenever a resolv.conf file is successfully read by Chrome. + + + + + horo@chromium.org + doh-core@google.com + + Records details of the secure DNS mode used to configure the host resolver + at construction of the network service. + + + + + horo@chromium.org + src/net/OWNERS + + Enumeration of whether or not the DNS configuration setting of Windows is + considered compatible with Chrome and the reason why it is considered + incompatible. Reported whenever the DNS configuration setting of Windows is + read by Chrome. + + + + + horo@chromium.org + net-dev@chromium.org + + The number of hosts parsed from a Hosts file. Reported whenever a Hosts file + is read and parsed. + + + + + horo@chromium.org + net-dev@chromium.org + + Estimated memory usage to keep the parsed result of a Hosts file. Reported + whenever a Hosts file is read and parsed. + + + + + horo@chromium.org + net-dev@chromium.org + + The file size of a Hosts file. Reported whenever a Hosts file is read. + + + + + awillia@chromium.org + doh-core@google.com + + Status of HTTPS DNS records received as additional records in a DnsTask + querying for HTTPS. This would represent a recurssive resolver that is + HTTPS-aware and performing followup queries on behalf of the client. + Recorded as DNS responses are parsed. + + + + + awillia@chromium.org + doh-core@google.com + + Status of HTTPS DNS records received as additional records in a DnsTask + querying for a type other than HTTPS. Recorded as DNS responses are parsed. + + + + + + Removed in crrev.com/c/1355602. + + pauljensen@chromium.org + mef@chromium.org + + Counts of specific error codes returned by DnsTask if a subsequent + HostResolverSystemTask succeeded. + + + + + horo@chromium.org + src/net/OWNERS + + Duration of time taken by DnsTask (the grouping of all individual DNS + queries for a single instance of resolving a name) in resolutions that + succeeded. + + + + + horo@chromium.org + src/net/OWNERS + + Enumeration of whether or not an HTTPS (SVCB) record transaction succeeded + and whether or not any failure is fatal to the DnsTask. Recorded for all + completed HTTPS record transactions. + + + + + horo@chromium.org + src/net/OWNERS + + Enumeration of the logic path used (e.g. different protocols) for each + started DnsAttempt (the representation of an individual network request to a + DNS server). + + + + + + + awillia@chromium.org + doh-core@google.com + + Duration of time taken by an insecure DnsTransaction to fail. + + + + + + + awillia@chromium.org + doh-core@google.com + + Duration of time taken by an insecure DnsTransaction to succeed. + + + + + + + awillia@chromium.org + doh-core@google.com + + Counts of specific error codes returned by secure DnsTransactions to a DoH + server that is unavailable or has unknown availability. These transactions + may be probe queries or queries issued in the secure DNS mode. + + + + + + + awillia@chromium.org + doh-core@google.com + + Duration of time taken by a secure DnsTransaction to a DoH server that is + unavailable or has unknown availability to fail. These transactions may be + probe queries or queries issued in the secure DNS mode. + + + + + + + awillia@chromium.org + doh-core@google.com + + Duration of time taken by a secure DnsTransaction to a DoH server that is + unavailable or has unknown availability to succeed. These transactions may + be probe queries or queries issued in the secure DNS mode. + + + + + + + awillia@chromium.org + doh-core@google.com + + Counts of specific error codes returned by secure DnsTransactions to an + available DoH server. A DoH server is available if a probe has been + successfully completed and fewer than a threshold amount of failures have + occurred. + + + + + + + awillia@chromium.org + doh-core@google.com + + Duration of time taken by a secure DnsTransaction to an available DoH server + to fail. A DoH server is available if a probe has been successfully + completed and fewer than a threshold amount of failures have occurred. + + + + + + + awillia@chromium.org + doh-core@google.com + + Duration of time taken by a secure DnsTransaction to an available DoH server + to succeed. A DoH server is available if a probe has been successfully + completed and fewer than a threshold amount of failures have occurred. + + + + + + + horo@chromium.org + src/net/OWNERS + + Enumerated status of the reason why the built-in DNS resolver has detected a + "low entropy" situation for DNS over UDP and has switched to DNS + over TCP. + + + + + + Replaced by Net.DNS.H3SupportedGoogleHost.TaskTypeMetadataAvailability2 on + 2022-12. + + horo@chromium.org + src/net/OWNERS + + The succeeded DNS Task type of HostResolverManager::Job (the basic internal + unit of work for non-local host resolutions, potentially merging redundant + requests from Chrome) that succeeded with or without valid HTTPS DNS + metadata. This is recorded when a DNS Job succeeded for a domain if the + domain is one of Google hosts which that is expected to have valid HTTPS DNS + metadata with HTTP/3 support. + + + + + horo@chromium.org + src/net/OWNERS + + The succeeded DNS Task type of HostResolverManager::Job (the basic internal + unit of work for non-local host resolutions, potentially merging redundant + requests from Chrome) that succeeded with or without valid HTTPS DNS + metadata. This is recorded for successful https- or wss-schemed queries to a + set of Google hosts expected to have HTTPS DNS metadata, if the query type + requests the HTTPS record. + + + + + horo@chromium.org + davidben@chromium.org + src/net/OWNERS + + Records which RCODE the DNS server specified when it responded to our HTTPS + query. If the query timed out before getting a response, + "TimedOut" is recorded instead of an RCODE value. Histograms are + emitted at the completion of a DnsTask's final transaction. + + + + + + horo@chromium.org + davidben@chromium.org + src/net/OWNERS + + Indicates whether the result of an HTTPS query was validly parsable or + mangled. Only recorded when DnsRcode indicates NoError. Histograms are + emitted at the completion of a DnsTask's final transaction. + + + + + + horo@chromium.org + davidben@chromium.org + src/net/OWNERS + + Records true when we receive an HTTPS record and an error RCODE at the same + time. Only recorded for true. Histograms are emitted at the completion of a + DnsTask's final transaction. + + + + + + horo@chromium.org + davidben@chromium.org + src/net/OWNERS + + Records how many ms the DNS server took to respond to address queries. + Histograms are emitted at the completion of a DnsTask's final transaction. + + + + + + horo@chromium.org + davidben@chromium.org + src/net/OWNERS + + Records how many ms the DNS server took to respond to an HTTPS query. + Histograms are emitted at the completion of a DnsTask's final transaction. + + + + + + horo@chromium.org + davidben@chromium.org + src/net/OWNERS + + Records a ratio indicating the relative HTTPS query resolve time compared to + the slower A or AAAA resolve time, where A/AAAA/HTTPS belong to the same + DnsTask. Multiply this value by 10 to obtain a percentage P. The HTTPS query + completed in roughly P% of the slower A/AAAA resolve time. Values smaller + than 10 indicate that HTTPS query was faster than A/AAAA. Values larger than + 10 indicate that the HTTPS query was slower than A/AAAA. Histograms are + emitted at the completion of a DnsTask's final transaction. + + + + + + horo@chromium.org + src/net/OWNERS + + Duration of time taken by an insecure DnsTask in resolutions that failed. + + + + + horo@chromium.org + net-dev@chromium.org + + The duration of time DnsTransactions spend waiting to be started by a + DnsTask, aggregated by HostResolverManager::Job. This metric is only + recorded when the Job failed. + + + + + horo@chromium.org + net-dev@chromium.org + + The duration of time a DnsTransaction spends waiting to be started by a + DnsTask. The dominant factor is likely the time spent waiting for other + DnsTransactions to complete, i.e. waiting for DnsTask::StartNextTransaction + to be invoked by the dispatcher. If there were no limit on the number of + concurrent DNS queries, we would expect this metric to be near zero. + + + + + horo@chromium.org + net-dev@chromium.org + + The duration of time DnsTransactions spend waiting to be started by a + DnsTask, aggregated by HostResolverManager::Job. This metric is only + recorded when the Job succeeded. + + + + + awillia@chromium.org + doh-core@google.com + + Duration of time taken by a probe attempt to fail. The time is measured + since the probe sequence was initiated due to a DNS config change. + + + + + awillia@chromium.org + doh-core@google.com + + Duration of time taken by a probe attempt to succeed. The time is measured + since the probe sequence was initiated due to a DNS config change. + + + + + awillia@chromium.org + doh-core@google.com + + Duration of time taken by a probe attempt to fail. The time is measured + since the probe sequence was initiated due to a network change. + + + + + awillia@chromium.org + doh-core@google.com + + Duration of time taken by a probe attempt to succeed. The time is measured + since the probe sequence was initiated due to a network change. + + + + + + + horo@chromium.org + src/net/OWNERS + + Duration of HostResolver requests from Start() until completion. Includes + requests resolved synchronously using fast local sources, e.g. from cache, + recorded as 0. Excludes speculative requests. + + + + + + + horo@chromium.org + src/net/OWNERS + + Duration of HostResolver requests from Start() until completion. Excludes + speculative requests and requests resolved using fast local sources, e.g. + from cache. + + + + + + + horo@chromium.org + src/net/OWNERS + + Whether a HostResolverManager::Job (the basic internal unit of work for + non-local host resolutions, potentially merging redundant requests from + Chrome) succeeded or failed, and whether it was speculative. + + + + + + + horo@chromium.org + src/net/OWNERS + + For DNS resolutions that failed after less than 10 ms, which are probably + local failures, what error code the jobs failed with. + + + + + + + horo@chromium.org + src/net/OWNERS + + For DNS resolutions that failed after at least 10 ms, which are probably + remote failures or connectivity problems, what error code the jobs failed + with. + + + + + + + horo@chromium.org + src/net/OWNERS + + Duration of time taken by HostResolverManager::Job (the basic internal unit + of work for non-local host resolutions, potentially merging redundant + requests from Chrome) in resolutions that failed. This is the time to + resolve a hostname from start to finish. Excludes jobs where all requests + are speculative. + + + + + + + horo@chromium.org + src/net/OWNERS + + Duration of time taken by HostResolverManager::Job (the basic internal unit + of work for non-local host resolutions, potentially merging redundant + requests from Chrome) in resolutions that succeeded. This is the time to + resolve a hostname from start to finish. Excludes jobs where all requests + are speculative. + + + + + bashi@chromium.org + chrome-network-stack@google.com + + Time difference between the first address record (A or AAAA) and HTTPS + record were resolved. Recorded when an address record was resolved before + HTTPS record and the address record was resolved {Bucket}. + + + + + + bashi@chromium.org + chrome-network-stack@google.com + + Time difference between A and AAAA records were resolved. Recorded when + {Variant}, and the first one was resolved {Bucket}. + + + + + + + + + + horo@chromium.org + doh-core@google.com + + Duration of time taken by HostResolverManager::Job (the basic internal unit + of work for non-local host resolutions, potentially merging redundant + requests from Chrome) in resolutions for in AUTOMATIC secure DNS mode. + Excludes jobs where all requests are speculative. + + + + + horo@chromium.org + doh-core@google.com + + Duration of time taken by HostResolverManager::Job (the basic internal unit + of work for non-local host resolutions, potentially merging redundant + requests from Chrome) in resolutions for in OFF secure DNS mode. Excludes + jobs where all requests are speculative. + + + + + horo@chromium.org + doh-core@google.com + + Duration of time taken by HostResolverManager::Job (the basic internal unit + of work for non-local host resolutions, potentially merging redundant + requests from Chrome) in resolutions for in SECURE secure DNS mode. Excludes + jobs where all requests are speculative. + + + + + awillia@chromium.org + doh-core@google.com + + Duration of time taken by a secure DnsTask in resolutions that failed that + were issued in AUTOMATIC mode. Excludes time spent in the subsequent + fallback. + + + + + horo@chromium.org + doh-core@google.com + + Duration of time taken by a secure DnsTask in resolutions that failed that + were issued in SECURE mode. + + + + + horo@chromium.org + src/net/OWNERS + + Duration of time taken by HostResolverSystemTask (the grouping of all + individual DNS queries for a single instance of resolving a name using the + system resolver) in resolutions that failed. + + + + + horo@chromium.org + src/net/OWNERS + + Duration of time taken by HostResolverSystemTask (the grouping of all + individual DNS queries for a single instance of resolving a name using the + system resolver) in resolutions that succeeded. + + + + + + + horo@chromium.org + doh-core@google.com + + Provider in a user-initiated dropdown change event that occured when this + provider was one of the dropown options. + + + + + awillia@chromium.org + doh-core@google.com + + Records the outcome of a DoH probe attempt on the first valid entry in the + custom text field. + + + + + awillia@chromium.org + doh-core@google.com + + Records the outcome of a formatting validation attempt on the custom text + field. + + + + + horo@chromium.org + doh-core@google.com + + True if upgrade to DoH from a DoT hostname was attempted and succeeded. + False if it was attempted and failed. + + + + + horo@chromium.org + doh-core@google.com + + True if there was at least one public nameserver during an attempt to + upgrade to DoH from insecure DNS. False if there were no public nameservers + during an attempt to upgrade to DoH from insecure DNS. + + + + + horo@chromium.org + doh-core@google.com + + True if upgrade to DoH was not attempted because the DoH config was already + specified. False if upgrade to DoH was not attempted for some other reason. + + + + + awillia@chromium.org + doh-core@google.com + + True if upgrade to DoH was not attempted because of unhandled options in the + system config. False if upgrade to DoH was not attempted for some other + reason. Emitted each time the DnsConfig is updated. + + + + + horo@chromium.org + doh-core@google.com + + True if upgrade to DoH from insecure DNS was attempted and succeeded. False + if it was attempted and failed. + + + + + + + mmenke@chromium.org + + The time measured before starting DNS lookup until after the connection is + complete. + + + + + mmenke@chromium.org + src/net/network_error_logging/OWNERS + + The outcome of a Domain Reliability beacon, logged upon destruction of the + beacon. + + + + + + + mmenke@chromium.org + + Positive net error codes that requests for pages end with, including net::OK + and net::ERR_ABORTED. This only counts loads in "main frames" for + https://www.google.com (it does not for example count the error codes for + subresoures on a page). It excludes main frame navigations that are + converted to downloads (unless they fail / are aborted before it's known + that they would be a download), and requests handled externally (like mailto + links). + + + + + skonig@chromium.org + hbengali@chromium.org + + Net error codes that requests for images end with, including net::OK and + net:ERR_ABORTED. + + + + + cmfcmf@chromium.org + peletskyi@chromium.org + + Positive net error codes that HTTP requests using the isolated-app: URL + scheme end with, including net::OK and net::ERR_ABORTED. + + + + + + + mmenke@chromium.org + + Positive net error codes that requests for pages end with, including net::OK + and net::ERR_ABORTED. This only counts loads in "main frames" (it + does not for example count the error codes for subresoures on a page). It + excludes main frame navigations that are converted to downloads (unless they + fail / are aborted before it's known that they would be a download), and + requests handled externally (like mailto links). + + + + + + + mmenke@chromium.org + + Net error codes that requests for "subresources" end with, + including net::OK and net::ERR_ABORTED. + + + + + edwardjung@chromium.org + src/net/OWNERS + + Counts of various events that can occur on the network error page. Note that + this histogram enum buckets are not mutually exclusive and so a single error + page load might report samples into multiple ones. Each bucket has + descriptions that further explain the context of their samples. + + + + + sclittle@chromium.org + offline-dev@chromium.org + + Counts of the type of offline content suggestions clicked on the network + error page. Reported upon click. + + + + + sclittle@chromium.org + offline-dev@chromium.org + + Counts of the type of offline content suggestions shown on the network error + page. Multiple suggestions can be shown at the same time. Reported when the + suggestions are presented. + + + + + finnur@chromium.org + alexbn@chromium.org + + Counts the number of times web apps receive `ERR_INTERNET_DISCONNECTED` and + the alternative error page (rather than the dino) is shown. Reported when + the error page html is being prepared. See + `NetErrorHelper::GenerateLocalizedErrorPage` (crbug.com/1280518). + + + + + estark@chromium.org + trusty-transport@chromium.org + + Recorded whenever headers are received on an HTTP response. True if an + Expect-CT header was present on the response, and false otherwise. + + + + + yyanagisawa@chromium.org + chrome-loading@google.com + + Records check points in the `BodyConsumerBase` class have been executed. + This metrics is for investigating crbug.com/1431885. + + + + + yyanagisawa@chromium.org + chrome-loading@google.com + + Records check points in the `FetchManager::Loader` class have been executed. + This metrics is for investigating crbug.com/1431885. + + + + + + Removed 2023-01. The workaround is now effectively disabled in Chromium (but + not Cronet, as of writing), and the latest Chromium-side metrics report + 0.00% of devices are still affected. + + davidben@chromium.org + + Records, on startup, for ARM devices running Android, whether the CPU is + known to have a broken NEON unit. See https://crbug.com/341598. + + + + + mmenke@chromium.org + src/net/OWNERS + + Whether NTLMv2 was enabled for an authentication handshake. For a given data + set the number of samples here is expected to be equivalent to the + "NTLM Start" count in the "Net.HttpAuthCount" histogram. + Note that NTLMv2 being enabled makes the client behavior equivalent to + setting LmCompatibilityLevel to 3 or higher. + + + + + meacer@chromium.org + src/chrome/browser/ui/login/OWNERS + Type of the HTTP auth prompt displayed. + + + + Please list the metric's owners. Add more owner tags as needed. + Length of time that a received resource will be cacheable. + + + + bengr@chromium.org + + The difference between the size specified in the X-Original-Content-Length + header and the size of the response body. Only includes resources that have + the X-Original-Content-Length header. + + + + + + + bengr@chromium.org + + Size of the response body. This is the actual number of bytes received, + which usually agrees with but is not necessarily the same as the size + specified by the Content-Length header. Replaces Net.HttpContentLength, + recording non-DRP Http traffic as "Http.Direct" instead of + "Http.Other". + + + + + tsepez@chromium.org + + Count of requests which contained a basic auth username and password + embedded in the URL itself. + + + + + cfredric@chromium.org + kaustubhag@chromium.org + + Counts the HTTP requests which involve reading from the cookie jar to + construct a Cookie header vs. the HTTP requests which are disallowed from + including a Cookie header. + + + + + fayang@chromium.org + src/net/quic/OWNERS + + Wait time of main job while there is an available SPDY session but no QUIC + session. + + + + + fayang@chromium.org + src/net/quic/OWNERS + + Wait time of main job while there is no available SPDY session and no QUIC + session. + + + + + jkarlin@chromium.org + shivanisha@chromium.org + src/net/OWNERS + + Total prefilter (e.g., before decompression) bytes read for an HttpJob + request. + + + + + + + + + + rch@chromium.org + + Scheme of the proxy server used by an HTTP job that failed, or SCHEME_DIRECT + if not proxy was used. + + + + + rch@chromium.org + + Scheme of the proxy server used by an HTTP job that succeeded, or + SCHEME_DIRECT if not proxy was used. + + + + + + + mmenke@chromium.org + + Time it takes to complete an HttpJob, from starting the transaction until we + are done reading. + + + + + davidben@chromium.org + trusty-transport@chromium.org + + Time it takes to complete an HttpJob, from starting the transaction until we + are done reading, if the response was received over TLS 1.3 and TCP. This is + recorded to measure the impact of 0-RTT. + + + + + davidben@chromium.org + trusty-transport@chromium.org + + Time it takes to complete an HttpJob to a Google host, from starting the + transaction until we are done reading, if the response was received over TLS + 1.3 and TCP. This is recorded to measure the impact of 0-RTT. + + + + + + + mmenke@chromium.org + + Time it takes to complete an HttpJob, from starting the transaction until we + are done reading, for jobs served from the cache. + + + + + + + mmenke@chromium.org + + Time it takes to complete an HttpJob, from starting the transaction until + the job is killed. Note that we didn't detect the end of the data for this + job. + + + + + + + mmenke@chromium.org + + Time it takes to complete an HttpJob, from starting the transaction until we + are done reading, for jobs not served from the cache. + + + + + + + mmenke@chromium.org + + Time it takes to complete an HttpJob, from starting the transaction until we + are done reading, for jobs when we read until no more data is available. + + + + + + + bengr@chromium.org + + Net.HttpOriginalContentLength with non-data reduction proxy traffic properly + labeled with the "Direct" suffix. + + Size specified in the X-Original-Content-Length header. If this header is + not present in the response, the size of the response body is used. Replaces + Net.HttpOriginalContentLength, breaking down traffic by Direct, ViaDRP, + Bypassed, and Other. + + + + + bengr@chromium.org + + Size specified in the X-Original-Content-Length header. Only includes + resources that have the X-Original-Content-Length header. + + + + + dschinazi@chromium.org + tbansal@chromium.org + src/net/OWNERS + + Time taken to establish the connection to the HTTP proxy. Note that the + histogram expired briefly for M-86 and M-87 non-stable versions. Exact + counts during that period may not be meaningful. + + + + + + + mmenke@chromium.org + The count of HTTP Response codes encountered. + + + + mmenke@chromium.org + src/net/OWNERS + + The total number of ServerInfo structs written to the network service's + prefs file, recorded each time the HttpServerProperties are serialized to + update the copy stored on disk. + + + + + + + mmenke@chromium.org + + Time from when an HTTP request is issued to when the first byte is + processed. + + + + + davidben@chromium.org + trusty-transport@chromium.org + + Time from when an HTTP request is issued to when the first byte is + processed, if the response was not cached and received over TLS 1.3 and TCP. + This is recorded to measure the impact of 0-RTT. + + + + + davidben@chromium.org + trusty-transport@chromium.org + + Time from when an HTTP request to a Google host is issued to when the first + byte is processed, if the response was not cached and received over TLS 1.3 + and TCP. This is recorded to measure the impact of 0-RTT. + + + + + morlovich@chromium.org + wicarr@microsoft.com + webmedia@microsoft.com + + Records decision points on whether response-side media content will be + cached or not. This is determined after receiving the HTTP response headers + and before attempting to write the the cache. + + + + + davidben@chromium.org + src/third_party/boringssl/OWNERS + + Records, on startup, for ARM devices running Android, whether the kernel is + missing AT_HWCAP2 from the ELF auxv and /proc/cpuinfo reports support for + ARMv8 features. Those features should also be reported in AT_HWCAP2. This is + to measure the workaround in https://crbug.com/boringssl/46. + + + + + fbeaufort@chromium.org + src/net/OWNERS + + The new network connection cost any time a change to the device's active + default network is observed. + + + + + dschinazi@chromium.org + src/net/OWNERS + + The new network connection type any time a change to the device's active + default network is observed. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + When Network Error Logging observes a completed request of signed exchange + that might generate a report, what happens to it. NEL observes all requests, + both successful and unsuccessful. It sends reports for successful and + unsuccessful requests at specified sampling rates so that error rates can be + calculated. Insecure requests are discarded for having an insecure origin + regardless of existence of a policy for the origin. + + + + + horo@chromium.org + src/net/OWNERS + Log the reason when HttpNetworkTransaction retries. + + + + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of QUIC sessions when the QuicStreamFactory is destroyed. + + + + + amanvr@chromium.org + carlscab@chromium.org + woa-performance@google.com + + Records the number of times OnTransferSizeUpdated is called from different + overriding methods. This UMA is useful to understand the distribution of + calls being made to this method and will help see the reductions in IPC when + we implement a prototype (b/257057692) where we remove unnecessary + URLLoaderClient::OnTransferSizeUpdated IPCs. + + + + + jkarlin@chromium.org + + Bytes read for requests that were served from a cache entry whose + unused_since_prefetch bit is true. + + + + + jkarlin@chromium.org + + Number of bytes read from the network on behalf of prefetch requests. This + is prefilter, so before any decompression. + + This applies to requests with RESOURCE_TYPE_PREFETCH. + + + + + dschinazi@chromium.org + + The time taken from requesting a PAC script to receiving the first byte of + the response body on successful fetches. This does not include time spent + doing proxy auto-discovery, or failed attempts at retrieving PAC scripts. If + the response body was empty, this measures the total time to fetch the + (empty) response body. + + + + + dschinazi@chromium.org + + The time taken to successfully fetch a PAC script. This does not include + time spent doing proxy auto-discovery, or failed attempts at retrieving PAC + scripts. + + + + + estark@chromium.org + + A validated certificate chain may be subject to additional pinning + requirements on a per-domain basis. When pinning requirements are violated, + Chrome attempts to send a report about the incident. This records the net + error code when sending a pinning violation report fails. + + + + + agl@chromium.org + + A validated certificate chain may be subject to additional + "pinning" requirements on a per-domain basis. This records the + fraction of successful matches between a certificate chain and a pin list. + + + + + bnc@chromium.org + src/net/OWNERS + + Information about the value of the Vary response header in HTTP/2 pushed + streams. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of active QUIC sessions before we activate a new QUIC session. + + Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may + be missing. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Tracks the number of QUIC alt-svc advertisements parsed by Chrome in Google + format vs in IETF format. + + + + + renjietang@chromium.org + src/net/OWNERS + + Log the connection error code when QUIC stream handle closes. + + + + + renjietang@chromium.org + src/net/OWNERS + Log the net error code when QUIC stream handle closes. + + + + renjietang@chromium.org + src/net/OWNERS + Log the stream error code when QUIC stream handle closes. + + + + renjietang@chromium.org + src/net/OWNERS + Log success rate of processing trailing headers. + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The reason for the existing path validation when a new multi-port path + creation is attempted but failed because of existing validation. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The status of the multi-port path when the client initiates the migration. + + + + + wub@chromium.org + src/net/quic/OWNERS + + The write result returned by the packet writer when the connection attempts + to write a packet. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of active sessions that are degrading on network changes. The + suffix specifies the network change. Emitted when there are more than one + active sessions. + + The histogram is emitted when a network change happens which could affect + the current default network, which includes the default network being + changed, alternate networks being connected. It, however, doesn't emit when + disconnecting an alternate network because that does not affect the current + default network. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of active QUIC sessions when a network change is detected. The + suffix specifies the network change. + + The histogram is emitted when a network change happens which could affect + the current default network, which includes the default network being + changed, alternate networks being connected. It, however, doesn't emit when + disconnecting an alternate network because that does not affect the current + default network. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of all sessions that detectes path degradation until a network + change happens, including both active sessions and closed sessions. The + suffix specifies the network change. + + The histogram is emitted when a network change happens which could affect + the current default network, which includes the default network being + changed, alternate networks being connected. It, however, doesn't emit when + disconnecting an alternate network because that does not affect the current + default network. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The total number of sessions that reports path degradation before a network + change happens, including both still active sessions and closed sessions. + + The histogram is emitted when a network change happens which could affect + the current default network, which includes the default network being + changed, alternate networks being connected. It, however, doesn't emit when + disconnecting an alternate network because that does not affect the current + default network. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of total sessions that has been tracked since the first + speculative error, including both active and closed sessions. Only recorded + if non-zero. + + The histogram is emitted when a network change happens which could affect + the current default network, which includes the default network being + changed, alternate networks being connected. It, however, doesn't emit when + disconnecting an alternate network because that does not affect the current + default network. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of total sessions that has been closed due to + QUIC_PACKET_WRITE_ERROR before first path degradation detection. + + The histogram is emitted when session path degrading is detected for the + first time on the current network and there was a session closed with a + speculative signal (QUIC_PACKET_WRITE_ERROR). + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The percentage of active sessions that are degrading on network changes. The + suffix specifies the network change. Emitted when there are at least two + active sessions. + + The histogram is emitted when a network change happens which could affect + the current default network, which includes the default network being + changed, alternate networks being connected. It, however, doesn't emit when + disconnecting an alternate network because that does not affect the current + default network. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The percentage of all sessions that detectes path degradation until a + network change happens, including both active sessions and closed sessions. + Always emit 0 when there is no session reporting path degrading to speculate + a connectivity failure on the current network. The suffix specifies the + network change. + + The histogram is emitted when a network change happens which could affect + the current default network, which includes the default network being + changed, alternate networks being connected. It, however, doesn't emit when + disconnecting an alternate network because that does not affect the current + default network. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + When a packet write error is detected by the session, if path degradation + has been detected already on the same session. + + The histogram is emitted when a session encounters a QUIC_PACKET_WRITE_ERROR + and is soon to be closed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Tracks failure reasons to read/load/write of QuicServerInfo to and from disk + cache. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The reason a QUIC packet could not be processed, logged for each dropped + packet. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of QUIC packets received by a QUIC connection whose handshake was + not confirmed when that connection is closed. + + Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may + be missing. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The state of a QUIC connection's crypto hanshake as it progresses from + starting to confirmation or failure. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + Log the success rate of HTTP layer reading QUIC response headers, for + investigating b/177893733. + + + + + bnc@chromium.org + src/net/quic/OWNERS + + Stream error of QuicSpdyStream when QuicHttpStream::ComputeResponseStatus() + returns ERR_QUIC_PROTOCOL_ERROR, for investigating b/177893733. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The percentage comparison between alternative port probe failure when + default path is degrading and in general. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The percentage comparison between alternative port response time when + default path is degrading and response time in general. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The number of time that a session which has multi-port enabled enters + path-degrading state on the default path. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The number of alternative port probing failure when the default path is + degrading. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The number of alternative port probing failure when the default path is + healthy. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Time from when QUIC detects performance degradation on the current network + to when QUIC notices a new network is connected. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Time from when QUIC detects performance degradation on the current network + to when QUIC notices the current network is disconnected. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The time from QUIC detecting network performance degradation to an + alternative network becoming default. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The time from network disconnection to an alternative network becoming + default. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + The number of times ServerConfigUpdateMessages ignored. + + + + horo@chromium.org + src/net/OWNERS + + Log the retry delay caused by ERR_QUIC_PROTOCOL_ERROR. Recorded when + HttpNetworkTransaction finishes. + + + + + + + + + + + + + horo@chromium.org + src/net/OWNERS + + The status of how HttpNetworkTransaction handles a ERR_QUIC_PROTOCOL_ERROR. + Recorded when HttpNetworkTransaction finishes. + + + + + + + + + horo@chromium.org + src/net/OWNERS + + Log the QUIC error code when HttpNetworkTransaction handles a + ERR_QUIC_PROTOCOL_ERROR. + + + + + + + + + + + + + + + + horo@chromium.org + src/net/OWNERS + + Log the QUIC stream error code when HttpNetworkTransaction handles a + ERR_QUIC_PROTOCOL_ERROR. + + + + + + + + + + + + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The state of the QUIC server information when it's loaded from the disk + cache. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of pending stream requests aborted when the session is closed. + Pending streams are those which could not be created immediately because + there were too many active streams. + + + + + bnc@chromium.org + src/net/OWNERS + + Records whether the QUIC session received an Accept-CH entry for the given + origin, which GetAcceptChViaAlps() returns. Logged every time + QuicHttpStream::GetAcceptChViaAlps() is called, typically once for each + request that is served over HTTP/3. + + + + + bnc@chromium.org + src/net/OWNERS + + Records both whether there are any valid origin fields and whether there are + any invalid ones in the ACCEPT_CH frame. Logged during the TLS handshake of + a QUIC connection if ALPS is negotiated, once for every ACCEPT_CH HTTP/3 + frame received (possibly zero, typically not more than one). + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The number of active streams when the quic session decides to go away on + path degrading. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + True if the result of reading a packet from the network was ERR_IO_PENDING. + Recorded for each packet when Read() returns. + + Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may + be missing. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of BLOCKED frames recevied by a QuicSession when the session is + closed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of BLOCKED frames sent by a QuicSession when the session is + closed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The network error code returned to a QUIC session from the CertVerifier when + a certification verification is attempted. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Time spent verifying a certificate when racing cert veriifcation with host + resolution. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The final maximum packet size of the connection used by the client before + the session is closed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The network error code which resulted in all sessions being closed. + + + + + wub@chromium.org + src/net/quic/OWNERS + + For a QUIC session that is closed by a public reset, this boolean shows + whether it is a public reset sent from a Google server or not. + + + + + wub@chromium.org + fayang@chromium.org + src/net/quic/OWNERS + + For a QUIC session that is closed by QUIC_TOO_MANY_RTOS at client, this is + the number of packets it received before it is closed. + + + + + wub@chromium.org + fayang@chromium.org + src/net/quic/OWNERS + + For a QUIC session that is closed by QUIC_TOO_MANY_RTOS at client, this is + the number of packets it sent before it is closed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + True if the QUIC session is closed during the call to InitializeSession, + logged for each session just after InitializeSession is called. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The network error code which resulted in the session being closed. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + When a new stream frame is added to a QUIC packet, record whether it's + coalesced with the existing stream frames. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Samples of the number of round-trips needed by a QUIC connection before a + request could be sent by the client. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + True if a QUIC connection connected successfully after having been broken. + Only emitted after a QUIC connection attempt to a server that was previous + marked as broken. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC error which caused a QUIC connection to be closed before the + hanshake was confirmed, in the case where no packets were received. This + provides a breakdown of the entires in + Net.QuicSession.ConnectionClose.HandshakeNotConfirmed.Reason where the value + is BLACK_HOLE. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC error which caused a QUIC connection to be closed before the + hanshake was confirmed, in the case where at least 1 packet was received. + This provides a breakdown of the entires in + Net.QuicSession.ConnectionClose.HandshakeNotConfirmed.Reason where the value + is UNKNOWN. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + The reason a QUIC handshake failed. + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of streams open when a QUIC session crypto handshake timed out. + + Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may + be missing. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + The number of streams open when a QUIC session timed out. + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of total streams created when a QUIC session crypto handshake + timed out. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC error code which resulted in the QUIC connection being closed by + the client. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC error code which resulted in the QUIC connection being closed by + the client to a Google server. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC error code which resulted in the QUIC connection being closed by + the server. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC error code which resulted in the QUIC connection being closed by + the a Google server. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC application transport error code in a CONNECTION_CLOSE frame + received from the server. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC application transport error code in a CONNECTION_CLOSE frame + received from a Google server. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC application transport error code in a CONNECTION_CLOSE frame + received from the server, when the GQUIC error was missing. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC application transport error code in a CONNECTION_CLOSE frame + received from a Google server, when the GQUIC error was missing. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC transport error code in a CONNECTION_CLOSE frame received from the + server. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC application transport error code in a CONNECTION_CLOSE frame + received from a Google server. + + Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may + be missing. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC transport error code in a CONNECTION_CLOSE frame received from the + server, when the GQUIC error was missing. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC application transport error code in a CONNECTION_CLOSE frame + received from a Google server, when the GQUIC error was missing. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The duration of a QUIC connection starting from 1-RTT key available to + connection close. + + + + + fayang@chromium.org + src/net/quic/OWNERS + Duration of connections received PUBLIC_RESET. + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Whether QUIC session's connection is flow control blocked when a PING + message is sent to server. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + True if an active session already exists for a given Ip during connection. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The result of a QUIC connection migration attempt. The suffix specifies the + cause of connection migration. + + + + + renjietang@chromium.org + dschinazi@chromium.org + src/net/quic/OWNERS + + Logs the state of the connection from stale host when fresh dns resolution + is completed. This histogram is only valid when race_stale_dns_on_connection + experiment is enabled. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The IP Address family of this connection, as reported by the server. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + The IP Address family of this connection, as seen locally. + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Samples of the number of round-trips needed by a QUIC connection before a + request could be sent by the client, when handshake confirmation was + required. (The operating system randomly selected a source port for the + connection.) + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Count of errors during attempts to create a QUIC session (before even using + the session). + + + + + fayang@chromium.org + src/net/quic/OWNERS + + Times of retransmission time out of connections with successful handshake. + + + + + fayang@chromium.org + src/net/quic/OWNERS + + Times of crypto retransmission timeout of connections with failed handshake. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The number of draining streams when the quic session decides to go away on + path degrading. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of duplicate packets recevied by a QuicSession when the session + is closed. + + + + + fayang@chromium.org + src/net/quic/OWNERS + + The elapsed time between starting the crypto handshake and installing the + first encryption key that can carry application data (either 0-RTT or + 1-RTT). + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The value of the TCP cubic sender's CWND when the session is closed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Logged every time we parse a QUIC Finch config, and logs whether the config + was valid. Invalid configs are most likely to be obsolete configs. Note that + this is still logged (as true) when no variations config is present. + + Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may + be missing. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Triggered any time Finch configures an obsolete QUIC version. Only recorded + when obsolete versions are not allowed (which is the default). + + + + + renjietang@chromium.org + dschinazi@chromium.org + src/net/quic/OWNERS + + The time for a fresh DNS resolution from DoResolveHost to having a fresh DNS + result. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + This measures the time gap between the most recent write error and the + network disconnection. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Whether QuicGoAwayFrame is received from server for connection migration due + to client's port change. Logged when a QuicGoAwayFrame with error code + QUIC_ERROR_MIGRATING_PORT is received. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The elapsed time between starting the crypto handshake, and receiving + confirmation from the server. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The handshake status when the session attempts to migrate the connection + according to different migration causes. + + + + + fayang@chromium.org + src/net/quic/OWNERS + + The handshake status when the session attempts to validate received server + preferred address. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The handshake status when the session attempts to port migration on path + degrading. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Whether path degrading has been detected by the time a QUIC connection is + closed due to handshake timeout. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Header compression ratio as percentage for received headers using HPACK. + + Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may + be missing. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Header compression ratio as percentage for sent headers using HPACK. + + Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may + be missing. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Header compression ratio as percentage for received headers using QPACK. + + Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may + be missing. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Header compression ratio as percentage for sent headers using QPACK. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The elapsed time between the end of resolving the DNS name of the server for + a QUIC connection, and receiving crypto handshake confirmation from the + server. Logged after crypto handshake is confirmed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number packets recevied by a QuicSession with an incorrect connection id + when the sesesion is closed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The source for the initial RTT estimate recorded when a QUIC session is + created. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of key updates processed per connection, recorded on connection + close. Only logged for connections which reached the 1-RTT level and + supported key update. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Count of packets received that appeared to attempt a key update but failed + decryption which have been received since the last successfully decrypted + packet, recorded on connection close. Only logged for connections which + reached the 1-RTT level and supported key update. + + + + + mattm@chromium.org + src/net/quic/OWNERS + The reason why each key update occured. + + + + mattm@chromium.org + src/net/quic/OWNERS + + Records the success or failure of the last key update for connections where + the key update was initiated by the {Group} side. Failure is defined as + having sent at least one packet in the new key phase but never receiving an + ack for any packet sent in the new key phase before the connection was + closed. + + + + + + + + + fayang@chromium.org + src/net/quic/OWNERS + + Time from handshake completion to last packet was sent for connections + received PUBLIC_RESET. + + + + + fayang@chromium.org + src/net/quic/OWNERS + + A bitfield representing the last sent packet content before connection + receives PUBLIC_RESET. + + + + + fayang@chromium.org + src/net/quic/OWNERS + + Max consecutive retransmission timeout before making forward progress. + + + + + fayang@chromium.org + src/net/quic/OWNERS + + Max consecutive retransmission timeout before making forward progress when + blackhole has been detected. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The maximum packet sequence number reordering observed by a QUIC connection. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The ratio of the maximum reordering time of a QUIC packet to the min rtt. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The ratio of the maximum reordering time of a QUIC packet to the min rtt, + only for those sessions with a min rtt larger than 100 ms. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + Records whether the migration of the QuicSession to a new socket is + successful. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The minimum RTT observed during the life of a QUIC connection. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of MTU probes sent by the client during the session. Logged when + the connection is destroyed. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The number of active streams when idle timeout is detected and connection is + being closed. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + The number of successful migrations for a QUIC session. + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Number of connection migrations exercised before the connection receives a + public reset. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of QUIC streams opened when a new QUIC stream is created. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of pending stream requests when a new stream request is added to + the pending list. Pending streams are those which could not be created + immediately because there were too many active streams. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The number of pings a QUIC connection sends during its lifetime. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The number of streams waiting to write when idle timeout is detected and + connection is being closed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The total number of streams created by the client when the session is + closed. + + + + + fayang@chromium.org + src/net/quic/OWNERS + + The result of a QUIC server preferred address migration attempt. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of missing packets between the current received packet and the + previously largest received packet sequence number, when the current + received packet had a lower sequence number than the previously received + packet sequence number. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of times the current received packet had a lower sequence number + than the previously received packet sequence number, and the size of the + current packet is larger than the size of the previous packet. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of times the current received packet had a lower sequence number + than the previously received packet sequence number. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of missing packets between the current received packet and the + previously largest received packet sequence number. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of missing packets between the last received packet before a PING + frame sent and the first packet received after PING sent. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of missing packets between the current received packet and the + previously largest received packet sequence number, as reported by the + remote end of the connection. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The ratio of the number of missing packets, to the maximum packet sequence + number received, for QUIC connections longer than 21 packets received via + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of packets retransmitted per 1000. Only sessions with + packets_sent >= 100 are included. Recorded in session destructor. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The time taken to Write() a QUIC packet to the socket. Recorded for each + packet when it is sent. The suffix specifies if the write completed + synchonously or asynchronously. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The result of path validation according to different migration causes. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The wait time of the pending stream when it is finally serviced. Pending + streams are those which could not be created immediately because there were + too many active streams. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The platform notification received by QUIC when network change happens. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + The result of a QUIC port migration attempt. + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + True if the QUIC session prefers to use AES GCM because of hardware support. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Number of retries to send connectivity probing packet on new path until + success. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The wait time to receive a matched probing response to mark connectivity + probing as successful. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + When a public reset packet is received, whether the client IP address and + port number in it differ from the client IP address and port number in the + ServerHello handshake message. In the comparison, the first address is the + one in ServerHello and the second address is the one in public reset. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of push streams received when the session is closed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of pushed and used streams when the session is closed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of bytes that is pushed but not used when the session is closed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of bytes that is pushed when the session is closed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The ordinality of a header list within a connection during the encoding of + which unacknowledged dynamic table entries could not be referenced due to + the limit on the number of blocked streams. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The ordinality of a header list within a connection during the encoding of + which at least one dynamic table insertion was blocked. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The ordinality of a header list within a connection during the encoding of + which no dynamic table insertion was blocked. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The ordinality of a header list within a connection during the encoding of + which the limit on the number of blocked streams did not prevent referencing + unacknowledged dynamic table entries. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + Version of the QUIC protocol used for this connection. + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The network error code returned when attempting to read from a QUIC + connection. The suffix specifies the condition/source of the read error. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The network error code returned when attempting to read on the current + network from a QUIC connection after handshake has been confirmed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The value of the SETTINGS_QPACK_BLOCKED_STREAMS parameter received on an + HTTP/3 connection, if any. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of SETTINGS parameters received on an HTTP/3 connection, + incremented by one (the SETTINGS frame can be empty). + + + + + momoka@google.com + ricea@chromium.org + src/net/quic/OWNERS + + The value of the SETTINGS_ENABLE_CONNECT_PROTOCOL parameter received on an + HTTP/3 connection, if the parameter is not present log false. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The value of the SETTINGS_MAX_HEADER_LIST_SIZE parameter received on an + HTTP/3 connection, if any. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The value of the SETTINGS_QPACK_MAX_TABLE_CAPACITY parameter received on an + HTTP/3 connection, if any. + + Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may + be missing. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of reserved SETTINGS parameters (that is, with identifier in the + form 0x1f * N + 0x21 for a non-negative integer value of N) received on an + HTTP/3 connection, incremented by one (there might be zero reserved + identifiers). Defined at + https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-defined-settings-parameters. + These should not be treated specially on the receive side, because they are + sent to exercise the requirement that unknown identifiers are ignored. Here + an exception is made for logging only, to understand what kind of + identifiers are received. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + True if the QUIC REJ message received from the server contains a proof. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The length in bytes of a QUIC REJ message received from the server. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of consecutive times a packet was retried after a write error, + using exponential backoff. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC error code which resulted in a stream being reset by the client. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC error code which resulted in a stream being reset by the server. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of request for secure resources over QUIC sessions. True if the + session is secure, false if it is not. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + When a SHLO handshake message is received, whether the client IP address and + port number in it differ from the local client IP address and port number. + In the comparison, the first address is the one in SHLO and the second + address is the client IP address. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The size in bytes of an encrypted QUIC packet sent to the peer at the + specified encryption level. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The largest packet which the client received from the server during the + session. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The final smoothed RTT observed during the life of a QUIC connection. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + True if fresh host lists contains stale host used in racing connection. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The time a QUIC connection from invalid stale dns result takes to do Crypto + handshake. This starts on DoConnect and ends when the connection finishes. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + True if the stale host is used in racing connection. + + + + renjietang@chromium.org + src/net/quic/OWNERS + + Records when a STATELESS_RESET is received after a connectivity probing is + cancelled. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + When probing is cancelled, records whether a STATELESS_RESET is received. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + The QUIC error code that we sent in a STOP_SENDING frame. + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC error code that we received in a STOP_SENDING frame. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC error code which resulted in the stream (and connection) being + closed by the client after the handshake was confirmed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The QUIC error code which resulted in the stream (and connection) being + closed by the client after the handshake was confirmed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Whether any of QUIC session's streams are flow control blocked when a PING + message is sent to server. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of stream frames received which were duplicates, out of every + 1000 stream frames received. Only for QUIC sessions which received at least + 100 packets. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The percentage of stream frames received which were duplicates. Only for + QUIC sessions which received at least 100 packets. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The percentage of stream frames received which were duplicates. Only for + QUIC sessions which received fewer than 100 packets. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of stream frames received which were duplicates, out of every + 1000 stream frames received. Only for QUIC sessions which received fewer + than 100 packets. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + If a QUIC connection timed out with open streams, this contains a count of + consecutive PTOs. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + If a QUIC connection timed out with open streams, this contains a count of + consecutive RTOs. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + If a QUIC connection timed out with open streams, this contains a count of + consecutive TLPs. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + If a QUIC connection timed out with open streams, this will be true when the + connection has unacked packets. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + If a QUIC connection timed out locally with open streams, this contains the + local port number for the connection. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The time a QuicStreamFactory Job takes from host rersolution to connection + confirmation. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + True if more than 100 streams are open when a new stream is activated. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + When a QUIC packet is sent at initial encryption that is smaller than the + minimum size, this records the size difference (minimum_size - + observed_size). + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of undecryptable packets recevied by a QuicSession when the + session is closed. Includes packets where a decryption key was not present. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The number of undecryptable packets recevied by a QuicSession when the + session is closed. Only includes packets where a decryption key was present + for the packet's encryption level. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + The time a QUIC connection that will be confirmed takes for Crypto + handshake. The event starts on DoConnect, and ends when the connection + finishes. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Time spent verifying the signature and certificate chain. This is logged + whenever QUIC verifies the certificate chain and signature during crypto + handshake. + + Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may + be missing. + + + + + + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The network error code returned when attempting to write to a QUIC + connection. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The network error code returned when attempting to write to a QUIC + connection after the handshake has been confirmed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The most recent network error code when attempting to write to a QUIC + connection when the network gets disconnected. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The reason QUIC packet writer needed to allocate a new buffer, rather than + the expected case of reusing its existing one. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Indicates whether a QUIC handshake attempted or used 0-RTT on the + connection, and if 0-RTT was not used, it provides reasons why. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + Indicates whether a QUIC handshake attempted or used 0-RTT on the + connection, and if 0-RTT was not used, it provides reasons why. Only records + connections with Google hosted servers. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + Indicates whether a QUIC handshake attempted or used 0-RTT on the + connection, and if 0-RTT was not used, it provides reasons why. Only records + connections with non-Google servers. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + Whether 0-RTT was successfully used in the connection. + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Records if a new connection on the alternate network is attempted when a + connection fails before handshake is confirmed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Connection type of the default network when the connection fails with + handshake not confirmed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + A count of how often a user hits 1, 2, 3, 4 and 5 bad packet loss events for + port 443. Recorded whenever QUIC has bad packet loss (high packet loss on + multiple consecutive connections). + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Status of the connection on the non-default network when it finishes. A + connection may stay on the non-default network during the initial setup when + the platform's default network changes. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Records, for initial socket created for each new QUIC connection, whether + the bound network matched the default network tracked by QuicStreamFactory. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Rrecords reasons QUIC is disabled (for all ports), if sufficent recent + connections experience: public reset post crypto handshake, or timeouts with + streams open. QUIC is disabled until the next reboot of Chrome. Logged + during session close. + + + + + renjietang@chromium.org + src/net/quic/OWNERS + + Log the location in QuicStreamFactory where QUIC_PROTOCOL_ERROR is reported. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Connection type of the alternate network when a connection is about to be + attempted when the original connection fails on the default network with + handshake not confirmed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Status of the connection which is created for migration before handshake is + confirmed. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + The network error code returned when the retried connection on the alternate + network before handshake fails. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Captures whether the default network has been changed when the new + connection succeeds on the "alternate" network. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Captures the maximum number of public resets post handshake that occurred + within a window of recent connections (default 20). Will help inform the + choice of threshold to disable QUIC for clients that experience pathalogical + errors. Logged during session close. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Recorded whenever QUIC is disabled for a port due to repeated lossy + connections (high packet loss on multiple consecutive connections). QUIC is + disabled until next reboot of Chrome. + + + + + dschinazi@chromium.org + src/net/quic/OWNERS + + Captures the maximum number of connection timeouts with streams open that + occurred within a window of recent connections (default 20). Will help + inform the choice of threshold to disable QUIC for clients that experience + pathalogical errors. Logged during session close. + + + + + csharrison@chromium.org + rsleevi@chromium.org + + The total number of redirects encountered during processing a URLRequest. + This includes redirects generated by servers (for example, 302 Found) and + redirects generated internally (for example, HSTS redirects or error pages). + + + + + eustas@chromium.org + + True for redirect responses with unadvertised "Content-Encoding". + False for valid redirect responses. See http://crbug.com/714514 + + + + + rodneyding@google.com + src/net/reporting/OWNERS + + The type of header received for configuring reporting API endpoints, + recorded when reporting API headers are successfully parsed. + + + + + rodneyding@google.com + src/net/reporting/OWNERS + + The type of header that produced the endpoint used for uploading reports for + the Reporting API, recorded when reports have been succesfully uploaded, + counted once for each report. + + + + + clamy@chromium.org + + When starting a cross-site navigation, the time between reading the headers + and body of the response. + + + + + dylancutler@google.com + src/net/cookies/OWNERS + + Logged whenever a partitioned cookie is set from a renderer process, which + can be from either document.cookie or the CookieStore API. True if the + partition key was set with the FromScript constructor (used by the + CookieStore API) or if the partition key matches the + RestrictedCookieManager's internal partition key (which is the case for + cookies set/modified by document.cookie). + + + + + carlscab@google.com + olivierli@chromium.org + woa-performance@google.com + + Counts the number of RestrictedCookieManager::GetCookiesString IPCs received + over 30 second periods at the Network Service. + + We start recording the metric when the Network Service is created and keep + updating it for the entire lifetime of the Network Service process. + + + + + dylancutler@google.com + src/net/cookies/OWNERS + + Logs the number of partitioned cookies accessed by a script. Logged only + when partitioned cookies are enabled. + + + + + dylancutler@google.com + src/net/cookies/OWNERS + + True iff the cookie set by RestrictedCookieManager is a partitioned cookie. + Only logged when partitioned cookies are enabled and the cookie set by RCM + will be accepted. + + + + + morlovich@chromium.org + src/net/cookies/OWNERS + + Logged on any document.cookie or CookieStore API operation. True if the + browser-side site_for_cookies and the render-provided value match. + + + + + morlovich@chromium.org + src/net/cookies/OWNERS + + Logged on any document.cookie or CookieStore API operation. True if the + browser-side top_frame_origin and the render-provided value match. + + + + + dschinazi@chromium.org + src/net/OWNERS + + The size of a socket's receive buffer when the attempt to change it via + setsockopt failed. + + + + + dschinazi@chromium.org + src/net/OWNERS + + The size of a socket's send buffer when the attempt to change it via + setsockopt failed. + + + + + dschinazi@chromium.org + src/net/OWNERS + + The counts of the flow control state of each frame (with stream and session + flow control on). + + + + + dschinazi@chromium.org + src/net/OWNERS + + The percent compression achieved when compressing HEADERS frames. + + + + + dschinazi@chromium.org + src/net/OWNERS + + Status of checking if a SPDY domain can handle a IP match. If a match is + found, we successfully used the IP Pooling. If a match is not found, we + could have used IP Pooling, except the TLS Cert didn't match the IP-pooled + domain. + + + + + dschinazi@chromium.org + src/net/OWNERS + + This histogram is recorded exactly once for every PUSH_PROMISE frame + received on an HTTP/2 connection, and tracks the fate of the pushed stream. + + + + + dschinazi@chromium.org + src/net/OWNERS + + HTTP status codes received in HTTP/2 HEADERS frames. If a stream contains + one or more informational (1xx) response preceeding the main response, each + status code is logged separately. + + + + + bnc@chromium.org + src/net/OWNERS + + Records whether the HTTP/2 session received an Accept-CH entry for the given + origin, which GetAcceptChViaAlps() returns. Logged every time + SpdyHttpStream::GetAcceptChViaAlps() is called, typically once for each + request that is served over HTTP/2. + + + + + bnc@chromium.org + src/net/OWNERS + + Records both whether there are any valid origin fields and whether there are + any invalid ones in ACCEPT_CH frames. Logged once for each TLS handshake of + a HTTP/2 connection if ALPS is negotiated, regardless of the number of + ACCEPT_CH frames received in ALPS. + + + + + bnc@chromium.org + src/net/OWNERS + + Records the status (OK or error code) returned by AlpsDecoder when parsing + ALPS data. Logged once for each TLS handshake of a HTTP/2 connection if ALPS + is negotiated. + + + + + arichiv@chromium.org + src/net/OWNERS + + Net.SpdySession.AlpsDecoderStatus records errors returned by the AlpsDecoder + class in HTTP/2 responses. Errors logged to that histogram cause a session + termination, which isn't always desired. This histogram records errors that + we want to note, but that shouldn't stop the connection. + + + + + bnc@chromium.org + src/net/OWNERS + + Records the total number of setting parameters received in SETTINGS frames + in ALPS. Logged once for each TLS handshake of a HTTP/2 connection if ALPS + is negotiated, regardless of the number of SETTINGS frames received in ALPS. + + + + + dschinazi@chromium.org + src/net/OWNERS + Net error codes when SpdySession was closed. + + + + dschinazi@chromium.org + src/net/OWNERS + Socket connected status in SpdySession::CreateStream. + + + + bnc@chromium.org + src/net/OWNERS + + Records the error code value received in each HTTP/2 GOAWAY frame. + + + + + dschinazi@chromium.org + src/net/OWNERS + + The number of bytes that is pushed but not used when the session is closed. + + + + + dschinazi@chromium.org + src/net/OWNERS + + The number of bytes that is pushed when the session is closed. + + + + + dschinazi@chromium.org + src/net/OWNERS + + Whether the server has advertised support for WebSockets over HTTP/2. + + + + + dschinazi@chromium.org + src/net/OWNERS + The type of SPDY Protocol error encountered. + + + + dschinazi@chromium.org + src/net/OWNERS + + WARNING: r181910 added an enum value in the middle, so don't trust the + counts for values 9 and above for Chrome builds after that revision. + + The type of SPDY Protocol error encountered when talking to a google.com + server. + + + + + dschinazi@chromium.org + src/net/OWNERS + The type of SPDY Session used when looking up a session. + + + + dschinazi@chromium.org + src/net/OWNERS + + Whether SpdySession::Get{Peer,Local}Address was called when the connection + had no socket. + + + + + dschinazi@chromium.org + src/net/OWNERS + + The number of pushed, but abandoned streams over a single session. + + + + + dschinazi@chromium.org + src/net/OWNERS + The number of streams issued over a single session. + + + + dschinazi@chromium.org + src/net/OWNERS + + The number of pushed, and used streams over a single session. + + + + + dschinazi@chromium.org + src/net/OWNERS + The number of push streams received over a single session. + + + + davidben@chromium.org + trusty-transport@chromium.org + + For each TLS connection that offered Encrypted ClientHello (ECH), what was + the result of that connection. In particular, this measures if the recovery + flow was needed and, if so, whether it fixed the connection. + + + + + + + agl@chromium.org + rsleevi@chromium.org + + The SSL/TLS cipher suite that was negotiated. Recorded for each SSL/TLS + connection in the socket pool where Connect() succeeds. + + + + + + + agl@chromium.org + + Counts of specific error codes returned when opening an SSL connection. + + + + + davidben@chromium.org + trusty-transport@chromium.org + + Counts of specific error codes returned when opening an SSL connection. + Recorded for connections to servers that advertise support for Encrypted + ClientHello (ECH) in DNS. (Specifically, connections where the HTTPS record + used included an ECHConfigList.) + + + + + + + agl@chromium.org + Time from when the Connect() starts until it completes. + + + + davidben@chromium.org + trusty-transport@chromium.org + + Time from when the Connect() starts until it completes. Recorded for + successful connections to servers that advertise support for Encrypted + ClientHello (ECH) in DNS. (Specifically, connects where the HTTPS record + used included an ECHConfigList.) + + + + + + + agl@chromium.org + rsleevi@chromium.org + sigbjorn@opera.com + + The curve used for key exchange for ECDHE. Recorded for each SSL/TLS + connection in the socket pool where Connect() succeeds. + + + + + rsleevi@chromium.org + Time to complete a certificate verification (success case). + + + + rsleevi@chromium.org + Time to complete a certificate verification (error case). + + + + davidben@chromium.org + src/net/OWNERS + + For each non-resumption TLS handshake that sends a client certificate, the + signature algorithm used by the client. + + + + + davidben@chromium.org + src/net/OWNERS + + For each successful TLS handshake, what kind of handshake was used. This + metric distinguishes TLS 1.2 (or earlier) and TLS 1.3 as they have very + different resumption and round-trip behaviors. It also distinguishes full + handshakes, resumption, 0-RTT, and False Start. + + + + + davidben@chromium.org + svaldez@chromium.org + src/net/OWNERS + + Indicates whether a TLS 1.3 connection ended up using 0-RTT or not, and why; + this includes reasons such as the server declining to resume the connection + and the client not having enough tickets available. This metric is only + recorded if 0-RTT supported is enabled in the client. + + + + + davidben@chromium.org + trusty-transport@chromium.org + + Indicates whether a TLS 1.3 connection to a Google host ended up using 0-RTT + or not, and why; this includes reasons such as the server declining to + resume the connection and the client not having enough tickets available. + This metric is only recorded if 0-RTT supported is enabled in the client. + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Counts when the SSLKEYLOGFILE environment variable or --ssl-key-log-file + command-line flag are set, and when they enable the SSLKeyLogger feature. + + This histogram was temporarily expired from M92 until M104. + + + + + + Replaced by Net.SSLLegacyCryptoFallback2. This one incorrectly counted all + SHA-1-based algorithms in certificates, rather than just RSASSA-PKCS1-v1_5. + + davidben@chromium.org + trusty-transport@chromium.org + + For each TLS connection, whether it needed the legacy crypto fallback and a + classification as to why. See https://crbug.com/658905 and + https://crbug.com/691888. Note some connections are reported as sending + SHA-1 certificates because, although SHA-1 is no longer accepted in + certificates, servers may send unused certificates in the handshake. Some + such servers additionally match their certificate chains against the + ClientHello. These servers require the client advertise legacy algorithms + despite not actually using them. + + + + + davidben@chromium.org + trusty-transport@chromium.org + + For each TLS connection, whether it needed the legacy crypto fallback and a + classification as to why. See https://crbug.com/658905 and + https://crbug.com/691888. Note some connections are reported as sending + SHA-1 certificates because, although SHA-1 is no longer accepted in + certificates, servers may send unused certificates in the handshake. Some + such servers additionally match their certificate chains against the + ClientHello. These servers require the client advertise legacy algorithms + despite not actually using them. + + + + + dschinazi@chromium.org + src/net/OWNERS + + For each TLS handshake, whether ALPN was negotiated; and if so, the + negotiated protocol. + + + + + davidben@chromium.org + src/net/OWNERS + + For each TLS handshake, whether the server supports the renegotiation_info + extension (RFC 5746). If the server negotiated TLS 1.3, which removed + renegotiation, it is considered to support the extension. Servers that do + not support it are potentially vulnerable to an attack involving TLS + renegotiation. + + + + + davidben@chromium.org + + For each TLS connection which uses a unknown root, an RSA key, and TLS 1.2 + or below, what the result of checking the RSA key usage would have been. + + + + + + + davidben@chromium.org + src/net/OWNERS + + For each SSL connection with a full handshake using a DHE- or ECDHE-based + key exchange, the signature algorithm used to authenticate the peer. In TLS + 1.2, this is the signature on the ServerKeyExchange message. (Note: Although + the ECDSA values specify a curve, the curve is only enforced in TLS 1.3.) + + + + + + + davidben@chromium.org + + The SSL/TLS version that was negotiated. Recorded for each SSL/TLS + connection in the socket pool where Connect() succeeds. + + + + + davidben@chromium.org + rsleevi@chromium.org + + The SSL/TLS version that was negotiated to a Google host. Recorded for each + appplicable SSL/TLS connection in the socket pool where Connect() succeeds. + Google servers all support TLS 1.2, so any occurrences of TLS 1.0 or TLS 1.1 + indicate an outdated insecure TLS MITM proxy, such as some antivirus + configurations. TLS 1.0 and 1.1 are deprecated, so record these to see how + prevalent they are. See https://crbug.com/896013. + + + + + + + mmenke@chromium.org + + Time from when the Connect() starts until it completes. Only times under 10 + minutes are logged. + + + + + + Removed 2022-02. + + mgersh@chromium.org + + Time from when the Connect() starts until it completes when the network + address only contains IPv4 addresses. Only times under 10 minutes are + logged. + + + + + + Removed 2022-02. + + mgersh@chromium.org + + Time from when the Connect() starts until it completes when the IPv4 + fallback connection won the race against IPv6. Only times under 10 minutes + are logged. + + + + + + Removed 2022-02. + + mgersh@chromium.org + + Time from when the Connect() starts until it completes when we race an IPv6 + connection against an IPv4 connection with a 300ms delay. Only times under + 10 minutes are logged. + + + + + + Removed 2022-02. + + mgersh@chromium.org + + Time from when the Connect() starts until it completes when the network + address only contains IPv6 addresses. Only times under 10 minutes are + logged. + + + + + bashi@chromium.org + src/net/OWNERS + + Time taken when failed to establish a TCP connection to an individual + endpoint. This includes the case when the attempt was aborted by a higher + layer (likely because it took too long). + + + + + bashi@chromium.org + src/net/OWNERS + + Time taken to successfully establish a TCP connection to an individual + endpoint. + + + + + bmcquade@chromium.org + + The kernel's estimated TCP round trip time. Recorded for each TCP socket, at + the time it is disconnected. + + + + + + + svaldez@chromium.org + timhuber@google.com + yhirano@chromium.org + + The net error for a failed Fetch API call with an associated Trust Tokens + operation. This was originally added to help debug a surfeit of 'TypeError: + failed to fetch' observed in live testing, and it is now retained since it's + useful for ongoing health monitoring. + + + + + + + svaldez@chromium.org + timhuber@google.com + + The //net status codes for resource requests that had started Trust Tokens + operations. This captures the reasons why requests with Trust Tokens + operations fail and might help debug a surfeit of "TypeError: failed to + fetch" observed in live testing. + + + + + svaldez@chromium.org + timhuber@google.com + + Time taken to execute various parts of a Trust Tokens operation: 1. Begin = + time taken to execute the operation's outbound Begin half 2. Server = time + from the end of the outbound Begin half to the beginning of the inbound + Finalize half 3. Finalize = time taken to execute the inbound Finalize half + 4. Total = Begin + Server + Finalize (only recorded for operations that see + server responses) + + The other variants (see histogram_suffixes_list's TrustTokenOperationType + entry): 1. Outcome (Success or Failure) 2. The type of Trust Tokens + operation 3. Whether the operation was platform-provided (i.e. executed by a + method other than a direct HTTP request to the issuer's server) + + + + + + + + + + + + + + + + + + + + svaldez@chromium.org + timhuber@google.com + + Whether the Trust Tokens redemption logic received an empty redemption + request string from its underlying cryptographic library. If this is always + true, but servers occasionally see empty redemption request headers, it + might suggest middleware (namely extensions) is removing the headers' + values. + + + + + + + svaldez@chromium.org + timhuber@google.com + + For resource requests that bear Trust Tokens parameters, the results of + running TrustTokenRequestHelperFactory to initialize Trust Tokens handling + logic. This might help debug a surfeit of failed Trust Tokens issuance + operations observed in live testing. + + + + + mgersh@chromium.org + Chromium error code from call to RandomBind() UDP socket. + + + + dschinazi@chromium.org + src/net/OWNERS + The time spent in closesocket call in UDPSocketWin::Close. + + + + cduvall@chromium.org + jam@chromium.org + + Measures time {Throttle} deferred a request on WillProcessResponse. Logged + every time {Throttle} defers a request. + + + + + + cduvall@chromium.org + jam@chromium.org + + Measures time {Throttle} deferred a request on WillStartRequest. Logged + every time {Throttle} defers a request. + + + + + + cduvall@chromium.org + jam@chromium.org + + Measures time a URLLoaderThrottle was deferred when on {Stage}. Logged every + time a throttle defers a request. + + + + + + cduvall@chromium.org + jam@chromium.org + + Measures time a URLLoaderThrottle took to execute {Stage}. Logged every time + a throttle runs. + + + + + + + + davidvc@chromium.org + kaustubhag@chromium.org + + Records for each URLRequest whether its referrer contains more information + than just its origin (this is the case exactly when it has at least one + character apart from a leading slash in its path, e.g. http://example.com/a + but not http://example.com/ nor http://example.com). + + + + + + + davidvc@chromium.org + kaustubhag@chromium.org + + Records the distribution of referrer policies provided with outgoing + URLRequests, and whether or not the requests were cross-origin. + + + + + + + yhirano@chromium.org + ricea@chromium.org + + Positive net error codes that WebSockets end with, including OK and ABORTED. + + + + + + + yhirano@chromium.org + ricea@chromium.org + src/net/OWNERS + + Results of WebSocket handshakes, including information whether the handshake + happened over HTTP/1, HTTP/2 or HTTP/3. Use this histogram as a baseline for + investigating feature usage counters. + + + + + + + yhirano@chromium.org + ricea@chromium.org + All HTTP status codes seen during WebSocket handshakes. + + + + + diff --git a/histograms/metadata/network/OWNERS b/histograms/metadata/network/OWNERS new file mode 100644 index 000000000000..fbb55d973239 --- /dev/null +++ b/histograms/metadata/network/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Use either chromium-metrics-reviews@google.com or the below owners. +chadduffin@chromium.org +khorimoto@chromium.org +nidhijaju@chromium.org +toyoshim@chromium.org diff --git a/histograms/metadata/network/histograms.xml b/histograms/metadata/network/histograms.xml new file mode 100644 index 000000000000..c6171e7ac4ab --- /dev/null +++ b/histograms/metadata/network/histograms.xml @@ -0,0 +1,4073 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + gordonseto@google.com + cros-connectivity@google.com + + Records the APN types of an APN. This is emitted each time a user creates a + custom APN. + + + + + gordonseto@google.com + cros-connectivity@google.com + + Records the authentication type of an APN. This is emitted each time a user + creates a custom APN. + + + + + gordonseto@google.com + cros-connectivity@google.com + + Records the IP type of an APN. This is emitted each time a user creates a + custom APN. + + + + + gordonseto@google.com + cros-connectivity@google.com + Records the result of an attempt to create a custom APN. + + + + gordonseto@google.com + cros-connectivity@google.com + + Records the number of APNs saved for a cellular network every time a + cellular network successfully connects. + + + + + gordonseto@google.com + cros-connectivity@google.com + + Records the number of {CustomApnState} APNs saved for a cellular network + every time a cellular network successfully connects. + + + + + + + + + gordonseto@google.com + cros-connectivity@google.com + + Records the APN types of an APN before modification. This is emitted each + time a user disables a custom APN. + + + + + gordonseto@google.com + cros-connectivity@google.com + Records the result of an attempt to disable a custom APN. + + + + gordonseto@google.com + cros-connectivity@google.com + + Records the APN types of an APN before modification. This is emitted each + time a user enable a custom APN. + + + + + gordonseto@google.com + cros-connectivity@google.com + Records the result of an attempt to enable a custom APN. + + + + gordonseto@google.com + cros-connectivity@google.com + + Records the APN types of an APN before modification. This is emitted each + time a user modifies a custom APN. + + + + + gordonseto@google.com + cros-connectivity@google.com + Records the result of an attempt to modify a custom APN. + + + + gordonseto@google.com + cros-connectivity@google.com + + Records the APN types of an APN. This is emitted each time a user removes a + custom APN. + + + + + gordonseto@google.com + cros-connectivity@google.com + Records the result of an attempt to remove a custom APN. + + + + hsuregan@chromium.org + cros-connectivity@google.com + + Tracks the type of cellular configuration failures that occur when + connecting to a cellular network. + + + + + gordonseto@google.com + cros-connectivity@google.com + + Tracks the result of network connection attempts for cellular networks and + whether they have at least one enabled custom APN or not. A success is + emitted when a cellular network becomes connected from a non-connected + state. When a cellular network goes from a connecting state to a + disconnected state without a user initiated disconnect, a shill failure + reason is emitted. + + + + + + + + + hsuregan@chromium.org + nikhilcn@chromium.org + cros-connectivity@google.com + + Records events on the notification shown when the SIM is locked and admin + has restricted users from PIN locking their SIMs. These are emitted once the + notification is shown and once when the user interacts with it. + + + + + hsuregan@chromium.org + nikhilcn@chromium.org + cros-connectivity@google.com + + Records the type of SIM lock affecting a cellular network when a user is + notified that the cellular network is SIM locked. + + + + + hsuregan@chromium.org + nikhilcn@chromium.org + cros-connectivity@google.com + + Records the status of the SIM (Unlocked/PIN Locked/PUK Blocked) upon a + change in cellular connection. + + This metric will be recorded upon following transitions: 1. no connection to + new connection; 2. connection_1 to connection_2 + + + + + + + + + jiajunz@google.com + cros-connectivity@google.com + + Measures and tracks the result of setting hotspot configuration. Emitted + whenever attempts to update hotspot configuration. + + + + + jiajunz@google.com + cros-connectivity@google.com + + Measures and tracks the hotspot allow status on the cellular-capable + devices. This metric is emitted each time the allow status is updated, for + example: when user connects/disconnect to a cellular network, enterprise + policy applied, etc. + + + + + jiajunz@google.com + cros-connectivity@google.com + + Measures and tracks the hotspot allow status on the cellular-capable devices + only when user logins in. This metric is emitted after a 5 minutes delay + when user login which gives the user enough time to connect to their + upstream cellular network. + + + + + jiajunz@google.com + cros-connectivity@google.com + + Measures and tracks the result of checking tethering readiness. Emitted + whenever attempts to check tehtering readiness, for exmaple: when cellular + network get connected or when enable hotspot. + + + + + jiajunz@google.com + cros-connectivity@google.com + + Measures and tracks the causes of disabled hotspot. Emitted each time the + hotspot becomes disabled. + + + + + jiajunz@google.com + cros-connectivity@google.com + + Measures and tracks the upstream status the when hotspot is start up. + Emitted each time the hotspot starts successfully. + + + + + jiajunz@google.com + cros-connectivity@google.com + + Tracks how long the user needs to wait once the hotspot is requested to turn + on until the hotspot is ready to use. + + + + + jiajunz@google.com + cros-connectivity@google.com + + Measures and tracks the number of whether the hotspot auto disable + configuration is set for usage. Emitted each time the hotspot starts + successfully. + + + + + jiajunz@google.com + cros-connectivity@google.com + + Measures and tracks the number of whether the hotspot extend compatibility + mode is set for usage. Emitted each time the hotspot starts successfully. + + + + + jiajunz@google.com + cros-connectivity@google.com + + Measures and tracks the number of whether the hotspot BSSID randomization + configuration is set for usage. Emitted each time the hotspot starts + successfully. + + + + + jiajunz@google.com + cros-connectivity@google.com + + Tracks how long users use hotspot per session. Emitted whenever the hotspot + is torn down. + + + + + jiajunz@google.com + cros-connectivity@google.com + + Measures and tracks the number of the hotspot being used on a managed device + or not. Emitted each time the hotspot starts successfully. + + + + + jiajunz@google.com + cros-connectivity@google.com + + Records the number of maximum connected device count per hotspot session. + Emitted whenever the hotspot session is torn down. + + + + + jiajunz@google.com + cros-connectivity@google.com + + Measures and tracks the result of turning on/off hotspot. Emitted whenever + attempts to enabled/disabled hotspot. + + + + + + + + + chadduffin@chromium.org + cros-connectivity@google.com + + Logs the configuration source (i.e., the user vs. policy) for VPN networks. + Emitted when a VPN is configured. + + + + + + + + + + + + chadduffin@chromium.org + cros-connectivity@google.com + + Records the number of WiFi networks that were determined to be wrongly + configured as hidden and were attempted to be removed. This metric will be + emitted each time we check for wrongly configured networks which happens + once at startup and each time the primary user changes. + + + + + chadduffin@chromium.org + cros-connectivity@google.com + + Records the result of an attempt to remove a WiFi network that was + determined to be wrongly configured as hidden. This metric will be emitted + for each network we attempt to remove if and when we are notified of the + result of our removal request; while it is safe to expect that we will be + notified most of the time, we are not guaranteed to be notified. These + network removals will occur once at startup and each time the primary user + changes. + + + + + chadduffin@chromium.org + cros-connectivity@google.com + + Logs whether the network in question is configured as hidden or not. Emitted + when a network is configured. + + + + + + + + + hsuregan@chromium.org + cros-connectivity@google.com + + Tracks the result of all Network connection attempts. A success is emitted + when a network of type {NetworkType} becomes connected from a non-connected + state. When a network of type {NetworkType} goes from a connecting state to + a disconnected state without a user initiated disconnect, a shill failure + reason is emitted. + + + + + + hsuregan@chromium.org + cros-connectivity@google.com + + Tracks the result of a user initiated connection attempt. Logged when a + network of type {NetworkType} connection succeeds or fails. + + + + + + hsuregan@chromium.org + cros-connectivity@google.com + + Tracks when a network of type {NetworkType} is connected and when a network + of type {NetworkType} is disconnected without explicit user action. + + + + + + hsuregan@chromium.org + cros-connectivity@google.com + + Tracks the rate of success of performing the {Operation} operation on the + shill associated {TechnologyType} technology type. + + + + + + + + + + + + + + + nikhilcn@chromium.org + cros-connectivity@google.com + + This metric is emitted when users perform {Operation} operation on the + {TechnologyType} technology. We capture all result codes returned by the + platform API. + + + + + + + + + + + + + + + nidhijaju@chromium.org + ricea@chromium.org + + Records why a URL does not use the single-keyed cache due to a reason in + //services/network, when a URL request is made. Reasons include different + request type (i.e. not GET), incompatible request load flags, incompatible + request headers, etc. + + + + + + Removed as of 11/2022, as the CacheTransparency experiment has ended and + this is unmonitored now. + + nidhijaju@chromium.org + ricea@chromium.org + + Records the version number of the pervasive payloads list, when the list is + parsed the first time a URL request is made. + + + + + + Removed as of 03/2023, as it is replaced by Network.CacheTransparency2. + MarkedUnusable which has a higher range. + + nidhijaju@chromium.org + ricea@chromium.org + + Records whether a URL in the pervasive payloads list is marked as + "unusable" when the cached response is read. The list index is the + index of the URL in the pervasive payloads list. + + + + + + Removed as of 03/2023, as it is replaced by Network.CacheTransparency2. + MismatchedChecksums which has a higher range. + + nidhijaju@chromium.org + ricea@chromium.org + + Records whether a URL in the pervasive payloads list has a different + checksum than what is expected when the response checksums are compared in + HttpCache::Transaction. The list index is the index of the URL in the + pervasive payloads list. + + + + + + Removed as of 03/2023, as it is replaced by Network.CacheTransparency2. + SingleKeyedCacheIsUsed which has a higher range. + + nidhijaju@chromium.org + ricea@chromium.org + + Records whether the single-keyed cache is used for a URL in the pervasive + payloads list (not just when a cache entry is hit because there could be an + "unusable" flag set). This is recorded when the response checksum + matches the expected checksum in HttpCache::Transaction. The list index is + the index of the URL in the pervasive payloads list. + + + + + + Removed as of 03/2023, as it is replaced by + Network.CacheTransparency2.URLMatched which has a higher range. + + nidhijaju@chromium.org + ricea@chromium.org + + Records whether a requested resource's URL matched with any of the URLs in + the pervasive payloads list when a URL request is made. The list index is + the index of the URL in the pervasive payloads list. + + + + + nidhijaju@chromium.org + ricea@chromium.org + + Records whether a URL in the pervasive payloads list is marked as + "unusable" when the cached response is read. The list index is the + index of the URL in the pervasive payloads list. + + + + + nidhijaju@chromium.org + ricea@chromium.org + + Records whether a URL in the pervasive payloads list has a different + checksum than what is expected when the response checksums are compared in + HttpCache::Transaction. The list index is the index of the URL in the + pervasive payloads list. + + + + + nidhijaju@chromium.org + ricea@chromium.org + + Records whether the single-keyed cache is used for a URL in the pervasive + payloads list (not just when a cache entry is hit because there could be an + "unusable" flag set). This is recorded when the response checksum + matches the expected checksum in HttpCache::Transaction. The list index is + the index of the URL in the pervasive payloads list. + + + + + nidhijaju@chromium.org + ricea@chromium.org + + Records whether a requested resource's URL matched with any of the URLs in + the pervasive payloads list when a URL request is made. The list index is + the index of the URL in the pervasive payloads list. + + + + + stevenjb@chromium.org + cros-network-health-team@google.com + + Captive portal detection state from Shill received by NetworkState. NOTE: + This metric used to be CaptivePortal.NetworkPortalDetectorResult which was + expired from 2021-04-01 to 2022-09-18. + + + + + stevenjb@chromium.org + cros-network-health-team@google.com + + Captive portal status code reported by Shill and received by NetworkState. + NOTE: This metric used to be CaptivePortal.NetworkStateStatusCode which was + expired from 2021-04-01 to 2022-09-18. + + + + + hsuregan@chromium.org + cros-connectivity@google.com + + ChromeOS cellular network metric that tracks the Attach APN Toggle value + when the user explicitly clicks the Save button in the 'Other' APN settings, + with the intent of setting the cellular network APN properties. + + + + + azeemarshad@chromium.org + khorimoto@chromium.org + cros-connectivity@google.com + + Tracks the success rate of disabling an eSIM profile. Note that the result + for "already disabled" is considered a success for this metric. + + Emitted once the operation completes. + + + + + azeemarshad@chromium.org + khorimoto@chromium.org + cros-connectivity@google.com + + Tracks the success rate of enabling an eSIM profile. Note that the result + for "already enabled" is considered a success for this metric. + + Emitted once the operation completes. + + + + + nikhilcn@chromium.org + hsuregan@chromium.org + cros-connectivity@google.com + + This metric is emitted when user attempts to install an eSIM profile. We + record all hermes response status codes that are within our control. User + and Carrier related errors such as invalid qr code, malformed carrier + response are omitted. This will be used to measure the success rate of + installing an eSIM profile when the input is valid and external dependencies + are operating without errors. + + Emitted once the operation completes. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + jiajunz@google.com + + Tracks the result of an attempt to install an eSIM profile either via a QR + code or via policy. This process includes both an attempt to inhibit modem + scans as well as a request to install the profile. The metric tracks + failures at each step of the process. + + Emitted once the operation completes. + + + + + azeemarshad@chromium.org + khorimoto@chromium.org + cros-connectivity@google.com + + Tracks the success rate of installing a "pending" eSIM profile + found via SM-DS. SM-DS provides all profiles which a carrier has associated + with a device's EID; once this occurs, the user has the chance to install + one of these pending profiles via the UI. The installation process involves + making a network request to the cellular carrier and downloading a profile + to the device. + + Emitted once the operation completes. + + + + + + Split into Network.Cellular.ESim.UserInstall.OperationResult.{Type} + + azeemarshad@chromium.org + khorimoto@chromium.org + cros-connectivity@google.com + + Tracks the result of an attempt to install an eSIM profile via a QR code. + This process includes both an attempt to inhibit modem scans as well as a + request to install the profile. The metric tracks failures at each step of + the process. + + Emitted once the operation completes. + + + + + azeemarshad@chromium.org + khorimoto@chromium.org + cros-connectivity@google.com + + Tracks the success rate of installing an eSIM profile via a QR code. During + this process, the user can either scan a QR code by using the device's + webcam or can enter the QR code's decoded contents into a text field + manually. Once this occurs, the device contacts the cellular carrier and + downloads a profile to the device. + + Emitted once the operation completes. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + jiajunz@google.com + + Tracks how often the admin allows only managed cellular networks to connect. + This metric is logged for managed, cellular-capable devices when the primary + user logs in or when there is an update to the + allowOnlyPolicyCellularNetworks policy. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + jiajunz@google.com + + Tracks the result of all connection attempts. A success is emitted when a + managed eSIM network becomes connected from a non-connected state. When a + managed eSIM network goes from a connecting state to a disconnected state, a + shill failure reason is emitted. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + jiajunz@google.com + + Tracks when a managed eSIM cellular network is connected and when a managed + eSIM cellular network is disconnected without explicit user action. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + jiajunz@google.com + + Tracks the result of a various operation type attempt to install a managed + eSIM profile via policy. This process includes both an attempt to inhibit + modem scans as well as a request to install the profile. The metric tracks + failures at each step of the process. + + Emitted once the operation completes. + + + + + + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + jiajunz@google.com + + Tracks the result of an attempt to upload euicc status to DM server. This + metric provides the insights on how often ICCID/SM-DP+ get uploaded to the + DM server and whether the upload operation is successful or not. + + Emitted once the euicc status upload operation completes. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + jiajunz@google.com + + Tracks the amount of time taken to complete reset euicc operation. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + jiajunz@google.com + + Tracks the result of an attempt to reset euicc. This process includes both + an attempt to inhibit modem scans as well as a request to reset EUICC. The + metric tracks failures at each step of the process. Emitted once the + operation completes. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + jiajunz@google.com + + Tracks how many managed eSIM profiles are installed on the devices after a + primary user login. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + jiajunz@google.com + + Tracks status of managed eSIM cellular networks on the device. The status + indicates whether the device has managed or only non-managed or both types + of cellular networks. This is logged for managed cellular capable devices + when the primary user logs in. This allows us to track what fraction of + cellular network usage are controlled by policy. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + jiajunz@google.com + + Tracks the number of times a managed eSIM cellular network is connected as + the only network, or with other network or not connected at all. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + jiajunz@google.com + + Tracks how long users are using a managed eSIM cellular network as the sole + network for connectivity on their device. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + + Tracks how long the user needs to wait before profile discovery is complete. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + + Tracks the time for a profile to be fully downloaded from a provided + activation code. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + + Tracks the time for a pending profile to be fully downloaded. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + Tracks the rate of success of setting a profile nickname. + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + Tracks the rate of success of uninstalling a profile. + + + + nikhilcn@chromium.org + cros-connectivity@google.com + + Tracks the latency of call to SMDS server. This is emitted when pending eSIM + profiles are requested. Call latency is calculated and emitted upon + completion of the platform call. + + + + + azeemarshad@chromium.org + khorimoto@chromium.org + cros-connectivity@google.com + + Tracks the result of an attempt to request pending eSIM profiles (i.e., + those found via an SM-DS scan). This process includes both an attempt to + inhibit modem scans as well as a request for the profiles. The metric tracks + failures at each step of the process. + + Emitted once the operation completes. + + + + + azeemarshad@chromium.org + khorimoto@chromium.org + cros-connectivity@google.com + + Tracks the success rate of requesting pending eSIM profiles. Emitted once + the operation completes. + + + + + + Removed as of 07/2022. This is has been replaced with a new metric that adds + information on whether sim locking is allowed or not. + + azeemarshad@chromium.org + cros-connectivity@google.com + + Tracks how many eSIM profiles are installed on the devices after a primary + user login. Warning: this histogram was expired from 2023-01-15 to + 2023-01-28; data may be missing + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + + Tracks the result of the eSIM setup flow when the setup dialog closes. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + + Tracks the ESim Cellular network profile status when the primary user + logs-in to the device. + + + + + azeemarshad@chromium.org + khorimoto@chromium.org + cros-connectivity@google.com + + Tracks the result of the high-level operation of uninstalling an eSIM + profile. This includes several steps before and after the core step of + uninstalling the profile. + + Emitted once the operation completes. + + + + + azeemarshad@chromium.org + khorimoto@chromium.org + cros-connectivity@google.com + + Tracks the success rate of uninstalling an eSIM profile. Emitted once the + operation completes. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + + Tracks the number of times a ESim cellular network is connected as the only + network, or with other network or not connected at all. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + + Tracks the result of an attempt to install an eSIM profile by the user + either via QR code or by manually entering the activation code. This process + includes both an attempt to inhibit modem scans as well as a request to + install the profile. The metric tracks failures at each step of the process. + + Emitted once the operation completes. + + + + + + + + + + azeemarshad@chromium.org + khorimoto@chromium.org + cros-connectivity@google.com + + Tracks the result of a cellular device inhibit-uninhibit cycle. + + Emitted when uninhibit completes or when any step fails. + + + + + azeemarshad@chromium.org + hsuregan@chromium.org + cros-connectivity@google.com + + Tracks the rate of success of various pin operations. Note: This histogram + was expired from 2022-03-01 to 2022-03-23; data may be missing. + + + + + + + + + + + + + + + + + + + + + azeemarshad@chromium.org + khorimoto@chromium.org + cros-connectivity@google.com + + Tracks the result of the high-level operation of preparing a cellular + network for a connection. For eSIM networks, this involves several steps + such as enabling the profile, each of which can fail or succeed. + + Emitted once the operation completes. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + + Tracks the result of attempting to activate a physical SIM card via an Over + the Air (OTA) activation. Emitted once the operation completes. + + + + + + Removed as of 07/2022. This is has been replaced with a new metric that adds + information on whether sim locking is allowed or not. + + azeemarshad@chromium.org + cros-system-services-networking@google.com + + Tracks how many pSIM networks are available on the device after a primary + user login. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + + Tracks the result of the physical SIM card setup flow when the setup dialog + closes. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + + Tracks the PSim Cellular network activation state when the primary user + logs-in to the device. + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + + Tracks the number of times an PSim cellular network is connected as the only + network, or with other network or not connected at all. + + + + + + Replaced this with + "Network.Cellular.{SimPinOperation}.SimPINLockPolicy" which emits + information on whether the policy is applied or not during the operation. + + nikhilcn@chromium.org + hsuregan@chromium.org + cros-connectivity@google.com + + Sim PIN Lock policy is applied by enterprise administrators when they want + to restrict their users from locking or changing the PIN of their SIM. This + metric tracks instances where users have been able to successfully execute + lock or change PIN operations on their SIM while this policy is turned on. + + + + + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + + Tracks how many eSIM profiles are installed on the devices after a primary + user login. + + + + + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + + Tracks how many pSIM networks are available on the device after a primary + user login. + + + + + + + + + nikhilcn@chromium.org + hsuregan@chromium.org + cros-connectivity@google.com + + Sim PIN Lock policy is applied by enterprise administrators when they want + to restrict their users from locking or changing the PIN of their SIM. This + metric tracks instances where users have been able to successfully execute + lock or change PIN operations on their SIM while this policy is turned on. + + + + + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + + Tracks the time taken by the user to complete Cellular setup flow of a + {SimType} network with result {Result}. + + + + + + + + + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + + Tracks the result of all connection attempts. A success is emitted when a + {SimType} network becomes connected from a non-connected state. When a + {SimType} network goes from a connecting state to a disconnected state, a + shill failure reason is emitted. + + Warning: this histogram was expired from 2022-10-01 to 2023-02-28; data may + be missing + + + + + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + + Tracks the result of a user initiated connection attempt. Logged when a + {SimType} connection succeeds or fails. This histogram logs failure reasons + exposed by NetworkConnectionHandler. + + + + + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + jiajunz@google.com + + Tracks the rate of success of disconnecting the connected unmanaged + {SimType} networks when restricting cellular networks is enforced by policy. + + + + + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + + Tracks when cellular {SimType} network is connected and when cellular + network is disconnected without explicit user action. Note: This histogram + was expired from 2022-03-01 to 2022-03-23; data may be missing. + + + + + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + + Tracks the amount fo time taken between when cellular device starts and + finishes connecting for {SimType} networks. + + + + + + + + + azeemarshad@chromium.org + cros-connectivity@google.com + hsuregan@chromium.org + + Tracks how long users are using a {SimType} cellular network as the sole + network for connectivity on their device. + + + + + + + + + garrick@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records the DOH mode setting + whenever it is read from or changed in Chrome and propagated to shill. + + + + + garrick@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records an value corresponding + to the HTTP status returned when a DNS-over-HTTPS request returns in error. + + + + + garrick@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records the type of plain text + nameservers used whenever they are obtained from shill for a given network. + + + + + jasongustaman@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records any errors that occur + during DNS probes made by the service. A value will be recorded whenever the + probe completes in error. + + + + + + + + + jasongustaman@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records number of retries for + failing probes. A value will be recorded whenever the probe completes in + error. + + + + + + + + + jasongustaman@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records the results of the DNS + probes made by the service. A value will be recorded whenever the probe + completes. + + + + + + + + + jasongustaman@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records the results of the DNS + probes made by the service. A value will be recorded whenever the probe + completes. However, on error it is only recorded if it is a consistent + error, meaning if it fails even after certain amount of retries. + + + + + + + + + jasongustaman@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records number of retries + needed until a successful probe. A value will be recorded whenever the probe + completes in success. This metric does not catch consistenly failing probes. + + + + + + + + + garrick@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records the duration of + various stages of the resolution process, including the entire time elapsed + processing the query. The measurement is started when the resolver first + reads the query data from the client and completes when the reply is sent. + + This histogram collects data for stages of the query that have resulted in + some kind of failure. It's possible that for any single query, both + successful and failed stages may exist. The most obvious case is when a + resolution step is retried. As such, the total time elapsed will necessarily + include zero or more resolution stages which are recorded in the + query-type-specific version of this histogram. + + A "total" duration will be successful if at least one resolve + stage succeeds, but will be recorded as 'failed' if they all do, or if any + other stage fails. + + All measurements are made within the Resolver class. The "receive" + time is recorded in OnDNSQuery(). This is also when the "total" + time starts. The "resolve" measurements all start from the + Resolve() method, and will stop either in the same method (on failure) or + handler applicable to the specific client that was used: HandleAresResult() + and HandleCurlResult(). The "reply" time is recorded in the + ReplyDNS() method. + + + + + + + + + + garrick@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records the duration of + various stages of the resolution process, including the entire time elapsed + processing the query. The measurement is started when the resolver first + reads the query data from the client and completes when the reply is sent. + + This histogram collects data for stages of the query that have resulted in + success. It's possible that for any single query, both successful and failed + stages may exist. The most obvious case is when a resolution step is + retried. As such, the total time elapsed will necessarily include zero or + more resolution stages which are recorded in the query-type-specific version + of this histogram. + + A "total" duration will be successful if at least one resolve + stage succeeds, but will be recorded as 'failed' if they all do, or if any + other stage fails. + + All measurements are made within the Resolver class. The "receive" + time is recorded in OnDNSQuery(). This is also when the "total" + time starts. The "resolve" measurements all start from the + Resolve() method, and will stop either in the same method (on failure) or + handler applicable to the specific client that was used: HandleAresResult() + and HandleCurlResult(). The "reply" time is recorded in the + ReplyDNS() method. + + + + + + + + + + garrick@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records the number of + nameserver addresses whenever they are obtained from shill for a given + network. + + + + + + + + + garrick@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy tracking critical process events, + which are emitted when conditions arise that cause fatal or disruptive + conditions to the service. This metric is used to monitor the stability of + the service and provide detailed insight into failures. + + + + + + + + + + + garrick@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records any errors that occur + during DNS queries made by the service. A value will be recorded whenever + the request completes in error. + + + + + + + + + garrick@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records the duration of a + failed name resolution as part of an overall query. The measurement is + started just before the client resolver (either plaintext or DoH) is run and + stopped on its completion. + + All measurements are made within the Resolver class. The "resolve" + measurements all start from the Resolve() method, and will stop either in + the same method (on failure) or handler applicable to the specific client + that was used: HandleAresResult() and HandleCurlResult(). + + + + + + + + + garrick@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records the duration of a + successful name resolution as part of an overall query. The measurement is + started just before the client resolver (either plaintext or DoH) is run and + stopped on its completion. + + All measurements are made within the Resolver class. The "resolve" + measurements all start from the Resolve() method, and will stop either in + the same method (on failure) or handler applicable to the specific client + that was used: HandleAresResult() and HandleCurlResult(). + + + + + + + + + garrick@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records the results of the DNS + queries made by the service. A value will be recorded whenever the request + completes. + + + + + + + + + garrick@chromium.org + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS DNS proxy that records the results of the DNS + queries made by the service. A value will be recorded whenever the request + completes. If there are retries, only the last result will be recorded. + + + + + + + + + pmarko@google.com + suprnet@google.com + + The action taken when evaluating whether a workaround should be applied to + mark Ethernet ONC Policy fields as Recommended for backward compatiblity. + This histogram is emitted when the DeviceOpenNetworkConfiguration policy is + parsed (on chrome start and policy updates) and is found to contain an + Ethernet network configuration. + + + + + stevenjb@chromium.org + cros-network-health-team@google.com + + Whether a proxy is configured when Chrome captive portal detection + completes. This will be used to help prioritize better captive portal + detection with a proxy configured. + + + + + stevenjb@chromium.org + cros-network-health-team@google.com + + Chrome captive portal detection results on ChromeOS. NOTE: This metric used + to be CaptivePortal.NetworkPortalDetectorResult which was expired from + 2021-09-27 to 2022-09-18. + + + + + stevenjb@chromium.org + cros-network-health-team@google.com + + Number of Chrome portal detection attempts per network connection on + ChromeOS. + + + + + stevenjb@chromium.org + cros-network-health-team@google.com + + Captive portal detection network type recorded when Chrome on ChromeOS + detects a captive portal. NOTE: This metric used to be + CaptivePortal.NetworkPortalDetectorType which was expired from 2021-09-27 to + 2022-09-18. + + + + + stevenjb@chromium.org + cros-network-health-team@google.com + + Captive portal detection state when a notification is shown. Can be used + with Network.NetworkPortalSigninMode to compare notification to signin + ratio. + + + + + stevenjb@chromium.org + cros-network-health-team@google.com + + Captive portal signin display mode when a UI element requests to show the + signin UI. See also NetworkPortalSigninSource. + + + + + stevenjb@chromium.org + cros-network-health-team@google.com + + Captive portal signin display source (notification, settings, etc.) when a + UI element requests to show the signin UI. See also NetworkPortalSigninMode. + + + + + hugobenichi@google.com + cros-connectivity@google.com + cros-network-metrics@google.com + + Diagnostic metric for ChromeOS patchpanel's ArcService which controls the + virtual network setup for ARC++ and ARCVM. This metrics is recorded when the + virtual network setup for ARC or ARCVM is created, deleted, or updated to + track success and error rates of the various platform operations (network + interface creation, iptables setup, etc) involved in the ARC virtual network + setup. + + + + + hugobenichi@google.com + cros-connectivity@google.com + cros-network-metrics@google.com + + Diagnostic metric for the Dbus APIs implemented by ChromeOS patchpanel + network service. This metrics is recorded whenever one of patchpanel DBus + APIs is called and tracks success and error rates of various network + platform primitives implemented by patchpanel (port forwarding APIs, + firewall APIs, virtual network APIs for ARC and crosvm, etc). + + + + + stevenjb@chromium.org + cros-network-health-team@google.com + + Captive portal time from a portal-suspected state to an online state on + ChromeOS. NOTE: Prior to M110 this used a range that was too small so those + results are invalid. + + + + + bashi@chromium.org + blink-network-stack@google.com + + Records whether a SimpleURLLoader is throttled due to the default network + state (e.g. in low power state). Recorded when a SimpleURLLoader is going to + start. + + + + + bashi@chromium.org + blink-network-stack@google.com + + Records the time between a SimpleURLLoader request is made to the request + actually starts. Recorded only when the request is throttled due to the + default network state (e.g. in low power state). + + + + + stevenjb@chromium.org + cros-network-health-team@google.com + + Captive portal time from a redirect-found state to an online state on + ChromeOS. NOTE: Prior to M110 this used a range that was too small so those + results are invalid. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network diagnostic metric sampling the number of cellular network + flakes. A network flake occurs when the signal strength goes below detection + level for a short duration. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network diagnostic metric sampling the total amount of time spent + from the start of the first auto-connect request until when the cellular + modem successfully connects to the network. + + NOTE: This metric was expired from 2022-01-30 to 2022-04-01. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network diagnostic metric sampling the number of auto-connect tries + that were attempted before the cellular modem successfully connected to the + network. + + NOTE: This metric was expired from 2022-01-30 to 2022-04-01. + + + + + danielwinkler@google.com + cros-connectivity@google.com + + Reports the result of Cellular connection attempts through the platform + layers. This captures any success or failure as a result of a Connect call + through ModemManager, or any causes of early failure in shill that prevents + a connect attempt altogether. Refer to go/cros-cellular-apn-metrics for + details. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric that tracks the presence of a Cellular device in the + system. A sample is emitted once every 3 minutes. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS cellular network metric that tracks the number of drops based on + the network technology. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric that tracks the length of a lease for a + cellular network at the time it expired without the DHCP client being able + to renew it. + + NOTE: This metric was expired from 2021-12-01 to 2022-04-01. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric that tracks the presence of complete IPv6 + configuration at the time when cellular connection is established. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric that tracks the types of IP configuration used for + establishing cellular connections. + + + + + + Removed as of 01/2023 in crrev/c/4141265. + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network diagnostic metric sampling the total number of portal + detection attempts performed for a cellular network between the Connected + and Online state. This includes failure, timeout and successful attempts. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network diagnostic metric sampling the result of portal detections + for a cellular network. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS connection manager service errors for cellular interface. NOTE: + This metric was updated in M101. Data prior to that may be missing. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the signal strength (0-100) of the cellular + modem before it dropped from the network. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the time spent using cellular to transport + data. These data are mostly useful when summed and compared to TimeOnline + for other network technologies (e.g. WiFi vs Cellular). + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to join a cellular + network and configure Layer 3 state. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to connect a cellular + modem. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to disable a cellular + modem. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to enable a cellular + modem. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to initialize a + cellular modem. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to determine that a + cellular network is online after configuring Layer 3 state. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to determine that a + cellular network is in a captive portal after configuring Layer 3 state. + + + + + matthewmwang@chromium.org + hugobenichi@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to determine that a + cellular network is in a captive portal with a valid redirect URL after + configuring Layer 3 state. + + + + + ejcaruso@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to scan a cellular + network and register a modem. + + NOTE: This metric was expired from 2021-12-01 to 2022-04-01. + + + + + hugobenichi@google.com + cros-network-metrics@google.com + + ChromeOS network metric that tracks Layer 3 connectivity issues diagnosed by + the ConnectionDiagnostics class in Shill ran on a connected network after + Shill portal detection has failed to validate the network. This metric is + logged each time a ConnectionDiagnostics object completes its diagnostics + actions and reports the results to its caller. + + + + + + Removed Dec 2022. Not monitored. Less than 4 per day since M-106. + + stevenjb@chromium.org + cros-network-metrics@google.com + + ChromeOS cellular network metric that tracks the number of corrupted + profiles encountered by Shill. + + + + + + Obsoleted Dec 22, histograms were renamed (b/254170385). + + matthewmwang@chromium.org + stevenjb@chromium.org + cros-network-metrics@google.com + + ChromeOS device time on line in the previous 24-hour sample period. "On + line" means shill believes the device is on the internet. The shill + state is sampled every 5 minutes. The start of each 24-hour period is the + end of the previous period, unless the device is inactive at that time + (suspended or off), in which case it is the time of the next + resume/power-on. + + + + + + Removed Dec 2022. Not monitored. Less than .5% offline. Uninteresting and + largely redundant with portal detection related metrics. + + stevenjb@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric that tracks the connection status of the + device. A sample is emitted once every 3 minutes. + + + + + hugobenichi@google.com + cros-network-metrics@google.com + + ChromeOS network metric that tracks the presence of an Ethernet device in + the system. A sample is emitted once every 3 minutes. + + + + + chuweih@google.com + cros-network-metrics@google.com + + Chrome OS metric that records the name of ethernet driver detected when an + ethernet network is started. + + + + + hugobenichi@google.com + cros-network-metrics@google.com + + ChromeOS network performance metric that tracks the length of a lease for an + Ethernet network at the time it expired without the DHCP client being able + to renew it. + + NOTE: This metric was expired from 2021-12-01 to 2022-04-01. + + + + + + Removed as of 01/2023 in crrev/c/4141265. + + hugobenichi@google.com + cros-network-metrics@google.com + + ChromeOS network diagnostic metric sampling the total number of portal + detection attempts performed for an Ethernet network between the Connected + and Online state. This includes failure, timeout and successful attempts. + + NOTE: This metric was expired from 2021-12-01 to 2022-04-01. + + + + + hugobenichi@google.com + cros-network-metrics@google.com + + ChromeOS network diagnostic metric sampling the result of portal detections + for an Ethernet network. + + NOTE: This metric was expired from 2021-12-01 to 2022-04-01. + + + + + hugobenichi@google.com + cros-network-metrics@google.com + + ChromeOS connection manager service errors for ethernet interface. NOTE: + This metric was updated in M101. Data prior to that may be missing. + + + + + hugobenichi@google.com + cros-network-metrics@google.com + + ChromeOS network metric sampling the time spent using Ethernet to transport + data. These data are mostly useful when summed and compared to TimeOnline + for other network technologies (e.g. WiFi vs Cellular). + + NOTE: This metric was expired from 2021-12-01 to 2022-04-01. + + + + + hugobenichi@google.com + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to join a wired + Ethernet network and configure Layer 3 state (typically acquire a DHCP + lease). + + NOTE: This metric was expired from 2021-12-01 to 2022-04-01. + + + + + hugobenichi@google.com + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to initialize an + Ethernet device. + + NOTE: This metric was expired from 2021-12-01 to 2022-04-01. + + + + + hugobenichi@google.com + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to determine that an + Ethernet network is online after configuring Layer 3 state. + + NOTE: This metric was expired from 2021-12-01 to 2022-04-01. + + + + + hugobenichi@google.com + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to determine that an + Ethernet network is in a captive portal after configuring Layer 3 state. + + NOTE: This metric was expired from 2021-12-01 to 2022-04-01. + + + + + matthewmwang@chromium.org + hugobenichi@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to determine that an + Ethernet network is in a captive portal with a valid redirect URL after + configuring Layer 3 state. + + NOTE: This metric was expired from 2021-12-01 to 2022-04-01. + + + + + + Removed 6/2022 because it is unmonitored and not technology specific. + TODO(b/236386653): Remove entirely once removed from Shill. + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric recording portal detection results of both the HTTP + and HTTPS probes. This is recorded every time a portal detection trial + finishes. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + Number of portal detection attempts before a Cellular network transitions to + a non connected state, recorded when Service.State transitions to a non + connected state. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + Number of portal detection attempts before an Ethernet network transitions + to a non connected state, recorded when Service.State transitions to a non + connected state. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + Number of portal detection attempts before a WiFi network transitions to a + non connected state, recorded when Service.State transitions to a non + connected state. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + Number of portal detection attempts until a Cellular network transitions to + online, recorded when detection completes with an online result. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + Number of portal detection attempts until an Ethernet network transitions to + online, recorded when detection completes with an online result. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + Number of portal detection attempts until a WiFi network transitions to + online, recorded when detection complets with an online result. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + Number of portal detection attempts before a Cellular network transitions to + redirect-found, recorded when Service.State transitions to redirect-found. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + Number of portal detection attempts before an Ethernet network transitions + to redirect-found, recorded when Service.State transitions to + redirect-found. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + Number of portal detection attempts before a WiFi network transitions to + redirect-found, recorded when Service.State transitions to redirect-found. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + Shill captive portal detection initial result for a Cellular network, + recorded after the initial portal detection attempt. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + Shill captive portal detection initial result for an Ethernet network, + recorded after the initial portal detection attempt. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + Shill captive portal detection initial result for a WiFii network, recorded + after the initial portal detection attempt. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + Shill captive portal detection retry result for a Cellular network, recorded + after a repeated detection attempt. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + Shill captive portal detection retry result for an Ethernet network, + recorded after a repeated detection attempt. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + Shill captive portal detection retry result for a WiFi network, recorded + after a repeated detection attempt. + + + + + jiejiang@chromium.org + cros-network-metrics@google.com + + ChromeOS network diagnostic metric sampling the MTU value provided by the + upstream PPP peer for L2TP VPN connections. A sample is emitted each time + the client successfully negotiates an MTU value via PPP. + + + + + + Removed Dec 2022. Not monitored. 0.001% failure rate. + + stevenjb@chromium.org + cros-network-metrics@google.com + + ChromeOS network diagnostic metric sampling the number of suspend actions + that successfully complete or fail when shill suspends. + + + + + matthewmwang@chromium.org + stevenjb@chromium.org + cros-network-metrics@google.com + + ChromeOS network diagnostic metric sampling the time in milliseconds it + takes suspend actions to complete when shill suspends. + + + + + stevenjb@chromium.org + cros-network-metrics@google.com + + ChromeOS network stability metric sampling the time in seconds between the + networking going online to going offline. Offline events due to device + shutdown or suspend are ignored (along with the online time before that + offline event). + + + + + jiejiang@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric sampled on each successful VPN connection that + tracks the VPN connection type. + + + + + jiejiang@chromium.org + cros-connectivity@google.com + cros-network-metrics@google.com + + ChromeOS network usage metric emitted on each successful IKEv2 VPN + connection that tracks how the client authenticates itself to the server. + + + + + jiejiang@chromium.org + cros-connectivity@google.com + cros-network-metrics@google.com + + ChromeOS network usage metric emitted on the end of each IKEv2 VPN + connection that tracks the reason that the connection is ended. This metric + will be emitted no matter if the connection is established successfully, + i.e., it will be emitted if an error happens during connecting. + + + + + jiejiang@chromium.org + cros-connectivity@google.com + cros-network-metrics@google.com + + ChromeOS network usage metric emitted on the end of each L2TP/IPsec VPN + connection initiated by the swanctl-based driver that tracks the reason that + the connection is ended. This metric will be emitted no matter if the + connection is established successfully, i.e., it will be emitted if an error + happens during connecting. + + + + + jiejiang@chromium.org + cros-connectivity@google.com + cros-network-metrics@google.com + + ChromeOS network usage metric emitted on each successful L2TP/IPsec VPN + connection that tracks whether tunnel group is used. The tunnel group + property needs to be set when connecting to some Cisco L2TP/IPsec VPN. + + + + + taoyl@google.com + cros-connectivity@google.com + cros-network-metrics@google.com + + ChromeOS network metric emitted on each successful OpenVPN connection that + tracks the cipher algorithm negotiated with server. + + + + + jiejiang@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric sampled on each successful VPN connection that + tracks the remote authentication method. + + + + + jiejiang@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the time spent using VPN to transport data. + These data are mostly useful when summed and compared to TimeOnline for + other network technologies (e.g. WiFi vs Cellular). A sample is emitted + every time the system transitions from primary connectivity through a VPN to + some other type of connectivity. The value of the sample is the time delta + in seconds from the instant the system transitioned to VPN connectivity. + + + + + jiejiang@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to configure Layer 3 + state on a VPN network (typically acquire a DHCP lease). + + + + + jiejiang@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to determine that a + VPN connection is online after configuring Layer 3 state. + + + + + jiejiang@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric sampled on each successful VPN connection that + tracks the user authentication method. + + + + + jiejiang@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric emitted on each successful WireGuard VPN + connection that tracks the type of the allowed IPs set in this connection. + + + + + jiejiang@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric emitted on each successful WireGuard VPN + connection that tracks the source of the key pair used in this connection. + + + + + jiejiang@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric emitted on each successful WireGuard VPN + connection that tracks the number of peers used in in this connection. + + + + + jiejiang@chromium.org + cros-connectivity@google.com + cros-network-metrics@google.com + + ChromeOS network usage metric emitted on each successful {VPNType} VPN + connection that tracks the encryption algorithm used by the ESP protocol in + this connection. + + + + + + jiejiang@chromium.org + cros-connectivity@google.com + cros-network-metrics@google.com + + ChromeOS network usage metric emitted on each successful {VPNType} VPN + connection that tracks the integrity algorithm used by the ESP protocol in + this connection. + + + + + + jiejiang@chromium.org + cros-connectivity@google.com + cros-network-metrics@google.com + + ChromeOS network usage metric emitted on each successful {VPNType} VPN + connection that tracks the DH group used by the IKE protocol in this + connection. + + + + + + jiejiang@chromium.org + cros-connectivity@google.com + cros-network-metrics@google.com + + ChromeOS network usage metric emitted on each successful {VPNType} VPN + connection that tracks the encryption algorithm used by the IKE protocol in + this connection. + + + + + + jiejiang@chromium.org + cros-connectivity@google.com + cros-network-metrics@google.com + + ChromeOS network usage metric emitted on each successful {VPNType} VPN + connection that tracks the integrity algorithm used by the IKE protocol in + this connection. + + + + + + jiejiang@chromium.org + cros-connectivity@google.com + cros-network-metrics@google.com + + ChromeOS network usage metric emitted on each successful {VPNType} VPN + connection that tracks the IP family provided in this connection. + + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS WiFi usage metric emitted every time the WiFi adapter is enabled. + It tracks if the adapter that was detected on the device is in the allowlist + to be reported via structured metrics (e.g. is it in AVL?) or not. + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the number of Wireless Access Points that + support the 802.11k standard, sampled on successful connections to an AP. + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the number of Wireless Access Points that + support the 802.11r standard, sampled on successful connections to an AP. + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the number of Wireless Access Points that + support the 802.11v BSS Max Idle Period feature, sampled on successful + connections to an AP. + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the number of Wireless Access Points that + support the 802.11v BSS Transition feature, sampled on successful + connections to an AP. + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the number of Wireless Access Points that + support the 802.11v DMS feature, sampled on successful connections to an AP. + + + + + damiendejean@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the number of Wireless Access Points that + support transmit opportunity negotation, emitted on successful connections + to an AP. + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric sampled when an AP switches channels. Shows + the old frequency band and the new frequency band. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric. Reason code reported when the AP disconnects + a WiFi connection. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric. Broad category of reason AP disconnected a + WiFi connection. + + + + + damiendejean@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the number of Wireless Access Points that + support stream classification, emitted on successful connections to an AP. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric. Status code reported when an 802.11 + association fails. Note that not all disconnects are caused by an assoc + failure, and so this metric shold not be correlated with the DisconnectType + metrics. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric. Status code reported when an 802.11 + authentication fails. Note that not all disconnects are caused by an auth + failure, and so this metric should not be correlated with the DisconnectType + metrics. + + + + + matthewmwang@chromium.org + stevenjb@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the number of wifi services available for + auto-connect when auto-connect is initiated for wifi device. + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the number of BSSes (endpoints) available + for the currently connecting wifi service. + + + + + yichenyu@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric. This is recorded when a connection failure is + due to bad-passphrase and indicates whether the attempt is initated by users + or not and if the service has been previously connected. + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric recording BSS Transition Management statuses. This + is recorded every time a BSS Transition Management request is received from + a wireless access point. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric. The channel used for each successful WiFi + connection. + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the number of Wireless Access Points that + support Cisco's Adaptive FT feature, sampled on successful connections to an + AP. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric. Reason code reported when the client + disconnects a WiFi connection. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric. Broad category of reason client disconnected + a WiFi connection. + + + + + kuabhs@chromium.org + cros-network-metrics@google.com + + ChromeOS Wifi Connection Quality Monitor(CQM) Notifications metric. This is + emitted when any packet or beacon loss is observed for signal strength + greater than -80 dBm. This metric is rate-limited such that it is never + emitted more than once every 6 minutes. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric that tracks the presence of a WiFi device in the + system. A sample is emitted once every 3 minutes. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric that tracks whether an 802.11 wireless network + was disconnected due to an error or was explicitly disconnected by the user. + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric sampled on each successful 802.1x wireless + connection that tracks the configured inner authentication method. + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric sampled on each successful 802.1x wireless + connection that tracks the configured outer authentication method. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric that tracks the length of a lease for a + WiFi network at the time it expired without the DHCP client being able to + renew it. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric that tracks the result of the fallback + DNS test. The fallback DNS test is performed when portal detection failed + due to DNS failure. + + + + + jonmann@chromium.org + tnagel@chromium.org + cros-network-metrics@google.com + pwg-cros@google.com + + ChromeOS network metric tracking whether there has ever been a successful + connection for each WiFi network which is configured with a hidden SSID. The + metric includes networks from system and user profile and it's recorded each + time a user configuration profile is loaded, such as when a user logs in. + Networks that were last connected before M-84 will show as never connected. + + + + + jonmann@chromium.org + tnagel@chromium.org + cros-network-metrics@google.com + pwg-cros@google.com + + ChromeOS network metric tracking the number of days since the last + connection for each WiFi network configured with hidden SSID. The metric + includes networks from system and user profile and it's recorded each time a + user configuration profile is loaded, such as when a user logs in. + + + + + tnagel@chromium.org + cros-network-metrics@google.com + cros-privacy-core@google.com + + ChromeOS network metric tracking whether WiFi networks configured with + hidden SSID have ever been connected. The metric includes networks from + system and user profile and it's recorded each time a user configuration + profile is loaded, such as when a user logs in. + + + + + tnagel@chromium.org + cros-network-metrics@google.com + cros-privacy-core@google.com + + ChromeOS network metric tracking WiFi networks configured with hidden SSID. + The metric includes networks from system and user profile and it's recorded + each time a user configuration profile is loaded, such as when a user logs + in. The fraction of non-zero buckets should roughly correspond to the + fraction of devices that are trying to connect to hidden SSIDs at any given + point in time. + + + + + kglund@google.com + cros-network-metrics@google.com + + ChromeOS network metric that tracks the Hotspot 2.0 support of access points + that devices connect to. Results are recorded every time a device connects + to an access point. The metric records either the HS20 version the AP + supports, or that the AP does not support HS20. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric that tracks the presence of complete IPv6 + configuration at the time when WiFi connection is established. + + + + + matthewmwang@google.com + cros-network-metrics@google.com + + ChromeOS network metric that tracks the Multi-Band Operation (MBO) support + of access points that devices connect to. Results are recorded every time a + device connects to an access point. + + + + + jiejiang@chromium.org + cros-network-metrics@google.com + + ChromeOS metric that signals the type of failure the NeighborLinkMonitor + detected on 802.11 wireless network. Recorded after the NeighborLinkMonitor + detects a layer 2 connectivity failure to a neighbor. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric that tracks the types of IP configuration used for + establishing WiFi connections. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric that tracks the network problems + encountered by TrafficMonitor after WiFi connection is established. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric. The standard advertised by the AP for each + successful WiFi connection. It is not necessarily the same as the standard + used by the AP and STA to communicate. For example, if the AP supports + 802.11ax and the STA only supports 802.11ac, this metric will report + 802.11ax even though STA and AP will use 802.11ac. The metric is emitted + when the device connects successfully to an AP. + + + + + + Removed as of 01/2023 in https://crrev/c/4141265. + + matthewmwang@chromium.org + stevenjb@chromium.org + cros-network-metrics@google.com + + ChromeOS network diagnostic metric sampling the total number of portal + detection attempts performed for an 802.11 wireless network between the + Connected and Online state. This includes failure, timeout and successful + attempts. + + + + + matthewmwang@chromium.org + stevenjb@chromium.org + cros-network-metrics@google.com + + ChromeOS network diagnostic metric sampling the result of portal detections + for an 802.11 wireless network. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric that tracks which country the WiFi regulatory + domain is set to. Recorded every time a WiFi regulatory domain change is + triggered or determined initially (Shill startup). + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network diagnostic metric sampling the number of 802.11 wireless + networks known by the connection manager at the time a configuration profile + has been loaded. A configuration profile is loaded at each system startup, + and when a user logs in. + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the number of 802.11 wireless networks + configured from the system configuration profile. This metric is sampled + each time a user configuration profile is loaded, such as when a user logs + in. + + It might be surprising to have a system configuration profile metric sampled + when a user configuration profile is loaded. But this ensures that we have + equal numbers of samples for system and user configuration profiles. + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the number of 802.11 wireless networks + configured from a user configuration profile. This metric is sampled each + time a user configuration profile is loaded, such as when a user logs in. + + + + + billyzhao@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric recording instances where Shill is told to restart + the WiFi device. This is triggered by udev event from the iwl7000 driver. + See b/270746800 for more details. This metric will be removed once we notice + the driver not sending these requests. This removal process is tracked in + b/278765529. + + + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric recording roam successes or failures. This is + recorded every time a client succeeds or fails to roam from one wireless + access point to another. + + + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric recording roam time in milliseconds. This is + recorded every time a successful roam from one wireless access point to + another occurs. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric describing, for a WiFi scan attempt, what scan + method is used and whether it ends in a connection. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric describing, for a WiFi scan attempt, how many + milliseconds were spent waiting to talk to the kernel/drivers. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network usage metric. The security setting for each successful WiFi + connection. + + + + + andrzejo@google.com + cros-network-metrics@google.com + + ChromeOS network metric for WiFi security changes. It is emitted every time + a new BSSID is being added to a network, this network has already been + connected before and configuration of this new BSSID causes network security + to be changed in a non-trivial way - that is a downgrade or an upgrade that + can cause split of an network into two services. + + + + + kuabhs@chromium.org + cros-network-metrics@google.com + + ChromeOS connection manager service errors for wifi interface. + + + + + + + matthewmwang@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric recording session length in milliseconds. This is + recorded every time an uninterrupted session with a wireless access point is + terminated. + + + + + norvez@chromium.org + druth@google.com + cros-network-metrics@google.com + + ChromeOS metric reporting the state of the "session tag" state + machine that tags {Event} structured metrics events. The state of the + session tag is emitted at the same time as the {Event} structured metric + event is emitted. Details at go/cros-wifi-metrics-session-tag-dd. + + + + + + + + + + kuabhs@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric indicating the negative of the dBm received signal + strength recorded at the time of a WiFi disconnect. + + + + + kuabhs@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric indicating the negative of the dBm received signal + strength recorded at the time a successful WiFi connection started. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + Number of attempts required for a WiFi device to be established with WPA + supplicant (shill retries on failure). This metric is reported either on + success, reporting the number of attempts performed; or after repeated + failures (currently 6), we give up and report an artificial maximum (10). + + Thus, a value of 10 means we aborted after repeated failures. Values of 1 to + 6 represent successful connections on the first to sixth try. Values of 7 to + 9 (which should not occur) represent successful connections after seven or + more attempts (success reports are capped at 9). + + + + + billyzhao@chromium.org + cros-network-metrics@google.com + + Time spent between network rekey attempt to connection failure. The metric + timer starts when a rekey is initiated and stops once a connection failure + is reported or another rekey is initiated. The metric is only reported if + the timer is stopped by a connection failure within 180 seconds. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the time spent using WiFi to transport + data. These data are mostly useful when summed and compared to TimeOnline + for other network technologies (e.g. WiFi vs Cellular). + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time from the resume event + to the time when an 802.11 wireless network has configured its Layer 3 + state. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to configure Layer 3 + state on an 802.11 wireless network (typically acquire a DHCP lease). + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to connect to a WiFi + Basic Service Set (which consists of the access point and associated + stations on a particular WiFi channel for a specific network). + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to initialize an + 802.11 wireless device. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to join (associate + plus authenticate) an 802.11 wireless network. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to determine that an + 802.11 wireless network is online after configuring Layer 3 state. + + + + + matthewmwang@chromium.org + hugobenichi@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to determine that an + 802.11 wireless network is in a captive portal after configuring Layer 3 + state. + + + + + matthewmwang@chromium.org + hugobenichi@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to determine that an + 802.11 wireless network is in a captive portal with a valid redirect URL + after configuring Layer 3 state. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time to scan WiFi until a + connection is found. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric sampling the time between the beginning + of a WiFi scan (if the scan includes both a progressive scan and a full + scan, the TimeToScanAndConnect starts with the first scan of the series) and + the completion of a successful connection. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric that tracks the transmit bitrate in Mbps + for the wifi device when it is connected to a network. The bitrate is + reported once every minute after the wifi connection is established. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network metric sampling the signal strength (0-100) of the wifi + network when it becomes unreliable (experiencing multiple link failures in a + short period of time). + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric that tracks the reasons of failed + user-initiated WiFi connection attempts. The result of the user-initiated + WiFi connection attempts are being tracked by + Network.Shill.WiFi.UserInitiatedConnectionResult. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + ChromeOS network performance metric that tracks the result of user-initiated + WiFi connection attempts. + + + + + jiejiang@chromium.org + cros-connectivity@google.com + cros-network-metrics@google.com + + ChromeOS network usage metric emitted after a {Technology} connection has + been connected for 30 seconds, to track the IP type on this connection. Wait + for 30 seconds because IPv4 and IPv6 configuration are usually provisioned + at different time. Note that no metric will be emitted if the duration of + the connection is shorter than 30 seconds. + + + + + + Please list the metric's owners. Add more owner tags as needed. + cast-analytics@google.com + + ChromeOS network usage metric. The channel used for each successful WiFi + connection. + + + + + Please list the metric's owners. Add more owner tags as needed. + cast-analytics@google.com + + ChromeOS network usage metric. The channel type used for each successful + WiFi connection. + + + + + Please list the metric's owners. Add more owner tags as needed. + cast-analytics@google.com + + Network metric reporting the average round trip time to the WiFi gateway. + Recorded at least once per day. + + + + + Please list the metric's owners. Add more owner tags as needed. + cast-analytics@google.com + + ChromeOS network usage metric. The security setting for each successful WiFi + connection. + + + + + jonmann@chromium.org + crisrael@google.com + chromeos-cross-device-eng@google.com + + ChromeOS metric that tracks the failure reason for all connection attempts, + manual or automatic, to Wi-Fi networks which were added from Chrome Sync. + + + + + jonmann@chromium.org + crisrael@google.com + chromeos-cross-device-eng@google.com + + ChromeOS metric that tracks the result of all connection attempts, manual or + automatic, to Wi-Fi networks which were added from Chrome Sync. + + + + + jonmann@chromium.org + tnagel@chromium.org + cros-network-metrics@google.com + cros-privacy-core@google.com + + ChromeOS network metric tracking the count of synced networks that were + fixed after getting saved to the device when out of range and marked as + hidden. See b/178089463 for more details. + + + + + jonmann@chromium.org + crisrael@google.com + chromeos-cross-device-eng@google.com + + ChromeOS metric that tracks the failure reason for manual connection + attempts to Wi-Fi networks which were added from Chrome Sync. + + + + + jonmann@chromium.org + crisrael@google.com + chromeos-cross-device-eng@google.com + + ChromeOS metric that tracks the result of manual connection attempts to + Wi-Fi networks which were added from Chrome Sync. + + + + + jonmann@chromium.org + crisrael@google.com + chromeos-cross-device-eng@google.com + + ChromeOS metric that tracks the total number of Wi-Fi networks which are + stored in Chrome Sync for the active user. + + + + + jonmann@chromium.org + crisrael@google.com + chromeos-cross-device-eng@google.com + + ChromeOS metric that tracks the failure reason for update attempts to synced + Wi-Fi networks. This includes create/modify/remove operations. Each retry is + counted seperately. + + + + + jonmann@chromium.org + crisrael@google.com + chromeos-cross-device-eng@google.com + + ChromeOS metric that tracks the success or failure to generate a local + network config. Emitted on success and failure of add/update operations. + + + + + jonmann@chromium.org + crisrael@google.com + chromeos-cross-device-eng@google.com + + ChromeOS metric that tracks the result of update attempts to synced Wi-Fi + networks. This includes create/modify/remove operations. failures are only + recorded after all retries have been exhausted. + + + + + jonmann@chromium.org + crisrael@google.com + chromeos-cross-device-eng@google.com + + ChromeOS metric logged for users who have the feature enabled but have zero + networks eligible for sync. Tracks the reasons why none of the networks are + eligible. + + + + + wfh@chromium.org + pasko@chromium.org + + The result of an attempt to delete stale network context data directory + (e.g. cookies). Recorded during construction of network context for Chrome + and Safebrowsing. Android only. + + + + + hiroshige@chromium.org + toyoshim@chromium.org + + Whether method or normalized method are allowed in CORS preflight request in + PreflightResult::EnsureAllowedCrossOriginMethod(), to measure the impact of + https://crbug.com/1228178. + + Logged for preflight requests that have method checked (i.e. those without + errors before EnsureAllowedCrossOriginMethod). + + + + + mkwst@chromium.org + yhirano@chromium.org + + Records the result of the Cross-Origin Resource Policy check, with + cross-origin-embedder-policy-report-only involvement. + + + + + mkwst@chromium.org + yhirano@chromium.org + + Records the result of the Cross-Origin Resource Policy check. + + + + + wfh@chromium.org + mmenke@chromium.org + + Reports whether or not any old cache data was found and deleted from the + http_cache_path when creating a network context within the network service. + This is reported each time a network context is created in the network + service with a valid http_cache_path and http_cache_enabled is set to true. + + + + + wfh@chromium.org + mmenke@chromium.org + + The result of the attempt to grant the sandbox access to a network context + data files, and migrate the data if a migration is requested. This is + reported each time a network context instance is created on the network + service, even when the sandbox is not enabled or no migration is requested. + + + + + qingsi@chromium.org + jeroendb@chromium.org + + Errors that the mDNS responder service encounters during its lifetime. These + may be system errors in mDNS socket creation and IO, or user-induced by + invalid IP addresses. + + + + + bashi@chromium.org + blink-network-stack@google.com + + Records a reason why a request cannot be served from the in-memory cache due + to request header checks. Recorded when the in-memory cache tries to serve a + stored response. + + + + + bashi@chromium.org + blink-network-stack@google.com + + Size of a response body that is going to be stored to the network service + in-memory cache. Recorded before a response is going to be stored to the + in-memory cache. If the size is larger than a configurable limit, the + response won't be stored in the in-memory cache. This histogram is recorded + for {RequestDestination}. + + + + + + bashi@chromium.org + blink-network-stack@google.com + + Records whether an HTTP response is served from the in-memory cache in the + network service. Recorded when the network service starts a network request + and the request satisfies preconditions. Preconditions include: CORS checks + passed, the request was a valid GET request, and the request didn't force + network access etc. See NetworkServiceMemoryCache::CanServe() for details. + + + + + bashi@chromium.org + blink-network-stack@google.com + + Records freshness of a response when it is going to be stored into the + in-memory cache. The range is from 1 seconds to 864000 seconds (10 days). + + + + + bashi@chromium.org + blink-network-stack@google.com + + The time taken to finish a network URLLoader to complete. A network + URLLoader is a URLLoader that a CorsURLLoader used internally to load an + HTTP response from the underlying layer. The underlying layer serves the + response from one of the followings: the network service in-memory cache, a + disk cache backend, or the network. + + This histogram is recorded for {Source}. + + + + + + + + + + jam@chromium.org + + How long the browser waits for the network process to exit at shutdown. + + + + + wfh@chromium.org + mmenke@chromium.org + + The time taken to permit the sandbox access to the cache directory during + network context initialization. This is recorded each time a network context + is created with a valid disk cache specified. This histogram is platform + dependent so values from different platforms cannot be directly compared. On + Windows, this records the amount of time taken to set the filesystem ACLs to + allow the sandbox access to the cache directory. + + + + + wfh@chromium.org + mmenke@chromium.org + + The time taken to permit the sandbox access to the data directory during + network context initialization. This is recorded each time a network context + is created with a valid set of NetworkContextFilePaths with + unsandboxed_data_path specified indicating it could be sandboxed. This + histogram is platform dependent so values from different platforms cannot be + directly compared. On Windows, this records the amount of time taken to set + the filesystem ACLs to allow the sandbox access to the data directory. + + + + + wfh@chromium.org + mmenke@chromium.org + + The time taken to copy the network context data files from the unsandboxed + data path to the new sandbox data path. This is recorded each time an + unmigrated network context is created with a valid set of data file paths, + an unsandboxed_data_path to migrate from, and trigger_migration specified. + This could include several logs from the same client for the same network + context if the migration fails, since this is reported each time the + migration is attempted. + + + + + + Removed in March 2022 / M101. + + Old results are preserved in + https://docs.google.com/document/d/15j6AKzZ-HgyRQVrKpdGHfGf8D_fcUILmcQ34RAWD1TM/edit?resourcekey=0-wwIJsGSoWmhvFMwMTWdAOw + + lukasza@chromium.org + creis@chromium.org + jam@chromium.org + + Whether the request origin (i.e. + network::ResourceRequest::request_initiator) matches the origin that the + browser process expected when creating the URLLoaderFactory (i.e. whether it + matches URLLoaderFactoryParams::request_initiator_origin_lock). + + Recorded when a request is started (i.e. at the time of constructing + network::URLLoader). + + + + + jam@chromium.org + mmenke@chromium.org + + Whether the Origin header is the same as the request origin in the + URLLoaderFactory when it creates a URLLoader. + + + + + jam@chromium.org + cduvall@chromium.org + + The time it takes for each invocation of URLLoaderFactory.UpdateLoadInfo. + + + + + + diff --git a/histograms/metadata/new_tab_page/OWNERS b/histograms/metadata/new_tab_page/OWNERS new file mode 100644 index 000000000000..f97090d51aed --- /dev/null +++ b/histograms/metadata/new_tab_page/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +dewittj@chromium.org +tiborg@chromium.org diff --git a/histograms/metadata/new_tab_page/histograms.xml b/histograms/metadata/new_tab_page/histograms.xml new file mode 100644 index 000000000000..2b2f1fc806e2 --- /dev/null +++ b/histograms/metadata/new_tab_page/histograms.xml @@ -0,0 +1,2023 @@ + + + + + + + + + + twellington@chromium.org + finkm@chromium.org + + Actions taken from the new tab page on Android. These actions may navigate + away from the NTP (e.g. searching in the omnibox or opening a bookmark), but + can also happen without navigating away from the NTP (e.g. opening a content + suggestion in a new tab). + + + + + justincohen@chromium.org + gambard@chromium.org + + Actions taken by users from the new tab page on iOS. These actions may + navigate away from the NTP (e.g. searching in the omnibox or opening a + bookmark), but can also happen without navigating away from the NTP (e.g. + opening a bookmark in a new tab). + + + + + Please list the metric's owners. Add more owner tags as needed. + + Histogram for the source of app page drags. For any succesful drop onto an + apps pane of the NTP, this logs where the drag originated. + + + + + danpeng@google.com + pauladedeji@chromium.org + chrome-desktop-ntp@google.com + + Records the type of background image that is set. Only recorded once per + NTP. + + + + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + The time it took until a request from the New Tab Page for Backdrop + Collections was served. + + + + + tiborg@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + The time it took until a request from the New Tab Page for Backdrop Images + was served. + + + + + meiliang@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Logged when discount is encoded successfully into the navigation url. This + histogram always logs a 1 and this value has no meaning other than this + occurence happended. Only logged on the 1P NTP. Note that even if the user + has Google as their default search engine, Incognito and Guest mode NTPs are + not considered 1P and don't log this histogram. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Logged when the cart module is created. The value is equal to the initial + number of carts within the module (could be zero). + + + + + yuezhanggg@chromium.org + chrome-shopping@google.com + + Logged when the cart module is created and is recorded once for every cart. + It records the number of product images in this cart (could be zero). This + is not logged when welcome surface is showing. Only logged on the 1P NTP. + Note that even if the user has Google as their default search engine, + Incognito and Guest mode NTPs are not considered 1P and don't log this + histogram. + + + + + wychen@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Logged when a user clicks on a cart in the cart module. The value is equal + to the index of the cart. + + + + + meiliang@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Logged when a user clicks on a cart in the cart module. It records whether + the clicked cart has a discount or not. Only logged on the 1P NTP. Note that + even if the user has Google as their default search engine, Incognito and + Guest mode NTPs are not considered 1P and don't log this histogram. + + + + + meiliang@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Records the discount data associated with the cart module. Logged when the + chrome cart module makes a data request to a Chrome-external backend. Only + logged on the 1P NTP. Note that even if the user has Google as their default + search engine, Incognito and Guest mode NTPs are not considered 1P and don't + log this histogram. + + + + + meiliang@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Logged when the cart module is created and if there is at least one + abandoned cart. It records the index of the discounted cart within the cart + module. Only logged on the 1P NTP. Note that even if the user has Google as + their default search engine, Incognito and Guest mode NTPs are not + considered 1P and don't log this histogram. + + + + + meiliang@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Logged every time the consent for Rule-based Discount shows in the cart + module. We only show the consent when there are abandoned carts from partner + merchants. This histogram always logs a 1 and this value has no meaning + other than that an occurrence happended. Only logged on the 1P NTP. Note + that even if the user has Google as their default search engine, Incognito + and Guest mode NTPs are not considered 1P and don't log this histogram. + + + + + yuezhanggg@chromium.org + wychen@chromium.org + chrome-shopping@google.com + + Logged when the cart module is created and if there is at least one + abandoned cart. "Accept" and "Decline" to record + interaction result for users who have acted on the consent; + "IGNORED" for users who have seen the consent before but never + acted on it, and the consent is showing now; "No show" for users + who have seen the consent before but never acted on it, and the consent is + not showing now; "Never shown" for users who have never seen the + consent. Only logged on the 1P NTP. Note that even if the user has Google as + their default search engine, Incognito and Guest mode NTPs are not + considered 1P and don't log this histogram. + + + + + meiliang@chromium.org + chrome-shopping@google.com + + Logged when the cart module is created and if there is at least one + abandoned cart. It {ConsentState}. Only logged on the 1P NTP. Note that even + if the user has Google as their default search engine, Incognito and Guest + mode NTPs are not considered 1P and don't log this histogram. + + + + + + + + + + + + + + + + meiliang@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Logged when the cart module is created and if there is at least one + abandoned cart. It records the number of carts with discount (could be + zero). Only logged on the 1P NTP. Note that even if the user has Google as + their default search engine, Incognito and Guest mode NTPs are not + considered 1P and don't log this histogram. + + + + + meiliang@chromium.org + yuezhanggg@chromium.org + chrome-shopping@google.com + + Logged when the cart module is created. It records the number of carts + without discount (could be zero). Only logged on the 1P NTP. Note that even + if the user has Google as their default search engine, Incognito and Guest + mode NTPs are not considered 1P and don't log this histogram. + + + + + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Logged when the NTP was clicked. Only logged on the 1P NTP. Be aware that + this may undercount clicks on nested OGB iframes. Note that even if the user + has Google as their default search engine, Incognito and Guest mode NTPs are + not considered 1P and don't log this histogram. + + + + + danpeng@google.com + pauladedeji@chromium.org + chrome-desktop-ntp@google.com + + The collection id of user's background image on the NTP. Only recorded once + per NTP. Note that even if the user has Google as their default search + engine, Incognito and Guest mode NTPs are not considered 1P and don't log + this histogram. + + + + + danpeng@google.com + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Records the concrete page loaded when navigating to chrome://newtab. + Recorded on every NTP load. + + + + + freedjm@chromium.org + feed@chromium.org + + Android: Whether article suggestions on New Tab Page are set visible by user + on startup and when the visibility is changed. + + + + + skym@chromium.org + carlosk@chromium.org + Android: Loading of Zine was artifically delayed + + + + carlosk@chromium.org + freedjm@chromium.org + feed@chromium.org + + Android: The number of suggestion cards that were available at the time an + NTP was opened. Only visible categories (i.e. which can be seen by the user + on this NTP) are recorded, including empty ones. + + + + + carlosk@chromium.org + freedjm@chromium.org + feed@chromium.org + + Android: The number of prefetched suggestion cards that were available in + Articles category if it was visible at the time an NTP was opened and the + user was offline. Analogous to + NewTabPage.ContentSuggestions.CountOnNtpOpenedIfVisible, except that this + metric is reported after all URL prefetched asynchronous checks finish. + + + + + freedjm@chromium.org + feed@chromium.org + + Android: The position of a suggestion card whose long-press menu was opened, + analogous to NewTabPage.ContentSuggestions.Opened. + + + + + vitaliii@chromium.org + + Android: The new index of a category on the NTP after it has been moved up + due to a click. The index of a category, which has been overtaken, is not + recorded here. This tracked index can be different from the position + observed by the user, e.g. empty categories are not shown. This metric + ignores all other order changes (e.g. dismissing a category or clearing + history). + + + + + zea@chromium.org + + Android: The number of actions taken on displayed notifications, either + user-initiated (tapping to open or swiping to dismiss), or automatic (hiding + due to a change in circumstances). + + + + + zea@chromium.org + + Android: The number of times a user opted out, keyed by method: IMPLICIT + (user ignored enough notifications consecutively that we think they're not + interested), or EXPLICIT (via explicit setting). + + + + + zea@chromium.org + + Android: The number of notifications that were shown, keyed by category. One + bucket counts the server-provided ARTICLES category; the other counts + everything else. + + + + + + + freedjm@chromium.org + feed@chromium.org + + Android: The position of the For-You card on the NTP, that is clicked + through to the host website of the content. We track the position the card + had in the list when it was first seen by the user. This tracked position + can be different from the position observed by the user, e.g. when the user + dismissed some suggestions from the list or requested more that got inserted + in the middle of the feed. + + iOS: Reported per click on card in the feed. Does not include position + information and thus can only be used as a total count of clicks. + + + + + carlosk@chromium.org + freedjm@chromium.org + feed@chromium.org + + Android: The position of the prefetched suggestion card on the NTP, that is + clicked through to the host website of the content, when the user is + offline. Analogous to NewTabPage.ContentSuggestions.Opened. That is we track + the position the card had in the list when it was first seen by the user. + This tracked position can be different from the position observed by the + user, e.g. when the user dismissed some suggestions from the list or + requested more that got inserted in the middle of the feed. + + + + + carlosk@chromium.org + freedjm@chromium.org + feed@chromium.org + + Whether content suggestions from the remote service are enabled. It is + recored at startup. Note: This histogram is not specific to the New Tab + Page. + + + + + vitaliii@chromium.org + + Android: The number of suggestion sections that were shown at the time an + NTP was opened. All shown sections (including empty ones) are counted. + + + + + + + freedjm@chromium.org + feed@chromium.org + + Android: The position of a For-You card that was shown on the NTP. A card is + considered shown when at least 2/3 of its height is visible on the screen. + For each card, at most one impression is recorded per NTP instance. We track + the position the card had in the list when it was first seen by the user. + This tracked position can be different from the position observed by the + user, e.g. when the user dismissed some suggestions from the list or + requested more that got inserted in the middle of the feed. + + + + + freedjm@chromium.org + feed@chromium.org + + Android: The age of a suggestion card that was shown on the NTP. A card is + considered shown when at least 2/3 of its height is visible on the screen. + For each card, at most one impression is recorded per NTP instance. + + + + + tschumann@chromium.org + + Android: The score of a suggestion card that was shown on the NTP. A card is + considered shown when at least 2/3 of its height is visible on the screen. + For each card, at most one impression is recorded per NTP instance. Scores + (which are typically floats within (0,1]) get reported as discrete integers + within [1,10]. For instance, the discrete value 1 represents score values + from (0.0, 0.1]. The discrete value 11 is the overflow bucket for + unexpectedly high scores. + + + + + tmartino@chromium.org + chrome-creation@google.com + + Tracks the outcome of Probabilistic Cryptid Rendering (succeeded, failed, or + was disabled because preconditions were not met). + + + + + + Last logged in M86. Removed 2022-10. + + dbeam@chromium.org + yyushkina@chromium.org + chrome-analysis-team@google.com + + Customization actions performed by the user on the New Tab Page; logged as + each interaction occurs. This may indicate popularity of a particular + customization type. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + tiborg@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + Captures the actions performed when configuring a 'Chrome background' image + on the New Tab Page. Since most actions are sequential, this may indicate + steps in the configuration process where users drop off. + + + + + pauladedeji@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + Captures calls to open Customize Chrome on the NTP. Calls can be made to + open Customize Chrome while it is already open. Opening Customize Chrome + from inside the side panel is tracked by + "SidePanel.CustomizeChrome.ShowTriggered". + + + + + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + The New Tab Page features that have been customized by the user; logged per + NTP load. + + + + + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + The New Tab Page shortcut settings that can be customized by the user, + including shortcut type (i.e. most visited vs custom links) and visibility; + logged per NTP load. + + + + + tiborg@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + Captures the actions performed when uploading a local image as the + background on the New Tab Page. Since most actions are sequential, this may + indicate steps in the configuration process where users drop off. + + + + + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Captures the actions performed when configuring shortcuts on the New Tab + Page. + + + + + tiborg@chromium.org + aee@chromium.org + andrevincent@google.com + + Logged when a user clicks on a file within the Drive Module. The index is + equal to the index of the file. + + + + + + + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs the number of files returned by ItemSuggest. Logged every time the + Drive module successfully processed an ItemSuggest response. + + + + + + + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs the result of a request to the ItemSuggest API. Logged every time the + Drive module makes an ItemSuggest request. + + + + + hanxi@chromium.org + ssid@chromium.org + + Logs the result from segmentation platform that determines whether the user + is a Feed active user or a non-Feed user. Recorded three times when a new + tab page is shown and Feed position (target) experiment is enabled. + + + + + tiborg@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + Logs whether Chrome has valid user credentials for the profile the NTP is + loading in. Logged when the NTP starts loading. Only logged on the 1P NTP. + Note that even if the user has Google as their default search engine, + Incognito and Guest mode NTPs are not considered 1P and don't log this + histogram. + + + + + danpeng@google.com + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Height of the NTP viewport in CSS pixels. Logged when the NTP loads. Only + logged on the 1P NTP. Note that even if the user has Google as their default + search engine, Incognito and Guest mode NTPs are not considered 1P and don't + log this histogram. + + + + + yuezhanggg@chromium.org + romanarora@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs the association status of every abandoned cart to history clusters when + history clusters are loaded and ranked to be shown in the NTP History + Cluster Module. Logged at module UI creation time when determining if there + is necessary data to display the module. Only logged on the 1P NTP and when + the history clusters module is enabled. + + + + + romanarora@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Records the layout selected and displayed for the NTP History Clusters + module. Logged at module UI creation time when determining if there is + necessary data to display the module. Only logged on the 1P NTP when the + history clusters module is enabled. + + + + + yuezhanggg@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs whether there is at least one ChromeCart related to the top cluster. + Being related is defined as whether there is a ChromeCart for the domain of + any visit in this cluster, Only logged on the 1P NTP when both the history + clusters module and ChromeCart is enabled. + + + + + sophiechang@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs whether there is at least one cluster that can be shown in the history + clusters module that matches the desired filtering criteria configurable via + Finch. Only logged on the 1P NTP and the history clusters module is enabled. + + + + + romanarora@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs whether loading an image for a quests tile succeeded or failed (true + for success and false for failure). This is determined by whether or not we + get a URL back from the ImageService for a visit that we expected to have an + image for. Only logged in 1P NTP with the history clusters module enabled. + + + + + romanarora@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs the reason why the last candidate cluster of a list of of ineligible + candidate clusters was identified as such, resulting in the module not being + displayed. Logged when the NewTabPage is rendering the enabled modules. Only + logged on the 1P NTP and the history clusters module is enabled. + + + + + romanarora@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Records the element type that was activated by the user on the NTP history + clusters module. Logged when a user clicks on an actionable element of the + module, such as a tile or button. Only logged on the 1P NTP when the history + clusters module is enabled. + + + + + + + + + + romanarora@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs the overall image absence or presence on the visit tiles displayed in + the NTP history clusters module. Logged at page unload time. Only logged on + the 1P NTP and when the history clusters module is enabled. + + + + + + + + + + romanarora@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs the index of a clicked URL visit or suggestion tile for a given + displayed layout of the NTP history clusters module. Logged on clicking a + tile element of the module. Only logged on the 1P NTP and when the history + clusters module is enabled. + + + + + + + + + + + + + + sophiechang@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs the number of clusters that match the desired filtering criteria + configurable via Finch for the history clusters module. Only logged on the + 1P NTP and the history clusters module is enabled. + + + + + romanarora@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs the number of related searches present in the candidate cluster that + might be rendered by the NTP history clusters module. Logged at module UI + creation time when determining if there is necessary data to display the + module. Only logged on the 1P NTP and when the history clusters module is + enabled. + + + + + romanarora@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs the number of URL visits present in the candidate cluster that might be + rendered by the NTP history clusters module. Logged at module UI creation + time when determining if there is necessary data to display the module. Only + logged on the 1P NTP and when the history clusters module is enabled. + + + + + jkrcal@chromium.org + + Android: Percentage of how much in browsing is the UI language of Chrome + used compared to overall use of the two top languages that are reported to + Chrome content suggestion server. + + + + + nguyenbryan@google.com + yowakita@google.com + bbonnet@google.com + chrome-desktop-ntp@google.com + + Actions that take place on the Lens upload dialog on the new tab page. These + may indicate user actions (interactions with the form) or the results of + user actions (e.g. successful submission or showing an error message). Only + logged on the 1P NTP. Note that even if the user has Google as their default + search engine, Incognito and Guest mode NTPs are not considered 1P and don't + log this histogram. + + + + + nguyenbryan@google.com + yowakita@google.com + bbonnet@google.com + chrome-desktop-ntp@google.com + + Errors that occur during use of the Lens upload dialog on the new tab + page.These may indicate user error (e.g. an unusable file or URL) or + external errors (e.g. a network error). Only logged on the 1P NTP. Note that + even if the user has Google as their default search engine, Incognito and + Guest mode NTPs are not considered 1P and don't log this histogram. + + + + + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Histogram of the time, in milliseconds, it took for the NTP to load all of + its tiles since navigation start. + + + + + + + tiborg@chromium.org + yyushkina@chromium.org + chrome-analysis-team@google.com + chrome-desktop-ntp@google.com + + The number of clicks on the static/call-to-action/animated logo on the NTP. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + tiborg@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + Outcome of downloading search provider's logos. It measures whether + download/parsing is successful, revalidation and parsing work properly, etc. + + + + + tiborg@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + The amount of time it took to download the static logo. This includes + requests where there was no logo, or where an existing logo was revalidated + (so no new image data was downloaded), but it does not include failed + requests. + + + + + tiborg@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + A logo image (static or CTA) was downloaded. Recorded only when the image + was downloaded and decoded without errors. + + + + + tiborg@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + The number of static logos and animated logos shown to users. Note that the + base version of this histogram is recorded both for logos from the cache and + for fresh logos, so it can be recorded twice per NTP impression. + + + + + tiborg@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + The amount of time between opening an NTP and the logo appearing. Only + recorded when there is a logo, and only recorded once per NTP. + + + + + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Records the time until the top-level ntp-app Custom Element's |ready| + callback is called. The intention is to measure how quickly the contents of + new_tab_page.rollup.js (main JS bundle) are rendered. + + + + + + Removed in April 2023. + + fserb@chromium.org + zmin@chromium.org + + Record the network status when a new tab page is opened. True if user is + online and false for offline. + + + + + hanxi@chromium.org + xinyiji@chromium.org + + Record the total count of clicks on different modules of the New tab page. + For most visited tiles: is recorded when 1) user clicks on most visited + tiles; 2) long press on most visited tiles to open in a new tab or open in a + new tab in group or a new incognito tab or to download the link. This is + consistent with MobileNTPMostVisited. For feeds: is recorded when 1) user + clicks on feeds; 2) long press on feeds to open in a new tab or open in a + new incognito tab or check about this source and topic; 3) click the learn + more button on the top of the feeds section. For omnibox: is recorded every + time when user uses Omnibox or voice search on Omnibox to navigate. This is + consistent with MobileOmniboxUse. For tab switcher button: is recorded every + time when user clicks on the tab switcher button. For home button: is + recorded when user clicks on the home button. For profile button: is + recorded when user clicks on the profile button. For doodle logo: is + recorded every time when user clicks on the doodle and navigates to another + website. For menu button: is recorded when user clicks on the menu button. + The histogram is logged on New tab page and is Android-only. + + + + + hanxi@chromium.org + xinyiji@chromium.org + + Record the total count of long clicks on different modules of the New tab + page. For home button: is recorded when user long presses on home button to + edit homepage. The histogram is logged on New tab page and is Android-only. + + + + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Records hashes associated with NTP modules. Logged when an NTP module makes + a data request to a Chrome-external backend. Only logged on the 1P NTP. Note + that even if the user has Google as their default search engine, Incognito + and Guest mode NTPs are not considered 1P and don't log this histogram. + + + + + danpeng@google.com + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logged when a module was disabled by {Interaction}. Only logged on the 1P + NTP. Note that even if the user has Google as their default search engine, + Incognito and Guest mode NTPs are not considered 1P and don't log this + histogram. + + + + + + + + + + danpeng@google.com + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Records the dismissed modules. This is recorded when the user explicitly + dismisses a module via the module remove button on the New Tab Page. Every + dismissal emits a 1 which has no inherent meaning aside from a dismissal + occurred. + + + + + danpeng@google.com + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs for each NTP module whether it was enabled after the NTP has + instantiated the modules. Only logged on the 1P NTP. Note that even if the + user has Google as their default search engine, Incognito and Guest mode + NTPs are not considered 1P and don't log this histogram. + + + + + tiborg@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + Logged when a module was enabled by {Interaction}. Only logged on the 1P + NTP. Note that even if the user has Google as their default search engine, + Incognito and Guest mode NTPs are not considered 1P and don't log this + histogram. + + + + + + + + + + danpeng@google.com + pauladedeji@chromium.org + chrome-desktop-ntp@google.com + + Logs how many time a user saw the FRE when they opt in. Only logged on the + 1P NTP. Note that even if the user has Google as their default search + engine, Incognito and Guest mode NTPs are not considered 1P and don't log + this histogram. + + + + + danpeng@google.com + pauladedeji@chromium.org + chrome-desktop-ntp@google.com + + Logs when user is opted in to FRE without taking action. Only logged on the + 1P NTP. Note that even if the user has Google as their default search + engine, Incognito and Guest mode NTPs are not considered 1P and don't log + this histogram. + + + + + danpeng@google.com + pauladedeji@chromium.org + chrome-desktop-ntp@google.com + + Logs if Modular NTP Desktop v1 First Run Experience is set to be visible and + on user's screen. Only logged on the 1P NTP. Note that even if the user has + Google as their default search engine, Incognito and Guest mode NTPs are not + considered 1P and don't log this histogram. + + + + + danpeng@google.com + pauladedeji@chromium.org + chrome-desktop-ntp@google.com + + Logs if Modular NTP Desktop v1 First Run Experience is set to be visible + whether or not it is on the user's screen. Only logged on the 1P NTP. Note + that even if the user has Google as their default search engine, Incognito + and Guest mode NTPs are not considered 1P and don't log this histogram. + + + + + danpeng@google.com + pauladedeji@chromium.org + chrome-desktop-ntp@google.com + + Logs how many time a user saw the FRE when they opt out. Only logged on the + 1P NTP. Note that even if the user has Google as their default search + engine, Incognito and Guest mode NTPs are not considered 1P and don't log + this histogram. + + + + + danpeng@google.com + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logged when the user hovers on a module. Only logged once per NTP and + module. Only logged on the 1P NTP. Note that even if the user has Google as + their default search engine, Incognito and Guest mode NTPs are not + considered 1P and don't log this histogram. + + + + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Histogram of the time, in milliseconds since navigation start, it took until + an NTP module header is mostly visible in the window's content area + (viewport). If the module header is mostly below the page fold, the time + delta will include the time it takes for the user to scroll the module into + view. + + + + + danpeng@google.com + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Records the maximum amount that any (base histogram) or a particular (sub + histograms) module was visible in the NTP content's area between load and + unload of an NTP. The amount is recorded as the perdecage (x/10th) of the + module's total size. Logged when the NTP unloads, such as via navigating + somewhere else or closing the tab (switching tabs does not cause an unload). + Logs a value into the base histogram and the corresponding sub histogram for + each module that is present. Only logged on the 1P NTP. Note that even if + the user has Google as their default search engine, Incognito and Guest mode + NTPs are not considered 1P and don't log these histograms. It is possible + for this histogram to log a value of 0 if, for instance, the module was + always more than 90% below the fold. + + + + + danpeng@google.com + pauladedeji@chromium.org + chrome-desktop-ntp@google.com + + Records the module's id when a user clicks the info button in the module's + header. Only logged on the 1P NTP. Note that even if the user has Google as + their default search engine, Incognito and Guest mode NTPs are not + considered 1P and don't log this histogram. + + + + + danpeng@google.com + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Histogram of the time in milliseconds it took for an NTP module to load. + + + + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Histogram of the time, in milliseconds since navigation start, it took until + an NTP module loaded. + + + + + danpeng@google.com + tiborg@chromium.org + chrome-desktop-ntp@google.com + + The number of rendered modules in the NTP. Only logged on the 1P NTP. Note + that even if the user has Google as their default search engine, Incognito + and Guest mode NTPs are not considered 1P and don't log this histogram. + + + + + danpeng@google.com + tiborg@chromium.org + chrome-desktop-ntp@google.com + + This records the what other modules are loaded with {NtpModule} together. + Logged when the module is loaded. Only logged on the 1P NTP. Note that even + if the user has Google as their default search engine, Incognito and Guest + mode NTPs are not considered 1P and don't log this histogram. + + + + + + + + + + + + + danpeng@google.com + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Records the restord modules. This is recorded when the user explicitly + restores a previously dismissed module via the toast on the New Tab Page. + Every restoral emits a 1 which has no inherent meaning aside from a restoral + occurred. + + + + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Histogram of the time, in milliseconds since navigation start, it took until + the modules showed up on the NTP. + + + + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Emitted each time a user action within an NTP module launches a module's + feature. Every usage emits a 1 which has no inherent meaning aside from a + usage occurred. + + + + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + Logs whether the NTP modules are visible at NTP load. + + + + + + justincohen@chromium.org + mastiz@chromium.org + tiborg@chromium.org + yyushkina@chromium.org + chrome-analysis-team@google.com + chrome-desktop-ntp@google.com + + Histogram for user clicks of the most visited tile. The value is equal to + the index of the tile. + + For special types of results: + + * Clicks on the "Add Shortcut" tile are not counted. + + * Clicks on the Explore Sites tile on Android are counted. + + The user action NewTabPage.MostVisited.Clicked is also logged at the same + time as this histogram. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + This records the type of most visited app on the ntp-tile, whether it is + from a default app or a custom link. Triggered as soon as a migrated default + app or custom link is deleted. + + + + + treib@chromium.org + + The time from the New Tab page being shown until the user to clicked on a + most visited tile. Only recorded if the user clicked on a tile, as opposed + to e.g. searching via the omnibox. Only measured on Android. + + + + + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + The number of tiles that are on the NTP, no matter if they are thumbnails, + gray tiles, or external tiles. Recorded before reloading the suggestions, + navigating to a URL, switching tabs, changing the active window or closing + the tab/shutting down Chrome. The sum of this histogram does not have to + equal to the total count of tile impressions (such as the total count in + NewTabPage.TileType). The reason is that not all tiles have to be impressed + initially (e.g., the second row of tiles may be initially out of sight on + iOS). + + + + + tiborg@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + The time it took until a request from the New Tab page for the OneGoogleBar + script was served. Recorded only on the local NTP. + + + + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Histogram of the time, in milliseconds since navigation start, it took until + the OneGoogleBar showed up on the NTP. Recorded only on the local NTP. + + + + + jerem@google.com + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs the state of Photos module API requests. Only logged on the 1P NTP. + Note that even if the user has Google as their default search engine, + Incognito and Guest mode NTPs are not considered 1P and don't log this + histogram. + + + + + jerem@google.com + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs the number of memories in the photos module response. Only logged on + the 1P NTP. Note that even if the user has Google as their default search + engine, Incognito and Guest mode NTPs are not considered 1P and don't log + this histogram. + + + + + tiborg@chromium.org + jerem@google.com + chrome-desktop-ntp@google.com + + Logged every time we try to load an image in the photos module. This + histogram logs 'Success' when loading was successful and 'Failure' when + there was an error. Only logged on the 1P NTP. Note that even if the user + has Google as their default search engine, Incognito and Guest mode NTPs are + not considered 1P and don't log this histogram. + + + + + tiborg@chromium.org + jerem@google.com + chrome-desktop-ntp@google.com + + Logged every time the photos module is shown to the user. This histogram + logs 'Not opted-in' when the opt-in screen was shown and 'Opted-in' when + memories were shown. Only logged on the 1P NTP. Note that even if the user + has Google as their default search engine, Incognito and Guest mode NTPs are + not considered 1P and don't log this histogram. + + + + + tiborg@chromium.org + jerem@google.com + mplg@google.com + chrome-desktop-ntp@google.com + + Logged every time the user changes the opt-in status of the photos module + (OptIn/SoftOptOut/HardOptOut). Only logged on the 1P NTP. Note that even if + the user has Google as their default search engine, Incognito and Guest mode + NTPs are not considered 1P and don't log this histogram. + + + + + danpeng@google.com + pauladedeji@google.com + chrome-desktop-ntp@google.com + + Logs when action is taken on promo e.g. dismissal or restoration. Only + logged on the 1P NTP. Note that even if the user has Google as their default + search engine, Incognito and Guest mode NTPs are not considered 1P and don't + log this histogram. + + + + + + + dbeam@chromium.org + yyushkina@chromium.org + chrome-analysis-team@google.com + + Emitted each time a promo linked is clicked on the local NTP. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + mahmadi@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Logs how many times various promo browser commands are executed. Triggered + when a supported and enabled promo browser command is sent via the New Tab + Page promos and is executed by the PromoBrowserCommandHandler. + + + + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + The time it took until a request from the New Tab page for the middle slot + promo script was served. Recorded on the local and WebUI NTP. + + + + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Histogram of the time, in milliseconds since navigation start, it took until + a middle slot promo showed up on the NTP. Recorded on the local and WebUI + NTP. + + + + + + Deprecated in M114 in favor of Realbox.CharTypedToRepaintLatency.ToPaint. + + mahmadi@chromium.org + tommycli@chromium.org + chrome-desktop-ntp@google.com + + Records the time taken between a keystroke being typed in the NTP realbox + and the time when we're ready to render the results in the DOM. If there are + multiple keystrokes before the results are rendered, logs the time since the + earliest one. This is most comparable to Omnibox's + Omnibox.CharTypedToRepaintLatency.ToPaint as it does not take into account + the time the DOM change task spends in the message loop nor its duration. + + + + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Logged when a user clicked on a recipe in the recipe tasks module. The value + is equal to the index of the recipe. + + + + + tiborg@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + The number of recipe search links in the primary shopping task (top-ranked, + recipe, search journey). The recipe search links are rendered with a name, + image and URL. This metric is logged after the recipe tasks are successfuly + retrieved. + + + + + tiborg@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + Logged when a user clicked on a related search pill in the recipe tasks + module. The value is equal to the index of the pill. + + + + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + The number of related search links in the primary recipe task (top-ranked, + recipe, search journey). The related search links are rendered with a name + and URL. This metric is logged after the recipe tasks are successfuly + retrieved. + + + + + fgorski@chromium.org + ender@google.com + yyushkina@chromium.org + + The time until the search box became available on the NTP in a cold start. + It's a cold start if the native library is not already loaded and + initialized at the time the activity is created. Only measured on Android. + + + + + fgorski@chromium.org + ender@google.com + yyushkina@chromium.org + + The time until the search box became available on the NTP in a warm start. + It's a warm start if the native library is already loaded and initialized at + the time the activity is created. This might happen if for example a service + was already running. Only measured on Android. + + + + + hanxi@chromium.org + xinyiji@chromium.org + + Logs the reason why the search resumption module is enabled but not shown on + the NTP. Recorded when NewTabPage is created and the search resumption + module fails to show. + + + + + hanxi@chromium.org + xinyiji@chromium.org + + Logs whether the search resumption module is expanded or collapsed when the + module is shown on the NTP. Recorded when the NewTabPage is created and the + search resumption module is shown. + + + + + hanxi@chromium.org + xinyiji@chromium.org + + Logs whether the search resumption module is expanded or collapsed when the + module is shown on the NTP using cached results. Recorded when the + NewTabPage is created and the search resumption module is shown. + + + + + + Last logged in M101. Marked obsolete 2022-10. + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Logged when a user clicked on a product in the shopping tasks module. The + value is equal to the index of the product. + + + + + + Last logged in M101. Marked obsolete 2022-10. + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + The number of product search links in the primary shopping task (top-ranked, + shopping, search journey). The product search links are rendered with a + name, price, image and URL. This metric is logged after the shopping tasks + are successfuly retrieved. + + + + + + Last logged in M101. Marked obsolete 2022-10. + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Logged when a user clicked on a related search pill in the shopping tasks + module. The value is equal to the index of the pill. + + + + + + Last logged in M101. Marked obsolete 2022-10. + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + The number of related search links in the primary shopping task (top-ranked, + shopping, search journey). The related search links are rendered with a name + and URL. This metric is logged after the shopping tasks are successfuly + retrieved. + + + + + maybelle@chromium.org + + Whether we discarded any of the snippets after fetching them due to having + incomplete metadata. + + + + + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Histogram for impressions on the various most visited tiles. The value is + equal to the index of the thumbnail. + + + + + ender@google.com + mahmadi@chromium.org + chrome-omnibox-team@google.com + + Records the type of the SuggestTile that the user deleted. Most Visited URLs + record a URL, and Organic Repeatable Queries record a Search type. + + Recorded every time the user initiates deletion of a suggest tile, that + results with tile removal. Not recorded if the user chooses to cancel the + action. + + + + + ender@google.com + mahmadi@chromium.org + chrome-omnibox-team@google.com + + Records the type of the SuggestTile that the user interacted with. Most + Visited URLs record a URL, and Organic Repeatable Queries record a Search + type. + + Recorded every time the user selects the tile to initiate navigation, even + if the navigation could not be completed (eg. target site did not load). + + + + + yusuyoutube@google.com + benwgold@google.com + fgorski@chromium.org + wylieb@chromium.org + lens-chrome@google.com + + Logs the elapsed time between the time when user enters the Google Lens and + the time when user dismisses Lens and returns to Chrome. Only logged on + Android. + + + + + treib@chromium.org + + The number of times a tile was available offline, per tile index - compare + to the NewTabPage.SuggestionsImpression.* histograms. This is recorded when + the NTP finishes loading. Only measured on Android. + + + + + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Records the source of the title for each most visited tiled displayed when + an NTP is opened, e.g. a short_name from a manifest, or the page title. + + + + + danielms@google.com + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Records the source for the name a most visited tile showed when the user + clicked it, e.g. a URL, or the page title. + + + + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + The visual type of each most visited tile displayed on the new tab page, + e.g. actual thumbnail or placeholder thumbnail. This is recorded for each + most visited item when the NTP is opened. + + + + + danpeng@google.com + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + The visual type of the most visited item that the user clicked on, e.g. + actual thumbnail or placeholder thumbnail. + + + + + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Logged when a 1P NTP starts loading. Logs the time since the last time a 1P + NTP in the same profile started loading. Note the following: (a) The first + NTP load ever is not counted. (b) This value is computed using a client-side + clock and stored in prefs. As such, (i) it works across sessions and (ii) it + can show strange values if a user changes their clock. (c) Even if the user + has Google as their default search engine, Incognito and Guest mode NTPs are + not considered 1P and don't log this histogram. + + + + + freedjm@chromium.org + feed@chromium.org + olivierrobin@chromium.org + + The time spent on the new tab page as measured from when it was loaded or + last brought to the foreground until it was navigated away from or hidden. + Only measured on Android and iOS. + + + + + yusuyoutube@google.com + benwgold@google.com + fgorski@chromium.org + wylieb@chromium.org + lens-chrome@google.com + + Logs the elapsed time between the time when user enters the Google Lens and + the time when user dismisses Lens and returns to Chrome. Only logged on + Android. + + + + + + Removed in April 2023. + + freedjm@chromium.org + feed@chromium.org + + The time from when a new tab page is created until the first pre-draw call + on the root view containing the search provider logo (if available), fake + search box, most visited tiles, articles etc. More specifically, this is the + time between NewTabPage's constructor and the first pre-draw pass on this + root view. This typically means that the fixed UI elements are shown to the + user, but the articles below are not filled in yet. + + + + + tiborg@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + Records the status of the New Tab page URL when an NTP is opened. + + + + + freedjm@chromium.org + feed@chromium.org + + Android: The estimated average number of hours between two successive times + when the user opens a content suggestion or clicks on the "More" + button. Recorded after each time a suggestion or a More button is clicked + (and after updating the model used for the estimate). + + + + + tiborg@chromium.org + yyushkina@chromium.org + chrome-desktop-ntp@google.com + + Actions taken by users of Voice Search on the local New Tab Page on Desktop. + These actions may navigate away from the NTP (e.g. submitting a speech + query), but can also happen without navigating away from the NTP (e.g. + initiating or retrying Voice Search). + + + + + tiborg@chromium.org + danpeng@google.com + chrome-desktop-ntp@google.com + + Errors that occur during Voice Search use on the local New Tab Page on + Desktop. These may be user-induced (e.g. the user's utterance could not be + recognized - no match), or resulting from external circumstances (e.g. + offline, lack of microphone permission). + + + + + danpeng@google.com + tiborg@chromium.org + chrome-desktop-ntp@google.com + + Width of the NTP viewport in CSS pixels. Logged when the NTP loads. Only + logged on the 1P NTP. Note that even if the user has Google as their default + search engine, Incognito and Guest mode NTPs are not considered 1P and don't + log this histogram. + + + + + + diff --git a/histograms/metadata/notifications/OWNERS b/histograms/metadata/notifications/OWNERS new file mode 100644 index 000000000000..b93feb14b5ee --- /dev/null +++ b/histograms/metadata/notifications/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +peter@chromium.org +rayankans@chromium.org diff --git a/histograms/metadata/notifications/histograms.xml b/histograms/metadata/notifications/histograms.xml new file mode 100644 index 000000000000..d1f3d61e0af5 --- /dev/null +++ b/histograms/metadata/notifications/histograms.xml @@ -0,0 +1,1186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + dewittj@chromium.org + leandre@chromium.org + cros-status-area-eng@google.com + + The actions taken on notifications, recorded every time they happen. This + histogram will record every single event that happens separately. + + + + + peter@chromium.org + knollr@chromium.org + + Records whether we could successfully build a notification using Android's + Notification Builder. If unsuccessful, we will silently drop the + notification display request. + + + + + peter@chromium.org + knollr@chromium.org + + Records the delay between scheduling a job with the JobScheduler (with a + desired latency of 0ms, in response to a notification click) and receiving + the onStartJob callback. Only measured on Android N and above. + + + + + peter@chromium.org + + Recorded when the Sites channel (which we hope to deprecate) is used as a + fallback, when a site-specific notification channel is expected to exist but + does not. Note, we only log when the sites channel is *used*, not when it is + not used. + + + + + + + peter@chromium.org + + Records whether notifications are enabled for Chrome, as the Android app, + for each Web Notification that is being shown to the user. + + + + + peter@chromium.org + + The size, in bytes, of the author-provided data associated with a Web + Notification. Recorded when a persistent Web Notification is being shown by + the developer. + + + + + knollr@chromium.org + peter@chromium.org + + The number of muted notifications that got closed programmatically (e.g. by + the developer via JS) during a screen capture session before they were shown + to the user. Logged once after each screen capture session ends. + + This metric may be logged at possibly inappropriate times, such as when + system profiles are being used. We expect that the number of "0" + samples is likely an overestimate because of this. This issue is tracked in + crbug.com/1385455. + + + + + knollr@chromium.org + peter@chromium.org + + The number of notifications that got muted during a screen capture session + instead of being shown to the user. This number might be higher than the + actual number of queued notifications at the end of a session as some + notifications might have been closed programmatically before that. Logged + once after each screen capture session ends. + + This metric was expired between August 2022 and January 2023, and may be + missing data until M111. + + This metric may be logged at possibly inappropriate times, such as when + system profiles are being used. We expect that the number of "0" + samples is likely an overestimate because of this. This issue is tracked in + crbug.com/1385455. + + + + + knollr@chromium.org + peter@chromium.org + + The number of muted notifications that got replaced during a screen capture + session. The user will only see the final state of the notification without + the previous versions. Logged once after each screen capture session ends. + + This metric may be logged at possibly inappropriate times, such as when + system profiles are being used. We expect that the number of "0" + samples is likely an overestimate because of this. This issue is tracked in + crbug.com/1385455. + + + + + knollr@chromium.org + peter@chromium.org + + Records the time from the start of a screen capture session until the user + decided to reveal notification content again. Only logged if and when the + user takes that action. + + This metric was expired between June 2022 and January 2023, and may be + missing data until M111. + + This metric may be logged at possibly inappropriate times, such as when + system profiles are being used. We expect that the number of "0" + samples is likely an overestimate because of this. This issue is tracked in + crbug.com/1385455. + + + + + knollr@chromium.org + peter@chromium.org + + Records the length of a screen capture session. Notifications will be muted + initially but the user may reveal them during a session. This metric will be + logged after the screen capture session ends. + + This metric was expired between December 2022 and January 2023, and may be + missing data until M111. + + This metric may be logged at possibly inappropriate times, such as when + system profiles are being used. We expect that the number of "0" + samples is likely an overestimate because of this. This issue is tracked in + crbug.com/1385455. + + + + + knollr@chromium.org + peter@chromium.org + + The number of snoozed notifications that got prevented from showing up on + screen during a screen capture session. This means that the user clicked on + the "Snooze" action of a muted notification and continued to + receive notifications but we queued them without notifying the user at all. + Logged once after each screen capture session ends. + + This metric was expired between August 2022 and January 2023, and may be + missing data until M111. + + This metric may be logged at possibly inappropriate times, such as when + system profiles are being used. We expect that the number of "0" + samples is likely an overestimate because of this. This issue is tracked in + crbug.com/1385455. + + + + + dtrainor@chromium.org + nyquist@chromium.org + + + + Various events when Chrome interacts with Chime notification platform. + Recorded when Chrome registers to Chime service, receives notifications, and + the user interacts with the notification. + + + + + dtrainor@chromium.org + nyquist@chromium.org + + + + Records the result of Chime notification platform registration. Each device + may have multiple accounts registered. The registration happens right after + opening Chrome. + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Records the notification type when a notification interaction occurs: + {NotificationAction}. ChromeOS only. + + + + + + leandre@chromium.org + cros-status-area-eng@google.com + + Records the notification catalog name when a notification interaction + occurs: {NotificationAction}. ChromeOS only. + + + + + + knollr@chromium.org + peter@chromium.org + + Records the result status codes of deleting all notification data for given + origins. This happens when notification permissions are revoked for a site. + + + + + knollr@chromium.org + peter@chromium.org + + Records the result status codes of deleting notification data from the Web + Notification database that share their tag (replacement identifier) with a + notification that's about to be shown. + + + + + knollr@chromium.org + peter@chromium.org + + Records the result status codes of deleting notification data from the Web + Notification database. + + + + + knollr@chromium.org + peter@chromium.org + + Records the result status codes of destroying the Web Notification database + altogether. + + + + + knollr@chromium.org + peter@chromium.org + + Records the number of expired notifications that were stored in the database + and therefore got removed and closed on the system. Logged once at startup + and every time we synchronize notifications after that (e.g. to schedule the + next notification trigger event). + + + + + knollr@chromium.org + peter@chromium.org + + Records the age of the oldest notification for an origin. Logged after + handling a push event for that origin. + + + + + knollr@chromium.org + peter@chromium.org + + Records the result status codes of opening the Web Notification database + after it has been destroyed in response to data corruption. + + + + + + + knollr@chromium.org + peter@chromium.org + + Records the result status codes of opening the Web Notification database. + + This metric may be logged at possibly inappropriate times, such as when + system profiles are being used, for which the notification database is + usually not required. This issue is tracked in crbug.com/1385455. + + + + + knollr@chromium.org + peter@chromium.org + + Records the result status codes of reading data of all notifications + associated with a Service Worker from the Web Notification database. + + + + + knollr@chromium.org + peter@chromium.org + + Records the result status codes of reading data of a single notification + from the Web Notification database. + + + + + knollr@chromium.org + peter@chromium.org + + Records the result status codes of writing data for a notification to the + Web Notification database. + + + + + knollr@chromium.org + peter@chromium.org + + Records the result of loading the profile when forwarding a notification + event. Logged on each notification action (click, close, settings, disable) + on platforms that use system notifications (not on Chrome OS or when we're + using Chrome's notifications). + + + + + knollr@chromium.org + peter@chromium.org + + Whether the received notification action data is valid or not. If it is, we + will continue to pass along the event. Logged on every action received by + the system (click or close) on any {Style} style notification. + + + + + + + Obsoleted April 2023. Histogram was removed after expiration. + + knollr@chromium.org + peter@chromium.org + + Whether delivering a notification to the system was successful or not. + Logged every time we pass a notification with {Style} style to the system. + + + + + + knollr@chromium.org + peter@chromium.org + + Logged when macOS launched either a browser or helper app as a result of a + user clicking on a notification. This only happens if the process that + displayed that notification unexpectedly died. Logged once after the process + got started. + + + + + knollr@chromium.org + peter@chromium.org + + The runtime of the macOS notification service process to display alerts + before it got killed unexpectedly. Logged when the service process dies. + + + + + knollr@chromium.org + peter@chromium.org + + The runtime of the macOS notification service process to display alerts. + Logged when we close the connection to the service process either on purpose + or after it got killed unexpectedly. + + + + + awillia@chromium.org + peter@chromium.org + + Records the number of non-persistent notifications that are displayed from a + third-party context. Logged from + BlinkNotificationServiceImpl::DisplayNonPersistentNotification after the + notification passes the permissions check. + + + + + finnur@chromium.org + + The execute status of a ComServerModule class instance. Logged whenever a + notification_helper process is launched by Windows. Note: Not logged after + M87 until end of August 2022. + + + + + chengx@chromium.org + finnur@chromium.org + + The primary execute status of NotificationActivator::Activate. Logged + whenever a notification_helper process is launched by Windows. Note: Not + logged after M85 until end of August 2022. + + + + + chengx@chromium.org + finnur@chromium.org + + The secondary execute status of NotificationActivator::Activate. Logged + whenever a notification_helper process is launched by Windows. Note: Not + logged after M85 until end of August 2022. + + + + + finnur@chromium.org + + The runtime of the notification_helper server process. This process is + created when a notification is activated from the Windows Action Center. + Once created, this process does some COM class registration work, so that + Windows can call certain APIs to handle the notification activation. Upon + finishing the API calls, Windows signals this process to exit. Note: Not + logged after M87 until end of August 2022. + + + + + tbarzic@chromium.org + tengs@chromium.org + gzadina@google.com + + The number of times a notification was added for the various types of + sources. + + + + + knollr@chromium.org + peter@chromium.org + + The number of notifications that got deleted from the NotificationDatabase + after the notification permissions got revoked. + + + + + knollr@chromium.org + peter@chromium.org + + The permission request result for sending out UNNotifications through the + MacNotificationServiceUN. This is recorded when instantiating the service + which happens at Chrome startup and each time we start the service after + shutting it down when there were no more notifications on screen. + + + + + + knollr@chromium.org + peter@chromium.org + + The permission status for sending out UNNotifications through the + MacNotificationServiceUN. This is recorded when instantiating the service + which happens at Chrome startup and each time we start the service after + shutting it down when there were no more notifications on screen. + + + + + + knollr@chromium.org + peter@chromium.org + + The style of notifications being used for sending out UNNotifications + through the MacNotificationServiceUN. This is recorded when instantiating + the service which happens at Chrome startup and each time we start the + service after shutting it down when there were no more notifications on + screen. + + + + + + dewittj@chromium.org + leandre@chromium.org + cros-status-area-eng@google.com + + The actions taken on notifications, recorded once per notification, when it + is closed. This differs from the Notifications.Actions histogram in that + multiple events of the same type on a single notification will only record a + single UMA event. + + + + + peter@chromium.org + + The number of action buttons the developer provided for a persistent Web + Notification. Logged whenever showNotification is called. + + + + + knollr@chromium.org + peter@chromium.org + + The result of the promise returned by showNotification. Logged whenever + showNotification is called. + + + + + awillia@chromium.org + peter@chromium.org + + Records the number of persistent notifications that are displayed from a + third-party context. Logged from + BlinkNotificationServiceImpl::DisplayPersistentNotification after the + notification passes the permissions check. + + + + + peter@chromium.org + knollr@chromium.org + + Recorded delivery status for persistent notification clicks to a Service + Worker when handling a click on a persistent WebNotification has finished. + + + + + peter@chromium.org + deepak.m1@samsung.com + + Recorded delivery status for persistent notification clicks to a Service + Worker when handling a click on a persistent WebNotification has finished. + + + + + peter@chromium.org + knollr@chromium.org + + Records delivery status for persistent notification close events sent to a + Service Worker when the event has been handled. + + + + + peter@chromium.org + knollr@chromium.org + + Records delivery status for persistent notification close events sent to a + Service Worker when the event has been handled. + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records the various events when running the background task in notification + scheduling system. + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records the number of notifications shown in each background task run. + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records the hour (0-23) when the notification scheduler background task + starts. + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records the initialization result of icon database for the notification + scheduling system. + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records the database operation result (except initialization) of icon + database for the notification scheduling system. + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records the number of records of icon database for the notification + scheduling system when the icon database is initialized. + + + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records events for inline helpful/unhelpful action buttons on the + notification when the buttons are shown or clicked. + + + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records the number of impression records in impression db right after the + impression database is initialized. + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records various events in impression history tracker in notification + scheduling system when the user interacts with the notification. + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records the initialization result of impression database for the + notification scheduling system. + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records the database operation result (except initialization) of impression + database for the notification scheduling system. + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records the number of records of impression database for the notification + scheduling system when the impression database is initialized. + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records the initialization result of notification database for the + notification scheduling system. + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records the database operation result (except initialization) of + notification database for the notification scheduling system. + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records the number of records of notification database for the notification + scheduling system when the notification database is initialized. + + + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records life cycle events for a scheduled notification, when notification is + scheduled, shown or encountering any error. + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records the result of png icon converter decoding process in icon store for + the notification scheduling system. It will be logged typically when + scheduling system trying to display the notification to the client - the + icon store will load entries, and decode icons to PNG format for delivery. + + + + + shaktisahu@chromium.org + nyquist@chromium.org + + Records the result of png icon converter encoding process in icon store for + the notification scheduling system. It will be logged typically when the + client scheduled notification with icons - the icon store will then encode + icons to string and store them in protodb. + + + + + + + dtrainor@chromium.org + + Records the type of user action when the user interacts with notification + sent from notification scheduler system. + + + + + + + peter@chromium.org + knollr@chromium.org + thomasanderson@chromium.org + + Indicates if Chrome is using system notifications or the Chrome notification + center. Logged on each start up. + + + + + peconn@chromium.org + peter@chromium.org + + Records the delay between the user clicking on the {Action} of a web + platform notification, and an Activity being launched. Only records if the + duration is less than 10 seconds. + + + + + + + + + peconn@chromium.org + peter@chromium.org + + Records the delay between the user clicking on the {Action} of a web + platform notification, and the notification being closed. Only records if + the duration is less than 10 seconds. + + + + + + + + + finnur@chromium.org + peter@chromium.org + chengx@chromium.org + + The status of Activation requests in NotificationPlatformBridgeWin (Windows + only). Logged whenever an activation from a notification occurs. Note: Not + logged from January 2021 to end of August 2022. + + + + + finnur@chromium.org + peter@chromium.org + + The status of Close requests in NotificationPlatformBridgeWin (Windows + only). Logged whenever a notification is closed. Note: Not logged after M98 + until end of August 2022. + + + + + finnur@chromium.org + peter@chromium.org + + The HRESULT returned by the Windows Action Center, when trying to create a + toast manager fails. This provides a more detailed error in the cases the + histogram Notifications.Windows.DisplayStatus reported + CREATE_TOAST_NOTIFIER_WITH_ID_FAILED. Note: Not logged after M89 until end + of August 2022. + + + + + finnur@chromium.org + peter@chromium.org + + The HRESULT returned by the Windows Action Center, when showing a + notification fails. + + + + + finnur@chromium.org + peter@chromium.org + + The status of Display requests in NotificationPlatformBridgeWin (Windows + only). Logged whenever a notification is displayed. For a more detailed + error about CREATE_TOAST_NOTIFIER_WITH_ID_FAILED and SHOWING_TOAST_FAILED, + see Notification.Windows histograms CreateToastManagerErrorCode and + ShowFailedErrorCode (respectively). Note: Not logged between January 2022 + until end of August 2022. + + + + + finnur@chromium.org + peter@chromium.org + + The status of decoding launch ids while processing a GetDisplayed requests + in NotificationPlatformBridgeWin (Windows only). Logged whenever a request + to retrieve all displayed notifications comes in. Note: Not logged after M98 + until end of August 2022. + + + + + finnur@chromium.org + peter@chromium.org + + The status of GetDisplayedStatus requests in NotificationPlatformBridgeWin + (Windows only). Logged whenever a request to retrieve all displayed + notifications comes in. Note: Not logged after M98 until end of August 2022. + + + + + finnur@chromium.org + peter@chromium.org + + The status of GetNotificationLaunchId requests in + NotificationPlatformBridgeWin (Windows only). Logged whenever a request to + decode the GetNotificationLaunchId comes in. Note: Not logged between + January 2022 until end of August 2022. + + + + + finnur@chromium.org + peter@chromium.org + + The policy value provided by get_Setting in NotificationPlatformBridgeWin + (Windows only). Logged whenever a request to show a notification comes in. + Note: Not logged after M98 until end of August 2022. + + + + + finnur@chromium.org + knollr@chromium.org + peter@chromium.org + + The policy value provided by get_Setting in NotificationPlatformBridgeWin + (Windows only). Logged only once at startup on a task runner. + + + + + finnur@chromium.org + peter@chromium.org + + The return value of get_Setting calls in NotificationPlatformBridgeWin + (Windows only). Logged whenever a request to show a notification comes in. + + + + + finnur@chromium.org + knollr@chromium.org + peter@chromium.org + + The return value of get_Setting calls in NotificationPlatformBridgeWin + (Windows only). Logged only once at startup on a task runner. + + + + + finnur@chromium.org + peter@chromium.org + + The status of HandleEvent requests in NotificationPlatformBridgeWin (Windows + only). Logged whenever a notification event is being handled. Note: Not + logged between January 2022 and end of August 2022. + + + + + finnur@chromium.org + peter@chromium.org + + The status of History requests in NotificationPlatformBridgeWin (Windows + only). Logged whenever history is requested for notifications. Note: Not + logged after M98 until end of August 2022. + + + + + chengx@chromium.org + finnur@chromium.org + + Used to indicate the status of decoding an input launch id string (Windows + only). Logged whenever a notification event is being handled. Note: Not + logged after M87 until end of August 2022. + + + + + chengx@chromium.org + peter@chromium.org + + The status of OnFailed requests in NotificationPlatformBridgeWin (Windows + only). Logged whenever a failed event is handled. Note: Not logged after M98 + until end of August 2022. + + + + + chengx@chromium.org + finnur@chromium.org + peter@chromium.org + + The status of SetReadyCallback requests in NotificationPlatformBridgeWin + (Windows only). Logged once at startup. Note: Not logged after M98 until end + of August 2022. + + + + + finnur@chromium.org + peter@chromium.org + + The HRESULT returned by the Windows Action Center, when trying to create a + toast manager fails. This provides a more detailed error in the cases the + histogram Notifications.Windows.DisplayStatus reported SHOWING_TOAST_FAILED. + Note: Not logged after M98 until end of August 2022. + + + + + chengx@chromium.org + finnur@chromium.org + peter@chromium.org + + Used to indicate the status of start menu shortcut (Windows only). Logged + whenever a notification display attempt is made. Note: Not logged after M98 + until end of August 2022. + + + + + + diff --git a/histograms/metadata/offline/OWNERS b/histograms/metadata/offline/OWNERS new file mode 100644 index 000000000000..5b0ba80e5d64 --- /dev/null +++ b/histograms/metadata/offline/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +curranmax@chromium.org +tbansal@chromium.org diff --git a/histograms/metadata/offline/histograms.xml b/histograms/metadata/offline/histograms.xml new file mode 100644 index 000000000000..b79f760d220d --- /dev/null +++ b/histograms/metadata/offline/histograms.xml @@ -0,0 +1,313 @@ + + + + + + + + + + curranmax@chromium.org + tbansal@chromium.org + sinansahin@google.com + twellington@chromium.org + + For OfflineIndicatorV2, records whether the native browser controls can be + animated and whether the omnibox is focused. Recorded when the device goes + offline. + + + + + curranmax@chromium.org + tbansal@chromium.org + sinansahin@google.com + twellington@chromium.org + + For OfflineIndicatorV2, records whether the native browser controls can be + animated and whether the omnibox is focused. Recorded when the device goes + online. + + + + + dimich@chromium.org + jianli@chromium.org + + Records events related to click through rate (CTR) calculation for Offline + Indicator UI. The CTR can be calculated by computing Clicked/Displayed. + + + + + curranmax@chromium.org + tbansal@chromium.org + + The duration the offline indicator was shown. Recorded when the offline + indicator stops being shown. There are two differences between this + histogram and OfflineIndicator.ShownDuration: 1) the maximum bucket size and + total number of buckets are higher in this histogram, and 2) this histogram + is persisted in perfs. The second point means that if the user backgrounds + then kills Chrome when the Offline Indicator was shown, then we will still + record a sample. Note that in this case, when the user opens Chrome again + and if the Offline Indicator is shown, then it will be treated as a + continuation from before Chrome was killed. + + + + + curranmax@chromium.org + tbansal@chromium.org + + The duration the offline indicator was shown and Chrome was in the + foreground. Samples are only recorded to this histogram if Chrome was never + in the background while the offline indicator was shown. This is recoreded + when the offline indicator stops being shown. The data for this histogram is + persisted in perfs, so if Chrome is killed, then we will still record a + sample. Note that in this case, when the user opens Chrome again and the + offline indicator is shown, then it will be treated as a continuation from + before Chrome was killed. + + + + + curranmax@chromium.org + tbansal@chromium.org + + The number of times Chrome was backgrounded while the offline indicator was + shown. This is recorded every time the offline indicator stops being shown. + The data for this histogram is persisted in perfs, so if Chrome is killed, + then we will still record a sample. Note that in this case, when the user + opens Chrome again and the offline indicator is shown, then it will be + treated as a continuation from before Chrome was killed. + + + + + dimich@chromium.org + offline-dev@chromium.org + + Counts the number of times an offline page is accessed. Events are reported + per offline pages namespace. + + + + + + Obsoleted April 2023. Histogram was removed after expiration. + + dimich@chromium.org + offline-dev@chromium.org + + This is recorded every time the archive directory is being created. It + doesn't include the case which the archive directory exists. It has suffixes + indicating results for temporary or persistent archives directories. + + + + + dougarnett@chromium.org + offline-dev@chromium.org + + Number of queued background load requests available for processing when + processing starts immediately (vs. scheduled). This is for non-svelte + devices (where svelte is determined by base::SysInfo::IsLowEnd()). + + + + + chili@chromium.org + offline-dev@chromium.org + + The combined http and net error codes that caused a page load failure. + + + + + pnoland@chromium.org + offline-dev@chromium.org + + Whether the offline page status cached for a given tab agrees with the true + value. Recorded with 1/100 probability each time the offline status for a + tab is checked. + + + + + harringtond@chromium.org + offline-dev@chromium.org + Number of thumbnails removed by the thumbnail cleanup task. + + + + dimich@chromium.org + offline-dev@chromium.org + Result of persistent page consistency check. + + + + dimich@chromium.org + offline-dev@chromium.org + Result of temporary page consistency check. + + + + curranmax@chromium.org + tbansal@chromium.org + + Whether or not the OfflinePageNavigationThrottle canceled a navigation + request. Requests are only canceled if and only if the navigation request + was initiated by the renderer and the request headers contain the + "X-Chrome-offline" header. + + This histogram is recorded each time Chrome tries to create an + OfflinePageNavigationThrottle, which only happens on Android (since Offline + Pages is only enabled there). + + + + + sclittle@chromium.org + offline-dev@chromium.org + + Upon starting saving a new last_n offline page snapshot, report if that is + being done for a page that is new (a navigation happened) or for one that + has been previously saved in the same session (no navigation happened). This + metric will assist in determining if there is the need to better track + actual content changes in pages saved more than once by last_n. + + + + + dimich@chromium.org + offline-dev@chromium.org + + Counts user-days when Chrome was used in specific ways regarding navigation + to online and offline content. Buckets are mutually exclusive so that only + one bucket is incremented per reported day. This metric is not recorded to + UMA immediately due to potential data loss while offline. So day counters + are persisted to prefs and reported to the histogram only when the next UMA + data upload is likely to succeed. For more details see: + https://goo.gl/GJXwFe. + + + + + sclittle@chromium.org + offline-dev@chromium.org + + Counts user-days when Chrome was used in specific ways regarding navigation + to online and offline content. Buckets are mutually exclusive so that only + one bucket is incremented per reported day. + + This metric is a mirror of OfflinePages.OfflineUsage but it doesn't use any + of the offline resilient mechanisms that one has. Ideally both should report + exactly the same values but it is expected this one will lose more samples. + + + + + dimich@chromium.org + offline-dev@chromium.org + + Length of time between accesses to an offline page. This is the same time + period used for expiring temporary pages. This metric is recorded when an + offline page is accessed. + + + + + jianli@chromium.org + offline-dev@chromium.org + Size of the saved copy of an offline page. + + + + petewil@chromium.org + + When publishing an offline page, a page might not be found. This returns the + publishing path that was used (ex: by Guid or by OfflineId). + + + + + twellington@chromium.org + ianwen@chromium.org + + The percentage of the page load completed when the button to save an offline + page is pressed. + + + + + sclittle@chromium.org + offline-dev@chromium.org + + Used as a counter to track different events related to offline page store + inner working. + + + + + sclittle@chromium.org + offline-dev@chromium.org + + The trust state of the offline page. This is recorded when an offline page + is being opened. + + + + + fgorski@chromium.org + + Indicates whether Open online was visible in Page Info popup, when it was + shown for an offline page. (The button is visible only when Chrome is + connected when the Page Info popup is opened for offline page.) + + + + + + diff --git a/histograms/metadata/omnibox/OWNERS b/histograms/metadata/omnibox/OWNERS new file mode 100644 index 000000000000..efb2c62625fc --- /dev/null +++ b/histograms/metadata/omnibox/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +ender@google.com +manukh@chromium.org +toyoshim@chromium.org diff --git a/histograms/metadata/omnibox/histograms.xml b/histograms/metadata/omnibox/histograms.xml new file mode 100644 index 000000000000..23715a252d30 --- /dev/null +++ b/histograms/metadata/omnibox/histograms.xml @@ -0,0 +1,2815 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + yoangela@chromium.org + chrome-omnibox-team@google.com + + Records number of accepted keyword searches enumerated by how the user + entered the keyword mode. See also Omnibox.EnteredKeywordMode2 for the total + number of times a user enters keyword mode whether or not the keyword + suggestion was accepted. Note that this only records when a user accepts a + search suggestion for the keyword search engine and does not record for URL + suggestions even if the user is in keyword mode. + + + + + ender@google.com + chrome-mobile-search@google.com + + Counts how often Omnibox Action in Suggest are {ShownOrUsed} and records the + type (Omnibox Action in Suggest Type) of every {ShownOrUsed} action. + + Recorded once at the end of the interaction with the Omnibox Suggestions for + every Action presented to the user. Not recorded for Suggestions that are + annotated with Action in Suggest, where the Action in Suggest row was not + shown to the user. + + Action in Suggest are the Omnibox Action chips attached to a search + suggestion. + + + + + + + + + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + For each answer received in suggest responses, the number that are + well-formed and contain all the required elements. + + + + + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + The number of times each omnibox suggestion answer type (e.g., weather, + sports score) was received and parsed successfully. Can be normalized with + the count of emits to Omnibox.SuggestRequest.Success.GoogleResponseTime, + which counts all successful suggest responses from Google, not just those + with answers attached. Note that GoogleResponseTime is technically off given + that it will still count cases where we fail to extract, deserialize, or + parse the response. But these cases are rare to non-existent. + + + + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + Records the length of the aqs= param in the Search Result Page request URLs. + Recorded every time a Search Result Page URL is generated in the + omnibox/realbox. This happens either when the user selects a suggestion in + order to load Search Result Page or when a proactive request is made to + prefetch the Search Result Page. + + + + + manukh@chromium.org + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + When the user focuses or types into the omnibox, the dropdown results can be + updated multiple times per input (i.e. when focused, per char typed, + backspace, etc). + + Specifically, the set of events that trigger dropdown updates are: + + - synchronous suggestions + + - asynchronous suggestions. Can trigger multiple times per input. These are + often generated on different threads. + + - expiring copied matches + + - interruptions e.g. additional user input changes or closing the dropdown + + A sample flow looks like: + + 1) User types a character. + + 2) 10ms later, update results with synchronous suggestions. + + 3) 50ms later, update results with some asynchronous suggestions. + + 4) 50ms later, update results with more asynchronous suggestions. + + 5) 400ms later, update results by removing copied matches from the previous + input. + + 6) 50 later, update results with the last batch of asynchronous suggestions. + + The 'Provider.*' slices measure the time between the input change and the + last async update of that provider is done or interrupted. Includes async + updates that have no user visible change (i.e. that do not produce async + matches or produce only async matches that get deduped, culled, or are the + same as the existing match in its position). Only logged for asynchronous + providers. Emitted exactly once per input per asynchronous provider; + additionally emits to exactly one of the 'Completed' and 'Interrupted' + slices per input per asynchronous provider. + + {Completed} + + + + + + + + + + + manukh@chromium.org + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + When the user focuses or types into the omnibox, the dropdown results can be + updated multiple times per input (i.e. when focused, per char typed, + backspace, etc). + + Specifically, the set of events that trigger dropdown updates are: + + - synchronous suggestions + + - asynchronous suggestions. Can trigger multiple times per input. These are + often generated on different threads. + + - expiring copied matches + + - interruptions e.g. additional user input changes or closing the dropdown + + A sample flow looks like: + + 1) User types a character. + + 2) 10ms later, update results with synchronous suggestions. + + 3) 50ms later, update results with some asynchronous suggestions. + + 4) 50ms later, update results with more asynchronous suggestions. + + 5) 400ms later, update results by removing copied matches from the previous + input. + + 6) 50 later, update results with the last batch of asynchronous suggestions. + + {Change} + + {Completed} + + + + + + + + + + + + + + + manukh@chromium.org + jdonnelly@chromium.org + chrome-desktop-search@google.com + + The time `AutocompleteClassifier::Classify()` took. This is invoked on + multiple user actions in the omnibox; e.g. typing, selecting, copying, + focusing, etc. `Classify()` runs the autocomplete sync pass, which is + non-trivial work, but much shorter than full autocompletion. + + This is intended to measure some performance optimization features and be + removed after. + + + + + manukh@chromium.org + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + The time `AutocompleteController::UpdateResult()` took. + + That method is invoked, and this histogram is recorded: a) Once for the sync + autocomplete update that occurs when the omnibox input changes (e.g. the + user types a character, pastes text, focuses the omnibox, etc). b) Once for + each async autocomplete update that occurs asyncly after the omnibox input + changes and the various async providers complete. Usually occurs up to 3 + times per input change. But can be less if the updates are interrupted (e.g. + the popup is closed or input changed again) or include no new suggestions. + c) Once when copied matches from the previous autocomplete pass expire. This + happens at most once per input change, but may not occur if all providers + complete or the input changes prior to the expiration. + + Because this encompasses both sync and async omnibox updates, and the number + of async updates per sync update is not fixed, it's not a good + representative of how a feature effects user experienced latency. E.g., a + feature that makes users type slower will bias this metric towards async + updates. Besides, this is only a small segment of the user experienced + latency. This is only intended to measure changes in the actual + implementation of `UpdateResult()`. + + {Slice} + + + + + + + + + + 3/2022; feature launched. + + + + manukh@chromium.org + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + The time elapsed between the ChromeOmniboxClient requesting a suggestion's + image to receiving the image. This includes both uncached and cached + requests. See BitmapFetcher.Fetch and BitmapFetcher.Decode for what + contributes to uncached images latency; however, the sum of those metrics + can be greater than this metric as image prefetching begins before the + ChromeOmniboxClient requests an image. + + + + + jdonnelly@chromium.org + mpearson@chromium.org + asvitkine@chromium.org + + Records the time taken between a keystroke being typed in the omnibox and + the text being painted. If there are multiple keystrokes before a paint, + logs the time since the earliest one. + + This duration is composed of three parts: + + a) the time spent processing the initial input event + + b) the time spent for the repaint task to be scheduled on the message loop + + c) the time spent painting the Omnibox + + d) (on views platforms) the time until the pixels are actually composited + + There's a number of breakdown metrics to help diagnose a regression. First, + Omnibox.CharTypedToRepaintLatency.ToPaint measures the combined time of (a) + and (b). Omnibox.QueryTime2 is a good proxy for just (a). And there's also + Omnibox.PaintTime that corresponds to (c). We don't have a direct metric for + (d), but if neither Omnibox.CharTypedToRepaintLatency.ToPaint nor + Omnibox.PaintTime regressed, then the regression must be in (d). + + Note: The semantics of this metric on views platforms changed in M62, as + previously time (d) was not included in the metric. + + + + + asvitkine@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + + A refinement of Omnibox.CharTypedToRepaintLatency metric. It measures the + time between the first character insertion in a series that happen during a + frame, to the time the compositor reports the text was rendered on-screen. + Compositor-provided timestamps are used for this version of the metric, so + it is expected to be more accurate: the baseline CharTypedToRepaintLatency + uses now() from when the subsequent has-processed notification arrives back + on the UI thread, which may overestimate user-visible latency. + + Note: Compositor-provided timestamps are taken using presentation time + callbacks. Before M110 the callbacks used for this histogram might be called + even if the next submitted frame fails to present which means that the + character is not really rendered on-screen yet. From M110 onward, this is + fixed by using callbacks that are only called after the first following + successful presentation, so a slight change might be noticed in the + histogram values. + + + + + asvitkine@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + + Records the time between when OnPaint() is called to the time the compositor + reports pixels were successfully drawn to the screen. This a subset of the + time reported in Omnibox.CharTypedToRepaintLatency.InsertToPresent. + + Note: Compositor-provided timestamps are taken using presentation time + callbacks. Before M110 the callbacks used for this histogram might be called + even if the next submitted frame fails to present which means that the + character is not really rendered on-screen yet. From M110 onward, this is + fixed by using callbacks that are only called after the first following + successful presentation, so a slight change might be noticed in the + histogram values. + + Warning: this histogram was expired from 2021-06-30 to 2022-12-12; data may + be missing. + + + + + asvitkine@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + + Records the time taken between a keystroke being typed in the omnibox and + the time when we're ready to paint the omnibox. This is a breakdown + diagnostic metric for Omnibox.CharTypedToRepaintLatency, to help diagnose + regressions in that metric. See that metric's description for more info. + + + + + gangwu@chromium.org + fgorski@chromium.org + + Recorded every time the clipboard suggestion is removed from omnibox + suggestion list and the system clipboard. The value indicates the estimated + age of the clipboard. + + + + + gangwu@chromium.org + jdonnelly@chromium.org + + Recorded every time the omnibox is focussed and recent content from the + user's clipboard is suggested. The value indicates the estimated age of the + clipboard. (If Chrome observed the clipboard modification, this age is + exact. If Chrome did not observe the modification, then it's a conservative + estimate: the last time Chrome observed a clipboard modification, which is + certainly older than the current clipboard. If Chrome never observed a + clipboard modification, no clipboard suggestion is shown, meaning this + histogram will never be emitted to.) + + Intended to be compared with MobileOmnibox.PressedClipboardSuggestionAge. + + + + + gangwu@chromium.org + jdonnelly@chromium.org + + Recorded every time the omnibox is focussed and a recent content from the + user's clipboard is suggested. The number emitted is the number of times the + clipboard content has been suggested within the same session including the + current time. Thus, the third time it is shown, we'll emit a three to this + histogram, and this histogram will have previously seen emits of one and + two. If the clipboard content was the same during a previous run of Chrome + and this clipboard content was suggested during that run, those impressions + are not counted. Also, if the clipboard content changes during a particular + run of Chrome to other content, the omnibox is focused and that clipboard + content is suggested, then content changes back and Chrome starts suggesting + the older clipboard content again, the counts start again from scratch. + Chrome only remembers the number of times the clipboard content was shown + consecutively. + + This value is useful to compare with the number of times a clipboard + suggestion has been shown when it is clicked. This value can be obtained + from OmniboxEvent records in which the selected suggestion is from Clipboard + provider. In those cases, look in the Clipboard provider's ProviderInfo + field for |times_returned_results_in_session|. Note that at the time of this + writing that OmniboxEvent logs aren't recorded in incognito whereas + histograms are. Thus, the total counts will not be comparable, though the + distributions should be. + + + + + gangwu@chromium.org + jdonnelly@chromium.org + + Recorded every time the omnibox is focussed and a recent content from the + user's clipboard is suggested. The value indicates whether the current URL + was shown (which would appear above the clipboard suggestion) or was absent + (which ought to only happen when the omnibox is empty / the user is on the + NTP). + + On Android, the total count for this histogram can be usefully compared with + the count of the user action FocusLocation in order to determine the rate at + which a clipboard suggestion is shown in the omnibox. To determine the same + rate on iOS, one needs to compare this histogram's count with the sum of the + user actions MobileFocusedOmniboxOnNtp, MobileFocusedFakeboxOnNtp, and + MobileFocusedOmniboxNotOnNtp. + + Furthermore, on either platform, this histogram's count can be usefully + compared with the count in the clipboard bucket of the + Omnibox.SuggestionUsed.Provider histogram to determine the clickthrough rate + on these suggestions. + + + + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + The number of cut or copy commands on all selected text in the omnibox. + Gathered on desktop platforms (Win, Mac, Linux, Chrome OS). + + + + + manukh@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + skare@chromium.org + + Counts the number of document suggest requests the omnibox sent, were + invalidated, and were completed successfully. + + + + + manukh@chromium.org + jdonnelly@chromium.org + + Measures the duration between when the async backend request was sent and + response received. + + Recorded exactly once per backend request. This will be a subset of times + document suggestions were requested, as 1) the provider is debounced, 2) the + provider may be interrupted (e.g. due to a new input) before the request is + sent (i.e. before the oauth token is ready), and 3) some provider requests + are filtered (e.g. input too short). + + + + + manukh@chromium.org + jdonnelly@chromium.org + + Measures the duration between when the async backend request was sent and + response received. + + Recorded at most once per backend request. This will be a subset of times + document suggestions were requested, as 1) the provider is debounced, 2) the + provider may be interrupted (e.g. due to a new input) before the request is + sent (i.e. before the oauth token is ready), and 3) some provider requests + are filtered (e.g. input too short). + + Only recorded if the backend request was invalidated; i.e., the provider was + interrupted before the response was received. + + + + + manukh@chromium.org + jdonnelly@chromium.org + + Measures the duration between when the async backend request was sent and + response received. + + Recorded at most once per backend request. This will be a subset of times + document suggestions were requested, as 1) the provider is debounced, 2) the + provider may be interrupted (e.g. due to a new input) before the request is + sent (i.e. before the oauth token is ready), and 3) some provider requests + are filtered (e.g. input too short). + + Only recorded if the backend request was not invalidated; i.e., the provider + was not interrupted before the response was received. + + + + + manukh@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + skare@chromium.org + + Number of results returned in each document suggestion reply. Logged for + successful requests where the provider returned a parseable result set. + + + + + manukh@chromium.org + jdonnelly@chromium.org + + Measures the duration between when the provider begins (after a debouncing + delay) and ends. + + Recorded exactly once per processed provider request. This will be a subset + of times document suggestions were requested, as 1) the provider is + debounced, and 2) some provider requests are filtered (e.g. input too + short). + + + + + manukh@chromium.org + jdonnelly@chromium.org + + Measures the duration between when the provider begins (after a debouncing + delay) and ends. + + Recorded at most once per processed provider request. This will be a subset + of times document suggestions were requested, as 1) the provider is + debounced, and 2) some provider requests are filtered (e.g. input too + short). + + Only recorded if the provider was interrupted (e.g. due to a new input). + + + + + manukh@chromium.org + jdonnelly@chromium.org + + Measures the duration between when the provider begins (after a debouncing + delay) and ends. + + Recorded at most once per processed provider request. This will be a subset + of times document suggestions were requested, as 1) the provider is + debounced, and 2) some provider requests are filtered (e.g. input too + short). + + Only recorded if the provider was not interrupted (e.g. due to a new input). + + + + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + The new enumeration of how many times users enter keyword hint mode + "Search ___ for:" and how. Note that we don't recognize the + changing of the keyword itself as entering keyword mode, if the user never + left keyword mode e.g. if the user was arrowing around the suggestions, so + we'll preserve the original keyword mode entry method in this case. + + + + + manukh@chromium.org + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + When the omnibox is focused and escape is pressed, the 1st of the following + occurs: + + 1) If there is temporary text (i.e. a non default suggestion is selected), + it is cleared. + + 2) If the popup is open and the `kClosePopupWithEscape` feature is enabled, + the popup is closed. + + 3) If the popup is open, which is considered as user input in progress, then + the popup is closed and user input is cleared. + + 4) If user input is in progress, it is cleared. This state (i.e. input in + progress with the popup closed) typically occurs when input was in progress, + then the omnibox was blurred, and then it was refocused. + + 5) The omnibox is blurred. + + This histogram records which of the above occurred. + + It is recorded every time escape is pressed with the omnibox focused. + Pressing escape repeatedly e.g. 10 times will emits at most 4 times until + the omnibox is blurred. + + + + + ender@chromium.org + jdonnelly@chromium.org + mpearson@chromium.org + tommycli@chromium.org + + This records whether user initiated navigation after focusing the Omnibox + versus switches focus elsewhere without navigating. This metric includes + accidental focus-then-losing-focus events, including brief ones. It also + includes ones in which the user did not type any text or otherwise engage + with the Omnibox. E.g., the user tabbing through all top Chrome UI controls + will cause this metric to be recorded. If the user switches focus from the + Chrome window to another window while the Omnibox is focussed, that also + counts as a loss of focus. + + This metric is not recorded for the Realbox interactions. + + Recorded every time the Omnibox focus is cleared. + + + + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + The length of time between when a user focused on the omnibox and first + modifies the omnibox. + + + + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + The length of time between when a user focused on the omnibox and opened an + omnibox match (which could be what they typed or a suggestion). This is + recorded regardless of whether the omnibox dropdown (a.k.a. popup) is open. + It is not recorded if a match is opened without triggering a focus event, + e.g., when a user drags a URL to the omnibox to navigate. + + To know how common this last condition is, compare the total count of this + histogram to the total number of omnibox events. + + + + + mahmadi@google.com + chrome-omnibox-team@google.com + + Counts the number of times a suggestion group ID is prevented form appearing + in the results. This is recorded when the user hides a set of grouped + suggestions, such as trending zero-suggest, in the omnibox UI using the + control in the grouped suggestions' header. + + + + + mahmadi@google.com + chrome-omnibox-team@google.com + + Counts the number of times a suggestion group ID is permitted to appear in + the results. This is recorded when the user makes a set of previously hidden + grouped suggestions, such as trending zero-suggest, visible in the omnibox + UI using the control in the grouped suggestions' header. + + + + + orinj@chromium.org + jdonnelly-team@google.com + + Fuzzy match conversion produces modified matches from other synchronous + autocomplete providers (sub-providers) using alternative inputs: what the + user might have typed, the automatic corrections. This metric is logged once + per sub-provider per omnibox input if and only if the fuzzy provider runs a + search (not all omnibox inputs result in search) and finds any corrections + (this includes the zero case where corrections are found but produce no + matches). Logs for each fuzzy sub-provider the number of correction matches + converted to fuzzy provider matches for a single omnibox input. This + measures how many 'best' matches (among all the sub-provider's matches for a + specific correction) are converted from this sub-provider, summed for the + various corrections of a single user input (will not exceed + `provider_max_matches_` even in unlikely extreme cases). This is useful in + evaluating the efficacy of various sub-providers for fuzzy matching. + + + + + + + + + orinj@chromium.org + jdonnelly-team@google.com + + When a fuzzy match was offered at the moment the user opened a match, this + measures whether a fuzzy suggestion was taken. This is only recorded when at + least one fuzzy match is in the result set, so it is useful to measure total + presence and engagement with fuzzy URL suggestions. It can be interpreted as + a click through rate for fuzzy match presentation as a whole: given that any + fuzzy matches were presented at the moment a match was selected by the user, + how often was the selected match a fuzzy URL suggestion? + + Context: Fuzzy match conversion produces modified matches from other + synchronous autocomplete providers (sub-providers) using alternative inputs: + what the user might have typed, the automatic corrections. + + + + + orinj@chromium.org + jdonnelly-team@google.com + + The time taken by HistoryFuzzyProvider to search for fuzzy input + corrections. This is measured if and only if a search is performed, so many + input states will not result in recording this metric (for example if the + input contains a space, that's taken as a hint that the user may be + searching instead of typing a domain name so no fuzzy search is performed). + It is useful to distinguish portions of the total time taken by the + provider, particularly as separate from sub-provider match gathering, so + that if there are any pathological cases in the search algorithm then they + will be apparent here. + + Context: Fuzzy match conversion produces modified matches from other + synchronous autocomplete providers (sub-providers) using alternative inputs: + what the user might have typed, the automatic corrections. + + + + + estark@chromium.org + carlosil@chromium.org + + The time duration that the user hovers the mouse over the omnibox before + exiting the hover or focusing the omnibox. Whenever the user's mouse enters + the omnibox, this histogram is recorded when the mouse next exits or the + omnibox is focused, whichever comes first. The recorded value is a delta + from a timestamp noted when the user's mouse first entered the omnibox. + + + + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + The kind of input the user provided when using the omnibox to go somewhere. + The type can be misleading. For example if the user typed 'http:/', it gets + marked as a query because it cannot be opened as a URL even though the user + probably wanted and selected a URL from the list of suggestions. + + In M-74 and earlier, this was only recorded if the user had no incognito + windows open. In M-75 and later, it records all omnibox interactions + regardless, in order to be consistent with how user actions and histograms + are handled. + + + + + gjc@chromium.org + blink-network-stack@google.com + + The number of IPv4 address parts input by the user. The histogram is used to + verify whether shortened IPv4 addresses like 127.1 are still used. This + histogram is recorded when the user fully types the URL in the omnibox and + the URL uses an IPv4 address or IPv4 embedded IPv6 address as the host. + + + + + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + Whether an omnibox interaction is a paste-and-search/paste-and-go action. + (This histogram records both of these in the "True" bucket for + this histogram because both of these are referred to as paste-and-go in the + code.) These typically involve right-clicking in the omnibox and selecting + that option from the dropdown. + + In M-74 and earlier, this was only recorded if the user had no incognito + windows open. In M-75 and later, it records all omnibox interactions + regardless, in order to be consistent with how user actions and histograms + are handled. + + + + + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + Whether the omnibox popup (a.k.a. dropdown) is open at the time the user + used the omnibox to go somewhere. It can be closed if, for instance, the + user clicked in the omnibox and hit return to reload the same page. Also, + because paste-and-search/paste-and-go actions ignore the current content of + the omnibox dropdown (if it is open) when they happen, we pretend the + dropdown is closed when logging these. + + In M-74 and earlier, this was only recorded if the user had no incognito + windows open. In M-75 and later, it records all omnibox interactions + regardless, in order to be consistent with how user actions and histograms + are handled. + + + + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + Whether the user deleted text immediately before selecting an omnibox + suggestion. This is usually the result of pressing backspace or delete. + + In M-74 and earlier, this was only recorded if the user had no incognito + windows open. In M-75 and later, it records all omnibox interactions + regardless, in order to be consistent with how user actions and histograms + are handled. + + + + + yoangela@chromium.org + chrome-omnibox-team@google.com + + Records number of times users use keyword mode enumerated by the type of + search engine (whether the engine is "built-in"). + + {Usage} + + + + + + + + + + + + + + Expired in M110. + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + The number of search terms extracted from the database to produce local + prefix search suggestions. Emitted when prefix search suggestions are + requested as a result of the user typing into the Omnibox or the Realbox on + the NTP. + + + + + + Expired in M110 in favor of + Omnibox.LocalHistoryPrefixSuggest.SearchTermsExtractionTimeV2 + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + The amount of time it takes to extract search terms from the database and + sort them by recency (if needed) to produce local prefix search suggestions. + Emitted when prefix search suggestions are requested as a result of the user + typing into the Omnibox or the Realbox on the NTP. + + + + + mahmadi@chromium.org + chrome-desktop-search@google.com + + The amount of time it takes to extract up to the requested number of search + terms from the database for both the default and the keyword providers (if + applicable) and sort them by recency to produce local prefix search + suggestions. Emitted when prefix search suggestions are requested as a + result of the user typing into the Omnibox or the NTP Realbox. + + + + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + The length of time it takes for the corresponding URLs that would produce a + deleted match to be queried asynchronously and deleted. Emitted when user + deletes a local history zero-prefix suggestion. + + + + + + Expired in M110. + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + The number of search terms extracted from the database to produce local + zero-prefix suggestions. Emitted when zero-prefix suggestions are requested + as a result of the user focusing into the Omnibox or the Realbox on the NTP. + + + + + + Expired in M110 in favor of + Omnibox.LocalHistoryZeroSuggest.SearchTermsExtractionTimeV2 + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + The amount of time it takes to extract search terms from the database and + sort them by frecency to produce local zero-prefix suggestions. Emitted when + zero-prefix suggestions are requested as a result of the user focusing into + the Omnibox or the Realbox on the NTP. In M103, this was changed to no + longer include the construction of the AutocompleteMatch values. + + + + + mahmadi@chromium.org + chrome-desktop-search@google.com + + The amount of time it takes to extract up to the requested number of search + terms from the database and sort them by frecency to produce local + zero-prefix suggestions. Emitted when zero-prefix suggestions are requested + as a result of the user focusing into the Omnibox or the NTP Realbox. + + + + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + The length of time it takes to handle the deletion request for a match and + to update the list of provider matches synchronously. Emitted when user + requests to delete a local history zero-prefix suggestion. + + + + + tommycli@chromium.org + manukh@chromium.org + jdonnelly@chromium.org + + This tracks how unstable omnibox matches are. + + Typically, each input change is followed by a single synchronous update, and + then approximately 3 asynchronous updates. There may be more or less + asynchronous updates depending on which providers are enabled for the + particular platform/user, the input (e.g. some providers don't run for + 0-length inputs), and how quickly the input changes occur (e.g. if the + inputs update rapidly, slower async providers won't have time to provide + updates before they're aborted by newer inputs). + + For each autocomplete update, this histogram logs whether any match position + changes. If 1 or more matches changed, logs true once; otherwise false once. + + When the number of matches changes, matches that are removed are considered + a 'change', while matches that are appended are less disruptive to the user + and not considered a 'change'. This is because this metric is primarily + interested in how many times the user could be looking at a match with the + intention of selecting it, and then it surprisingly goes away. + + Note that merely adding a new provider will increase these counts. That's + intentional. Swapping matches out annoys users, and to avoid this, we should + do some things like: caching, update coalescing, update deferral until next + keystroke, provider timeouts, etc. + + This metric is designed to be normalized by the True count of + Omnibox.Start.WantAsyncMatches, which will yield the number of match changes + per keystroke or other user gesture. + + There're the related Omnibox.MatchStability2.InAnyPosition.* slices for + tracking match instability for all, asynchronous, and synchronous updates. + + This histogram can be considered a boolean analogue to the + Omnibox.MatchStability2.Index.* histogram which tracks which matches + changed. + + {OmniboxAutocompleteUpdateSlice} + + + + + + tommycli@chromium.org + manukh@chromium.org + jdonnelly@chromium.org + + This tracks how unstable omnibox matches are. + + Typically, each input change is followed by a single synchronous update, and + then approximately 3 asynchronous updates. There may be more or less + asynchronous updates depending on which providers are enabled for the + particular platform/user, the input (e.g. some providers don't run for + 0-length inputs), and how quickly the input changes occur (e.g. if the + inputs update rapidly, slower async providers won't have time to provide + updates before they're aborted by newer inputs). + + For each match change, this histogram logs the index of the match change. + Match changes occur when any match position changes; i.e. is set to a new + match different from the old match in that position, even if the new match + was contained in the old matches set. If multiple matches change in a single + autocomplete update, logs each. If none change in a single autocomplete + update, this histogram is not logged. + + We primarily care about the default match, which is logged at index 0. All + indices matter though, so we track the other indices too. + + When the number of matches changes, matches that are removed are considered + a 'change', while matches that are appended are less disruptive to the user + and not considered a 'change'. This is because this metric is primarily + interested in how many times the user could be looking at a match with the + intention of selecting it, and then it surprisingly goes away. + + Note that merely adding a new provider will increase these counts. That's + intentional. Swapping matches out annoys users, and to avoid this, we should + do some things like: caching, update coalescing, update deferral until next + keystroke, provider timeouts, etc. + + This metric is designed to be normalized by the True count of + Omnibox.Start.WantAsyncMatches, which will yield the number of match changes + per keystroke or other user gesture. + + There're the related Omnibox.MatchStability2.Index.* slices for tracking + match instability for all, asynchronous, and synchronous updates. + + There's the related Omnibox.MatchStability2.InAnyPosition histogram for + tracking whether any match changed per autocomplete update. + + {OmniboxAutocompleteUpdateSlice} + + + + + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + The number of terms in the text the user entered in the omnibox when they + used the omnibox to go somewhere. Terms are defined by splitting on + whitespace. All values larger than 6 are recorded in bucket 6. + + In M-74 and earlier, this was only recorded if the user had no incognito + windows open. In M-75 and later, it records all omnibox interactions + regardless, in order to be consistent with how user actions and histograms + are handled. + + + + + manukh@chromium.org + jdonnelly@chromium.org + chrome-desktop-search@google.com + + The time `OmniboxEditModel::OpenMatch()` took. This is invoked on selecting + an omnibox suggestion (including a 'switch to tab' chip) and paste and + go/search. Besides kicking off the navigation, it includes non-negligible + logging (including the omnibox event proto) and some miscellaneous steps. + + This is intended to measure some performance optimization features and be + removed after. + + + + + manukh@chromium.org + jdonnelly@chromium.org + chrome-desktop-search@google.com + + The time `OmniboxView::RevertAll()` took. This is invoked on multiple user + actions that affect the omnibox state; e.g. tab switch, omnibox navigation, + etc. It includes the time to a) revert the edit model, b) close the popup, + and c) refresh the model. This is intended to measure some performance + optimization features and be removed after. + + + + + cch@chromium.org + suggest-2g@google.com + + Time it takes for omnibox on device head provider to fulfill the + asynchronous suggest request. + + + + + cch@chromium.org + suggest-2g@google.com + + The number of results returned by the on device head model which matches the + user input. Note all numbers greater than 5 are recorded in bucket 5. + + + + + asvitkine@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + + Records the time to paint the omnibox contents. This is a subcomponent of + Omnibox.CharTypedToRepaintLatency. Implemented on desktop platforms. + + + + + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + The number of paste commands on the text in the omnibox. Reported every time + a paste command is done. + + + + + jdonnelly@chromium.org + orinj@chromium.org + chrome-omnibox-team@google.com + + Counts the type (concept ID) of omnibox pedals shown when the user used the + omnibox to go somewhere. + + Pedals are a button attached to a search suggestion that either navigate to + a chrome:// URL or trigger a Chrome action (for example, opening the page + translation dialog or opening a new window in Incognito mode). + + Note that, while it is uncommon, it is possible for multiple pedals to be + shown at one time so this can't be used as a count of how many times a pedal + or pedals were present. + + This histogram is related to Omnibox.SuggestionUsed.Pedal. + + + + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + The length of time taken by the {OmniboxProvider}Provider's synchronous + pass. + + + + + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + Time it takes for the omnibox to become responsive to user input after the + user has typed N characters (for 'Omnibox.QueryTime2.N') or any length input + (for 'Omnibox.QueryTime2'). This measures the time it takes to start all + autocomplete providers (but not wait for the asynchronous ones to finish). + + + + + tommycli@chromium.org + chrome-omnibox-team@google.com + + Emits the position of any "Resume Journey" omnibox actions shown + in the popup. The position index is 0-based, so an action shown in the + topmost match is logged as value 0, consistent with + Omnibox.SelectedPosition. + + Note that these are emitted when the user uses the omnibox to go somewhere. + When that happens, one count is emitted per action visible in the popup. + These are NOT emitted per-keystroke, in order to make this a suitable + denominator for Omnibox.SuggestionUsed.ResumeJourney. + + + + + junzou@chromium.org + chrome-intelligence-core@google.com + + Emits the score of matched cluster keyword of any "Resume Journey" + omnibox actions shown in the popup. + + Note that these are emitted when the user uses the omnibox to go somewhere. + When that happens, one keyword type is emitted per action visible in the + popup. These are NOT emitted per-keystroke, in order to make this a suitable + denominator for Omnibox.SuggestionUsed.ResumeJourney.ClusterKeywordScore. + + + + + junzou@chromium.org + chrome-intelligence-core@google.com + + Emits the type of the matched cluster keyword of any "Resume + Journey" omnibox actions shown in the popup. The types indicate the + sources from which the keywords are generated in the history clustering + backend. + + Note that these are emitted when the user uses the omnibox to go somewhere. + When that happens, one keyword type is emitted per action visible in the + popup. These are NOT emitted per-keystroke, in order to make this a suitable + denominator for Omnibox.SuggestionUsed.ResumeJourney.ClusterKeywordType. + + + + + junzou@chromium.org + chrome-intelligence-core@google.com + + Emits the top entity collection of any "Resume Journey" omnibox + actions shown in the popup. The collections are high-level verticals the + keywords belong to. + + Note that these are emitted when the user uses the omnibox to go somewhere. + When that happens, one collection is emitted per action visible in the + popup. These are NOT emitted per-keystroke, in order to make this a suitable + denominator for Omnibox.SuggestionUsed.ResumeJourney.PageEntityCollection. + + + + + manukh@chromium.org + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + Measures the number of sessions for which each type of rich autocompletion + triggered; does not measure the number of times each type of rich + autocompletion triggered. + + As the user types into the omnibox, the omnibox suggestions are updated. + Some of those suggestions may have rich autocompletion. No suggestion may + have multiple types of rich autocompletion. A type of rich autocompletion is + considered triggered only if the default suggestion has rich autocompletion. + If a non-default suggestion has rich autocompletion, does not suffice. If + any input during the session triggered a rich autocompletion type, that type + is considered triggered for the entire session. + + Recorded multiple times per omnibox session (i.e. per user selecting a + suggestion). Recorded once for each type of rich autocompletion that + triggered during the session (i.e. while the user was typing their input). + If a rich autocompletion type triggered multiple times during the session + (very common), it will be logged exactly once. Hence, it's impossible for + any single bucket's count to be larger than the count of omnibox sessions or + Omnibox.RichAutocompletion.Triggered.Any. If multiple rich autocompletion + types triggered during the session (less common), each will be logged. + Hence, it's possible for the total count of this histogram to be larger than + the count of omnibox sessions. + + + + + manukh@chromium.org + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + Measures the number of sessions for which any type of rich autocompletion + triggered. + + As the user types into the omnibox, the omnibox suggestions are updated. + Some of those suggestions may have rich autocompletion. No suggestion may + have multiple types of rich autocompletion. A type of rich autocompletion is + considered triggered only if the default suggestion has rich autocompletion. + If a non-default suggestion has rich autocompletion, does not suffice. If + any input during the session triggered a rich autocompletion type, that type + is considered triggered for the entire session. + + The related "Omnibox.RichAutocompletion.Triggered" histogram + breaks down the trigger count for each rich autocompletion type. + + Recorded exactly once per omnibox session (i.e. per user selecting a + suggestion). + + + + + jdonnelly@chromium.org + roagarwal@chromium.org + chrome-incognito@google.com + + This histogram records the number of searches done from omnibox using + default search engine on desktop and android devices, sliced based on being + in regular mode or private modes. + + + + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + Records the length of the gs_lcrp= param in the Search Result Page request + URLs. Recorded every time a Search Result Page URL is generated in the + omnibox/realbox. This happens either when the user selects a suggestion in + order to load Search Result Page or when a proactive request is made to + prefetch the Search Result Page. + + + + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + The type of search engine associated with a match opened from the omnibox. + + + + + ryansturm@chromium.org + chrome-omnibox-team@google.com + + Records whether a "search what you type" omnibox navigation was + also a {HistoryOrSuggest} type. Recorded when the user navigates to a search + via typing the full query into the omnibox. + + + + + + + + + + lingqi@chromium.org + ryansturm@chromium.org + chrome-prerendering@google.com + + Recorded when posting a task to destroy StreamingSearchPrefetchURLLoader. + Used to track whether the native forwarding works as expected. Together with + Omnibox.SearchPreload.ForwardingResult.WasServedToPrerender, these two + metrics are used to monitor whether shareable cache does not break the + forwarding logic. + + + + + lingqi@chromium.org + ryansturm@chromium.org + chrome-prerendering@google.com + + Recorded when posting a task to destroy StreamingSearchPrefetchURLLoader. + Together with Omnibox.SearchPreload.ForwardingResult.NotServedToPrerender, + these two metrics are used to monitor whether shareable cache does not break + the forwarding logic. + + + + + lingqi@chromium.org + ryansturm@chromium.org + chrome-prerendering@google.com + + Tracks whether the StreamingSearchPrefetchURLLoader::ResponseReader can + successfully serving to prerender clients. Recorded when a + `StreamingSearchPrefetchURLLoader::ResponseReader` is destroyed. + + + + + + Obsolete as of M112. + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + The number of matches returned by SearchProvider. Emitted on every call to + SearchProvider::Start(), which effectively means every key stroke in the + omnibox. + + + + + tommycli@chromium.org + jdonnelly@chromium.org + + Whether asynchronous matches are requested. Recorded every time + AutocompleteController::Start() is called. + + False counts roughly correspond to non-interactive invocations of + AutocompleteController - like when we are classifying user text as a Search + or URL. + + True counts roughly correspond to keystrokes or on-focus events, and can be + used as a normalizer for per-user-gesture metrics. + + + + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + Counts how often omnibox suggestions are used, and in the case an Answer + suggestion was selected - records the type of an answer. This histogram is + useful because there is no distinct suggestion type recorded for answers so + their use is not recorded by Omnibox.SuggestionUsed.ProviderAndResultType. + + + + + nyquist@chromium.org + ssid@chromium.org + tommycli@chromium.org + chrome-segmentation-platform@google.com + + For each user navigation using the omnibox, logs the selected omnibox result + as one of a limited set of result types, based on the autocomplete match. + + As an example, HISTORY_URL and HISTORY_TITLE are both summarized into the + Url summarized result type. + + This histogram intended to match the server-side histograms that use + OmniboxSummarizedResultType such as Omnibox.SuggestionUsed.SearchVsUrl. This + is also calculated on the client side to enable functionality that is based + on listening to local metrics at runtime. + + Logged whenever a user navigates using the omnibox. + + + + + gangwu@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + + Measures whether the suggestion that was selected by the user offered a tab + match. A tab match occurs when the URL specified by the suggestion matches + the URL navigated to by another tab in the browser, within the margin of our + URL stripping scheme. + + This metric typically only makes sense with respect to + Omnibox.SuggestionUsed.OfferedTabMatch. Only recent versions of the browser + send the metric. Therefore, other metrics may include datapoints not covered + by this metric (unless one narrows the data by version.) + + In M-74 and earlier, this was only recorded if the user had no incognito + windows open. In M-75 and later, it records all omnibox interactions + regardless, in order to be consistent with how user actions and histograms + are handled. + + + + + jdonnelly@chromium.org + orinj@chromium.org + chrome-omnibox-team@google.com + + Counts how often omnibox pedals are used and records the type (concept ID) + of the pedal used. + + Pedals are a button attached to a search suggestion that either navigate to + a chrome:// URL or trigger a Chrome action (for example, opening the page + translation dialog or opening a new window in Incognito mode). + + This histogram is related to Omnibox.PedalShown. + + + + + tommycli@chromium.org + chrome-omnibox-team@google.com + + Logs the position of "Resume Journey" omnibox actions actually + selected by the user. The position index is 0-based, so a selected action in + the topmost match is logged as value 0, consistent with + Omnibox.SelectedPosition. + + This can be combined with Omnibox.ResumeJourneyShown to compute the Usage + (or CTR) of the "Resume Journey" omnibox action on a per-position + basis. + + It's safe to compare the total count of this metric to the total count of + Omnibox.ResumeJourneyShown because within a single popup, only zero or one + "Resume Journey" can be shown. If multiple actions start being + shown in the popup, comparing to the total count becomes misleading to + interpret as a CTR. + + + + + junzou@chromium.org + chrome-intelligence-core@google.com + + Logs the score of the matched cluster keyword of "Resume Journey" + omnibox actions actually selected by the user. + + This can be combined with Omnibox.ResumeJourneyShown.ClusterKeywordScore to + compute the precision (or CTR) of the "Resume Journey" omnibox + action on a keyword score bucket. + + It's safe to compare the total count of this metric to the total count of + Omnibox.ResumeJourneyShown.ClusterKeywordScore because within a single + popup, only zero or one "Resume Journey" can be shown. If multiple + actions start being shown in the popup, comparing to the total count becomes + misleading to interpret as a CTR. + + + + + junzou@chromium.org + chrome-intelligence-core@google.com + + Logs the type of the matched cluster keyword of "Resume Journey" + omnibox actions actually selected by the user. + + This can be combined with Omnibox.ResumeJourneyShown.ClusterKeywordType to + compute the precision (or CTR) of the "Resume Journey" omnibox + action on a keyword type basis. + + It's safe to compare the total count of this metric to the total count of + Omnibox.ResumeJourneyShown.ClusterKeywordType because within a single popup, + only zero or one "Resume Journey" can be shown. If multiple + actions start being shown in the popup, comparing to the total count becomes + misleading to interpret as a CTR. + + + + + junzou@chromium.org + chrome-intelligence-core@google.com + + Emitted when the user uses the omnibox to go somewhere AND the "Resume + Journey" chip triggered by {ClusterKeywordTypeLabel} was offered in any + position. + + This metric records "Selected" if the offered action chip was + selected, and records "Not Selected" if the offered action chip + was not selected. + + Therefore the "Selected" bucket proportion is the CTR of the + action chip. Higher is better. The count of this bucket matches the + {ClusterKeywordTypeLabel} bucket of + Omnibox.SuggestionUsed.ResumeJourney.ClusterKeywordType. + + The total count of both buckets is how many times we've offered the chip + triggered by {ClusterKeywordTypeLabel} in total, and matches the + {ClusterKeywordTypeLabel} bucket of + Omnibox.ResumeJourneyShown.ClusterKeywordType. + + + + + + + + + + + + junzou@chromium.org + chrome-intelligence-core@google.com + + Logs the top entity collection of "Resume Journey" omnibox actions + actually selected by the user. + + This can be combined with Omnibox.ResumeJourneyShown.PageEntityCollection to + compute the precision (or CTR) of the "Resume Journey" omnibox + action on a per-collection basis. + + It's safe to compare the total count of this metric to the total count of + Omnibox.ResumeJourneyShown.PageEntityCollection because within a single + popup, only zero or one "Resume Journey" can be shown. If multiple + actions start being shown in the popup, comparing to the total count becomes + misleading to interpret as a CTR. + + + + + junzou@chromium.org + chrome-intelligence-core@google.com + + Emitted when the user uses the omnibox to go somewhere AND the "Resume + Journey" chip triggered by {CollectionLabel} was offered in any + position. + + This metric records "Selected" if the offered action chip was + selected, and records "Not Selected" if the offered action chip + was not selected. + + Therefore the "Selected" bucket proportion is the CTR of the + action chip. Higher is better. The count of this bucket matches the + {CollectionLabel} bucket of + Omnibox.SuggestionUsed.ResumeJourney.PageEntityCollection. + + The total count of both buckets is how many times we've offered the chip + triggered by {CollectionLabel} in total, and matches the {CollectionLabel} + bucket of Omnibox.ResumeJourneyShown.PageEntityCollection. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + tommycli@chromium.org + chrome-journeys@google.com + + Emitted when the user uses the omnibox to go somewhere AND the "Resume + Journey" chip was offered in any position. + + This metric records "Selected" if the offered action chip was + selected, and records "Not Selected" if the offered action chip + was not selected. + + Therefore the "Selected" bucket proportion is the CTR of the + action chip. Higher is better. The count of this bucket matches the sum of + Omnibox.SuggestionUsed.ResumeJourney. + + The total count of both buckets is how many times we've offered the chip + total, and matches the sum of Omnibox.ResumeJourneyShown. + + + + + manukh@chromium.org + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + Measures the number of sessions for which each type of rich autocompletion + was used. + + As the user types into the omnibox, the omnibox suggestions are updated. + Some of those suggestions may have rich autocompletion. No suggestion may + have multiple types of rich autocompletion. A type of rich autocompletion is + considered triggered only if the default suggestion has rich autocompletion. + If a non-default suggestion has rich autocompletion, does not suffice. If + any input during the session triggered a rich autocompletion type, that type + is considered triggered for the entire session. + + Recorded exactly once per omnibox session (i.e. per user selecting a + suggestion). + + + + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + Measures the time from navigation start to first meaningful paint. Only + recorded for a search query suggestion selected from the omnibox. + + + + + spelchat@chromium.org + chrome-brapp-loading@google.com + chrome-omnibox-team@google.com + + Measures the time from the user selecting the omnibox suggestion and the + navigation start time getting ticked. Only recorded for a search query + suggestion selected from the omnibox. + + + + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + Measures the time from navigation start to first contentful paint. Only + recorded for a search query suggestion selected from the omnibox. + + + + + lingqi@chromium.org + chrome-prerendering@google.com + chrome-omnibox-team@google.com + + Measures the time from navigation start to largest contentful paint + (https://github.com/w3c/largest-contentful-paint). Only recorded for a + search query suggestion selected from the omnibox. + + + + + spelchat@chromium.org + chrome-brapp-loading@google.com + chrome-omnibox-team@google.com + + Measures the time from navigation to the time the first largest contentful + paint candidate + (https://github.com/w3c/largest-contentful-paint#the-last-candidate) above 2 + seconds. Only recorded for a search query suggestion selected from the + omnibox. Note that this histogram is most useful for use with Chrometto in + order to record a high LCP trace as soon as it happens (rather than only + once the slow page loads gets discarded). + + + + + gangwu@chromium.org + mpearson@chromium.org + jdonnelly@chromium.org + + Measures whether the suggestion that was selected by the user offered a tab + match and specifically that the user chose the tab match over normal + navigation. A tab match occurs when the URL specified by the suggestion + matches the URL navigated to by another tab in the browser, within the + margin of our URL stripping scheme. By selecting the tab match, the browser + simply switches focus to the matching tab. + + This metric typically only makes sense with respect to + Omnibox.SuggestionUsed.OfferedTabMatch. Only recent versions of the browser + send the metric. Therefore, other metrics may include datapoints not covered + by this metric (unless one narrows the data by version.) + + This metric should be stricly less than + Omnibox.SuggestionUsed.OfferedTabMatch, and is typically used to discover + the percentage of offered tab matches that the user accepts. + + In M-74 and earlier, this was only recorded if the user had no incognito + windows open. In M-75 and later, it records all omnibox interactions + regardless, in order to be consistent with how user actions and histograms + are handled. + + + + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + Measures the time from navigation start to first meaningful paint. Only + recorded for a URL suggestion selected from the omnibox. + + + + + spelchat@chromium.org + chrome-brapp-loading@google.com + chrome-omnibox-team@google.com + + Measures the time from the user selecting the omnibox suggestion and the + navigation start time getting ticked. Only recorded for a URL suggestion + selected from the omnibox. + + + + + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + Measures the time from navigation start to first contentful paint. Only + recorded for a URL suggestion selected from the omnibox. + + + + + robertlin@chromium.org + chrome-prerendering@google.com + chrome-omnibox-team@google.com + + Measures the time from navigation start to largest contentful paint. Only + recorded for a URL suggestion selected from the omnibox. + + + + + mpearson@chromium.org + jdonnelly@chromium.org + cch@chromium.org + + The time elapsed between the sending of a suggest request to Google until + the time the request was returned with status==failed. Ignores requests that + were canceled before being returned. + + + + + mpearson@chromium.org + jdonnelly@chromium.org + cch@chromium.org + + The time elapsed between the sending of a suggest request to Google until + the time the request was returned with status==success. Ignores requests + that were canceled before being returned. + + + + + + 3/2022; feature launched. + + manukh@chromium.org + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + The number of images prefetched by the search provider on retrieving a + successful search response. + + + + + mpearson@chromium.org + jdonnelly@chromium.org + cch@chromium.org + + Counts about the number of suggest requests the omnibox sent, invalidated, + and replies received. + + + + + ender@google.com + mahmadi@chromium.org + + The index of the item in the MostVisited carousel that the user deleted. + Zero-based: the first item in the carousel is recorded in bucket 0, second + in bucket 1 and so on. Items beyond 16 will be stored in the overflow bucket + (15). + + Recorded every time the user initiates deletion of a suggest tile, even if + the operation is later canceled. + + + + + ender@google.com + mahmadi@chromium.org + + Records the type of the SuggestTile that the user deleted. Most Visited URLs + record a URL, and Organic Repeatable Queries record a Search type. + + Recorded every time the user initiates deletion of a suggest tile, that + results with tile removal. Not recorded if the user chooses to cancel the + action. + + + + + ender@google.com + mahmadi@chromium.org + + The index of the item in the MostVisited carousel that the user opened. + Zero-based: the first item in the carousel is recorded in bucket 0, second + in bucket 1 and so on. Items beyond 16 will be stored in the overflow bucket + (15). + + Recorded every time the user selects the tile to initiate navigation, even + if the navigation could not be completed (eg. target site did not load). + + + + + ender@google.com + mahmadi@chromium.org + + Records the type of the SuggestTile that the user interacted with. Most + Visited URLs record a URL, and Organic Repeatable Queries record a Search + type. + + Recorded every time the user selects the tile to initiate navigation, even + if the navigation could not be completed (eg. target site did not load). + + + + + ender@google.com + mahmadi@chromium.org + + Total count of offered {SuggestTileType} tile types. + + Recorded every time the current context is eligible to receive + MostVisitedTiles, even if there were no tiles of any kind to show. + + + + + + + + + gangwu@chromium.org + jdonnelly@chromium.org + mpearson@chromium.org + chrome-omnibox-team@google.com + + This histogram reports the amount of time it takes to match one set of + suggestions against all open tabs. This metric is collected once for every + time a new set of suggestions is received. This includes the Omnibox Focus + event (when zero-prefix suggestions are offered) and every subsequent key + stroke, including deletion, backspace etc. + + Each keystroke produces multiple events offering autocomplete matches: a) + one synchronous, when Start() is called. b) any number of intermediate + events, depending on whether Providers request the update. c) one at the + end, when the process completes. + + Since these are produced about 3 times per keystroke, the total time + consumed per Omnibox interaction is - optimistically - + 3*Omnibox.TypedLength*TabMatchTime. this excludes all the time spent + formulating the query, such as correcting the input. This metric does not + express the cumulative time spent matching the tabs (because we do not have + a metric that counts the number of suggestions the user actually fetched - + eg. we do not count the number of suggestions received when user pressed the + backspace key). + + This histogram only records metrics on machines with high-resolution clocks. + + + + + yusuyoutube@google.com + benwgold@google.com + fgorski@chromium.org + wylieb@chromium.org + lens-chrome@google.com + + Logs the elapsed time between the time when user enters the Google Lens and + the time when user dismisses Lens and returns to Chrome. Only logged on + Android. + + + + + + Replaced with Omnibox.GroupId.ToggledOff in M114. + + mahmadi@google.com + chrome-omnibox-team@google.com + + Counts the number of times a suggestion group ID is prevented form appearing + in the results. This is recorded when the user hides a set of grouped + suggestions, such as proactive zero-suggest, in the omnibox UI using the + control in the grouped suggestions' header. + + + + + + Replaced with Omnibox.GroupId.ToggledOn in M114. + + mahmadi@google.com + chrome-omnibox-team@google.com + + Counts the number of times a suggestion group ID is permitted to appear in + the results. This is recorded when the user makes a set of previously hidden + grouped suggestions, such as proactive zero-suggest, visible in the omnibox + UI using the control in the grouped suggestions' header. + + + + + mpearson@chromium.org + jdonnelly@chromium.org + chrome-omnibox-team@google.com + + The scheme of the destination URL for the selected omnibox suggestion. This + could be a what-you-typed suggestion (if the user fully typed a URL), an + inline autocompletion, or something in the dropdown, anything as long as + it's a URL navigation, not a search query. Excludes omnibox URL navigations + that are effectively reloads as well as cut-and-pastes of URLs. Also does + not take into account any redirects that destination URL may do before + finally serving a page. In other words, it's the scheme of the first request + in a possible chain. + + Due to a bug, recorded paste-and-go actions through M-88 (inclusive). + Excluded in M-89+. + + + + + mahmadi@chromium.org + yoangela@chromium.org + chrome-desktop-search@google.com + + The amount of time it takes to execute the URL scoring model for all the + eligible matches. Emitted when all the providers are done and there is at + least one eligible match for model execution. + + + + + mahmadi@chromium.org + yoangela@chromium.org + chrome-desktop-search@google.com + + The number of matches the URL scoring model was executed for. Emitted when + all the providers are done and there is at least one eligible match for + model execution. + + + + + rongtan@google.com + ender@google.com + chrome-omnibox-team@google.com + + Counts the type (concept ID) of omnibox zero-prefix on-focus type requests. + The omnibox of Chrome on Android measures use of different focus types while + retrieving zero prefix suggestions on supported platforms, and records + exactly once per every zero prefix suggestions request. + + + + + + Obsolete as of M106. + + mpearson@chromium.org + jdonnelly@chromium.org + + Whether the user has settings configured so that the current page URL can be + sent to the suggest server to request contextual suggestions. For example, + this is only supported for users who have Google as their default search + engine (unmodified version of Google), have search suggest enabled, are + signed-in and syncing without a custom passphrase, and don't have an + incognito window open. There are other criteria too. Recorded on focus in + the omnibox if there is default search provider and we've constructed a + suggest URL. + + Some additional guidelines: if an incognito window is open, all focus events + will go into the "generally ineligible" bucket. Likewise, if the + current page is a search results page, we don't allow contextual suggestions + either so focus events on those pages go in the "generally + ineligible" bucket. The difference between "eligible" and + "generally eligible but not this time" depends only the properties + of the current URL. + + Recorded regardless of whether contextual or non-contextual zero suggest is + currently enabled on the user's platform. However, if zero suggest (in all + forms) is entirely disabled, the user will be perpetually ineligible. + + This histogram captures all scenarios that are generally ineligible for zero + suggest suggestions (including incognito mode), and reports eligibility for + suggestions even if kOmniboxPopupShortcutIconsInZeroState is enabled + (meaning: suggestions are not shown, but current URL is eligible). + + + + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + Emitted in ZeroSuggestCacheService, records the estimated dynamically + allocated memory usage of the ZeroSuggestProvider cache every time the + prefetch or the non-prefetch zero-suggest response is stored in the cache on + eligible page load / page switch events and when the user has focused or + cleared the omnibox but has not typed in yet, respectively. Note that the + max number of responses stored in the cache is always capped. The cache size + can build up as more responses are stored. The cache size can also decrease + as responses are removed from the cache when suggestions are deleted from + the omnibox or when the user clears the browsing data. Hence, due to the + dynamic nature of the cache size, this histogram is recorded on every store + event as opposed to the cache destructor. + + + + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + Logs whether ZeroSuggestProvider is eligible to request and display zero- + prefix suggestions, and if not, why not. Emitted for both + omit_asynchronous_matches_ true (i.e, Autocomplete classifier) and false + inputs (i.e, when the user has typed in, focused the omnibox, or cleared it + but has not typed in yet) in ZeroSuggestProvider::Start(). Also emitted on + applicable page load/switch events in ZeroSuggestProvider::StartPrefetch(). + + + + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + Enumerates the events in the ZeroSuggestProvider as a result of + {RequestType} for {ResultType} (i.e., suggestions shown when the user has + focused or cleared the omnibox but has not typed in yet). + + + + + + + + + + + + + + Obsolete as of M105. + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + Counts the number of non-prefetch zero suggest requests (requests for + suggestions when the user has focused but not modified the omnibox) the + omnibox sent, requests that were invalidated, responses that were received, + the subset of responses that were loaded from HTTP cache, and finally the + subset of responses that ended up updating the displayed results. + + + + + + Obsolete as of M105. + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + Records the time elapsed between non-prefetch zero suggest requests + (requests for suggestions when the user has focused but not modified the + omnibox) sent and the responses received; whether or not the response is + loaded from HTTP cache. + + + + + + Obsolete as of M105. + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + Counts the number of prefetch zero suggest requests (requests for + suggestions when the user opens a new tab or brings one to foreground) the + omnibox sent, requests that were invalidated, responses that were received, + the subset of responses that were loaded from HTTP cache, and finally the + subset of responses that ended up updating the displayed results. + + + + + + Obsolete as of M105. + + mahmadi@chromium.org + chrome-omnibox-team@google.com + + Records the time elapsed between prefetch zero suggest requests (requests + for suggestions when the user opens a new tab or brings one to foreground) + sent and the responses received; whether or not the response is loaded from + HTTP cache. + + + + + spelchat@chromium.org + chrome-brapp-loading@google.com + chrome-omnibox-team@google.com + + {SearchPrefetch} + + Measures the time between the user clicks the Omnibox suggestion and the + moment the navigation is intercepted by the Search Prefetch code. + + {NavigationPrefetchOnly} + + + + + + + ryansturm@chromium.org + chrome-omnibox-team@google.com + + {SearchPrefetch} + + Whether a search prefetch request finished with a success status or a status + that could be served. Recorded when prefetch requests receive headers. + + {SuggestionPrefetchOnly} + + + + + + + spelchat@chromium.org + chrome-brapp-loading@google.com + chrome-omnibox-team@google.com + + {SearchPrefetch} + + Measures the time between the navigation is intercepted by the Search + Prefetch code and the moment the Search Prefetch URL loader has finished + forwarding the whole response to the navigation URL loader. This time + includes finishing fetching the Search response and any queuing delays in + the UI thread preventing the Search Prefetch URL loader from forwarding + bytes to the navigation code. + + + + + + ryansturm@chromium.org + chrome-omnibox-team@google.com + + {SearchPrefetch} + + Whether the prefetch URL and the navigation URL are an exact match including + query params in the URL. Recorded upon navigation to a matching search term. + + {NavigationPrefetchOnly} + + + + + + + + This is deprecated as of 07/2022. Please use + Omnibox.SearchPrefetch.PrefetchEligibilityReason2.{NavigationOrSuggestionPrefetch}. + + ryansturm@chromium.org + chrome-omnibox-team@google.com + + {SearchPrefetch} + + The reason that a search prefetch request issued when a user navigates to a + suggestion was not eligible to be prefetched (or 'Prefetched' if it was + prefetched). + + {NavigationOrSuggestionPrefetch} + + + + + + + ryansturm@chromium.org + chrome-omnibox-team@google.com + + {SearchPrefetch} + + The reason that a search prefetch request issued when a user navigates to a + suggestion was not eligible to be prefetched (or 'Prefetched' if it was + prefetched). + + {NavigationOrSuggestionPrefetch} + + + + + + + ryansturm@chromium.org + chrome-omnibox-team@google.com + + {SearchPrefetch} + + The status of a Search Prefetch request when it is deleted by expiration or + by serving the request. + + {NavigationOrSuggestionPrefetch} + + + + + + + ryansturm@chromium.org + lingqi@chromium.org + chrome-omnibox-team@google.com + chrome-prerendering@google.com + + {SearchPrefetch} + + The reason that a navigation request could or could not serve a search + prefetch request. + + {PrerenderOrNavigation} + + + + + + + + + + + This is deprecated as of 08/2022. Please use + Omnibox.SearchPrefetch.PrefetchServingReason2{PrerenderOrNavigation}. + + ryansturm@chromium.org + lingqi@chromium.org + chrome-omnibox-team@google.com + chrome-prerendering@google.com + + {SearchPrefetch} + + The reason that a navigation request could or could not serve a search + prefetch request. + + {PrerenderOrNavigation} + + + + + + + + + + + Removed since M112 in favor of + Omnibox.{SearchPrefetch}.ReceivedServableResponse2.{FallbackOrInitial}.{NavigationOrSuggestionPrefetch}. + + ryansturm@chromium.org + chrome-omnibox-team@google.com + + {SearchPrefetch} + + This histogram records whether an activated (i.e., served) prefetch URL + Loader receives a servabled response from the server. + + {FallbackOrInitial} + + {NavigationOrSuggestionPrefetch} + + + + + + + + + + + ryansturm@chromium.org + chrome-omnibox-team@google.com + chrome-prerendering@google.com + + {SearchPrefetch} + + This histogram records whether an activated (i.e., served) prefetch URL + Loader receives a servabled response from the server. + + A servabled reasponse should contain valid headers and body, with any 200 + response code. + + {FallbackOrInitial} + + {NavigationOrSuggestionPrefetch} + + + + + + + + + + + ryansturm@chromium.org + chrome-omnibox-team@google.com + + {SearchPrefetch} + + The amount of time it takes to start a prefetch request. + + {NavigationPrefetchOnly} + + + + + + + mahmadi@chromium.org + chrome-desktop-search@google.com + + Records the time taken between a keystroke being typed in the NTP realbox + and the time when we're ready to render the results in the DOM. If there are + multiple keystrokes before the results are rendered, logs the time since the + earliest. This is comparable to Omnibox.CharTypedToRepaintLatency.ToPaint as + it does not take into account the time the DOM change task spends in the + message loop nor its duration. + + + + + mahmadi@chromium.org + chrome-desktop-search@google.com + + Records the time taken between AutocompleteController::Observer's + OnResultChanged is called and the time when we're ready to render the + results in the NTP realbox. If there are multiple calls to OnResultChanged + before the results are rendered, logs the time since the earliest. This is + comparable to Realbox.CharTypedToRepaintLatency.ToPaint but excludes the + time taken to send the input to the browser and process it. Similarly this + does not take into account the time the DOM change task spends in the + message loop nor its duration. + + + + + + diff --git a/histograms/metadata/oobe/OWNERS b/histograms/metadata/oobe/OWNERS new file mode 100644 index 000000000000..df188bd6e859 --- /dev/null +++ b/histograms/metadata/oobe/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +rsorokin@google.com +osamafathy@google.com +alemate@chromium.org diff --git a/histograms/metadata/oobe/histograms.xml b/histograms/metadata/oobe/histograms.xml new file mode 100644 index 000000000000..51b68a9f2c22 --- /dev/null +++ b/histograms/metadata/oobe/histograms.xml @@ -0,0 +1,849 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Obsoleted in M-106. + + dkuzmin@google.com + cros-oac@google.com + + Whether the review Google Play following setup box is checked. Recorded when + user leaves ArcTermsOfService screeen. + + + + + + Obsoleted in M-106. + + osamafathy@google.com + cros-oac@google.com + + Tracks all user actions on the ArcTermsOfService screen. Recorded when user + clicks on buttons on the ArcTermsOfService screen. + + + + + alemate@chromium.org + rsorokin@chromium.org + cros-oac@google.com + + Time from the login screen start to user session start. + + Warning: this histogram was expired from 2022-04-03 to 2023-04-04; data may + be missing. + + + + + anastasiian@chromium.org + cros-lurs@google.com + cros-oobe@google.com + + Tracks the result of the cryptohome recovery opt-in on the consolidated + consent screen. Recorded when user exists the consolidated consent screen. + + + + + osamafathy@google.com + cros-oobe@google.com + + Tracks user actions on the consolidated consent screen. Recorded when user + clicks on buttons on the consolidated consent screen. + + + + + dkuzmin@google.com + cros-oobe@google.com + + Time spent on error screens during {OOBEScreenShownBeforeNetworkError} when + the last error is {OOBENetworkError} error. Recorded when the host screen is + destroyed. Note: None error means that the ErrorScreen was finally hidden. + + + + + + + dkuzmin@google.com + cros-oac@google.com + + Tracks all user actions on the fingerprint screen. Recorded when user clicks + on buttons on the fingerprint screen. + + + + + dkuzmin@google.com + cros-oac@google.com + + Records the amount of time spent by user to complete GAIA login during + first-run OOBE. Recorded after receiving authentication success signal. Not + recorded for SAML flow. + + + + + dkuzmin@google.com + cros-oac@google.com + + Tracks all user actions on the GaiaPasswordChanged screen. Recorded when + user clicks on buttons on the screen. + + + + + dkuzmin@google.com + rsorokin@google.com + cros-oobe@google.com + + Tracks all user login requests differentiated by flows on the Gaia screen. + Recorded when password is entered for authentication. Note: this is not + recorded for SAML flows. + + Warning: this histogram was expired from 2022-04-25 to 2022-08-18; data may + be missing. + + + + + anastasiian@chromium.org + cros-lurs@google.com + + Records whether user password contains characters ignored by Gaia. The + histogram is recorded after online login and not recorded for SAML users. + + + + + dkuzmin@google.com + rsorokin@google.com + cros-oobe@google.com + + Tracks all successful user login requests differentiated by flows on the + Gaia screen. Recorded when authentication is successful. Note: this is not + recorded for SAML flows. + + Warning: this histogram was expired from 2022-04-25 to 2022-08-18; data may + be missing. + + + + + mmourgos@chromium.org + tbarzic@chromium.org + + Records the amount of time that each page within the gesture navigation OOBE + screen is shown. Recorded when the gesture navigation oobe screen is + exiting. + + Warning: this histogram was expired from 2021-08-09 to 2023-04-04; data may + be missing. + + + + + + gordonseto@google.com + cros-connectivity@google.com + + Records how long it takes for a pairing attempt, initiated automatically + during the OOBE HID detection screen, to finish. If the user needed to go + through an auth process during pairing, the time the user took to confirm + that is included. + + + + + + + + + gordonseto@google.com + cros-connectivity@google.com + + Records if a HID pairing attempt (initiated automatically by the OOBE HID + detection screen) paired successfully via Bluetooth or did not pair + successfully via Bluetooth. This is expected to fail most of the time + because of it being initiated in a loop automatically while the OOBE HID + Detection screen is open. + + + + + gordonseto@google.com + cros-connectivity@google.com + + Records success each time a pairing session times out while on the OOBE HID + detection page. + + + + + gordonseto@google.com + cros-connectivity@google.com + + Records the total number of pairing attempts with Bluetooth human interface + devices (HID). This metric is emitted after the HID detection screen exits + in OOBE. It does not include devices attempted to be paired with before or + after the HID detection screen. + + + + + gordonseto@google.com + cros-connectivity@google.com + + Records the type of a connected human interface device (HID). This metric is + emitted each time a HID is connected during the HID detection screen in + OOBE. It does not include devices connected before the screen is shown or + after the screen is hidden. + + + + + gordonseto@google.com + cros-connectivity@google.com + + Records the type of a connected human interface device (HID) that is + disconnected. This metric is emitted each time a HID is disconnected during + the HID detection screen in OOBE. It does not include devices disconnected + before the screen is shown or after the screen is hidden. + + + + + gordonseto@google.com + cros-connectivity@google.com + + Records the types of human interface devices (HIDs) that are not connected + when OOBE starts. This metric is not emitted for Chrome OS devices that have + the OOBE HID detection screen disabled. + + + + + rrsilva@google.com + cros-oac@google.com + + The result of a request performed by the MarketingBackendConnector used in + the OOBE MarketingOptInScreen when subscribing users in + {OOBEMarketingCountry} to Chromebook emails. This data is used to determine + the success rate of the requests being performed. + + + + + + rrsilva@google.com + cros-oac@google.com + + Records the choice users in {OOBEMarketingCountry} takes when prompted with + a toggle on the OOBE MarketingOptInScreen to subscribe to Chromebook emails. + + + + + + rrsilva@google.com + cros-oac@google.com + + Records whether the user's geolocation was resolved successfully. + + + + + achuith@google.com + cros-oobe@google.com + + Number of times error screen has appeared during + {OOBEScreenShownBeforeNetworkError} + + + + + + dkuzmin@google.com + cros-oac@google.com + + Tracks all user actions on the PinSetup screen. Recorded when user clicks on + buttons on the PinSetup screen or when screen is automatically skipped. + + + + + bhartmire@google.com + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Reason a Fast Pair BLE advertisment failed to register. Recorded whenever a + Bluetooth Advertisement error occurs after attempting to register the + advertisement. + + + + + bhartmire@google.com + hansenmichael@google.com + chromeos-cross-device-eng@google.com + + Count of successful and failed attempts to start Fast Pair BLE + advertisement. Recorded when the FastPairAdvertiser attempts to register an + advertisement. + + + + + dkuzmin@google.com + cros-oac@google.com + chromesky-eng@google.com + The number of recommended apps. + + + + dkuzmin@google.com + cros-oac@google.com + chromesky-eng@google.com + The time it takes to fetch the recommended apps. + + + + dkuzmin@google.com + cros-oac@google.com + chromesky-eng@google.com + The response code of fetching the recommended apps. + + + + dkuzmin@google.com + cros-oac@google.com + chromesky-eng@google.com + The result of parsing the recommend-apps response. + + + + dkuzmin@google.com + cros-oac@google.com + chromesky-eng@google.com + The user action on the recommend apps screen. + + + + dkuzmin@google.com + cros-oac@google.com + chromesky-eng@google.com + The number of apps user selected. + + + + dkuzmin@google.com + cros-oac@google.com + chromesky-eng@google.com + The ratio of selected and recommended apps. + + + + dkuzmin@google.com + cros-oac@google.com + chromesky-eng@google.com + Whether the reocmmend apps screen is shown. + + + + + + alemate@chromium.org + antrim@chromium.org + rsorokin@chromium.org + cros-oac@google.com + Time spent on {OOBELegacyScreenName} OOBE screen. + + + + + dkuzmin@google.com + cros-oac@google.com + Time spent on specific OOBE screen grouped by exit reason. + + + + + bhartmire@google.com + chromeos-cross-device-eng@google.com + + The reason why the Multidevice setup screen is skipped in OOBE. Recorded + when determining that the screen should be skipped. This metric breaks down + the "Not shown" bucket of + "OOBE.StepShownStatus.Multidevice-setup-screen". + + + + + + + dkuzmin@google.com + cros-oac@google.com + + Whether {OOBELegacyScreenName} screen was shown or not. Recorded before + showing screen. + + + + + + osamafathy@google.com + cros-oac@google.com + + Whether the sync consent screen was shown, skipped with sync disabled, or + skipped with sync enabled. Recorded when the screen is closed. Metrics + Sync.InitialState and OOBE.SyncConsentScreen.SyncEnabled provide more detail + on the state of the sync engine. + + + + + osamafathy@google.com + cros-oac@google.com + + Indicates whether account capability information is fetched for user when + SyncConsent screen is shown. + + + + + osamafathy@google.com + cros-oac@google.com + + Indicates whether the current user is a minor user (impacted by AADC + regulations). We cannot use nudge techniques on UI if the user is a minor + user. + + + + + osamafathy@google.com + cros-oac@google.com + + Records the amount of time while waiting for sync engine to be initialized, + before the SyncConsent screen is shown. + + + + + dkuzmin@google.com + cros-oac@google.com + + Whether the review following setup box is checked. Recorded when user leaves + SyncConsent screen. + + + + + osamafathy@google.com + cros-oac@google.com + + Final state of the sync service at the end of the sync consent OOBE step. + The dialog may have been shown or skipped (e.g. by enterprise policy). See + OOBE.SyncConsentScreen.Behavior for skip reasons. + + + + + osamafathy@google.com + cros-oac@google.com + + Which button the user clicked on the out-of-box sync consent screen. + Recorded when the user clicks the button, which also closes the screen. + + + + + osamafathy@google.com + cros-oobe@google.com + + Theme selected from OOBE theme selection screen. Recorded after the next + button is clicked. + + + + + dkuzmin@google.com + cros-oac@google.com + + Time spent on {UpdateStage} stage of the ChromeOS update. Recorded when the + stage is done and the next is about to start. + + + + + + dkuzmin@google.com + cros-oac@google.com + + Time spent on downloading ChromeOS update when critical updated is found + during OOBE. Recorded when update is uploaded and ChromeOS device is about + to restart to apply the update. + + + + + rsorokin@chromium.org + cros-oac@google.com + + Time required for ChromeOS to load the First Run WebUI (i.e. out-of-box + experience). Recorded at most once per Chrome lifetime (if OOBE is shown). + + + + + osamafathy@google.com + cros-oac@google.com + + Records the first result of loading the webview {WebViewID} in OOBE flow. + This metric is emitted every time a webview in OOBE is loaded using OOBE + WebViewLoader. Only the first load result of each load is emitted, ignoring + the re-load results. + + + + + + + + + + + + + + dkuzmin@google.com + cros-oac@google.com + + Measures usage of the accessibility options on the welcome screen during + OOBE. Recorded when user enables or disables any of the accessibility + options from accessibility menu on the welcome screen. + + + + + akihiroota@google.com + cros-oac@google.com + + Whether or not the user accepted the ChromeVox hint. Recorded when the user + interacts with the ChromeVox hint dialog. + + + + + akihiroota@google.com + cros-oac@google.com + + Whether or not the ChromeVox hint was successfully spoken. Recorded when the + ChromeVox hint dialog is shown. + + Warning: this histogram was expired from 2022-04-25 to 2022-08-18 and from + 2022-10-04 to 2023-04-04; data may be missing. + + + + + bohdanty@google.com + cros-oobe@google.com + + Whether or not the user changed the language on the Welcome Screen. Records + when the user leaves the Welcome Screen if they have changed the locale in + the UI. + + + + + + diff --git a/histograms/metadata/optimization/DIR_METADATA b/histograms/metadata/optimization/DIR_METADATA new file mode 100644 index 000000000000..8ec3a933c31b --- /dev/null +++ b/histograms/metadata/optimization/DIR_METADATA @@ -0,0 +1,11 @@ +# Metadata information for this directory. +# +# For more information on DIR_METADATA files, see: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md +# +# For the schema of this file, see Metadata message: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto + +monorail { + component: "Internals>OptimizationGuide" +} \ No newline at end of file diff --git a/histograms/metadata/optimization/OWNERS b/histograms/metadata/optimization/OWNERS new file mode 100644 index 000000000000..6bec81f0076b --- /dev/null +++ b/histograms/metadata/optimization/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +mcrouse@chromium.org +sophiechang@chromium.org +tbansal@chromium.org diff --git a/histograms/metadata/optimization/histograms.xml b/histograms/metadata/optimization/histograms.xml new file mode 100644 index 000000000000..bf688ba13333 --- /dev/null +++ b/histograms/metadata/optimization/histograms.xml @@ -0,0 +1,1484 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + The decision made for whether {OptimizationType} can be applied on the page + load. + + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + Records the decision made for whether {OptimizationType} can be applied on a + page load when all information for that page load has been sufficiently + gathered. This will be recorded once per callback registered, so if two + callbacks were registered for {OptimizationType} on the same page load, this + will be recorded twice for that case. + + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Records whether the optimization guide store was available when fetched + hints are cleared from the store after browser history is cleared. + + + + + + Deprecated as of 2022-01-28. + + mcrouse@chromium.org + sophiechang@chromium.org + + Records whether the optimization guide store was available when host model + features are cleared from the store after browser history is cleared. + + + + + sophiechang@chromium.org + chrome-intelligence-core@google.com + + Records whether the entity annotator native library was initiated + successfully if an attempt to load it was made. + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Records the store entry type of a hint when it is loaded from the hint cache + store. + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Records the result of loading the metadata while initializing the + HintCacheLevelDBStore. + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Records each status change within the HintCacheLevelDBStore. + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + Records when an in-flight hints request for {RequestContext} was canceled + before it finished. + + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + Records the number of hosts that were dropped for a request made with + {RequestContext}, if the number of hosts dropped is non-zero. Will record at + most once per fetch. + + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + Records the number of URLs that were dropped for a request made with + {RequestContext}, if the number of URLs dropped is non-zero. Will record at + most once per fetch. + + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + The duration of a request to fetch hints from the remote Optimization Guide + Service starts until it completes. Recorded every time hints are fetched and + parsed successfully. + + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Records the number of hints received from the remote Optimization Guide + Service for every successful HintsFetch request. + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Records the number of hosts selected for sending a hint request. This will + be captured when any hint request is initiated. + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Net error codes for HintsFetch requests to the Optimization Guide Service on + success and failure. + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + For each HintsFetch request to the Optimization Guide Service, log the HTTP + response code on success and failure. + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Records the number of URLs selected for sending a hint request. This will be + captured when any hint request is initiated. + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + The status of making a request using {RequestContext} of the + OptmizationGuide HintsFetcher. This includes whether a network request was + actually sent or not. + + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + The number of active tab URLs that did not have a hint on device, and thus, + required a fetch for a new hint. Recorded when a fetch is initiated to the + remote Optimization Guide Service for active tabs, roughly once an hour but + configurable via experiment params. + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + The number of active batch update hints fetches initiated by the hints + manager. Recorded when a fetch is initiated to the remote Optimization Guide + Service for a batch update context (i.e. on SRP, other UI surfaces, etc.). + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + The number of active hints fetches initiated by the hints manager. Recorded + when a fetch is initiated to the remote Optimization Guide Service at + navigation start. + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + Records whether a page navigation hints fetch returned before navigation + data used to record additional page load metrics is flushed. Recorded only + for navigations that have a hints fetch initiated for it. + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Status of a fetch attempt being raced against the current navigation start + and whether it includes hosts and urls. Recorded on navigation start + (including client redirects) by the hints manager. + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Records whether the prediction model being constructed for + {OptimizationTarget} is valid or not. Recorded when prediction models are + loaded into memory by the prediction manager. + + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records whether the metadata fetch validation received the hints correctly. + Recorded on iOS when the mainframe navigation commits. + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records whether the model execution for {OptimizationTarget} was cancelled + due to running past the configured timeout. + + + + + + mcrouse@chromium.org + chrome-intelligence-core@google.com + + Records the time duration it took execute the model for + {OptimizationTarget}. Recorded once per model execution for + {OptimizationTarget}. + + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records the result of attempting to execute a {OptimizationTarget} model, + including loading the file from disk. Recorded once per model execution + attempt for {OptimizationTarget}. + + + + + + sophiechang@chromium.org + chrome-intelligence-core@google.com + + Records the time duration it took to execute the model for + {OptimizationTarget}. Recorded once per model execution for + {OptimizationTarget}. This is effectively the same as + `OptimizationGuide.ModelExecutor.ExecutionLatency.{OptimizationTarget}` but + this is recorded using `base::ElapsedThreadTimer` instead. + + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records whether the model file for {OptimizationTarget} is available on disk + at the time when it needs to be loaded into memory for a requested + execution. Recorded once per model load attempt for {OptimizationTarget}. + Note that callers may separately check whether a model is available before + calling the code path where this histogram is recorded. If this histogram + has 100% of samples in the true bucket, make sure to double-check that there + isn't a separate histogram specific to the model. + + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records the time duration it took to load a model file successfully for + {OptimizationTarget}. Recorded once per model load attempt for + {OptimizationTarget}. + + + + + + mcrouse@chromium.org + chrome-intelligence-core@google.com + + Records the execution latency for the {OptimizationTarget} model run by the + model executor from when the task is posted from execution complete. + Recorded once per {OptimizationTarget} model execution attempt. + + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records the duration a {OptimizationTarget} model execution request spent + waiting for the background task queue to run the task. Recorded once per + {OptimizationTarget} model execution attempt. + + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records the time duration between runs of the model for + {OptimizationTarget}. Recorded once for every model run after the first. + + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records whether all model files existed on disk when the model was requested + to be loaded for {OptimizationTarget}. The model file itself and any + additional files must be present on disk for this check to report success. + Recorded once per attempted model load, which happens when a feature is + registered with the Optimization Guide. + + + + + + sophiechang@chromium.org + chrome-intelligence-core@google.com + + Records that the model handler has been created for {OptimizationTarget}. + Recorded once for each session (profile start) that the model handler is + created for {OptimizationTarget}. + + + + + + sophiechang@chromium.org + chrome-intelligence-core@google.com + + Records the time duration between the handler getting created to the model + being available for {OptimizationTarget}. Recorded once for each session + (profile start) that the model handler is created for {OptimizationTarget}. + + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Status of processing OptimizationFilter configuration for + {OptimizationType}. Recorded when the OptimizationGuideService receives a + notification to process hints. + + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + Records the major version of the Optimization Hints component that was + pushed to the client. This will be recorded at startup and when a new + component is received. + + + + + mcrouse@chromium.org + chrome-intelligence-core@google.com + + Records whether the requested annotation for a visit was provided by the + in-memory cache or required them to be determined by executing the models. + Recorded once for every requested visit annotation. + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records the size of a {AnnotationType} BatchAnnotate request in how many + string inputs were given. Recorded once for every call to BatchAnnotate. + + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records whether any input to a {AnnotationType} BatchAnnotate request was + executed successfully. Recorded once for every completed callback for + BatchAnnotate. + + + + + + tbansal@chromium.org + chrome-intelligence-core@google.com + + Emits all collections associated high weight entities (with score equal or + higher than 50 on a scale of 0 to 100) associated with a page visit. + + Note that these are emitted when the user browses to a webpage. When that + happens, multiple collections may be emitted per webpage. Only the + collections associated with high weight entities are recorded. + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records the total execution time of a {AnnotationType} BatchAnnotate + request. Recorded once for every completed callback for BatchAnnotate. + + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records the time a {AnnotationType} BatchAnnotate request was waiting in the + queue before execution started. Recorded once for every completed callback + for BatchAnnotate. + + + + + + tbansal@chromium.org + chrome-intelligence-core@google.com + Records the availability of salient images on page load. + + + + sophiechang@chromium.org + chrome-intelligence-core@google.com + + Records whether the TemplateURLService was available and loaded at + navigation finish. Recorded once per page load. + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + Records whether the page content was annotated successfully, if submitted + for annotation. This will approximately be once a page load after the page + load has finished loading. + + + + + + Obsolete as of 04/2023. + + sophiechang@chromium.org + chrome-intelligence-core@google.com + + Records the magnitude of the visit times between the visit that data is + supposed to be stored for and the closest visit for the same URL if the + specific visit, as identified by URL and time, was not found when storing + the data for a particular visit. This may be recorded multiple times per + page load as different pieces of data are stored for a visit separately + (i.e. related searches, model annotations, etc.). + + + + + + Obsolete as of 04/2023. + + sophiechang@chromium.org + chrome-intelligence-core@google.com + + Records the magnitude of the visit times between the visit that + {PageContentAnnotationsStorageType} is supposed to be stored for and the + closest visit for the same URL if the specific visit, as identified by URL + and time, was not found when storing the {PageContentAnnotationsStorageType} + for a particular visit. This will be recorded at most once per page load. + + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + Records the status of whether the content annotations were stored in History + Service when the necessary data has been collected successfully. This will + be recorded multiple times per page load, for both the related searches as + well as the model annotations once the page has finished loading. + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + Records the status of whether the {PageContentAnnotationsStorageType} were + stored in History Service when the data has been collected successfully. + This will record at most once per page load. + + + + + + + Removed in M103. + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Whether the page topics model was available to execute when requested. + Recorded once per execution attempt. Note that this histogram supersedes + OptimizationGuide.ModelExecutor.ModelAvailableToLoad.PageTopics. + + + + + mcrouse@chromium.org + chrome-intelligence-core@google.com + + Records the model execution latency for the PageEntities model only just the + annotation request. This does not include any thread hop or queuing delay. + Recorded once per model execution attempt. + + + + + sophiechang@chromium.org + chrome-intelligence-core@google.com + + Records the model execution latency for the PageEntities model. This does + not include any thread hop or queuing delay. Recorded once per model + execution attempt. This is effectively the same as + OptimizationGuide.PageContentAnnotationsService.ModelExecutionLatency.PageEntities + but uses `base::ElapsedThreadTimer` to calculate the timing. + + + + + + Removed in M103. + + mcrouse@chromium.org + chrome-intelligence-core@google.com + + Records the execution latency for the PageEntities model from when the model + manager requests the execution to completion and only if a result is + returned. This includes thread queuing and hopping time. Recorded once per + model execution attempt. + + + + + mahmadi@chromium.org + sophiechang@chromium.org + + Records whether related searches were successfully extracted from Google + SRP, if requested. This will be recorded approximately once per page load + after the page has finished loading. + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records the visibility score of Google Search Result Pages when the page's + annotation is complete. + + + + + + Renamed to OptimizationGuide.PageEntitiesModelHandler.CreatedSuccessfully in + M110. + + sophiechang@chromium.org + chrome-intelligence-core@google.com + + Records whether the page entities model executor was created successfully + from a model file. Recorded each time it was attempted, which can be + multiple times a session if a model update was received during the session. + + + + + + Renamed to OptimizationGuide.PageEntitiesModelHandler.CreationStatus in + M110. + + sophiechang@chromium.org + chrome-intelligence-core@google.com + + Records the status for the page entities model executor's creation. Recorded + each time it was attempted, which can be multiple times a session if a model + update was received during the session. + + + + + sophiechang@chromium.org + chrome-intelligence-core@google.com + + Records whether the page entities model handler was created successfully + from a model file. Recorded each time it was attempted, which can be + multiple times a session if a model update was received during the session. + + + + + sophiechang@chromium.org + chrome-intelligence-core@google.com + + Records the status for the page entities model handler's creation. Recorded + each time it was attempted, which can be multiple times a session if a model + update was received during the session. + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + The number of text dump requests that were sent to the renderer and did not + get a response after a grace period following DidFinishLoad, thus were + abandoned. This may be recorded multiple times per pageload. + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + The length, in bytes, of every completed frame dump for the + {PageTextDumpEvent} event. Note that these values are capped at runtime to + an experimentally controlled value. + + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + The number of outstanding page text dump requests at DidFinishLoad. + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + The duration it took for a frame dump request, for the {PageTextDumpEvent} + event, from being sent until being canceled. Recorded every time a request + is canceled. This normally occurs because the mojo pipe disconnected. + + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + The duration it took for a frame dump request for the {PageTextDumpEvent} + event, to complete successfully. Recorded every time a request completes + successfully. + + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + The result of a single attempt to load the override list from disk, and + parse it into a native object. Recorded once for every attempted load. Note + that if an attempt fails it will not be re-attempted for the same file until + the next browsing session, but a successful load will be recorded one or + more times during a browsing session. + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Whether the override list file was packaged with the model, recorded each + time a model file becomes available. + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + When the override list is loaded, whether it contained the given input. + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + Records whether the Download Service was unavailable and blocked a fetch + that would have happened otherwise. Only recorded if model downloads are + enabled for the session. + + + + + rajendrant@chromium.org + chrome-intelligence-core@google.com + + Records the time duration it took for the first model fetch to start from + the time the optimization guide service was initialized. Recorded once at + startup when the first model fetch happens. + + + + + + Deprecated as of 2022-01-28. + + mcrouse@chromium.org + sophiechang@chromium.org + + Records the number of host model features loaded into the map used by the + PredictionManager. This is recorded when the host model features are loaded + from the store. + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + Records whether the download URL for {OptimizationTarget} received from the + remote Optimization Guide server is valid. + + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + Records whether the model was in the local store for {OptimizationTarget} + when the observer for {OptimizationTarget} was registered with the + prediction manager. Recorded at most once per session (profile start) when + {OptimizationTarget} is registered. + + + + + + rajendrant@chromium.org + chrome-intelligence-core@google.com + + Records the different events of prediction model delivery lifecycle for + {OptimizationTarget}, such as fetching model metadata, downloading model + file, verification, unzipping, etc. Recorded whenever lifecycle state + changes. + + + + + + + Deprecated as of 2022-03-07. + + sophiechang@chromium.org + mcrouse@chromium.org + + Records whether the model type changed for {OptimizationTarget} from model + proto to model file, or vice versa when the in-memory model for an + optimization target has been loaded. + + + + + + rajendrant@chromium.org + chrome-intelligence-core@google.com + + Records the time duration it took for the feature to register with the + optimization guide for {OptimizationTarget} from the time the optimization + guide service was initialized. Recorded once when the feature registers with + the service. + + + + + + rajendrant@chromium.org + chrome-intelligence-core@google.com + + Records the time duration it took for the model download to be started by + the download service for {OptimizationTarget} from the time it was requested + by the optimization guide. Recorded once per model download when model + download starts successfully. + + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + The status of verifying and processing model downloads. Recorded once per + file that was successfully downloaded via the Download Service. + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + Records whether the Download Service notified whether a model download has + succeeded or failed. + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Records the exact error whenever writing a model file fails at the step + where the model is moved from the scratch directory to its final location. + Recorded every time a {OptimizationTarget} model file is downloaded and + being processed for storage. + + + + + + rajendrant@chromium.org + sophiechang@chromium.org + + The state of a model download. Recorded multiple times per model file + download, as the state is changed. + + + + + + sophiechang@chromium.org + chrome-intelligence-core@google.com + + Records whether a prediction model for an OptimizationTarget expired if it + was not updated or used within the configured expiration time, but can + change subject to Finch or server configuration. Recorded once per browser + startup. + + + + + + sophiechang@chromium.org + chrome-intelligence-core@google.com + + Records the version of a prediction model for an OptimizationTarget that + expired if it was not updated or used within the configured expiration time, + but can change subject to Finch or server configuration. Recorded once per + browser startup. + + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Net error codes for GetModelsRequest to the Optimization Guide Service on + success and failure. Recorded once per GetModelsRequest where the model was + fetched for. It is not advisable to sum up the counts across + OptimizationTargets as the GetModelsRequests bundle requests for various + OptimizationTargets into single request to the server. + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Net error codes for GetModelsRequest to the Optimization Guide Service on + success and failure for {OptimizationTarget}. Recorded once per + GetModelsRequest where the model for {OptimizationTarget} was fetched for. + It is not advisable to sum up the counts across OptimizationTargets as the + GetModelsRequests bundle requests for various OptimizationTargets into + single request to the server. + + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + For each GetModelsRequest to the Optimization Guide Service, log the HTTP + response code on success and failure. Recorded once per GetModelsRequest + where the model was fetched for. It is not advisable to sum up the counts + across OptimizationTargets as the GetModelsRequests bundle requests for + various OptimizationTargets into single request to the server. + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + For each GetModelsRequest to the Optimization Guide Service for + {OptimizationTarget}, log the HTTP response code on success and failure. + Recorded once per GetModelsRequest where the model for {OptimizationTarget} + was fetched for. It is not advisable to sum up the counts across + OptimizationTargets as the GetModelsRequests bundle requests for various + OptimizationTargets into single request to the server. + + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Records the version of the prediction model that was loaded from the store + and used until updated by a fetch. Recorded only if the loaded model was + valid. + + + + + + + Deprecated as of 2022-01-28. + + mcrouse@chromium.org + sophiechang@chromium.org + + Records the result of loading the host model features metadata while + initializing the OptimizationGuideStore. + + + + + sophiechang@chromium.org + rajendrant@chromium.org + + The total number of model directories in the prediction model store for + {OptimizationTarget}. Recorded once at startup. + + + + + + rajendrant@chromium.org + sophiechang@chromium.org + + Records the reason the prediction model was removed from the model store. + Recorded when the model is removed. + + + + + sophiechang@chromium.org + rajendrant@chromium.org + + The total disk usage of the prediction model store attributed to + {OptimizationTarget}. Recorded once at startup. + + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Records the version of the prediction model that was fetched as an update. + Recorded only if a model returned was valid and is available for use. + + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Records the duration of construction and validation of a prediction model + when the prediction manager loads it into memory for a given optimization + target. Recorded only if the model is valid and successfully loaded into + memory for use. + + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Whether processing the hints succeeded or failed at a particular step. + Recorded when the OptimizationGuideService receives a notification to + process hints. + + + + + mcrouse@chromium.org + sophiechang@chromium.org + + Whether the Optimization Hints component was being processed when the hints + manager is told to shutdown. + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + The number of cached push notifications that were pulled from the Android + cache after the native persistent store became fully initialized. Recorded + once per native startup in cases where the cache did not overflow. + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Whether the push notification cache was handled successfully and was able to + be cleared out. Recorded once per each attempt at handling one cache shard. + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records whether the Android push notification cache overflowed and caused + the whole store to be purged. Recorded once per native startup. + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + Records a true sample for every incoming push notification. + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Whether an incoming push notification was handled successfully. Recorded + once for every such notification. + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records the result of reading the cache of push notifications and parsing + the encoded cache into protobufs. This is recorded once for every encoded + protobuf that is read from cache. + + + + + robertogden@chromium.org + chrome-intelligence-core@google.com + + Records the OptimizationType of the push notification. Recorded when the + notification is received and before the notification payload is delivered to + feature handlers. + + + + + sophiechang@chromium.org + mcrouse@chromium.org + + Whether the session is enabled for fetching information from the remote + Optimization Guide Service. Recorded when the profile is initialized for the + session if Optimization Hints are enabled and the profile is a non-incognito + profile. + + + + + + diff --git a/histograms/metadata/others/OWNERS b/histograms/metadata/others/OWNERS new file mode 100644 index 000000000000..995da070b08d --- /dev/null +++ b/histograms/metadata/others/OWNERS @@ -0,0 +1,23 @@ +# When sending a CL with metrics for review, if a member of +# METRIC_REVIEWER_OWNERS is a good choice of reviewer, please send the CL to +# them. Otherwise, send the CL to chromium-metrics-reviews@google.com. Googlers +# can read more about chromium-metrics-reviews@google.com at go/gwsq-gerrit. +per-file histograms.xml=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# For display, mouse, and input related histograms. +# Primary reviewers +jimmyxgong@chromium.org +# Secondary reviewers +zentaro@chromium.org +# For Conversions.* histograms: +johnidel@chromium.org +# For Compositor*, Gpu.*, Graphics* and Viz.* histograms: +jonross@chromium.org +# For Privacy* and WebsiteSettings.* histograms: +dullweber@chromium.org +# For PerformanceMonitor.* histograms: +olivierli@chromium.org +# For BootTime.*, Uptime.*, UserManager.*, TimeZone.* histograms: +alemate@chromium.org +# For AccessCodeCast.* histograms: +bzielinski@google.com diff --git a/histograms/metadata/others/histograms.xml b/histograms/metadata/others/histograms.xml new file mode 100644 index 000000000000..838eccbecba1 --- /dev/null +++ b/histograms/metadata/others/histograms.xml @@ -0,0 +1,14762 @@ + + + + + + + + + + + + Removed in M98. + + + + + Removed in M98. + + + + + Removed in M98. + + + + + Removed in M98. + + + + + Removed in M84. + + + + + Removed in M84. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ported over from previous suffix based definition where it was removed on + 2021-03 now that support for Flash has been removed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bzielinski@google.com + cros-edu-eng@google.com + + The result of adding a cast sink to the media router sink list via the + AccessCodeCastSinkService when discovering it using an access code. Recorded + after the cast sink is added. Logged only on desktop platforms. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + The result of adding a cast sink to the media router sink list via the + AccessCodeCastSinkService when the device was remembered due to device + policy. Recorded after the cast sink is added. Logged only on desktop + platforms. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + The selected cast mode when a cast session is successfully started + (ResultCode::OK) after a user enters an access code. Logged only on desktop + platforms. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + The duration in seconds an access code device will stay in the list of cast + devices. Recorded on successful creation of a cast session to an access code + device. Logged only on desktop platforms. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + The count of cast devices which have been successfully remembered via the + access code cast sink service. Recorded when the browser starts, and any + time the network changes. Logged only on desktop platforms. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + The discovery type of the associated sink and the cast media source for an + access code route. Recorded when at the start of a local access code route. + Logged only on desktop platforms. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + The amount of time in milliseconds that a route to an access code device + lasts. Recorded at the end of a local access code route; not recorded for + non-local routes. Logged only on desktop platforms. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + The amount of time in milliseconds for the user to input an access code + after the UI is enabled for a cast attempt. Recorded when the user presses + enter or the submit button after typing an access code. Logged only on + desktop platforms. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + The count of ACCESS_CODE_NOT_FOUND errors received while the + AccessCodeCastDialog is open, correlating to the number of times a user + typed an incorrect access code. Recorded after the dialog is closed. Logged + only on desktop platforms. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + The amount of time in milliseconds that the dialog is loading while + attempting to cast to a new device via access code. Recorded after a cast + attempt completes, and does not depend on whether the attempt was successful + or ended in error. Logged only on desktop platforms. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + The reason why the Access Code Cast dialog closed. Recorded when the Access + Code Cast dialog closes. Logged only on desktop platforms. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + The length of time for the AccessCodeCast dialog to finish loading after + instantiation. Recorded after the UI creates a page handler object. Logged + only on desktop platforms. + + + + + bzielinski@google.com + cros-edu-eng@google.com + + The location from which the AccessCodeCast dialog is opened. Recorded after + the dialog opens. Only logged on desktop platforms. + + + + + ahmedmoussa@google.com + takumif@chromium.org + openscreen-eng@google.com + + This metric is recorded once per AccessCodeCast tab mirroring session. It + records the number of times the tab switcher UI was shown and not used, + compared to the number of times it was shown and actually used to switch + tabs. This would make it possible to compute the % of users who cast a tab + who then switch which tab is being cast. Recorded once at the end of a tab + mirroring casting session. + + + + + ahmedmoussa@google.com + takumif@chromium.org + openscreen-eng@google.com + + This metric is recorded once per AccessCodeCast tab mirroring session. It + records the number of times the tab switcher UI was used to switch the + source tab. + + + + + siggi@chromium.org + + Status of the initialization to collect stability debug files. Logged once, + during the initialization of the stability debug file collection. + + + + + siggi@chromium.org + + Number of files found during stability file collection. Logged each time the + stability file collection proceeds (at most once per launch). + + + + + siggi@chromium.org + + Status for the collection of a stability debug file. Logged each time a + debug file collection attempt is made. + + + + + siggi@chromium.org + + Status for the analysis of the system session state. Logged each time a + debug file is collected. + + + + + siggi@chromium.org + + Time spent collecting stability debug information. Logged each time a + collection is performed. + + + + + siggi@chromium.org + + Status of the minidump writing. Logged each time a writing a minidump is + attempted. + + + + + mmenke@chromium.org + morlovich@chromium.org + + The length of time it took to run a FLEDGE auction that was aborted. This + only happens on frame destruction. Recorded when the frame is destroyed. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + mmenke@chromium.org + morlovich@chromium.org + + The length of time it took to run a FLEDGE auction that had a winning bid. + Recorded on auction complete. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + True if the trusted bidding signals specified a per-interest-group + priorityVector whose sparse dot product with the browser generated + prioritySignals was negative, indicating the generateBid() should not be + invoked. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + mmenke@chromium.org + morlovich@chromium.org + + The length of time it took to run a FLEDGE auction that completed + successfully without a winner either due to no bidders making a bid, or the + seller script rejecting all bidders. Not recoded when there are no bidders, + or when an auction fails due to the seller worklet failing to load. Recorded + on auction complete. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + True if the browser can reuse an existing context when calling generateBid() + whose corresponding interest group has the executionMode set to + group-by-origin. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + caraitto@chromium.org + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + For each request made for a DirectFromSellerSignals bundle subresource, + records whether the request was made to the network service, or whether the + request was elided due to either loading from the + DirectFromSellerSignalsRequester cache, or coalescing with an exiting + request for the same subresource URL. + + Reported at each DirectFromSellerSignalsRequester request. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + mmenke@chromium.org + morlovich@chromium.org + + The final state of the InterestGroupAuctionReporter when it's destroyed. + Currently the lifetime of an InterestGroupAuctionReporter is scoped to the + frame that runs an auction, so when that frame is destroyed, any work the + Reporter has yet to do is aborted. This histogram serves to indicate how far + along a destroyed Reporter is, to help understand the priority of extending + an InterestGroupAuctionReporter's lifetime beyond that of the source frame. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + caraitto@chromium.org + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + The outcome of the first 6 auctions reported as bits, tracked per-page, + reported at page unload (if at least 1 auction completed). A 1 indicates + auction success, 0 indicates auction failure. The most significant bit + corresponds to the least recent auction. An extra leading 1 is prepended -- + this allows reporting metrics when fewer than 6 auctions occurred during the + page's lifetime. Therefore, the max value is 0b1111111 (7 bits, represents 6 + successful auctions), and the min value is 0b10 (represents a page that had + 1 failed auction), and every value in between is valid. Not updated for + auctions skipped due to enforcing the auction limit, see + NumAuctionsSkippedDueToAuctionLimit. Also, not updated if runAdAuction() + fails before the auction worklets run. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + The length of time it took to initialize the context and arguments, and + evaluate generateBid() once. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + caraitto@chromium.org + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + For every interest group that participates in an auction, the time duration + since the last join or update of that interest group. + + This metric only measures {Type}. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + + + + + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + The length of time it took to start a FLEDGE auction and complete loading + the interest groups that should participate in the auction; only recorded + when at least one interest group was loaded. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + The length of time it took to start a FLEDGE auction and complete loading + the interest groups that should participate in the auction; only recorded + when no interest groups were loaded. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + behamilton@google.com + morlovich@chromium.org + + Recorded at the end of a FLEDGE auction when there is a non-k-anonymous + winner. True when the non-k-anonymous winner is k-anonymous. + + + + + caraitto@chromium.org + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + The number of auctions (runAdAuction() calls) per-page, from page load to + unload, reported at unload (if at least 1 auction completed). Not updated + for auctions skipped due to enforcing the auction limit, see + NumAuctionsSkippedDueToAuctionLimit. Also, not updated if runAdAuction() + fails before the auction worklets run. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + caraitto@chromium.org + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + The number of auctions (runAdAuction() calls) per-page, from page load to + unload, reported at unload (if at least 1 auction completed) that were + skipped due to hitting the auction limit. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + mmenke@chromium.org + morlovich@chromium.org + + The number of a user's interest groups taking part in a FLEDGE auction. This + is the number of interest groups matching the auction configuration, not the + number whose scripts are successfully loaded or that make bids. Recorded + after all matching interest groups have been retrieved from storage at the + start of an auction. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + mmenke@chromium.org + morlovich@chromium.org + + The number of owner origins with interest groups taking part in a FLEDGE + auction. This is not the number of owners listed by the auction's + configuration, but rather only the subset of them that have interest groups + the user currently belongs to. Recorded after all interest groups + participating in an auction have been retrieved from storage at the start of + an auction. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + mmenke@chromium.org + morlovich@chromium.org + + The number of sellers participating in a FLEDGE auction with a non-zero + number of bidders, including both the top-level seller and sellers in + component auctions. A bidder is defined as an interest group owned by one of + the owners participating in an auction, or, for the top-level auction, a + component auction with such interest groups. Double-counts sellers that + participate in multiple component auctions. Only recorded if an auction has + at least one interest group participating (could be in the top-level + auction, or in any component auction). + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + caraitto@chromium.org + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + The percentage of auctions (runAdAuction() calls) per-page that succeed, + from page load to unload, reported at unload (if at least 1 auction + completed), rounded down to the nearest percent. Not updated for auctions + skipped due to enforcing the auction limit, see + NumAuctionsSkippedDueToAuctionLimit. Also, not updated if runAdAuction() + fails before the auction worklets run. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + The length of time it took to launch a process to execute FLEDGE worklets. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + mmenke@chromium.org + morlovich@chromium.org + + The final result type of running a FLEDGE auction. Recorded on auction + completion/cancellation. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + The length of time it took to initialize the context and arguments, and + evaluate scoreAd() once. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + caraitto@chromium.org + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + The duration between runAdAuction() calls, collected on a per-page basis, + reported on each auction. Not updated for auctions skipped due to enforcing + the auction limit, see NumAuctionsSkippedDueToAuctionLimit. Also, not + updated if runAdAuction() fails before the auction worklets run. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + caraitto@chromium.org + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + For each time a JavaScript enum of {Type} is provided during {When}, records + whether or not the enum was in the deprecated "camelCase" form. + (The correct form is the "words-separated-by-dashes" form). + Unknown enum values are ignored and not reported. + + Reported at each enum usage during {When}. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + + + + + + + + + mmenke@chromium.org + morlovich@chromium.org + privacy-sandbox-dev@chromium.org + + True if the trustedBiddingSignals fetched for use in a FLEDGE auction was + received in the deprecated format. Recorded whenever there's a network fetch + for trustedBiddingSignals, and they're successfully decoded. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + Time required to download {Type} requests, reported upon receving a + response. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + + caraitto@chromium.org + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + The number of bytes sent for {Type} requests, reported upon each request. + This is just the size of the request URL; it doesn't include the size of the + HTTP headers or the word "GET". + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + + caraitto@chromium.org + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + The number of bytes received for {Type} requests, reported upon receving a + response. + + See https://github.com/WICG/turtledove/blob/main/FLEDGE.md for the latest + version of the FLEDGE explainer. + + + + + + + Expired and removed 10/2022. + + johnidel@chromium.org + dalecurtis@chromium.org + + Duration in milliseconds of HTML5 media (when known). Only recorded for + media within ad subframes. This is recorded every time the duration changes + for a video, and can be recorded multiple times for a single video (the + overall duration may not be known when loading starts). Because the duration + will generally increase as more video gets buffered, this histogram may skew + low. + + + + + johnidel@chromium.org + jkarlin@chromium.org + + Load type of HTML5 media in ad subframes such as URL, MediaSource and + MediaStream. + + + + + + Removed 11/2020. + + johnidel@chromium.org + jkarlin@chromium.org + + For a given resource fetched from the disk cache or blink memory cache, logs + the encoded body length of the resource, even if the resource request was + canceled or incomplete. Recorded when the resource request is complete, or + when the page is destroyed/navigated for incomplete resources. The sum of + samples across a page load may differ substatially from the true sum due to + per-sample rounding. These are not intended to be compared to page level + histograms. + + + + + + Removed 04/2020. + + tbansal@chromium.org + + True if the target link of the anchor element has the same host as the root + document. Recorded only on default search engine pages. + + + + + + Removed 04/2020. + + tbansal@chromium.org + ryansturm@chromium.org + src/chrome/browser/navigation_predictor/OWNERS + + True if the target link of the anchor element has the same host as the root + document. Recorded only on pages whose URL do not match the default search + engine. + + + + + + Removed 04/2020. + + chelu@chromium.org + tbansal@chromium.org + + True if the target link of the anchor element has the same host as the root + document. + + + + + + Removed 04/2020. + + chelu@chromium.org + tbansal@chromium.org + + The number of anchor element metrics sent to the browser process on a page + load. Anchor elements having the same href are merged and counted as 1. This + histogram is recorded when the webpage is loaded. + + + + + khushalsagar@chromium.org + graphics-dev@chromium.org + + If the frame rate for the image animation can not be reached, frames in the + animation are skipped to catch up to the desired frame. This metric tracks + the number of frames skipped during catch up, and can be used to assess the + smoothness of these animations. It records the number of frames skipped each + time the animation is ticked forward to draw the next frame. In the ideal + case, where the animation can be drawn at the desired rate, 0 frames should + be skipped. Note that skipping of frames can also be triggered if the + animation was intentionally paused (on becoming off-screen, or the tab being + hidden). + + Warning: this histogram was expired from 2020-04-24 to 2022-04-29; data may + be missing. + + + + + majidvp@chromium.org + animations-dev@chromium.org + + The time it takes the WorkletMutatorDispatcher to complete an asynchronous + mutation request of animation worklet. The measured time is the total + elapsed time from when a request is queued until the results are received. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + majidvp@chromium.org + animations-dev@chromium.org + + The time it takes the WorkletMutatorDispatcher to dispatch to and mutate all + animation worklet mutators synchronously. This includes the time that it + takes each AnimationWorkletGlobalScope to produce its output (which includes + V8 script execution) and also any queuing cost associated with posting + mutation tasks and receiving responses. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + majidvp@chromium.org + kevers@chromium.org + animations-dev@chromium.org + + The time it takes for an AnimationWorklet to produce a mutation update. This + includes all V8 script execution cost. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Removed 2021-01. + + pauljensen@chromium.org + mef@chromium.org + + Whether DnsConfigService::OnConfigChange actually corresponded to a change + in DnsConfig. + + + + + + Removed 2021-01. + + pauljensen@chromium.org + mef@chromium.org + + Duration of time between calls to DnsConfigService::InvalidateConfig. + + + + + + Removed 2021-01. + + pauljensen@chromium.org + mef@chromium.org + Duration of time spent parsing DnsConfig. + + + + + Removed 2021-01. + + pauljensen@chromium.org + mef@chromium.org + + Counts of results of parsing DnsConfig in DnsConfigServicePosix. + + + + + + Removed 2021-01. + + pauljensen@chromium.org + mef@chromium.org + + Counts of results of parsing DnsConfig in DnsConfigServiceWin. + + + + + + Removed 2021-01. + + pauljensen@chromium.org + mef@chromium.org + Whether DnsHosts were parsed successfully. + + + + + Removed 2021-01. + + pauljensen@chromium.org + mef@chromium.org + + Whether DnsConfigService::OnHostsChange actually corresponded to a change in + DnsHosts. + + + + + + Removed 2021-01. + + pauljensen@chromium.org + mef@chromium.org + + Duration of time between calls to DnsConfigService::InvalidateHosts. + + + + + + Removed 2021-01. + + pauljensen@chromium.org + mef@chromium.org + Duration of time spent parsing DnsHosts. + + + + + Removed 2021-01. + + pauljensen@chromium.org + mef@chromium.org + + Counts of results of parsing DnsHosts in DnsConfigServiceWin. + + + + + + Removed 2021-01. + + pauljensen@chromium.org + mef@chromium.org + + Count of servers in DnsConfig. Recorded on every new DnsSession, which is + created on DNS change. + + + + + + Removed 2021-01. + + pauljensen@chromium.org + mef@chromium.org + + Duration of time since the last empty config result to the time a non-change + OnConfigChange is received. + + + + + + Removed 2021-01. + + ericorth@chromium.org + src/net/OWNERS + + Duration of time since the last empty config result to the time a non-change + OnHostsChange is received. + + + + + + Removed 2021-01. + + ericorth@chromium.org + src/net/OWNERS + + The result of DnsConfigService watch. Counts STARTED on every initialization + and FAILED_* on any failure. + + + + + jbauman@chromium.org + + Whether the browser compositor uses GPU or the software renderer. + + + + + + Removed in M97 as it was expired and it was not not updated on omnibox + reverts, which led to incorrect counts. + AutocompleteActionPredictor.NoStatePrefetchStatus is the new alternative. + + tbansal@chromium.org + + Every time we calculate the confidence for a URL to determine if it should + be prerendered, we track the URL and confidence calculated. When an Omnibox + navigation happens, if we calculated a confidence for that URL, a count is + incremented for the confidence that was calculated. This histogram is then a + histogram of counts that relates the number of correctly predicted URLs to a + confidence value. By comparing that number to the + AutocompleteActionPredictor.NavigationCount and + Prerender.OmniboxNavigationsUsedPrerenderCount histograms, it's possible to + determine the effect of changing the confidence threshold on the accuracy of + prerendering prediction. + + + + + tbansal@chromium.org + chrome-omnibox-team@google.com + jdonnelly@chromium.org + + Trackes the number of times something is added, removed, or deleted from the + AutocompleteActionPredictor backing database. + + + + + tbansal@chromium.org + chrome-omnibox-team@google.com + jdonnelly@chromium.org + + A boolean that indicates if the autocomplete suggestion under consideration + by the AutocompleteActionPredictor was found in the database. This gives an + upper bound on the fraction of suggestions it is possible to calculate a + confidence for, and thus an upper bound on the fraction of suggestions that + can be prerendered. + + + + + tbansal@chromium.org + + The number of navigations triggered by the Omnibox and seen by the + AutocompleteActionPredictor. This triggers when the Omnibox is showing + Autocomplete results to the user and they select one with the mouse or by + pressing enter. + + + + + spelchat@chromium.org + chrome-brapp-loading@google.com + + Records the status of no state prefetches started by the omnibox action + predictor. In particular, this records whether they were used or not. + + + + + + Removed in M101. Use Prerender.Experimental.PredictionStatus.DirectUrlInput + instead. + + asamidoi@chromium.org + chrome-prerendering@google.com + + Records the status of prerender started by the omnibox action predictor. In + particular, this records whether they were used or not. + + + + + + Removed in M98. The corresponding histogram for canary checks is + PrefetchProxy.CanaryChecker.CacheEntryAge. + + robertogden@chromium.org + tbansal@chromium.org + + How old a cached probe result was when it was used, in hours. + + + + + + + Removed in M98. + + robertogden@chromium.org + tbansal@chromium.org + + Records the completion status of a probe retry after an externally reported + failure. + + + + + + + Removed in M98. + + robertogden@chromium.org + tbansal@chromium.org + + Records the completion status of a probe when it completes each attempt. + + + + + + + Removed in M98. The corresponding histogram for canary checks is + PrefetchProxy.CanaryChecker.FinalState. + + robertogden@chromium.org + tbansal@chromium.org + + Records the end state of a probe just before it goes inactive. This happens + when the prober succeeds, fails and has no more retries, or the delegate + stops probing. + + + + + + + Removed in M98. The corresponding histogram for canary checks is + PrefetchProxy.CanaryChecker.GenerateCacheKey. + + spelchat@chromium.org + curranmax@chromium.org + + Records the amount of time spent generating a cache key for the availability + prober. In particular, this tracks how much getNetworkOperator calls might + be slowing down this method. See crbug.com/1266018 for more details. + + + + + + + Removed in M98. The corresponding histogram for canary checks is + PrefetchProxy.CanaryChecker.NetError. + + robertogden@chromium.org + tbansal@chromium.org + + Records the net error of a completed or timed out probe. Note that if a HTTP + response does not occur within the probe's TTL, when a sample will also be + added to the ERR_TIMED_OUT bucket. + + + + + + + Removed in M98. The corresponding histogram for canary checks is + PrefetchProxy.CanaryChecker.NumAttemptsBeforeSuccess. + + robertogden@chromium.org + tbansal@chromium.org + + Records the number of attempts that are made to achieve a successful probe + result. Only recorded on success. This metric is 1-based so if a probe + succeeds the first time, a sample of 1 will be recorded. + + + + + + + Removed in M98. + + robertogden@chromium.org + tbansal@chromium.org + + Records the HTTP response code of a completed probe, when a HTTP response is + received. + + + + + + + Removed in M98. The corresponding histogram for canary checks is + PrefetchProxy.CanaryChecker.TimeUntilFailure. + + robertogden@chromium.org + tbansal@chromium.org + + Records the amount of time spent working on a single probe attempt to get to + a failed state. Recorded every time a probe fails. + + + + + + + Removed in M98. The corresponding histogram for canary checks is + PrefetchProxy.CanaryChecker.TimeUntilSuccess. + + robertogden@chromium.org + tbansal@chromium.org + + Records the amount of time spent working on a single probe attempt to get to + a successful state. Recorded every time a probe succeeds. + + + + + + + Removed in M88 as it's no longer needed. + + phillis@chromium.org + cmumford@chromium.org + The result from updating the app badge on macOS. + + + + + Removed 2021-08-11. https://crbug.com/1165237 + + timvolodine@chromium.org + device-dev@chromium.org + + Number of batteries reported by the UPower service on Linux at the start of + the Battery Status API. + + + + + + Removed 2021-08-11. https://crbug.com/1165237 + + timvolodine@chromium.org + + Number of internal batteries reported by MacOS at the start of the Battery + Status API. + + + + + + Removed 2021-08-11. https://crbug.com/1165237 + + timvolodine@chromium.org + + Number of batteries reported by Windows at the start of the Battery Status + API. + + + + + + Removed 2021-09-02 due to being unused in the codebase. + + timvolodine@chromium.org + src/services/device/OWNERS + + Whether the Battery Status API was successfully started up on Android. + + + + + shaktisahu@chromium.org + + Records the size of the uncompressed commit messages received by Blimp + compositor. + + + + + shaktisahu@chromium.org + + Records whether connection attempt to the Blimp engine was successful. + + + + + shaktisahu@chromium.org + Records whether Blimp is supported. + + + + shaktisahu@chromium.org + Records whenever a Blimp tab toggles visibility. + + + + mcchou@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records a duration of a Bluetooth adapter + being lost. This helps us better understand the Bluetooth controller drop + issue in the field. + + + + + apusaka@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records the number of active advertisement + monitors every couple of minutes. This helps us to gauge the additional + power requirement for the advertisement monitor feature. + + + + + apusaka@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records the number of advertisement packet + received in the user space while the advertisement monitor is done using + {Filter} filtering. This helps us to gauge the additional power requirement + for the advertisement monitor feature. + + + + + + + + + apusaka@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records the outcome of {Operation} operation + of advertisement monitor when {Filter} filtering is used. This helps us to + verify the correctness of this feature as well as to point out possible + regression. + + + + + + + + + + + + + sonnysasaka@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records a duration of a Bluetooth adapter + being lost caused by hardware disconnection. This helps us better understand + the Bluetooth controller drop issue in the field. + + + + + mcchou@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records the number of existing advertisements + when registering for a new advertisement. This helps us better understand + the common amount of advertisments used and the registration failures due to + the limited number of advertisement slots. + + + + + + + mmandlik@google.com + chromeos-bt-platform-sw-core@google.com + + Records the outcome of bluetooth profile connection request to a remote + device. This helps to understand the percentage of successful profile + connections against failures and the causes of failures. + + + + + + + mmandlik@google.com + chromeos-bt-platform-sw-core@google.com + + Records the outcome of bluetooth profile probing while pairing with a remote + device. This helps to understand the percentage of successful profile + probing against failures and the causes of failures. + + + + + mcchou@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records the reason of Bluetooth disconnection + between the local device and the remote Bluetooth device. This helps us + better understand the initiator of disconnection request. + + + + + mcchou@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records the outcomes of advertisement + registration. This helps us better understand the persentage of successful + advertisements against failures and the causes of failures. + + + + + mcchou@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records the outcomes of connection requests + to remote devices. This helps us better understand the persentage of + successful connections against failures and the causes of failures. + + + + + mcchou@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records the outcomes of pairing with remote + devices. This helps us better understand the persentage of successful + pairing against failures and the causes of failures. + + + + + mcchou@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records the duration when the local device is + performing Bluetooth advertisment and discoverable as a Bluetooth Low Energy + device by other devices. This helps us better understand the amount of + successful advertisment sessions and the duration. + + + + + mcchou@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records the duration when the local device is + discoverable by other devices as a Bluetooth classic device. This helps us + better understand the amount of requests to expose the local device as a + Bluetooth classic device and the duration. + + + + + mcchou@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records the duration for the local device to + perform device discovery. This helps us better understand the amount of + device discovery request and the duration for users to find the target + device. + + + + + mcchou@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records the duration taken to finish a + successful pairing between the local device and a remote Bluetooth device. + This helps us better understand the latency of completing Bluetooth pairing. + + + + + mcchou@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records the duration taken to finish a + successful connection between the local device and a remote Bluetooth + device. This helps us better understand the latency of connecting to a + Bluetooth device. + + + + + mcchou@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records the types of device discovery + performed by the local device. This helps us better understand the most + common type of device discovery performed. + + + + + mcchou@chromium.org + chromeos-bt-platform-sw-core@google.com + + This is specific to Chrome OS. Records the types of discovered devices in + terms of Bluetooth classic, Bluetooth low energy and Dual-mode supports. + This helps us better understand the persentage of Bluetooth devices in terms + of type. + + + + + + + alemate@chromium.org + briannorris@chromium.org + rsorokin@chromium.org + cros-oac@google.com + + Time from chrome binary exec to login UI ready on Chrome OS. This is + recorded from the platform side after receiving "login-ui-visible" + event on the platform side in the send-boot-metrics.conf script. + + Warning: this histogram was expired from M83 to M105; data may be missing. + + + + + + + briannorris@chromium.org + ctshao@google.com + alemate@chromium.org + baseos-perf@google.com + + Time from power on to kernel start (Chrome OS). + + Warning: this histogram was expired from M83 to M105; data may be missing. + + + + + + + briannorris@chromium.org + ctshao@google.com + alemate@chromium.org + baseos-perf@google.com + + Time from kernel start to system code being called (Chrome OS). + + Warning: this histogram was expired from M83 to M105; data may be missing. + + + + + + + rsorokin@chromium.org + antrim@chromium.org + alemate@chromium.org + cros-oac@chromium.org + + Time from the moment sign in authentication is started until the first user + session UI elements become ready to use. (Chrome OS). + + + + + + + briannorris@chromium.org + ctshao@google.com + alemate@chromium.org + baseos-perf@google.com + + Time from system code being called to starting Chrome (Chrome OS). + + Warning: this histogram was expired from M83 to M105; data may be missing. + + + + + + + alemate@chromium.org + briannorris@chromium.org + rsorokin@chromium.org + cros-oac@google.com + + Time from power on to login UI ready on Chrome OS. This is recorded from the + platform side after receiving "login-ui-visible" event on the + platform side in the send-boot-metrics.conf script. + + Warning: this histogram was expired from 2022-04-03 to M105; data may be + missing. + + + + + eustas@chromium.org + Compressed/Decompressed size ratio. + + + + eustas@chromium.org + + Error code observed after failing to decode a Brotli-compressed response + stream from the network. Recorded for each layer of Brotli compression, as + indicated using Content-Encoding header values, part of an HTTP response + where a decoding error occurs. + + Warning: this histogram was expired from M85 to M110; data may be missing. + + + + + eustas@chromium.org + + The final state of the BrotliFilter. Recorded during the decoding process as + bytes are consumed from a Brotli-compressed response stream. + + Warning: this histogram was expired from M81 to M110; data may be missing. + + + + + eustas@chromium.org + + Maximum amount of memory allocated to decode a Brotli-compressed response + stream from the network. Recorded during the process of allocating memory to + decode a Brotli-compressed response stream. + + Warning: this histogram was expired from M77 to M110; data may be missing. + + + + + + Retired in M93, replaced by Canvas.TextMetrics.SetFont2 which has a wider + range. + + yiyix@chromium.org + fserb@chromium.org + + Time spent in microseconds to perform calls to SetFont in Canvas for + Canvas2d. It's measured each time SetFont is called. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Retired in M94. + + yiyix@chromium.org + fserb@chromium.org + + Time spent in microseconds to perform calls to SetFont in Canvas for + Canvas2d. It's measured each time SetFont is called. + + This differs from Canvas.TextMetrics.SetFont in that it uses buckets up to + ten seconds rather than ten milliseconds (due to a change in the underlying + histogramming function called). + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + + ryanchung@google.com + + Records the result of the Cast certificate verification on the Cast sender. + + + + + mfoltz@chromium.org + media-dev@chromium.org + + Records any flags observed on the Cast channel used to launch a Cast + session. A single channel may have multiple flags, and each flag is logged + as a separate count. + + + + + + + ryanchung@google.com + + Records whether the correct nonce challenge was in the Cast receiver's + response. + + + + + + + ryanchung@google.com + + Records whether the signature returned by the Cast receiver is verifiable + with the challenge and device certificate. + + + + + + No longer collected as of 2022-01. + + takumif@chromium.org + mfoltz@chromium.org + openscreen-eng@google.com + Records the media type of every video being cast. + + + + + Removed September 2020 as it's no longer being collected. + + maybelle@chromium.org + miguelg@chromium.org + + Records the result of a request to play remotely on a per player app basis + within Chrome for Android. + + + + + + Deprecated as of 2021/02 as it's not been collected for a while due to + refactoring. + + tguilbert@google.com + media-dev@chromium.org + + Records the type of the remote playback device selected by the user. This + will be recorded when the user has chosen the device from the media route + chooser dialog. + + + + + + Deprecated as of 2021/02 as it's not been collected for a while due to + refactoring. + + tguilbert@google.com + media-dev@chromium.org + + Record each interaction with the fullscreen remote playback controls in + cases when the corresponding media element on the page was present. + + + + + + Deprecated as of 2021/02 as it's not been collected for a while due to + refactoring. + + tguilbert@google.com + media-dev@chromium.org + + Record each interaction with the fullscreen remote playback controls in + cases when the corresponding media element on the page was not present. + + + + + + Deprecated as of 2021/02 as it's not been collected for a while due to + refactoring. + + tguilbert@google.com + media-dev@chromium.org + + Indicates whether the corresponding media element on the page was present + when the fullscreen remote playback controls were shown. + + + + + muyaoxu@google.com + openscreen-eng@google.com + + Records the location when users interact with the RemotePlayback API on + Clank. Please note, this metric does not show whether a session is started + or stopped and does not include RemotePlayback sessions initiated through + the Cast SDK. + + + + + + Deprecated as of 2021/02 as it's not been collected for a while due to + refactoring. A new metrics, + "Cast.Sender.Clank.SessionTimeWithoutMediaElementPercentage" now + collects the same data but at a different location. + + tguilbert@google.com + media-dev@chromium.org + + Records the ratio of the time the media element was detached from the remote + playback session to the total duration of the session (as from when the + element has been attached till when the session stopped or disconnected), in + percents. + + + + + + Deprecated as of 2021/02 as it's not been collected for a while due to + refactoring. + + tguilbert@google.com + media-dev@chromium.org + + Records the result of resolving the video URL for cast, including checking + its CORS header. + + + + + fiorito@google.com + mfoltz@chromium.org + openscreen-eng@google.com + + Indicates whether initialization of a video encode accelerator for Cast + sender was successful. + + Warning: this histogram was expired from 2021-10-17 to 2022-12-15; data may + be missing. + + + + + Please list the metric's owners. Add more owner tags as needed. + cast-analytics@google.com + + The latency between when a Cast V2 connection is established and the first + message is received on that connection. "Unknown" is the peer + type, which is not known at this point in the CastV2 connection + establishment. Naming conforms to the CastV2 sender-side histogram naming + convention "CastV2.[action].[name].[peer_type]". + + + + + Please list the metric's owners. Add more owner tags as needed. + cast-analytics@google.com + + On accepting a Cast V2 transport socket connection, if an error is + encountered, the error code is logged here. "Unknown" is the peer + type, which is not known at this point in the CastV2 connection + establishment. "SslHandshake.Error" is the name of the action. + Naming conforms to the CastV2 sender-side histogram naming convention + "CastV2.[action].[name].[peer_type]". + + + + + Please list the metric's owners. Add more owner tags as needed. + cast-analytics@google.com + + The time taken to do the handshake during Cast V2 transport socket creation. + "Unknown" is the peer type, which is not known at this point in + the CastV2 connection establishment. Naming conforms to the CastV2 + sender-side histogram naming convention + "CastV2.[action].[name].[peer_type]". + + + + + + + + + rsleevi@chromium.org + + Information about the certificate algorithms and sizes in use on the web, to + examine compliance with the CA/Browser Forum requirements and security best + practice. This histogram considers the notBefore as the issuance date, for + purposes of what requirements apply. + + + + + + + wfh@chromium.org + chrome-stability-core@google.com + + Recorded when a crash occurs in a Utility process. On crash, the exit code + will indicate the exception code of the crash. + + + + + + + wfh@chromium.org + chrome-stability-core@google.com + + Count of child utility process crashes, bucketed by the hash of their + process name. The process name is typically the service name of the mojo + service. Recorded when a Utility process crashes. + + + + + + + wfh@chromium.org + chrome-stability-core@google.com + Count of child process crashes grouped by process type. + + + + + + wfh@chromium.org + + Count of child process abnormal channel disconnects that are not classified + and reported because we took the exit code too early. Grouped by process + type. + + + + + + + wfh@chromium.org + chrome-stability-core@google.com + Count of child process kills grouped by process type. + + + + wfh@chromium.org + + Count of child utility process launches, bucketed by the hash of their + process name. The process name is typically the service name of the mojo + service. + + + + + + + wfh@chromium.org + chrome-stability-core@google.com + + A platform-specific error code returned from the attempt to launch a Utility + process. Recorded when a Utility process fails to launch. + + + + + + + wfh@chromium.org + chrome-stability-core@google.com + + Count of child utility process launch failures, bucketed by the hash of + their process name. The process name is typically the service name of the + mojo service. Recorded when a Utility process fails to launch. + + + + + + + wfh@chromium.org + chrome-stability-core@google.com + + An extended Windows error code returned from GetLastError when failing to + launch a utility process. Recorded when a Utility process fails to launch on + Windows. + + + + + olivierli@chromium.org + fdoray@chromium.org + + The time elapsed between the creation and destruction of a utility process. + Recorded when the process is recorded as destroyed in PerformanceManager. + + + + + + Replaced by ChromiumAndroidLinker.BrowserLoadTime2 in 2021-07. + + rsesek@chromium.org + + The amount of time it took to load the native libraries in the browser + process. + + + + + pasko@chromium.org + boliu@chromium.org + + Recorded when a new child process becomes known to the browser process. Only + recorded on S+, and only when the child process inherits from the app + zygote, and only when the feature of sharing RELRO between the Browser and + the App Zygote is enabled. + + Describes whether the App Zygote PID discovered from the child belongs to a + known App Zygote, or the App Zygote was restarted. + + + + + pasko@chromium.org + agrieve@chromium.org + + The ModernLinker loads the native library twice: once with + android_dlopen_ext, and if the first one does not fail, also invokes + System.loadLibrary(). This histogram reflects the time to load the native + library when {LoadKind}. + + Failed load does not record a sample. Failing the first load would also + avoid recording the histogram for the second load. + + See a description of RELRO sharing here: + https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/android_native_libraries.md#RELRO-Sharing + + + + + + + + + + + pasko@chromium.org + agrieve@chromium.org + + Same as ModernLinkerDetailedLoadTime.*, but additionally split by process + background state as known to cgroups. + + Reflects load time when the app {BackgroundState}. When {LoadKind}. + + + + + + + + + + + + + + + + + pasko@chromium.org + agrieve@chromium.org + + The amount of time the ModernLinker spends to run android_dlopen_ext(). + Samples from the app zygote process can be counted multiple times when the + app zygote is enabled. See ChromiumAndroidLinker.*LoadTime2 for details. + + + + + pasko@chromium.org + agrieve@chromium.org + + The amount of time the ModernLinker spends to find the RELRO region using + dl_iterate_phdr(). Samples from the app zygote process can be counted + multiple times when the app zygote is enabled. See + ChromiumAndroidLinker.*LoadTime2 for details. + + + + + lizeb@chromium.org + pasko@chromium.org + + Recorded when RELRO is replaced with a shared memory region, in all + processes consuming RELRO. Indicates whether the shared RELRO was available + synchronously right after the native library was loaded. ModernLinker only. + + + + + lizeb@chromium.org + pasko@chromium.org + + Recorded when the native library is loaded by the Chromium linker, and an + attempt to spawn a shared RELRO region is made. Indicates whether the + attempt was a success. If the number of samples from + "ChromiumAndroidLinker.RelroAvailableImmediately" where the + availability was not immediate is large compared to the counts of successful + RELRO spawns, it would indicate potential startup performance improvements + when starting child process(es) during early browser startup phases. + ModernLinker only. + + + + + + Upgraded to ChromiumAndroidLinker.RelroSharingStatus2 around 2021-10. + + lizeb@chromium.org + pasko@chromium.org + + Recorded when RELRO is replaced with a shared memory region, in all + processes consuming RELRO. Indicates whether the replacement was a success. + ModernLinker only. + + + + + lizeb@chromium.org + pasko@chromium.org + + Recorded when RELRO is replaced with a shared memory region, in all + processes consuming RELRO. Indicates whether the replacement was a success. + ModernLinker only. + + See a description of RELRO sharing here: + https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/android_native_libraries.md#RELRO-Sharing + + + + + + Replaced by ChromiumAndroidLinker.ChildLoadTime2 in 2021-07. + + rsesek@chromium.org + + The amount of time it took to load the native libraries in the renderer + process. + + + + + pasko@chromium.org + lizeb@chromium.org + + The amount of time to find the memory address reservation intended for + WebView. This search is sometimes initiated as an early stage of loading the + native library. A sample is discarded if the attempt to load the native + library fails. + + Measured when running in {ProcessType} process. Only for {SearchStatus} + searches. + + For a more detailed description of each suffix process type suffix (Browser, + Child, Zygote) see description of the ChromiumAndroidLinker.*LoadTime2. + + + + + + + + + + + + + + pasko@chromium.org + rsesek@chromium.org + + The amount of time it took to load the native libraries in {ProcessType}. + + In order to explain the nature of the uploaded samples for this histogram it + is necessary to define a few core properties of the running processes. + + On Android 10 (=Q) a new feature was introduced and became used in Chrome: + App Zygotes. An App Zygote (AZ) is a process pre-created by the system to + allow faster initialization of isolated processes (IP) for a specific app. + When AZ is created it runs the app-specific "preload" function + once, and becomes idle, after that no work can be performed in the AZ other + than getting forked. Whenever an app requests the Android Framework (AF) to + provide an isolated process, the AF notifies the AZ to fork itself into a + new process, which later will be provided to the app. An AZ created for one + app (package) cannot be used for another app. + + The purpose of the AZ in Chrome is to load the native library - it avoids + loading the same library in each isolated process separately. + + Capabilities of the AZ are very restricted. It runs in the same sandbox + constraints as an isolated process, while also not having the ability to + communicate with any other process on the system. Only after forking from + the AZ the inherited process becomes able to communicate to the rest of + Chrome. + + Beyond isolated processes, Chrome can request processes with more + privileges: privileged processes (PP). In this case those processes will be + forked from another zygote. There are several types of those zygotes, we + will refer to them as Other Zygote (OZ) for simplicity. The decisions + whether to start an isolated process through an AZ, and when to start a new + AZ are made dynamically and depends on a few factors. + + The suffixes of this histogram, as described below, correspond to distinct + execution scenarios: + + Suffix "Browser": the native library is loaded in the main app + process + + Suffix "Zygote": OZ forks into AZ, AZ loads the native library, AZ + forks into IP + + Suffix "Child": OZ forks into PP, PP loads the native library + + Suffix "Child": OZ forks into IP, IP loads the native library + + Suffix "Child": OZ forks into AZ, AZ fails to load the native + library, AZ forks into IP, IP loads the native library (this scenario should + happen rarely). + + After library loading happens in the AZ, the recorded histogram value (for + simplicity) gets copied to each child process forked from this AZ process + and uploaded "as if" it is a unique sample from this child + process. This leads to a discrepancy in sample counts. + + In early 2021-10 it had about 7% extra uploaded samples in + "ChromiumAndroidLinker.ZygoteLoadTime2". + + + + + + + + + + pasko@chromium.org + agrieve@chromium.org + + The amount of CPU time (thread time) it took to load the native libraries in + {ProcessType}. + + For a more detailed description of each suffix process type suffix (Browser, + Child, Zygote) see description of the ChromiumAndroidLinker.*LoadTime2. + + + + + + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + jamiewalch@chromium.org + + Recorded every time a Chromoting connection enters a new state. + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + jamiewalch@chromium.org + + The duration of sessions that were closed, normally by a user-initiated + action. + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + jamiewalch@chromium.org + The duration of sessions that failed to connect. + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + jamiewalch@chromium.org + + The time taken to authenticate as part of a Chromoting connection request. + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + jamiewalch@chromium.org + + The time taken to connect to a remote-host, after a request has been + authenticated. + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + joedow@chromium.org + lambroslambrou@chromium.org + + Input event delivery latency from the browser to the plugin. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + jamiewalch@chromium.org + + The bandwidth of non-empty packets in Chromoting remote sessions, updated + every time a video packet is processed and logged every 1s. + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + jamiewalch@chromium.org + + The time to capture a video frame on the host, returned as part of a video + packet. + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + jamiewalch@chromium.org + + Amount of time wasted on IPC and threading overhead when capturing a video + frame. + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + joedow@chromium.org + lambroslambrou@chromium.org + + The time from when an input event is received to when the next frame is + captured. + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + jamiewalch@chromium.org + The time to decode a video packet on the client. + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + joedow@chromium.org + lambroslambrou@chromium.org + + The time to encode a video packet on the host, returned as part of a video + packet. + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + jamiewalch@chromium.org + + Delay before a newly captured frame is passed to the encoder. + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + joedow@chromium.org + lambroslambrou@chromium.org + + The frame-rate of non-empty packets in Chromoting remote sessions, updated + every time a video packet is processed and logged every 1s. + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + jamiewalch@chromium.org + + Estimated network roundtrip latency calculated by subtracting total + processing time on host and client from the total roundtrip time. + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + jamiewalch@chromium.org + + The packets/sec, including empty packets, in Chromoting remote sessions, + updated every time a video packet is processed and logged every 1s. + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + jamiewalch@chromium.org + The time to paint a decoded video packet on the client. + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + jamiewalch@chromium.org + + The time from an input being sent from the client to a response being + received by the client after it is processed by the host. + + + + + + Removed in M98, metrics haven't been collected since ~mid 2019. + + jamiewalch@chromium.org + + Delay before an encoded video packet is written to the send buffer. + + + + + victortan@chromium.org + miketaylr@chromium.org + + Emitted on two related events: First, when an request that is eligable to be + restarted receives an ACCEPT_CH HTTP2/HTTP3 frame via a TLS connection with + the relevent ALPS setting. Next, if that frame causes that request to be + restarted. + + + + + victortan@chromium.org + miketaylr@chromium.org + + Count of requests restarted because of the Critical-CH response header. + + + + + miketaylr@chromium.org + potassium-katabolism@google.com + + The latency (in microseconds) to fetch the client hints for a given origin + from the Accept-CH cache for {OperationType}. + + + + + + + + + + + + Removed December 2021 as accept-ch-lifetime was retired. + + yoavweiss@chromium.org + tbansal@chromium.org + mkwst@chromium.org + aarontag@chromium.org + + Duration for which the origin requested the client hints to be persisted. + Collected on the renderer side. Collected while navigation responses are + being processed. + + + + + miketaylr@chromium.org + potassium-katabolism@google.com + + The latency (in milliseconds) to store the client hints for a given origin + in the Accept-CH cache. + + + + + yoavweiss@chromium.org + tbansal@chromium.org + mkwst@chromium.org + aarontag@chromium.org + + Count of events when the client hints needs to be persisted to the disk by + the browser. Collected while navigation responses are being processed. + + + + + yoavweiss@chromium.org + tbansal@chromium.org + mkwst@chromium.org + aarontag@chromium.org + + Count of client hints that need to be persisted to the disk. Recorded by the + renderer. Collected while navigation responses are being processed. + + + + + curranmax@chromium.org + + This records whether or not the device scale factor was exactly 1.0 or not + when sending either of the viewport height or viewport width client hint. + There was a bug (see crbug.com/1394231) where the device scale factor was + being applied twice to the viewport values. This histogram can be used to + estimate the impact of that bug. + + + + + hazems@chromium.org + src/android_webview/OWNERS + src/components/component_updater/android/OWNERS + + Records {Component} component loading success, or the failure reason if the + component loading fails using the EmbeddedComponentLoader. Note that success + here just means that the component has been fetched successfully from the + components provider service. However, this doesn't neccessary mean that the + component will be then loaded successfully in the system by its respective + ComponentLoaderPolicy implementation. + + + + + + + + + + + + sorin@chromium.org + src/components/component_updater/OWNERS + + The number of times the component updater called UpdateClient::Install or + UpdateClient::Update. These correspond to the number of manual component + update checks performed as a result of a user action, and the number of + automated component update checks. + + + + + sorin@chromium.org + src/components/component_updater/OWNERS + The result of an install or an update check. + + + + sorin@chromium.org + src/components/component_updater/OWNERS + The result of an install or an update check. + + + + sorin@chromium.org + src/components/component_updater/OWNERS + + Time to complete an Install or an Update component update call. + + + + + chrisha@chromium.org + + The number of confirmed bad modules found during module enumeration. + + + + + chrisha@chromium.org + + The length of time it takes to enumerate the loaded modules in the browser + process. + + + + + chrisha@chromium.org + + The length of time it takes to enumerate the shell extensions. + + + + + chrisha@chromium.org + + The length of time it takes to enumerate the Winsock LSP modules. + + + + + chrisha@chromium.org + + The cumulative length of time it takes to inspect all modules on disk, + extracting their certificates and version information. This work is actually + spread out over a much longer period of time so as not to impact the user. + + + + + chrisha@chromium.org + + The cumulative length of time it takes to enumerate and inspect all modules. + This work is actually spread out over a much longer period of time so as not + to impact the user. + + + + + chrisha@chromium.org + + The number of suspected bad modules found during module enumeration. + + + + + ebeach@google.com + + Connectivity Diagnostics App: WiFi signal strength recorded during + NIC_SIGNAL_STRENGTH test. + + The "Strength" property of a WiFi signal is a partially-reversible + function that linearly maps the RSSI range -120dBm to -20dBm to Strength + values from 0 to 100. + + + + + ebeach@google.com + + Resolution latency seen by the Connectivity Diagnostics. + + Resolver latency is computed by using the chrome.dns API to query three + randomly generated Google hostnames (*-ccd-testing-v4.metric.gstatic.com). + The random hostnames guarantees that there will be no caching of DNS + hostnames. The time taken from issuing the DNS request to receiving a + response is clocked in JavaScript and the arithmetic mean of the three times + is used as the resolver latency. + + + + + + Removed in M98 as the Context menu implementation changed. + + michaeldo@chromium.org + src/ios/web/OWNERS + + Logs true when the system touches are cancelled in order to show the Context + Menu instead of performing a default system action. Only logged on iOS. + + + + + + Removed in M98 as the context menu implementation changed. + + michaeldo@chromium.org + src/ios/web/OWNERS + + Logged when DOM element details are not yet available when the user + completes a long press. Also logs if the context menu was shown once the + element details became available or if the display was cancelled. This + ensures that all context menu gestures are eventually processed. Only logged + on iOS. + + + + + + Removed in M98 as the ContextMenu implementation changed. + + michaeldo@chromium.org + src/ios/web/OWNERS + + Logged when the Context Menu will be displayed. Also logs if the element for + the last touch was found in the main frame or a iframe. Only logged on iOS. + + + + + + Replaced by Mobile.ContextMenu.CopyImage + + mrsuyi@chromium.org + gambard@chromium.org + + Logged when the copying image from context menu is invoked and relevant + events happen during the copying image procedure. + + + + + + Replaced by Mobile.ContextMenu.GetImageDataByJsResult + + mrsuyi@chromium.org + gambard@chromium.org + + Result of getting image data by JavaScript for CopyImage, SaveImage and + SearchByImage from iOS context menu. Recorded when the JavaScript returns, + or fails for timeout. + + + + + + Replaced by Mobile.ContextMenu.LensSupportStatus + + hujasonx@google.com + lens-in-bling-team@google.com + + Whether or not Lens is supported, and if not, the reason why. Recorded only + if the feature is enabled when the long-press context menu is shown for an + image. + + + + + + Replaced by Mobile.ContextMenu.LensWebUploadStatus + + hujasonx@google.com + lens-in-bling-team@google.com + + The status of the upload of image data to Lens. Recorded only when the Lens + feature is triggered via the context menu entry from an image long-press. + + + + + + Replaced by Mobile.ContextMenu.LensWebUploadTime + + hujasonx@google.com + lens-in-bling-team@google.com + + Logs the time it takes to upload image data to the Lens Web servers. + Recorded only when the Lens feature is triggered via the context menu entry + from an image long-press. + + + + + yusuyoutube@google.com + benwgold@google.com + + Logged when the Lens chip is shown and relevant events when the user + interacts with the Lens chip. Only logged on Android. + + + + + benwgold@google.com + lens-chrome@google.com + + Whether the user supports the Lens intent and if not, the reason why. + Recorded only if the feature is enabled when the long-press context menu is + shown for an image. + + + + + + Removed in M103 + + qinmin@chromium.org + + Type of the url when user saves the content through the save link context + menu. + + + + + + + avi@chromium.org + mpearson@chromium.org + chrome-analysis-team@google.com + + {Type} + + The option that the user selected from a context menu on Android. This is + logged on Android only; check out ContextMenu.SelectedOptionIOS for iOS, and + ContextMenu.SelectedOptionDesktop for desktop. Note that if a menu is + invoked on mixed content, only one of the submetrics receives the log; read + the code to determine which one. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + avi@chromium.org + mpearson@chromium.org + + The option that the user selected from a context menu on desktop. This is + logged on desktop only; check out ContextMenu.SelectedOptionIOS for iOS, and + ContextMenu.SelectedOptionAndroid for Android. Note that if a menu is + invoked on mixed content, only one of the submetrics receives the log; read + the code to determine which one. + + + + + + Replaced by Mobile.ContextMenu.WebImage.Actions, + Mobile.ContextMenu.WebImageLink.Actions and + Mobile.ContextMenu.WebLink.Actions in M98 + + avi@chromium.org + mpearson@chromium.org + chrome-analysis-team@google.com + + The option that the user selected from a context menu on iOS. This is logged + on iOS only; check out ContextMenu.SelectedOptionAndroid for Android, and + ContextMenu.SelectedOptionDesktop for desktop. Note that if a menu is + invoked on mixed content, only one of the submetrics receives the log; read + the code to determine which one. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + mpearson@chromium.org + twellington@chromium.org + clank-app-team@google.com + + {Type} + + Recorded when a context menu is shown, sliced by whether a web contents was + present. (It generally should be; indeed, this code path should not be + followed when it is absent. For instance, invoking a context menu from the + new tab page or from the sad tab page will not cause an emission to this + histogram.) Note that this refers to link context menus, not the + cut-copy-paste context menus that can appear during long presses on text on + a web page or long presses in the omnibox. This is an Android-only metric; + compare with RenderViewContextMenu.Shown and RenderViewContextMenu.Used on + desktop. + + + + + + + Removed in M88. + + twellington@chromium.org + clank-app-team@google.com + + Logged when the callback to fetch the thumbnail returns a result: Success + (bitmap data received) or Failure (null bitmap). Android only. + + + + + jeffreycohen@chromium.org + chrome-shared-highlighting@google.com + + Records how long it takes to press on "Share" from the time + context menu is shown. Android only. + + + + + twellington@chromium.org + clank-app-team@google.com + + The time it takes for the user to abandon the context menu after it's shown + by pressing back or touching outside the menu. This is only logged if the + menu is abandoned. See ContextMenu.TimeToTakeAction.SelectedItem for the + cases where it is closed as a result of user interaction with the menu. + Android only. + + + + + twellington@chromium.org + clank-app-team@google.com + + The time it takes for the user to select an item. This is only logged if the + menu is closed as a result of the user clicking a menu item or a DirectShare + button. See ContextMenu.TimeToTakeAction.Abandoned for the cases where it is + abandoned by the user. Android only. + + + + + twellington@chromium.org + clank-app-team@google.com + Logged when the URL is clicked. Android only. + + + + yyushkina@chromium.org + + Number of times the emoji item in the views text services context menu is + used. + + + + + + Removed in M98 as the context menu implementation changed. + + michaeldo@chromium.org + src/ios/web/OWNERS + + Logs true when the context menu gesture recognizer fully recognizes a long + press, but is still waiting on the DOM element details before the context + menu can be shown. Only logged on iOS. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Measures the number of aggregation keys provided in attribution source + registration headers. Recorded once for each source registration header when + parsed from the attributionsrc response. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Measures how often aggregatable reports are assembled successfully or failed + and why. Recorded once for each aggregatable report processed by the + aggregation service on each send attempt. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Measures how often aggregatable reports are stored successfully or rejected + and why. Recorded once for each trigger event processed by the attribution + storage layer. `kNotRegistered` will be logged if the source or trigger + doesn't declare aggregatable data. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Measures the percentage of aggregation keys dropped per trigger. Recorded + when creating the aggregatable histogram. Not recorded if no aggregation + keys were declared. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the "extra" non-scheduled time it took to send a + particular aggregatable attribution report. This is primarily due to a + report's scheduled report time taking place while the browser is closed or + there is network issue. Recorded when an aggregatable report is to be + assembled. + + + + + tquintanilla@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the "extra" non-scheduled time it took to confirm the + aggregatable attribution report was sent. This is primarily due to a + report's scheduled report time taking place while the browser is closed or + there is network issue. Recorded when an aggregatable report is successfully + sent. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Measures the percentage of aggregatable trigger data filtered per trigger. + Recorded when creating the aggregatable histogram. Not recorded if no + trigger data was declared. This is effectively how many trigger side + dimensions the reporter declared, but were not used for histogram + generation. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Measures the number of aggregatable histogram contributions per report. + Recorded when creating the aggregatable histogram. + + + + + anthonygarant@chromium.org + measurement-api-dev+metrics@google.com + + Upon storing an Aggregatable Report at `creation_time`, it is scheduled with + a `reporting_delay` to send at time `report_time` and is pending until then. + + If the browser closes or the device goes offline, and until it re-opens or + re-connects, we are unable to send reports. On such events, for each pending + reports, we record two {TimeSpan}s: [1] TimeSinceCreation: The time elapsed + since the report was created (creation_time - now). [2] TimeUntilReportTime: + The time remaining for the report to be sent (report_time - now). + + The metrics will enable us to quantify the extent to which reducing + `reporting_delay` would increase the number of reports sent before an + unavailability event. + + [Limitation] To limit memory usage, a maximum of 50 pending reports timings + are handled. Past this number, reports are dropped (until reports get sent + or an unavailability event occurs). Given that the most recent reports can + be dropped, we can expect the `TimeSinceCreation` to be biased down slightly + and `TimeUntilReportTime` to be biased up slightly. We expect this situation + to be infrequent given the 10-60 minutes reporting window. + + + + + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the high level request status of an aggregatable report. Recorded + once per aggregatable report. For aggregatable report that has been retried, + only the last retry will be counted. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the time difference from when the report was intended to be sent, + and the actual report time. This is different from + Conversions.AggregatableReport.ExtraReportDelay because it uses the send + attempt report time, rather than initial report time assigned by the API. + Accounts for any delays in Chrome scheduling the report. Recorded when an + aggregatabl report is to be assembled. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the time between a trigger and its assembly. This is emitted + whenever an aggregatable report is to be assembled by the aggregation + service. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the time between a trigger and its reporting. This is emitted only + when an aggregatable report is sent succeessfully to the reporting endpoint, + and not emitted for debug reports. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Measures how often attribution OS registrations are succesfully registered + with Android. Only recorded on Android when the + AttributionReportingCrossAppWeb feature is enabled. Recorded for each OS + registration sent to Android when the result is returned. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the status of the attributionsrc requests. Recorded when the request + started and finished. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records whether web or OS-level attribution is supported on the device. Only + recorded on Android when the AttributionReportingCrossAppWeb feature is + enabled. Recorded once per browser session when the browser starts up. + + + + + johnidel@chromium.org + csharrison@chromium.org + + Records the time it takes to clear conversion data. Logged any time site + data is cleared in Chrome. + + + + + apaseltiner@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Measures how often event-level triggers are stored successfully or rejected + and why. Recorded once for each conversion event processed by the + attribution storage layer. + + + + + anthonygarant@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Error info for sending a debug attribution report, recorded for each sent + aggregatable report. The HTTP response code is recorded if there is no net + error code for the request, or the net error code indicates there was a + response code failure. + + + + + anthonygarant@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Error info for sending a debug attribution report, recorded for each sent + event-level report. The HTTP response code is recorded if there is no net + error code for the request, or the net error code indicates there was a + response code failure. + + + + + anthonygarant@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records whether a particular aggregatable debug attribution report was + successful. Emitted for all aggregatable debug attribution reports that + retry. + + + + + anthonygarant@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records whether a particular event-level debug attribution report was + successful. Emitted for all event-level debug attribution reports that + retry. + + + + + anthonygarant@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the high-level request status of an aggregatable debug attribution + report. Recorded for every debug aggregatable attribution report sent. + + + + + anthonygarant@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the high-level request status of an event-level debug attribution + report. Recorded for every debug event-level attribution report sent. + + + + + anthonygarant@chromium.org + measurement-api-dev+metrics@google.com + + When registering an attribution data host, its registration will be deferred + if it can register triggers and there are pending navigation-source + registrations from the page that navigated to that page. Receivers are + deferred until the pending navigation-source registrations complete or a + timeout is reached. + + When processing a deferred attribution data host registration, this metric + records if it's due to a timeout. + + + + + apaseltiner@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Measures how often sources and triggers are allowed to be enqueued for + processing in the attribution manager. If the queue reaches a maximum size, + additional sources and triggers are dropped. Events are enqueued while + waiting for a previous debug-cookie check to complete. + + + + + apaseltiner@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Measures how often OS sources and triggers are allowed to be enqueued for + processing in the attribution manager. If the queue reaches a maximum size, + additional OS sources and triggers are dropped. Events are enqueued while + waiting for a previous debug-cookie check to complete. Only recorded on + Android. + + + + + apaseltiner@chromium.org + johnidel@chromium.org + csharrison@chromium.org + + Records the "extra" non-scheduled time it took to send a + particular conversion report. This is primarily due to a report's scheduled + report time taking place while the browser is closed. Recorded when a + conversion report is to be sent. + + + + + tquintanilla@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the "extra" non-scheduled time it took to confirm the + particular attribution report was sent. This is primarily due to a report's + scheduled report time taking place while the browser is closed. Recorded + when an attribution report is successfully sent. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Measures filter sizes in source and trigger registrations. This includes + filter data in source, top-level trigger, event-level and aggregatable + trigger data. Recorded once for each filter data when parsed from the + attributionsrc response. + + + + + anthonygarant@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Error info for sending an attribution report, recorded for each sent + aggregatable report. The HTTP response code is recorded if there is no net + error code for the request, or the net error code indicates there was a + response code failure. + + + + + anthonygarant@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Error info for sending an attribution report, recorded for each sent + event-level report. The HTTP response code is recorded if there is no net + error code for the request, or the net error code indicates there was a + response code failure. + + + + + johnidel@chromium.org + csharrison@chromium.org + + Measures how often impressions are ignored because the initiator frame is + dead by the time the navigation reaches the browser. + + + + + johnidel@chromium.org + csharrison@chromium.org + linnan@chromium.org + + Records the number of impressions deleted per clearing operation. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records status for navigation data hosts. A single navigation data host may + emit two status, one when the navigation started and the data host was + registered, and one when the navigation finished or failed. + + + + + anthonygarant@chromium.org + measurement-api-dev+metrics@google.com + + Records the delay between a data host registration being deferred by the + AttributionDataHostManagerImpl and it being processed. Only recorded for + data host that are deferred rather than processed immediately or dropped. + + + + + anthonygarant@chromium.org + measurement-api-dev+metrics@google.com + + Records the status of a data host registraton. Its status is influenced by + trigger buffering. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Measures the number of sources or triggers registered per redirect chain. + Recorded when the corresponding resource client finishes. + + + + + anthonygarant@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records whether a particular aggregatable attribution report was successful. + Emitted for all conversion aggregatable reports which retry. + + + + + anthonygarant@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records whether a particular event-level attribution report was successful. + Emitted for all attribution event-level reports which retry. + + + + + johnidel@chromium.org + tquintanilla@chromium.org + measurement-api-dev+metrics@google.com + + Records the number of aggregatable attribution reports deleted per clearing + operation. + + + + + johnidel@chromium.org + csharrison@chromium.org + linnan@chromium.org + + Records the number of event-level attribution reports deleted per clearing + operation. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the high level request status of a conversion report. Recorded once + per conversion report. For conversion report that has been retried, only the + last retry will be counted. + + + + + anthonygarant@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the high level request status of an attribution report. Recorded for + every aggregatable attribution report sent. For attribution report that has + been retried, every retry will be counted. + + + + + anthonygarant@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the high level request status of an attribution report. Recorded for + every event-level attribution report sent. For attribution report that has + been retried, every retry will be counted. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the time difference from when the report was intended to be sent, + and the actual report time. This is different from + Conversions.ExtraReportDelay2 because it uses the send attempt report time, + rather than initial report time assigned by the API. Accounts for any delays + in Chrome scheduling the report. Recorded when an event-level report is to + be sent. + + + + + csharrison@chromium.org + apaseltiner@chromium.org + measurement-api-dev+metrics@google.com + + For any successfully registered {RequestType} navigation sources, records + the API surface that initiated the navigation. + + + + + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Measures how often source registration parsing failed and why. Recorded only + when parsing failed; not recorded when parsing succeeded. + + + + + anthonygarant@chromium.org + linnan@chromium.org + measurement-api-dev+metrics@google.com + + Measures how often sources are stored successfully or rejected and why. + Recorded once for each source event processed by the attribution storage + layer. + + + + + johnidel@chromium.org + csharrison@chromium.org + + Records the time it took to do perform a clear operation on the database + when supplied an origin filter. Recorded when the conversion database + finishes performing a clear operation. Note that filters may vary in size + and computation complexity, skewing this metric aribtrarily. + + + + + johnidel@chromium.org + csharrison@chromium.org + + Records the time it took to initialize a new conversions database from + scratch. Recorded when the conversion database finishes initialization. Only + recorded on platforms with base::ThreadTicks support. + + + + + johnidel@chromium.org + csharrison@chromium.org + + Records the time it took to migrate a preexisting conversions database to + the latest schema. Recorded when the conversion database finishes + initialization. Only recorded on platforms with base::ThreadTicks support. + + + + + johnidel@chromium.org + csharrison@chromium.org + + Records initialisation statuses of ConversionStorageSql. Note: currently + ConversionStorageSql is initialised lazily. + + + + + johnidel@chromium.org + csharrison@chromium.org + + Records the time between a conversion and its reporting. This is emitted + whenever a conversion report is sent. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the time between a trigger and its reporting. This is emitted only + when an event-level report is sent successfully to the reporting endpoint, + and not emitted for debug reports. + + + + + anthonygarant@chromium.org + measurement-api-dev+metrics@google.com + + Records the top_frame origin status when an attempting to complete a trigger + attestation. In the attribution context, the origin represents the + destination origin which is required to complete the attestation operation. + + + + + anthonygarant@chromium.org + measurement-api-dev+metrics@google.com + + Time taken to execute various parts of a Trigger Attestation operation: [1] + GetKeyCommitment = time taken to retrieve the issuer's key commitment. [2] + InitializeCryptographer = time take to initialize the BoringSSL + cryptographer with the issuer's keys. [3] BlindMessage = time taken by the + cryptographer to blind the message. [4] Issuer = time from the end of the + outbound BlindMessage half to the beginning of the inbound UnblindSignature + half. [5] UnblindSignature = time taken to unblind the blind signature + received from the issuer. [6] Total = GetKeyCommitment + + InitializeCryptographer + BlindMessage + UnblindSignature (only recorded for + operations that see issuer's responses) + + Each part of the operation can be a Failure or a Success. e.g. if we are + unable to retrieve key commitment for an issuer, it is a failure. The + metrics are recorded when the attestation operation finish. + + + + + + + + + + + + + + + + + anthonygarant@chromium.org + measurement-api-dev+metrics@google.com + + Records the status of the initial part of an attestation operation which + attempts to retrieve attestation headers to be added to a trigger + registration request. + + + + + anthonygarant@chromium.org + measurement-api-dev+metrics@google.com + + Records the status of the second part of an attestation operation which + processes the private state issuer's signature to generate an attestation + token. + + + + + anthonygarant@chromium.org + measurement-api-dev+metrics@google.com + + Records whether or not an aggregatable report is sent with an attestation or + not. Only recorded for reports if the Attestation feature is enabled. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Measures how often trigger registration parsing failed and why. Recorded + only when parsing failed; not recorded when parsing succeeded. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Measures the number of values in a filter. This includes filter data in + source, top-level trigger, event-level and aggregatable trigger data. + Recorded once for each filter in the filter data when parsed from the + attributionsrc response. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Error info for sending a verbose debug report, recorded for each sent + verbose debug report. The net error code is recorded if the HTTP response + code is unavailable. + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + Records the network connection type in the event that the report failed to + be sent due to network issues. Recorded for each report sending attempt that + failed. + + + + + + + + + wychen@chromium.org + + The cache hit status of metadata extraction for AppIndexing. + + + + + wychen@chromium.org + + The time spent on scanning the document in the main frame to extract the + metadata. The metadata would be used to feed Icing for CopylessPaste feature + on Android. This only counts pages with failed or empty JSON extraction. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + wychen@chromium.org + The error status of metadata extraction for AppIndexing. + + + + wychen@chromium.org + + The time spent on scanning the document in the main frame to extract the + metadata. The metadata would be used to feed Icing for CopylessPaste feature + on Android. This only counts pages with successful JSON extraction. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + + wfh@chromium.org + chrome-stability-core@google.com + + The exit codes for crashed extension processes. Note: Due to + https://crbug.com/805754, the enum labels are off by 1 for M56 and earlier. + + + + + + + wfh@chromium.org + chrome-stability-core@google.com + + The exit codes for crashed renderer processes. Note: Due to + https://crbug.com/805754, the enum labels are off by 1 for M56 and earlier. + + + + + smaier@chromium.org + crashpad-dev@chromium.org + The reason that an ANR upload was skipped. + + + + + + jperaza@chromium.org + crashpad-dev@chromium.org + + The reason that a crash report entered the upload pending state. + + + + + + + jperaza@chromium.org + crashpad-dev@chromium.org + The size of a crash report minidump on disk when captured. + + + + + + jperaza@chromium.org + crashpad-dev@chromium.org + Logs whether a crash uploaded succeeded or failed. + + + + + + jperaza@chromium.org + crashpad-dev@chromium.org + The reason that a crash report upload was skipped. + + + + + + jperaza@chromium.org + crashpad-dev@chromium.org + The outcome of execution of the Crashpad exception handler. + + + + + + mark@chromium.org + crashpad-dev@chromium.org + The exception code encountered in a crash on Mac OS X. + + + + + + jperaza@chromium.org + crashpad-dev@chromium.org + The exception code encountered in a crash on Windows. + + + + + + jperaza@chromium.org + crashpad-dev@chromium.org + + A count of the number of exceptions handled by Crashpad with two buckets for + starting and finishing. + + + + + + + mark@chromium.org + crashpad-dev@chromium.org + + The exception code encountered for a crash of the crash handler process on + Mac OS X. + + + + + + + jperaza@chromium.org + crashpad-dev@chromium.org + + The exception code encountered for a crash of the crash handler process on + Windows. + + + + + + Kept as a diagnostic metric. + + jperaza@chromium.org + crashpad-dev@chromium.org + Handler start/crash/exit events. + + + + justincohen@chromium.org + crashpad-dev@chromium.org + + Records key id when id has an invalid sizein an intermediate dump. + + + + + justincohen@chromium.org + crashpad-dev@chromium.org + Records key id when id is missing in an intermediate dump. + + + + + Removed 11/2022. + + justincohen@chromium.org + olivierrobin@chromium.org + + Reports the Foundation error code of an attempt to upload a breakpad crash + report. "NSNoError" if the upload was successful. + + + + + + As of 2020-12, we've decided on a timeout and no longer need this metric. + + mutexlox@chromium.org + iby@chromium.org + cros-telemetry@google.com + + The amount of time crash_sender takes to run when invoked directly on Chrome + OS, without counting time spent sleeping (e.g. for hold_off_time). Used to + make an informed decision about a timeout. + + + + + + As of 2020-12, we've decided on a timeout and no longer need this metric. + + mutexlox@chromium.org + iby@chromium.org + cros-telemetry@google.com + + The amount of time crash_sender takes to run when invoked directly on Chrome + OS. Used to make an informed decision about a timeout. + + + + + grt@chromium.org + sky@chromium.org + Errors when trying to load DataPack files. + + + + + Removed 05/2022. + + spelchat@chromium.org + chrome-brapp-loading@chromium.org + + Time that the UI thread is blocked on loading the Android Data Saver setting + from the OS. + + + + + pmonette@chromium.org + grt@chromium.org + + The HRESULT from ActivateApplication when opening the Win10+ settings page + fails. + + + + + pmonette@chromium.org + robliao@chromium.org + + Possible user interactions with the default browser info bar. + + + + + + Removed in Chrome 78. + + gab@chromium.org + + Results of interaction with set-as-default dialog in Win8+ first run flow. + + + + + pmonette@chromium.org + + The outcome of an attempt to set Chrome as the user's default browser. + + + + + + + gab@chromium.org + pmonette@chromium.org + + Whether Chrome was the default browser when it started up. + + Only logged correctly on Windows and Mac. Logged incorrectly on other + platforms. On Linux, this histogram is no longer logged as of 2021/10/18 due + to browser test hangs. See crbug.com/1216328. + + For ChromeOS, no histogram is necessary because Chrome is always the default + browser. + + For Android, see Mobile.DefaultBrowser.State. + + For iOS, in the future Chrome will be allowed to be the default browser. How + that will be logged is to be decided at the time of writing this + description. + + + + + pmonette@chromium.org + + When changing the default browser on Windows 10, records whether the browser + chooser is successfully invoked when opening the settings page. This + histogram is only recorded when the Win10AcceleratedDefaultBrowserFlow + experiment is enabled. + + + + + pmonette@chromium.org + + The outcome of an attempt to set Chrome as the user's default client for a + protocol. + + + + + drcrash@chromium.org + cros-demo-mode-eng@google.com + + The currently active app or window. Sampled during demo sessions and + reported while the user remains active. + + + + + drcrash@chromium.org + cros-demo-mode-eng@google.com + + Records apps that have been launched by a user using the device during Demo + mode. The sample is recorded when each app is launched. For any given app + id, the metric is recorded only once per Demo Session. + + + + + drcrash@chromium.org + cros-demo-mode-eng@google.com + + The source of app launches in demo mode, either the shelf, the app list, or + the highlights app. + + + + + drcrash@chromium.org + cros-demo-mode-eng@google.com + + The duration the user spent interacting with the demo session, measured from + the first user activity to the last user activity. This metric rounds the + duration to the nearest second and uses exponential bucketing capped at 1 + hour. + + + + + lbowen@google.com + cros-demo-mode-eng@google.com + + The first interaction (button clicks) after entering the Highlights app. The + metric will be emitted once the user clicks on a button in Hightlights app, + e.g. pillar page button or the home button on the home page. + + + + + lbowen@google.com + cros-demo-mode-eng@google.com + + The time duration a user stays in each page of the Highlights app, e.g. the + home page, each pillar page. The metric will be emitted when the user enters + another page or exits the Highlights app. + + + + + + drcrash@chromium.org + cros-demo-mode-eng@google.com + + Tracks whether the idle logout warning was canceled or proceeded to logout. + Note: the count of "shown" includes both cases, so the count of + "shown and proceeded" is equal to "shown" minus + "canceled". + + + + + drcrash@chromium.org + cros-demo-mode-eng@google.com + + Tracks the reason for removal of pre-install demo resources. To support + offline demo mode, factory Chrome OS devices will have a set of offline + enabled demo mode apps pre-installed. These resources are removed once they + are not needed anymore. + + + + + drcrash@chromium.org + cros-demo-mode-eng@google.com + + Tracks the result of requests to remove pre-installed demo resources. To + support offline demo mode, factory Chrome OS devices will have a set of + offline enabled demo mode apps pre-installed. These resources are removed + once they are not needed anymore. This will record only requests that + attempted deleting pre-installed resources from disk. Requests that fail + early will be ignored. For example, a request will fail early if the device + is in demo mode, or the resources have already been removed. + + + + + drcrash@chromium.org + cros-demo-mode-eng@google.com + + A demo session starts when a user signs in using the policy-configured + public account. It stops when the user signs out, either manually or after + an idle timeout. Session length is the duration between the start and stop + events. It is recorded during signing out and reported on the next chrome + run. This metric tracks the recorded session length rounded down to the + nearest minute and is capped at 2 hours. + + + + + drcrash@chromium.org + cros-demo-mode-eng@google.com + + This records the time taken to download the demo mode resources when demo + mode is setup for the first time. + + + + + drcrash@chromium.org + cros-demo-mode-eng@google.com + + This records the time taken to enterprise-enroll the device when demo mode + is setup for the first time. + + + + + drcrash@chromium.org + cros-demo-mode-eng@google.com + + When demo mode is setup for the first time, it must download the demo mode + resources and enterprise-enroll the device. This records the time taken for + these two steps to complete. (See DemoMode.Setup.DownloadDuration and + DemoMode.Setup.EnrollDuration) + + + + + drcrash@chromium.org + cros-demo-mode-eng@google.com + + Records the number of times an operator has encountered an error during the + loading screen and been required to retry setup. This is only recorded after + setup completes successfully. + + + + + drcrash@chromium.org + cros-demo-mode-eng@google.com + + Records how many unique apps have been launched by a user using the device + during Demo mode. The sample is recorded when the DemoMode session closes. + + + + + lbowen@google.com + cros-demo-mode-eng@google.com + + Records how many times the user clicks mouse and presses screen in the demo + session. During one demo session, if a mouse click or screen press happens, + increment this metric by one. + + + + + glenrob@chromium.org + greengrape@google.com + + Record how often each permission check (e.g. permissions policy, transient + activation, user dialog, hostname resolving to non-public address, rate + limiting, CORS, enterprise policy) cause Permission Denied failures. + Recorded when the permission is denied. + + + + + bartfab@chromium.org + greengrape@google.com + + How often tcp socket opening finishes with a network failure. + + + + + bartfab@chromium.org + greengrape@google.com + + How often tcp server socket opening finishes with a network failure. + + + + + bartfab@chromium.org + greengrape@google.com + + How often udp socket opening finishes with a network failure. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + The zoom percentage that the user has set on the internal display and is + actively using. This is emitted when the zoom factor has been updated in + display manager and has not been changed for a while. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + The number of displays connected to the device that are in software or + hardware mirror mode. This is emitted once when the normal or mixed mirror + mode is enabled through API call, or the display configuration changes (e.g. + adding or removing a display) when mirror mode is on. + + + + + jshargo@chromium.org + oshima@chromium.org + chromeos-gfx-compositor@google.com + + The way in which mirroring is implemented, either in hardware or software. + This is emitted once when mirroring is enabled through API call, or the + display configuration changes ( e.g. adding or removing a display) when + mirror mode is on. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + The types of mirror mode in which the displays connected to the device are + in. This is emitted once when the normal or mixed mirror mode is enabled + through API call, or the display configuration changes ( e.g. adding or + removing a display) when mirror mode is on. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + The mode in which the connected displays to the device are in. This is + emitted once when displays are added or removed, or when the user changes + the mode by e.g. enabling mirror or unified modes. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + The number of displays connected to the device when Unified Desktop mode is + on. This is emitted when Unified Desktop mode is turned on, or the displays + are added or removed while in Unified Mode. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + Records the execution time to update the display configuration. Emitted when + the update-display-configuration task finishes, successfully or not. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + Records whether or not the display configuration was successfully updated. + Emitted when the update-display-configuration task finishes, successfully or + not. + + + + + mgersh@chromium.org + + The duration of time used by the DNS pre-resolving threads to resolve a host + name via the network. Any resolutions that are faster than 15ms are + considered to be local cache hits, not requiring network access, and are not + included in this histogram. This histogram is most useful for estimating the + typical cost of a name resolution, but it also estimates the total number of + network-based resolutions induced by this feature. Not all these resolutions + prove helpful (i.e., the user does not always actually visit the resolved + hostnames). + + + + + ericorth@chromium.org + src/net/OWNERS + + Status of DNS diagnostic probe updates sent to a Chrome net error page. + + + + + ericorth@chromium.org + src/net/OWNERS + + Time ticks between starting and finishing a DNS diagnostics probe. + + + + + ericorth@chromium.org + src/net/OWNERS + Result of DNS diagnostics probes sent by the probe service. + + + + panicker@chromium.org + chikamune@chromium.org + + Records result of invoking beforeunload handler, that determines whether to + show the dialog. + + Warning: this histogram was expired from M77 to M108; data may be missing. + + + + + + Removed in M90. + + hajimehoshi@chromium.org + keishi@chromium.org + + Records the GC count between the time when the document is shut down and and + the time when the document is actually destroyed. This only counts documents + that are destroyed before the process dies. + + + + + + Removed in M90. + + hajimehoshi@chromium.org + keishi@chromium.org + + Records documents that survives some GCs after the document is shut down. + + + + + sullivan@chromium.org + chikamune@chromium.org + + Milliseconds spent in beforeunload dialog. Does not include time to process + beforeunload event in JavaScript. Recorded immediately after closing dialog, + upon user confirmation to navigate away from the page. + + Warning: this histogram was expired from 2020-09-05 to M108; data may be + missing. + + + + + bmgordon@chromium.org + project-bolton@google.com + + Chrome OS document scan metric that tracks which SANE backend (effectively a + scanner driver) was used when a scan failed. + + + + + rishabhagr@google.com + project-bolton@google.com + + Chrome OS document scan metric that tracks the stage at which the scan + failed. + + + + + rishabhagr@google.com + project-bolton@google.com + + Chrome OS document scan metric that tracks the reason of a scan failure. + + + + + bmgordon@chromium.org + project-bolton@google.com + + Chrome OS document scan metric that tracks which SANE backend (effectively a + scanner driver) that a user requested to use for a scan. + + + + + bmgordon@chromium.org + project-bolton@google.com + + Chrome OS document scan metric that tracks which SANE backend (effectively a + scanner driver) was used when a scan succeeded. + + + + + + Removed in M89. + + grt@chromium.org + + The number of items within the Cache directory that could not be moved aside + following a downgrade. 0 indicates that the target directory could not be + created. + + + + + + Removed in M89. + + grt@chromium.org + + Indicates whether or not moving a user's cache dir following a downgrade + succeeded or failed. + + + + + + Removed in M89. + + grt@chromium.org + ydago@chromium.org + + The number of items within from an invalid snapshot directory that could not + be moved. 0 indicates that the target directory could not be created. + + + + + + Removed in M89. + + grt@chromium.org + ydago@chromium.org + + Indicates whether or not moving an invalid snapshot directory succeeded or + failed. + + + + + + Removed in M89. + + grt@chromium.org + ydago@chromium.org + + Indicates whether or not cleaning up after a snapshot restoration failure + succeeded or failed. + + + + + + Removed in M89. + + grt@chromium.org + ydago@chromium.org + + The number of items within from a snapshot directory that could not be + restored following a downgrade. + + + + + + + grt@chromium.org + ydago@chromium.org + + Indicates whether or not restoring a snapshot of the user data dir succeeded + or failed. + + + + + + Removed in M100. + + grt@chromium.org + ydago@chromium.org + + The number of items within the user data directory that could not be + snapshotted following an upgrade. + + + + + grt@chromium.org + ydago@chromium.org + + Indicates the id of an item that failed to be copied when taking a user data + snapshot. The metrics does not cover the data from 12/12/2021 to 03/29/2022. + + + + + + Removed in M89. + + grt@chromium.org + ydago@chromium.org + + The number of items within an existing snapshot directory that could not be + moved aside before replacing it with a newer snapshot. + + + + + + Removed in M89. + + grt@chromium.org + ydago@chromium.org + + Indicates whether or not moving a user data snapshot dir before replacing it + with a newer snapshot succeeded or failed. + + + + + + Removed in M89. + + grt@chromium.org + ydago@chromium.org + + Indicates whether or not creating a profile directory while creating a user + data snapshot succeeded or failed. + + + + + + Removed in M100. + + grt@chromium.org + ydago@chromium.org + + Indicates whether or not creating a snapshot of the user data dir succeeded + or failed. + + + + + grt@chromium.org + + The type of User Data downgrade detected, if any. The "none" + bucket is not reported. + + + + + + Deprecated as of M96 + + grt@chromium.org + ydago@chromium.org + + The number of items within User Data that could not be moved aside following + a downgrade. + + + + + + Deprecated as of M96 + + grt@chromium.org + ydago@chromium.org + + Indicates whether or not moving a user's User Data dir following a downgrade + succeeded or failed. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Tracks whether the push notification is initially enabled for Drive. + Recorded when the first notification is processed. Notification is emulated + by polling if the push notication is disabled. + + + + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Tracks whether the push notification request is registered correctly for + Drive. Recorded when the push notification manager is initialized. + + + + + + Removed 2022-02 as this feature never launched. + + simmonsjosh@google.com + src/ui/file_manager/OWNERS + + Outcome of enabling Google Drive offline mode automatically when a user + first logs into a Chrome OS device. This process involves opening a hidden + web page in the context of the Google Drive hosted app to perform the + initialization of offline mode. + + + + + andrescj@chromium.org + mcasas@chromium.org + chromeos-gfx@google.com + + Number of bits per channel described by a parsed EDID blob. This UMA is + recorded whenever the color space is extracted from an EDID blob. + + + + + andrescj@chromium.org + mcasas@chromium.org + chromeos-gfx@google.com + + Whether an EDID blob was detected. This UMA is recorded whenever we attempt + to parse the EDID from a display. + + + + + andrescj@chromium.org + mcasas@chromium.org + chromeos-gfx@google.com + + Whether a EDID blob contained an HDR transfer function (e.g. SMPT SE2084 or + HLG). This UMA is recorded whenever the color space is extracted from an + EDID blob. + + + + + andrescj@chromium.org + mcasas@chromium.org + chromeos-gfx@google.com + + When attempting to get the color space from an EDID blob, whether the sanity + checks passed (and if not, which check failed). This UMA is recorded + whenever the color space is extracted from an EDID blob. + + + + + crisrael@google.com + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + This metric tracks the time it takes from the phone becoming connected to + the Chromebook and sending the PhoneStatusSnapshot proto until the phone + sends over the entire apps list via the AppListUpdate proto. Emitted after + the app stream launcher loads the app list. + + + + + crisrael@google.com + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + This metric logs where the Eche app was launched from. The metric is emmited + when the eche app is launched. + + + + + samchiu@chromium.org + chromeos-cross-device-eng@google.com + + The duration of time the phone is in the state connected to eche signaling + service, and becomes disconnected. + + + + + samchiu@chromium.org + chromeos-cross-device-eng@google.com + + Measures Eche connection success rate. This is recorded at the end of each + connection attempt whether it fails or succeeds and the failure bucket is + broken down to more specific segments in + Eche.Connection.Result.FailureReason + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + The reason for which the connection attempt to the phone has failed. This is + a breakdown of the failure bucket of Eche.Connection.Result and is recorded + at the time a connection attempt fails. + + + + + samchiu@chromium.org + chromeos-cross-device-eng@google.com + + The duration of time the phone is in the state connecting to eche signaling + service, and becomes connected. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Indicates the feature state of the Exo feature. This metric is emitted to at + the creation of the user session (when the user logs in), when any + multi-device feature state changes, and every 30 minutes. + + + + + jonmann@google.com + nayebi@google.com + chromeos-cross-device-eng@google.com + + Failure reason emitted by EcheSignaler on background connect attempt + failures. + + + + + jonmann@google.com + nayebi@google.com + chromeos-cross-device-eng@google.com + + Emitted on success or failure of a background network connection attempt. + Triggered when Phone Hub first connects, and on each bubble opened event. + + + + + + Deprecated as of 11/2022. Replaced with Eche.AppStream.LaunchAttempt + + samchiu@chromium.org + andychou@chromium.org + chromeos-cross-device-eng@google.com + + Events logged after the user interacts with a PhoneHub notification by + clicking it to launch app streaming window. + + + + + paulzchen@google.com + andychou@google.com + samchiu@google.com + + Events logged the user action in the Eche onboarding. Recorded when users + start Eche onboarding and grant the permission that onboarding needs. + + + + + paulzchen@google.com + andychou@google.com + chromeos-cross-device-eng@google.com + + Events logged in the Eche stream state. Records when a stream is started and + initialized after the user interacts with a PhoneHub notification or the + recent app by clicking it to launch the app streaming window. + + + + + paulzchen@google.com + andychou@google.com + exo-core-eng@google.com + + Events logged the root cause of Eche connection failure. Records when + signaling timeout on EcheSignaler or the tablet mode check on EcheTray. + + + + + paulzchen@google.com + andychou@google.com + exo-core-eng@google.com + + Records the elapsed time from when the stream is initializing to when the + stream is closed before the stream doesn't started. Fires during the process + of closing Eche streaming when the stream doesn't start. It is not sent on a + successful connection attempt. + + + + + pushi@google.com + jonmann@google.com + chromeos-cross-device-eng@google.com + + Events logged the root cause of Eche connection failure when triggered from + a notification and failed in last network connection check. Records when + signaling timeout on EcheSignaler or the tablet mode check on EcheTray. + Separate from Eche.StreamEvent.ConnectionFail. + + + + + pushi@google.com + jonmann@google.com + chromeos-cross-device-eng@google.com + + Records the success rate of app streaming when triggered from notificaiton + and failed in last network connection check. Recorded when the stream is + initialized in EcheTray or when it starts in EcheStreamStatusChangeHandler. + Separate from Eche.StreamEvent. + + + + + crisrael@google.com + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + This metric tracks the number of unique apps the user attempts to launch an + app stream. Emitted when the app stream is launched and the app has not been + launched in the current session. + + + + + + Deprecated as of 05/2021 + + donnd@chromium.org + jinsukkim@chromium.org + + Records the reason that the BottomSheet-based Ephemeral Tab panel was + closed. Recorded when the UX is hidden. Implemented for Android. + + + + + + Deprecated as of 05/2021 + + donnd@chromium.org + jinsukkim@chromium.org + + Records the reason that the Ephemeral Tab panel was closed. Recorded when + the UX is hidden. Implemented for Android. + + + + + + Deprecated as of 12/2021 + + donnd@chromium.org + jinsukkim@chromium.org + + Records whether the user fully opened the Ephemeral Tab panel when it was + shown. Recorded when the UX is hidden. Implemented for Android. + + + + + + Deprecated as of 12/2021 + + donnd@chromium.org + jinsukkim@chromium.org + + Records whether the user opened the Ephemeral Tab panel beyond peeking + state. Recorded when the UX is hidden. Implemented for Android. + + + + + + Deprecated as of 12/2021 + + donnd@chromium.org + jinsukkim@chromium.org + + Records the duration in milliseconds that the Ephemeral Tab was left open. + Recorded when the UX is hidden. Implemented for Android. + + + + + + Deprecated as of 12/2021 + + donnd@chromium.org + jinsukkim@chromium.org + + Records the duration in milliseconds that the Ephemeral Tab was peeking. + Recorded when the UX is hidden. Implemented for Android. + + + + + dewittj@chromium.org + petewil@chromium.org + + If we find a bad catalog from the network, report which problems it had. + + + + + dewittj@chromium.org + petewil@chromium.org + Results of the Explore Sites network request for a catalog. + + + + dewittj@chromium.org + petewil@chromium.org + + The Explore Sites catalog can be requested in several code paths. This + identifies which code path was used for the request. + + + + + + + dewittj@chromium.org + petewil@chromium.org + chrome-analysis-team@google.com + + The number of times the user clicked on a site in a category with the + selected type on the Explore Sites page. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + dimich@chromium.org + + 0-based index of a category tile on NTP which was clicked by the user. + Indices are assigned by counting category tiles left-to-right, top-to-bottom + as they appear on NTP. Recorded on click. + + + + + dewittj@chromium.org + Counts when the explore sites store is opened or closed. + + + + freedjm@chromium.org + chrome-explore-team@google.com + Tracks the result of image decoding for the favicons. + + + + dimich@chromium.org + + Number of unique hosts visited by the user during the last 30 days. Reported + at most once a week for all users on Android only, with a 5 second delay + after startup. This is different from History.MonthlyHostCount which is + reported for a percentage of startups, to avoid bias toward more active + users. + + + + + chili@chromium.org + dewittj@chromium.org + + Recorded every time a user navigates out of the explore sites page and comes + back to it within 30 seconds on the same tab. This is used to measure + accidental clicks, where we expect users who navigate to the wrong page will + navigate back to the ExploreSites page immediately afterward. + + + + + dimich@chromium.org + + Recorded every time NTP is opened while ExploreSites feature is enabled. + Indicates whether or not the local cached version of ExploreSites catalog + was available or a network request was initiated to load one. + + + + + dimich@chromium.org + freedjm@chromium.org + + Reported each time from the result callback of the ExploreSitesFetcher. + Values include Success and several failure codes. + + + + + pmarko@chromium.org + rogerta@chromium.org + + Record the validity of |rlz_embargo_end_date| in RW_VPD. This is recorded + when the VPD value is accessed, which may be multiple times in the same + chrome invocation. This is not recorded when the VPD value is missing. + + + + + + Removed in 06/2021. + + victorvianna@google.com + jkrcal@chromium.org + + Records whether an icon already existed in the thumbnail DB when downloading + an on-demand one. On-demand icons are the ones added to local cache without + the user visiting the corresponding page. + + + + + + Removed in M88. + + mastiz@chromium.org + + Records the number of large icons that were fetched from the local cache + (e.g. during NTP impression), where the URL (of the page or the icon) + matches a hardcoded blacklist. Suspicious mismatches are reported as errors. + + + + + + + jkrcal@chromium.org + mastiz@chromium.org + + Records the size (concretely the width) in pixel of the favicon downloaded + from Google favicon server (size 0 denotes that download has failed). + + + + + + + jkrcal@chromium.org + mastiz@chromium.org + + Records the size (concretely the width) in pixel of the favicon that is used + to generate a fallback style in the case when large enough favicon is not + available (size 0 denotes that no favicon is available at all). + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Records whether users allow Google to contact them about the issues. Fires + when feedback report is being sent. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Record the length of description in the textbox. Fires when the feedback + report is being sent. + + + + + xiangdongkong@google.com + cros-feedback-app@google.com + + Records the elapsed time from the start of fetching Debugd logs via the + GetBigFeedbackLogs dbus method to when the data has been retrieved. Fires + during the process of sending a feedback report on Chrome OS, or when the + user previews the system logs from the feedback app on Chrome OS. + GetBigFeedbackLogs is the dbus method used. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Records a summary of the actions the user took before exiting the app. Fires + when user closes the feedback app, case includes: User quits on search page + after clicking some help contents; User quits on search page without + clicking some help contents; User closes on search page because no help + content is shown(Offline or Search is down); User closes on share data page + after clicking help content; User closes on share data page without clicking + help content; User submits feedback after clicking the help content; User + submits feedback without clicking the help content. + + + + + xiangdongkong@google.com + cros-feedback-app@google.com + + Records the number of logs with empty data retrieved from debugd for + feedback reports. Fires during the process of sending a feedback report on + Chrome OS, or when the user previews the system logs from the feedback app + on Chrome OS. + + + + + xiangdongkong@google.com + cros-feedback-app@google.com + + Records the number of logs with not available data retrieved from debugd for + feedback reports. Fires during the process of sending a feedback report on + Chrome OS, or when the user previews the system logs from the feedback app + on Chrome OS. + + + + + xiangdongkong@google.com + cros-feedback-app@google.com + + Records the number of logs with data not empty or not available retrieved + from debugd for feedback reports. Fires during the process of sending a + feedback report on Chrome OS, or when the user previews the system logs from + the feedback app on Chrome OS. + + + + + xiangdongkong@google.com + cros-feedback-app@google.com + + Records the success status of fetching the feedback logs via debus method + GetBigFeedbackLogs. Fires during the process of sending a feedback report on + Chrome OS, or when the user previews the system logs from the feedback app + on Chrome OS. + + + + + xiangdongkong@google.com + cros-feedback-app@google.com + + Records the different results of fetching the feedback logs via debus method + GetFeedbackLogsV2. Fires during the process of sending a feedback report on + Chrome OS, or when the user previews the system logs from the feedback app + on Chrome OS. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Record the outcome of checking help contents. Fires when user leaves the + search page by clicking continue or by clicking x on top right to close the + app. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Records the number of help content results returned in each search. Fires + when user clicks and views the help content on search page. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Records whether the email is included when the feedback report is submitted. + Fires when user's feedback report is being sent. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Records whether attached file is included when the feedback report is + submitted. Fires when user's feedback report is being sent. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Records whether the screenshot is included when the feedback report is + submitted. Fires when a user's feedback report is successfully sent. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Records whether the system and information is included when the feedback + report is submitted. Fires when a user's feedback report is being sent. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Records whether the page url is included when the feedback report is + submitted. Fires when user's feedback report is being sent. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Records the duration that the Feedback App is open. Emitted when the app is + closed. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Records the first action that the users take after sending feedback. Fires + on the first action taken on post submit page after the user has sent the + feedback. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Records the duration that the Feedback App is open on {FeedbackAppPage} + page. Fires when the user closes the app or starts new report after feedback + report has been sent. + + + + + + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Record number of times the user viewed the help content. Fires when user + clicks help content on search page. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Record number of times the user viewed the attached image. Fires when user + clicks the thumbnail and views the larger image. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Record number of times the user viewed the metrics. Fires when user clicks + metrics link and views metrics. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Record number of times the user viewed the screenshot. Fires when user + clicks the thumbnail on and views the larger screenshot. + + + + + longbowei@google.com + xiangdongkong@google.com + cros-feedback-app@google.com + + Record number of times the user viewed the system and app information. Fires + when system and app info link is clicked. + + + + + xiangdongkong@google.com + fernandex@google.com + cros-feedback-app@google.com + + Records the elapsed time from the start of fetching system information to + when the data has been retrieved. Fires during the process of sending a + feedback report on Chrome (Desktop + Android) or Chrome OS. + + + + + xiangdongkong@google.com + fernandex@google.com + cros-feedback-app@google.com + + Records the elapsed time from when the feedback app window is opened to when + the backend receives the send report request submitted by a user. Fires + during the process of sending a feedback report on Chrome (Desktop + + Android) or Chrome OS. + + + + + xiangdongkong@google.com + cros-feedback-app@google.com + + Records the elapsed time from when the backend receives the send report + request submitted by a user to when it starts to send confirmation back to + the frontend. Fires during the process of sending a feedback report on + Chrome or Chrome OS. + + + + + xiangdongkong@google.com + cros-feedback-app@google.com + + Records the elapsed time from when the backend receives the send report + request submitted by a user and the report has been added to the send queue. + Fires during the process of sending a feedback report on Chrome or Chrome + OS. + + + + + weili@chromium.org + robliao@chromium.org + + Records how user interacts with Happiness Tracking Surveys (HaTS) bubble + prompt which is shown for a subset of users. Each time when the bubble is + shown, there should be one and only one enum type is recorded. + + + + + sauski@google.com + msramek@chromium.org + + Records the first reason why the Happiness Tracking Surveys (HaTS) bubble + was or was not shown. While the request to show may not meet multiple + criteria, the first criterion is reported here. + + + + + nikj@google.com + dpchromeos-core-eng@google.com + + Records how many times PIIs are redacted by the Client side log redaction + tool. + + + + + xiangdongkong@google.com + cros-feedback-app@google.com + + Records whether the user is online when the feedback report was submitted. + + + + + xiangdongkong@google.com + cros-feedback-app@google.com + + Records the feedback report sending states to help track the success rate of + feedback report offline submission. + + + + + afakhry@chromium.org + cros-telemetry@google.com + Records the source that requested showing the feedback app. + + + + sauski@google.com + chrome-hats-eng@google.com + + Records the associated feature area when the Trust and Safety Sentiment + service requests a survey be shown from the HaTS service. + + + + + sauski@google.com + chrome-hats-eng@google.com + + Records the associated feature area when the Trust and Safety sentiment + service detects that the user has performed a trigger action. This is + recorded after the associated probability check. + + + + + shuuran@google.com + kaustubhag@google.com + + Records initialization status of First-Party Sets database. Recorded when + the database is lazily initialised when the first operation is encountered. + + + + + shuuran@google.com + kaustubhag@google.com + + Measures the outcome of site data clearing. Recorded when First-Party Sets + initialization triggers site data clearing for a given browser context. + + + + + shuuran@google.com + kaustubhag@google.com + + Measures the length of time between when a navigation was deferred and then + resumed due to timeout or First-Party Sets is ready. Recorded when a + deferred navigation is resumed. + + + + + shuuran@google.com + kaustubhag@google.com + + Measures the deferred navigations that are resumed due to timeout. Recorded + when a deferred navigation is resumed. + + + + + ghendel@chromium.org + pkl@chromium.org + Track whether Firebase is enabled or not at app startup. + + + + jlebel@chromium.org + olivierrobin@chromium.org + + Counts the number of times First Run experience was triggered by another + application launching Chrome. This metric measures the effectiveness of + Smart App Banner promotions on installation of Chrome. + + + + + johntlee@chromium.org + dpapad@chromium.org + + Records when a user interacted with the Google Apps new user experience. We + record both accept and reject but are not recording when a user ignored the + prompt completely. Users can ignore this prompt by closing the tab or + navigating away, we record when the prompt is shown. + + Warning: this histogram was expired from M76 to M100; data may be missing. + + + + + johntlee@chromium.org + dpapad@chromium.org + + Records what Google apps were selected as part of the Google Apps New User + Experience. Histogram is only recorded when a user accepts the prompt to add + Google Apps. + + Warning: this histogram was expired from M76 to M100; data may be missing. + + + + + + + scottchen@chromium.org + + Records when a user interacted with the landing page of the onboarding + process. We record that the page was seen and what action the user took. + + + + + johntlee@chromium.org + dpapad@chromium.org + + Records when a user interacts with the NTP Backgrounds new user experience. + We record the number of times the page is seen, how they interacted with the + page (i.e. interacted with the options and buttons), and through what method + they leave the page (i.e, confirm, cancel, neither). The new user experience + should only be shown once to new profiles. + + + + + johntlee@chromium.org + dpapad@chromium.org + + Records the time taken to load a NTP background image for preview. This is + recorded when a user clicks on a background to preview and the full-size + version of the background finishes loading. + + + + + + + johntlee@chromium.org + dpapad@chromium.org + + Records when a user interacted with the set default page of the onboarding + process. We record that the page was seen and what action the user took. + + + + + johntlee@chromium.org + dpapad@chromium.org + + Records when a user interacted with the sign in interstitial of the + onboarding process. We record that the page was seen and what action the + user took. + + Warning: this histogram was expired from M76 to M100; data may be missing. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Records the result of an attempt to create the first run sentinel file. + + On iOS, file system errors are detailed further by the + FirstRun.Sentinel.CreatedFileError histogram. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + File error when the sentinel file was not written. + + + + + + jlebel@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + Result of the sign in flow during first run on iOS. + + + + tinazwang@chromium.org + bling-get-started@google.com + + When Chrome is opened for the first time, the first run (onboarding) UI will + be shown. Metircs will be recorded in different first run stages such as + when first run experience is started, and when first run experience is + completed. + + + + + ginnyhuang@chromium.org + bling-get-set-up@google.com + + Records the time it takes for the user to accept Terms of Services after + it's shown in the first Promo screen on First Run. Note: This is not + available for the legacy FRE. + + + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + WARNING: The list of actions used to identify new tasks hasn't been + attentively updated for several years (as of 2017). Some actions that should + likely be considered new tasks are probably missing. Take this histogram + with a grain of salt. Was expired for M85, M86. + + The amount of time (in seconds) that the app was in the background before + the user started it + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + WARNING: The list of actions used to identify new tasks hasn't been + attentively updated for several years (as of 2017). Some actions that should + likely be considered new tasks are probably missing. Take this histogram + with a grain of salt. Was expired for M77-M86. + + On handsets, the type of the first user action performed after the app was + started or unbackgrounded. + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + WARNING: The list of actions used to identify new tasks hasn't been + attentively updated for several years (as of 2017). Some actions that should + likely be considered new tasks are probably missing. Take this histogram + with a grain of salt. Was expired for M82-M86. + + On tablets, the type of the first user action performed after the app was + started or unbackgrounded. + + + + + drott@chromium.org + etienneb@chromium.org + + Time to retrieve the fallback fonts on the system when not found in cache. + + + + + drott@chromium.org + etienneb@chromium.org + The amount of font returned for a given font family. + + + + drott@chromium.org + etienneb@chromium.org + Time to retrieve the fallback fonts on the system. + + + + + Removed in M95 + + oyiptong@chromium.org + storage-dev@chromium.org + + The number of duplicate fonts returned by system APIs. This is recorded when + fonts are enumerated to be returned to script as a result of a call to the + Font Access API. + + + + + + Removed in M95 + + oyiptong@chromium.org + storage-dev@chromium.org + + Records the number of font families observed by the font enumeration cache + as part of the Font Access API. + + + + + + Removed in M95 + + oyiptong@chromium.org + storage-dev@chromium.org + + Records errors returned when obtaining the list of system fonts from + DirectWrite's GetSystemFontCollection. + + + + + + Removed in M95 + + oyiptong@chromium.org + storage-dev@chromium.org + + Records the most frequent failure to obtain metadata for a font family when + enumerating fonts as part of the Font Access API. Recorded in + FontEnumerationCacheWin when all fonts have been enumerated. Values are + Windows HRESULT error codes, and also includes custom values specific to + this implementation. + + + + + + Removed in M86 in favor of + Fonts.AccessAPI.EnumerationCache.DuplicateFontCount. + + oyiptong@chromium.org + storage-dev@chromium.org + The number of duplicate fonts returned by fontconfig. + + + + + Removed in M95 + + oyiptong@chromium.org + storage-dev@chromium.org + The number of fonts returned by fontconfig. + + + + + Removed in M95 + + oyiptong@chromium.org + storage-dev@chromium.org + + The number of fonts whose name table entries could not be read. + + + + + + Removed in M95 + + oyiptong@chromium.org + storage-dev@chromium.org + Time spent enumerating fonts. + + + + + Removed in M88. + + msalama@chromium.org + msarda@chromium.org + + Tracks revoke actions taken by the account reconcilior to force Dice + migration. To enforce consistency, the reconcilior may invalidate the + primary account or revoke one or more secondary account tokens, if no + equivalent valid gaia cookie exist for those accounts. + + + + + + + droger@chromium.org + msarda@chromium.org + + Reports the network error code for requests to the ListAccounts Gaia + endpoint. + + + + + + + msarda@chromium.org + droger@chromium.org + chrome-signin-team@google.com + + URLFetcher response codes for OAuth2AccessToken. Positive values are HTTP + status codes, negative values are network error codes. Recorded on responses + to OAuth access token requests. + + + + + + + msarda@chromium.org + droger@chromium.org + chrome-signin-team@google.com + + Records the result of the Oauth2 access token request when a response is + received from the LSO server except in net failure cases. In error cases, it + records the error code in the response body. + + + + + mattreynolds@chromium.org + deviceapi-team@google.com + + Records an integer value that can be used to identify a connected gamepad + device. The value is constructed from the 16-bit vendor ID in the high-order + bytes and the 16-bit product ID in the low-order bytes, then cast to a + 32-bit signed integer. The GamepadVendorProduct enum lists IDs for several + popular gamepads but is incomplete. To identify a device not included in the + enum, convert back to the vendor/product IDs and look up the human-friendly + product name in go/gamepad-ids. This histogram records a new entry when a + device with a vendor and product ID matching a known gaming input device is + detected during Gamepad API enumeration. + + + + + mattreynolds@chromium.org + deviceapi-team@google.com + + Records an enumeration value identifying the active data fetcher when a + fetcher enumerates a device that is not on the list of known gamepads, but + is recognized as a gamepad by the fetcher. + + + + + Please list the metric's owners. Add more owner tags as needed. + Result of the authentication for Drive. + + + + jinsukkim@chromium.org + clank-app-team@google.com + + Overscroll gesture was made beyond a threshold big enough to regard it as a + valid gesture navigation i.e. at least 1/3 of the arrow puck is visible. + Similar to 'Triggered' but is used in pair with 'Cancelled' on M81 forward + to measure cancellation rate. Implemented for Android. + + + + + jinsukkim@chromium.org + clank-app-team@google.com + + Overscroll gestures that were cancelled before they were completed. Similar + to 'Abandoned' but is used in pair with 'Activated' on M81 forward to + measure cancellation rate. Implemented for Android. + + + + + jinsukkim@chromium.org + clank-app-team@google.com + + Navigations that were triggered due to completed overscroll gesture. + Implemented for Android. + + + + + jinsukkim@chromium.org + clank-app-team@google.com + + Overscroll gesture was made to trigger navigation, but within 3 seconds user + used overscroll gesture to navigate back to the page. Implemented for + Android. + + + + + jinsukkim@chromium.org + clank-app-team@google.com + + Gesture navigation type. It can be either Chrome's own gesture UI that + supports back and forward navigation or OS-provided default system gesture + navigation that supports only back action on both left and right edge. This + is recorded on Chrome startup at the feature component initialization. + + + + + ckitagawa@chromium.org + meiliang@chromium.org + + This histogram records the dirty span of the transition animation between + Tab and Grid Tab Switcher. The dirty span is the duration from the start of + the animation to the last View invalidation. + + + + + ckitagawa@chromium.org + meiliang@chromium.org + + This histogram records the frame rate of the transition animation between + Tab and Grid Tab Switcher. + + + + + ckitagawa@chromium.org + meiliang@chromium.org + + This histogram records the maximum interval between rendered frames during + the transition animation between Tab and Grid Tab Switcher. + + + + + yusufo@chromium.org + wychen@chromium.org + + This histogram records the result of thumbnail fetching in the Grid Tab + Switcher. + + + + + zhiyuancai@chromium.org + wychen@chromium.org + ayman@chromium.org + + Records why the {MessageType} is disabled in GridTabSwitcher and will no + longer be shown to users. Recorded when the message is disabled. Implemented + for Android. + + + + + + zmo@chromium.org + graphics-dev@chromium.org + + Records the system hardware concurrency collected in the info collection GPU + process, once per UMA ping. For most systems, it is equivalent to the number + of CPU cores. + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + + The number of displays present right after the user has attached or detached + a new display. Excludes mirrored displays, but includes sleeping displays. + + + + + sashamcintosh@chromium.org + chromeos-gfx@chromium.org + + The number of displays present at start up. Excludes mirrored displays, but + includes sleeping displays. + + + + + cassew@google.com + media-dev@chromium.org + + Whether a given display device supports HDR (such that the CSS media query + `dynamic-range: high` would resolve as true). Recorded upon browser startup + (for every connected display), upon display device connection (for the newly + connected display), and upon any change to the color space metric (for the + affected display). + + + + + zmo@chromium.org + graphics-dev@chromium.org + + Records a rough estimation of the system total disk space collected in the + info collection GPU process, once per UMA ping. + + + + + + Removed in M96. + + rsorokin@chromium.org + cros-oac@google.com + + Which HID were detected when user pressed Continue on OOBE dialog. This + metric is specific to Chrome OS. + + + + + + Removed in M96. + + rsorokin@chromium.org + cros-oac@google.com + + Whether HID detection dialog was shown on OOBE. Logged on screen show or on + screen skip respectively. This metric is specific to Chrome OS. + + + + + + Removed in M97. + + rsorokin@chromium.org + alemate@chromium.org + cros-oac@google.com + + Records number of times the dialog was shown by the time OOBE is completed. + This metric is specific to Chrome OS. + + + + + + Removed in Nov 2022. + + alancutter@chromium.org + src/chrome/browser/ui/page_action/OWNERS + + Counts which content setting buttons in the hosted app frame are pressed by + the user. + + + + + chingkang@chromium.org + cros-hwsec-userland-eng+uma@google.com + The duration of preparation for enrollment in attestation. + + + + + + garryxiao@chromium.org + cylai@chromium.org + cros-hwsec-userland-eng+uma@google.com + + The result of attestation-related operations on the Chrome OS side. + + + + + kojii@chromium.org + layout-dev@chromium.org + The time it takes to open a hyphenation dictionary. + + + + kojii@chromium.org + layout-dev@chromium.org + The time it takes to open a hyphenation dictionary file. + + + + gcomanici@chromium.org + + The size of the history on Auto Import from IE. This measure is only logged + on a succesfull Auto Import. + + + + + gab@chromium.org + The importer used on first run Auto Import. + + + + gab@chromium.org + The importer used on import from the bookmarks file API. + + + + gab@chromium.org + + The importer used on import from the chrome://settings/importData UI. + + + + + brucedawson@chromium.org + grt@chromium.org + + The number of retries needed to successfully move the temporary file to its + final location. Zero means that ReplaceFile worked the first time. Ten means + that it never succeeded. + + + + + battre@chromium.org + gab@chromium.org + + CPU time used in the foreground thread (usually UI thread) to serialize the + data to be written into an important file (e.g. serialize JSON string for + preferences). For users of ImportantFileWriter that leverage background + serialization (e.g. bookmarks), it excludes the time spent on the background + thread, and only logs the time spent on the foreground thread. + + + + + + wylieb@chromium.org + chrome-collections@google.com + + CPU time used in the background thread to write serialized data into an + important file. Recorded when the file is written. + + + + + + roagarwal@chromium.org + chrome-incognito@google.com + + Records the action taken by the user on the Incognito clear browsing data + dialog. + + + + + + Removed in http://crrev.com/747875. + + robliao@chromium.org + + The thread used to initialize the Windows parental controls. + + + + + + Removed in http://crrev.com/747875. + + robliao@chromium.org + + The amount of time that elapsed during a run of + PlatformParentalControlsValue::IsParentalControlActivityLoggingOnImpl on + Windows 7 and above. + + + + + pmonette@chromium.org + + Records whether the user was automatically shown the + chrome://settings/incompatibleApplications page following a Chrome crash. + + + + + pmonette@chromium.org + + The number of incompatible applications detected by Chrome at the time the + chrome://settings/incompatibleApplications page was opened. + + + + + timvolodine@chromium.org + + Whether the Sensor.TYPE_LINEAR_ACCELERATION was available at the start of + Device Motion. + + + + + timvolodine@chromium.org + + Whether the Sensor.TYPE_ACCELEROMETER was available at the start of Device + Motion. + + + + + timvolodine@chromium.org + + Whether the SENSOR_TYPE_ACCELEROMETER_3D was available at the start of + Device Motion on the Windows platform. + + + + + timvolodine@chromium.org + + Provides a histogram of the base sensors (if any) that are used at the start + of the Device Orientation API. Currently Sensor.TYPE_GAME_ROTATION_VECTOR is + the default sensor for orientation, if it's not available fall-back options + are provided by using either Sensor.TYPE_ROTATION_VECTOR or a combination of + Sensor.TYPE_ACCELEROMETER and Sensor.TYPE_MAGNETIC_FIELD. + + + + + timvolodine@chromium.org + + Whether the SENSOR_TYPE_GYROMETER_3D was available at the start of Device + Motion on the Windows platform. + + + + + timvolodine@chromium.org + + Whether the Sensor.TYPE_GYROSCOPE was available at the start of Device + Motion. + + + + + timvolodine@chromium.org + + Whether the SENSOR_TYPE_INCLINOMETER_3D was available at the start of Device + Orientation on the Windows platform. + + + + + timvolodine@chromium.org + + This histogram counts the number of Device Motion API invocations in the + default implementation (Linux and CrOS). The default implementation does not + provide any sensors so the result is always false. + + + + + timvolodine@chromium.org + + Whether the sudden motion sensor was available at the start of Device Motion + on the MacOS platform. + + + + + timvolodine@chromium.org + + This histogram counts the number of Device Orientation API invocations in + the default implementation (Linux and CrOS). The default implementation does + not provide any sensors so the result is always false. + + + + + timvolodine@chromium.org + + Whether the sudden motion sensor was available at the start of Device + Orientation on the MacOS platform. + + + + + peter@chromium.org + Status code of the outcome of DeleteToken request. + + + + jianli@chromium.org + + Length of time taken to complete the GetToken request successfully. If the + request is retried multiple times, the length of time is counted for the + last successful retry. + + + + + peter@chromium.org + platform-capabilities@chromium.org + + Net error code from an Instance ID GetToken attempt. Recorded when URL + loading completes. + + + + + + Deprecated as of 11/2020 + + peter@chromium.org + knollr@chromium.org + + The number of options provided to the GetToken request. Recorded when the + request has been received by the InstanceID instance. + + + + + peter@chromium.org + Status code of the outcome of GetToken request. + + + + peter@chromium.org + rushans@chromium.org + treib@chromium.org + + Status code of the outcome of GetToken request for FCM invalidations + (subtype was "com.google.chrome.fcm.invalidations"). + + + + + peter@chromium.org + rushans@chromium.org + treib@chromium.org + + Status code of the outcome of GetToken request for Sync invalidations + (subtype was "com.google.chrome.sync.invalidations"). + + + + + erikchen@chromium.org + + Errors that the privileged attachment broker encounters while trying to + broker attachments. + + + + + erikchen@chromium.org + + Errors that an unprivileged attachment broker encounters while trying to + broker attachments. + + + + + + Removed 2020 November. + + avi@chromium.org + + For onbeforeunload dialogs, the user's choice between staying on the page + and leaving it. + + + + + avi@chromium.org + carlosil@chromium.org + ericmill@google.com + meacer@chromium.org + + For dialogs, the relationship of the origins of the main frame vs the + alerting frame. + + + + + avi@chromium.org + carlosil@chromium.org + ericmill@google.com + meacer@chromium.org + The scheme of the URL showing a JavaScript dialog. + + + + + + asvitkine@chromium.org + ntfschr@chromium.org + + Logs which Chrome flags from about:flags were active on start up. Android + WebView supports flags differently than most platforms, see + https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/developer-ui.md + for details. + + + + + + + calamity@chromium.org + davidbienvenu@chromium.org + grt@chromium.org + + The different ways Chrome is launched. This replaces Launch.Modes. Emitted + once at startup, when the user launches Chrome to browse the web or launch a + Web App. It is not recorded if Chrome is launched in other ways: by the + installer, after an update, after a flag change, after an OS update, to + install/uninstall/list apps, or in background mode. + + + + + + + calamity@chromium.org + grt@chromium.org + + The different ways Chrome is launched. + + This metric is gradually being replaced with an improved version. See + tracking bug http://crbug.com/1366137 + + Warnings about this version of this metric. + + 1. If user starts Chrome while Chrome is already running, this reports + incorrect data. See http://crbug.com/1067205 + + 2. On ChromeOS, if a user session-restores multiple profiles, each profile + records this metric. See http://crbug.com/1356222 + + 3. When the profile picker is shown on startup (which can only happen on + Windows, Mac, and Linux), this metric is not recorded. See + http://crbug.com/1380458 + + + + + + Removed in M86. + + benjhayden@chromium.org + + For layouts that considered at least 100 nodes, at least half of which were + complex text fragments, the average number of microseconds spent laying out + each node. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Removed in M86. + + benjhayden@chromium.org + + For layouts that considered at least 100 nodes, at least half of which were + floats, the average number of microseconds spent laying out each node. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Removed in M86. + + benjhayden@chromium.org + + For layouts that considered at least 100 nodes, the average number of + microseconds spent laying out each node. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Removed in M86. + + benjhayden@chromium.org + + For layouts that considered at least 100 nodes, at least half of which were + fixed or absolute positioned, the average number of microseconds spent + laying out each node. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Removed in M86. + + benjhayden@chromium.org + + For layouts that considered at least 100 nodes, at least half of which were + simple text fragments, the average number of microseconds spent laying out + each node. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Removed in M86. + + benjhayden@chromium.org + + For layouts that considered at least 100 nodes, at least half of which were + table cells, the average number of microseconds spent laying out each node. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Removed in M89. + + skobes@chromium.org + + Records the number of times ScrollAnchor adjusts the scroll offset. + + + + + + Removed in M89. + + pnoland@chromium.org + + Records the status of attempts to restore a serialized scroll anchor. + + + + + pnoland@chromium.org + + The number of characters in the selector computed for a serialized scroll + anchor. Recorded when a scroll anchor is serialized. + + + + + + Removed in M89. + + ymalik@chromium.org + + Records the number of times scroll anchoring is suppressed because of the + SANACLAP bit being set on an ancestor (see bit.ly/sanaclap). + + + + + pnoland@chromium.org + + The time it took to compute the selector of a serialized anchor element. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Removed in M93. + + ymalik@chromium.org + + The time it took to find a suitable anchor element. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + pnoland@chromium.org + + The time it took to restore the scroll anchor using the serialized anchor + element. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Replaced with + Lens.ImageClassification.ClassificationTime.SuccessOnQueryResultMs as of + 12/2020. + + yusuyoutube@google.com + benwgold@google.com + + Logged the end to end latency of the Lens image classifcation call when the + user completes a long press on an image. Only logged on Android. + + + + + yusuyoutube@google.com + benwgold@google.com + + Logged the time between the start of the Lens image classifcation call to + the early termination before the call completes. Only logged on Android. + + + + + yusuyoutube@google.com + benwgold@google.com + + Logged the end to end latency of the Lens image classifcation call when the + user completes a long press on an image. Only logged on Android. + + + + + yusuyoutube@google.com + benwgold@google.com + + Logged the result state of the Lens image classifcation call when the user + completes a long press on an image. Only logged on Android. + + + + + yusuyoutube@google.com + benwgold@google.com + + Logged the error code when there is a Lens SDK error occurred within the + classification session. The error code is an integer constant defined by the + SDK. Only logged on Android. See http://b/170422682 for more details. + + + + + yusuyoutube@google.com + benwgold@google.com + fgorski@chromium.org + wylieb@chromium.org + lens-chrome@google.com + + Whether the user supports the camera assisted search with Google Lens and if + not, the reason why. Recorded only if the feature is enabled when the + omnibox or the new tab page is loaded. + + + + + ender@google.com + fgorski@chromium.org + benwgold@chromium.org + yusuyoutube@google.com + lens-chrome@google.com + + Whether the user supports the camera assisted search with Google Lens and if + not, the reason why. Recorded only when the Lens button is tapped on the + Quick Action Search Widget. + + + + + chengx@chromium.org + + This metric records the LoadLibraryExW and LoadLibraryW Windows API call + results, which are used in native_library_win.cc. + + + + + lizeb@chromium.org + + Percentage of the native library code pages resident in memory. Recorded + immediately before the library prefetching kicks in, only on Android. + + + + + + + thestig@chromium.org + thomasanderson@chromium.org + + The Debian version number (eg. 8: Jessie, 9: Stretch). Logged once on + startup if Linux.Distro2 is Debian. + + + + + + + thestig@chromium.org + thomasanderson@chromium.org + + The Fedora version number (eg. 27, 28) Logged once on startup if + Linux.Distro2 is Fedora. + + + + + + + thestig@chromium.org + thomasanderson@chromium.org + + The Linux Mint version number (eg. 20, 20.1) Logged once on startup if + Linux.Distro2 is Mint. + + + + + + + thestig@chromium.org + thomasanderson@chromium.org + + The openSUSE Leap version number, logged as 1000*major + minor (eg. 15001 = + 15.1). Logged once on startup if Linux.Distro2 is openSUSE Leap. + + + + + + + thestig@chromium.org + thomasanderson@chromium.org + + The Ubuntu version number, logged as 1000*year + month (eg. 16004 = 16.04 + Xenial). Logged once on startup if Linux.Distro2 is Ubuntu. + + + + + + + thestig@chromium.org + thomasanderson@chromium.org + The Linux distro used. Logged on each start up. + + + + + + thestig@chromium.org + thomasanderson@chromium.org + + The version of glibc used. (Linux only) Logged on each start up. + + + + + kylechar@chromium.org + mpdenton@chromium.org + + The time taken for localtime_r() call to proxied from a sandboxed process to + the browser and a response returned back in microseconds. This histogram is + only recorded on Linux, where all users have high-resolution clocks. + + + + + mpdenton@google.com + src/sandbox/linux/OWNERS + + The Linux sandbox status. This describes what sandboxing features are + enabled (such as the suid/namespace sandboxes, various namespaces, seccomp + bpf, ...). Emitted once at startup. + + + + + thomasanderson@google.com + The default system theme. Logged once on startup. + + + + thomasanderson@google.com + + The per-profile system theme. Logged once for each profile on startup, and + whenever the system theme changes. + + + + + + + rjkroege@chromium.org + adunaev@igalia.com + + The Linux Wayland base shell protocol used actually. Logged in each session + when the browser creates the first shell surface. + + + + + + + rjkroege@chromium.org + adunaev@igalia.com + + The Linux Wayland shell protocol(s) available. Logged in each session when + the compositor announces a Wayland protocol extension that provides the + desktop shell functionality (i.e., turns abstract surfaces into windows that + can be positioned, moved, resized, etc., depending on the particular shell). + + + + + + + pkotwicz@chromium.org + thomasanderson@chromium.org + + The window manager used. (Linux only) Logged on each start up. + + + + + thomasanderson@chromium.org + rjkroege@chromium.org + + The amount of time (ms) to construct the GbmSupportX11 singleton. + + + + + sophiechang@chromium.org + tbansal@chromium.org + spelchat@chromium.org + chrome-brapp-loading@chromium.org + + The status of when the optimization hints were received by the Loading + Predictor. This will be recorded on navigations for which predictions from + the Optimization Guide were received. + + + + + spelchat@chromium.org + chrome-brapp-loading@chromium.org + + The number of origins that were preconnected for a page load. It includes + preconnect attempts that don't result in new opened connection. Logged after + the preconnect manager completes all jobs attached to the page load. + + + + + spelchat@chromium.org + chrome-brapp-loading@chromium.org + + The percentage of origins that were preconnected and requested by a page + load to the total number of origins that were preconnected for a page load. + Logged after the preconnect manager completes all jobs attached to the page + load. + + + + + spelchat@chromium.org + chrome-brapp-loading@chromium.org + + When the loading predictor has origins in the local database for a given + navigation to preconnect and preresolve, the count of predicted origins. + + + + + spelchat@chromium.org + chrome-brapp-loading@chromium.org + + When the loading predictor has origins in the local database for a given + navigation to preconnect and preresolve, the precision of the predictions in + percentage. This is computed as 100 \times \frac{correct + predictions}{predictions}. + + + + + spelchat@chromium.org + chrome-brapp-loading@chromium.org + + When the loading predictor has origins in the local database for a given + navigation to preconnect and preresolve, the recall of the predictions, in + percentage. This is computed as 100 \times \frac{correct predictions}{all + prefetchable subresources}. + + + + + spelchat@chromium.org + chrome-brapp-loading@chromium.org + + When the prefetch predictor has origins in the local database for a given + navigation to preconnect and preresolve, records stats about whether + redirect was predicted correctly or incorrectly. + + + + + spelchat@chromium.org + chrome-brapp-loading@chromium.org + + The number of hosts that were preresolved for a page load. It includes only + successful DNS lookups. Logged after the preconnect manager completes all + jobs attached to the page load. + + + + + spelchat@chromium.org + chrome-brapp-loading@chromium.org + + The percentage of hosts that were preresolved and requested by a page load + to the total number of hosts that were preresolved for a page load. Logged + after the preconnect manager completes all jobs attached to the page load. + + + + + tbansal@chromium.org + + Original Blink priority of the request that belongs to an iframe. Recorded + for every request fetched via Blink, but only when the experiment to lower + the priority of iframes is enabled. + + + + + tbansal@chromium.org + + Original Blink priority of the request that belongs to the main frame. + Recorded for every request fetched via Blink, but only when the experiment + to lower the priority of iframes is enabled. + + + + + nasims@google.com + ellyjones@chromium.org + + Whether the user successfully shared via a native sharing extension after + selecting it from the File > Share menu. False can indicate failure or + user-initiated cancellation. + + + + + + Removed 2021 November. + + avi@chromium.org + mark@chromium.org + + Native macOS apps can claim regions of the URL space for themselves, and so + on every navigation, Chromium calls the SFUniversalLink API to determine if + the URL being navigated to requires special handling. The SFUniversalLink + API is usually instantaneous, but for some machines it's very slow. This + metric logs the amount of time that it the SFUniversalLink API took to run, + if over 100ms. This metric is logged once per run of Chrome, because if that + API call ever takes longer than 100ms, it is disabled and never used again + in that run of Chrome. + + + + + mgiuca@chromium.org + + Tracks which properties of a Manifest were present when it was parsed. If a + property can't be parsed, it will be recorded as not present. These + histograms will only be used if the Manifest was correctly fetched and + parsed and the parsed manifest is not empty. + + + + + phillis@chromium.org + desktop-pwas-team@chromium.org + Tracks the result of parsing id field in the Manifest. + + + + akhouderchah@chromium.org + benchan@chromium.org + + The result (e.g. success or the type of failure) of a modem interface switch + operation performed by mist on Chrome OS. + + + + + carlosil@chromium.org + + The net error or HTTP response code of a mixed content resource request that + was autoupgraded to HTTPS. This histogram was expired from M80 to M108. + + + + + carlosil@chromium.org + + Whether or not an autoupgrade mixed content request was for a resource we + know to be an ad. This histogram was expired from M80 to M108. + + + + + carlosil@chromium.org + estark@chromium.org + + Logs the type of each resource request that is autoupgraded to HTTPS and + fails to load. This histogram was expired from M80 to M108. + + Warning: an unexpected reorder happened in Apr 2021 + (https://crrev.com/c/2798954). Please do not trust older reports. + + + + + carlosil@chromium.org + estark@chromium.org + + Logs the type of each resource request that was autoupgraded to HTTPS and + resulted in a response. This histogram was expired from M80 to M108. + + Warning: an unexpected reorder happened in Apr 2021 + (https://crrev.com/c/2798954). Please do not trust older reports. + + + + + carlosil@chromium.org + estark@chromium.org + + Logs the type of each resource request that is autoupgraded to HTTPS. This + is logged when the request is started. This histogram was expired from M80 + to M108. + + Warning: an unexpected reorder happened in Apr 2021 + (https://crrev.com/c/2798954). Please do not trust older reports. + + + + + carlosil@chromium.org + + The status of a mixed content resource request that was autoupgraded to + HTTPS. This histogram was expired from M80 to M108. + + + + + + Removed in M87. + + grt@chromium.org + + Logged when the relocations in a module are not ordered causing the module + verification to abort. + + + + + bgeffon@chromium.org + rockot@google.com + + The size in bytes of individual messages written into shared memory. + + + + + bgeffon@chromium.org + rockot@google.com + + The size in bytes of individual messages that could not be written due to + lock contention. + + + + + bgeffon@chromium.org + rockot@google.com + + The size in bytes of individual messages that could not be written due to + shared memory buffer exhaustion. + + + + + bgeffon@chromium.org + rockot@google.com + + The size in bytes of individual messages that could not be written due to + message being larger than the shared buffer size. + + + + + amistry@chromium.org + bgeffon@chromium.org + rockot@google.com + The number of handles sent with a channel message. + + + + amistry@chromium.org + bgeffon@chromium.org + rockot@google.com + + Measures the time taken to fully write a channel message to the underlying + channel. + + + + + amistry@chromium.org + bgeffon@chromium.org + rockot@google.com + The size of a message written to a channel. + + + + amistry@chromium.org + bgeffon@chromium.org + rockot@google.com + + Tracks whether or not a message is written directly to a channel or queued. + + + + + amistry@chromium.org + bgeffon@chromium.org + rockot@google.com + + The number queued messages waiting to be written, measured when a channel + flush is attempted. + + + + + amanvr@chromium.org + carlscab@chromium.org + woa-performance@google.com + + Records the number of received Mojo IPCs, split per process. Emitted each + time a mojo IPC is received. + + + + + amanvr@chromium.org + carlscab@chromium.org + woa-performance@google.com + + Records the number of sent Mojo IPCs, split per process. Emitted each time a + mojo IPC is sent. + + + + + amistry@chromium.org + bgeffon@chromium.org + rockot@google.com + The number of messages batched into a single writev call. + + + + siggi@chromium.org + rockot@chromium.org + + The maximal unread message quota used for the lifetime of a Connector. This + is sampled for a configurable percentage of Connectors only when the feature + MojoRecordUnreadMessageCount is enabled. By default 1% of Connectors are + sampled, as there's some overhead involved in enabling the unread message + quota on a MessagePipe. See //mojo/public/cpp/bindings/lib/connector.cc. + + + + + rsesek@chromium.org + chrome-mojo@google.com + + Emitted any time a Mojo string is deserialized and is not valid UTF-8. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + Tracks mouse sensitivity setting changes by the user. This replaces the old + Mouse.Sensitivity.Changed metric. Only reported on Chrome OS. + + + + + dpad@google.com + cros-peripherals@google.com + + Tracks mouse sensitivity setting on startup. This replaces the old + Mouse.Sensitivity.Started metric. Only reported on Chrome OS. + + Expired from 2022-12-04 to M113. May be missing some data. + + + + + + + khorimoto@chromium.org + zentaro@chromium.org + + Whether mouse scroll acceleration is enabled. Only reported on Chrome OS. + + + + + + + zentaro@chromium.org + cros-peripherals@google.com + + Mouse scroll sensitivity value. Only reported on Chrome OS. + + Warning: this histogram was expired from 2020-12-01 to M105; data may be + missing. + + + + + pasko@chromium.org + yfriedman@chromium.org + + The time it takes to spawn the first child subprocess (including sandbox + init). + + + + + pasko@chromium.org + yfriedman@chromium.org + + The time it takes to spawn child sub processes not counting the first one. + + + + + lizeb@chromium.org + + Time to call fork() or clone(), in ms. Recorded at each fork excluding from + the zygote, only on posix platforms. + + + + + Please list the metric's owners. Add more owner tags as needed. + TBD + + + + + Removed in M98. Replaced by Browser.Tabs.TotalSwitchDuration.* + + jbauman@chromium.org + + Time from tab switch requested to tab appearing on screen (Aura and Mac + only). + + + + + skuhne@chromium.org + + Count the number of times each UI path is taken for switching the active + account in a Chrome OS multiprofile session. UI paths include the system + tray and the keyboard shortcut. + + + + + skuhne@chromium.org + + Counts the number of teleported windows by types in separated desktop mode. + + + + + skuhne@chromium.org + + The number of users simultaneously signed into a multiprofile session on + Chrome OS. This is recorded whenever a user gets added to the session. To + get the correct count, all following counts must be subtracted. Example: If + 100 single user, 20 two user and 5 three user sessions, there were + 100-20-5=75 single user sessions, 100-80=20 dual user sessions and so on. + + + + + simmonsjosh@google.com + src/chrome/browser/ash/smb_client/OWNERS + + The method used to authenticate to a share. This is called on each attempted + mount. + + + + + simmonsjosh@google.com + src/chrome/browser/ash/smb_client/OWNERS + + The result of the GetShares operation for Native SMB File Share. This is + recorded after the D-Bus call to GetShares returns. + + + + + simmonsjosh@google.com + src/chrome/browser/ash/smb_client/OWNERS + + The number of active mounts that a user has. This is recorded after a share + has been successfully mounted. + + + + + simmonsjosh@google.com + src/chrome/browser/ash/smb_client/OWNERS + + The result of the mount operation for Native SMB File Share. This is + recorded after the D-Bus call to Mount returns. + + + + + + Removed in M87. No longer used with smbfs. + + zentaro@chromium.org + + The number of entries read when calling ReadDirectory. This is recorded + after the D-Bus call to ReadDirectory returns. + + + + + + Removed in M87. No longer used with smbfs. + + zentaro@chromium.org + + The duration of ReadDirectory call to SmbProvider in milliseconds. This is + recorded after the D-Bus call returns. + + + + + + Removed in M94. + + simmonsjosh@google.com + src/chrome/browser/ash/smb_client/OWNERS + + The result of the Remount operation during startup. This is recorded after + the D-Bus call to Remount returns. + + + + + + Deprecated in 10/2021 because the location permission protected API is + required to get this information and this isn't a must-have histogram. + + tbansal@chromium.org + bengr@google.com + + The MCC (mobile country code) and MNC (mobile network code) of the network + operator when a new metrics log is created or when the network connection is + changed. A value of zero means a non-mobile network or the operator code is + unknown. + + + + + tbansal@chromium.org + bengr@chromium.org + + Number of times the network quality prefs were read by the network quality + estimator. + + + + + tbansal@chromium.org + bengr@chromium.org + + Count of the number of network IDs in the prefs read by the network quality + estimator. + + + + + tbansal@chromium.org + bengr@chromium.org + + Number of times the network quality prefs were written by the network + quality estimator. + + + + + tbansal@chromium.org + bengr@chromium.org + + Number of RTT observations indexed by the source of the observation. + Recorded by the network quality estimator every time a new observation is + made or synthesized. + + + + + bengr@chromium.org + tbansal@chromium.org + + Rough estimate of the round trip time at the URLRequest layer. Recorded by + the network quality estimator every time the effective connection type is + computed. + + + + + droger@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + Failure reason of MergeSession call during Chrome OS login, Chrome Signin or + account addition. On all OSes as of M44 (previously CrOS only). + + + + + droger@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + Retry reason of failed MergeSession call during Chrome OS login, Chrome + Signin or account addition. On all OSes as of M44 (previously CrOS only). + + + + + anastasiian@chromium.org + sinhak@chromium.org + Outcome of Chrome OS GAIA cookie session restore process. + + + + anastasiian@chromium.org + sinhak@chromium.org + How long it takes for the session restore to fail. + + + + anastasiian@chromium.org + sinhak@chromium.org + + How long it takes for the session restore to finish succeessfully. + + + + + + Retired in M99. + + davidbienvenu@chromium.org + fdoray@chromium.org + + Incremented each time a mouse event is handled by a window that is marked as + occluded. This number should be 0 or very close to 0. It should be much less + than the number of times a window is mark occluded - + WindowOcclusionChanged.Occluded. + + + + + + Retired in M93, replaced by OffscreenCanvas.TextMetrics.SetFont2 which has a + wider range. + + yiyix@chromium.org + fserb@chromium.org + + Time spent in microseconds to perform call SetFont in canvas for + OffscreenCanvas. It's measured each time SetFont is called. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + Retired in M94. + + yiyix@chromium.org + fserb@chromium.org + + Time spent in microseconds to perform call SetFont in canvas for + OffscreenCanvas. It's measured each time SetFont is called. + + This differs from OffscreenCanvas.TextMetrics.SetFont in that it uses + buckets up to ten seconds rather than ten milliseconds (due to a change in + the underlying histogramming function called). + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + pbirk@chromium.org + src/components/origin_trials/OWNERS + + Reports whether the presence of a Critical-Origin-Trial header caused a + network request restart due to the origin trial not being enabled. + + The Critical-Origin-Trial header is only processed for navigation requests + (loading either a main- or sub-frame) using a safe HTTP verb (per section + 4.2.1 of RFC 7231). On those requests, this metric will be emitted if the + Critical-Origin-Trial header is present on the response, to report the + decision made by the CriticalOriginTrialThrottle. + + The request may still be restarted due to other throttles, even if this + metric reported "false". + + + + + pbirk@chromium.org + src/components/origin_trials/OWNERS + + Reports status of LevelDB initialization for persistent origin trials. This + is emitted on the Init callback during browser startup, and should not be + false. A high rate of "false" would indicate a problem with the + shared LevelDB database. + + + + + pbirk@chromium.org + src/components/origin_trials/OWNERS + + Counts the number of origins in the LevelDb database at time of load during + browser startup. + + This metric is for reporting only, and expected to get worse if you are in + the process of launching a persistent origin trial. + + + + + pbirk@chromium.org + src/components/origin_trials/OWNERS + + Reports status of LevelDB load for persistent origin trials. This is emitted + on the Load callback during browser startup, and should not be false. A high + rate of "false" would indicate a problem with the shared LevelDB + database. + + + + + pbirk@chromium.org + src/components/origin_trials/OWNERS + + Measures the time to load the data from LevelDb during startup in wall clock + time. + + This metric is for reporting only, and expected to get worse if you are in + the process of launching a persistent origin trial. + + + + + pbirk@chromium.org + src/components/origin_trials/OWNERS + + Counts the number of lookups for origins arriving to the + LevelDbPersistenceProvider before the database was loaded from disk. Any + such lookup would not have seen the persisted value. + + Since the database is loaded asynchronously, it is possible for the browser + to start using the PersistentOriginTrial component before it is fully + loaded. Due to this, it is expected to see this metric at 1, possibly 2. + Large numbers can be caused by a browser restart with a lot of saved tabs + being loaded at the same time. + + + + + pbirk@chromium.org + src/components/origin_trials/OWNERS + + Counts the number of origins added to the LevelDbPersistenceProvider before + the persited origins have loaded from disk. This number represents the + number of page loads for pages enrolled in persistent origin trials where + the trial was either not activated or the request had to restart due to the + presence of the Persistent-Origin-Trial header. + + + + + pbirk@chromium.org + src/components/origin_trials/OWNERS + + Reports the number of partitions a persistent origin trial token has been + stored against. The purpose of the metric is to uncover memory footprint + issues from storing site partitions, and to help decide if an eviction + strategy needs to be put in place. This metric is recorded once for every + stored origin trial token on browser startup. + + + + + pbirk@chromium.org + src/components/origin_trials/OWNERS + + Records whether a stored partition token has its own origins eTLD+1 as one + of the partitions. This is being recorded to determine if space can be saved + by making the first-party partition a special case. This metric is recorded + on browser startup when the persisted tokens are loaded from the database. + + + + + chasej@chromium.org + iclelland@chromium.org + feature-control@chromium.org + + Counts the results of token validation checks to enable experimental + features. The result for each token validation check is counted once per + token per execution context (e.g. page, worker). + + + + + wfh@chromium.org + nparker@chromium.org + + The result code of the application-bound Decrypt operation. This is logged + once during browser startup on a background thread for system-level installs + on Windows only. + + + + + wfh@chromium.org + nparker@chromium.org + + The GetLastError code for a failed application-bound Decrypt operation. This + is logged once during browser startup on a background thread for + system-level installs on Windows only, if the call to Decrypt failed. + + + + + wfh@chromium.org + nparker@chromium.org + + The amount of time, in ms, that it takes to perform an application-bound + Decrypt call. This is logged once during browser startup on a background + thread for system-level installs on Windows only. + + + + + wfh@chromium.org + nparker@chromium.org + + The result code of the application-bound Encrypt operation. This is logged + once during browser startup on a background thread for system-level installs + on Windows only, for a client that is initializing a new local state or a + previously failing client. + + + + + wfh@chromium.org + nparker@chromium.org + + The GetLastError code for a failed application-bound Encrypt operation. This + is logged once during browser startup on a background thread for + system-level installs on Windows only, if the call to Encrypt failed, for a + client that is initializing a new local state or a previously failing + client. + + + + + wfh@chromium.org + nparker@chromium.org + + The amount of time, in ms, that it takes to perform an application-bound + Encrypt call. This is logged once during browser startup on a background + thread for system-level installs on Windows only, for a client that is + initializing a new local state or a previously failing client. + + + + + cfroussios@chromium.org + mamir@chromium.org + + The backend selected for this user and whether it was initialised + successfully. + + + + + cfroussios@chromium.org + thestig@chromium.org + + True, iff the data was not decryptable with the stored encryption key, but + was decryptable with a key generated from an empty string. This is emitted + every time OSCrypt attempts to decrypt a value. + + + + + wfh@chromium.org + nparker@chromium.org + + Whether or not the DPAPI Decrypt call to decrypt the OSCrypt key succeeeded. + This is logged once during browser startup on Windows. + + + + + wfh@chromium.org + nparker@chromium.org + + The amount of time, in ms, that it takes to perform a DPAPI Decrypt call. + This is logged once during browser startup on Windows. + + + + + wfh@chromium.org + nparker@chromium.org + + Whether or not the DPAPI Encrypt call to encrypt the OSCrypt key succeeeded. + This is logged once during browser startup on Windows, if there is no stored + key and a new one has to be generated. This data will therefore be biased + towards newer clients. See OSCrypt.Win.Decrypt.Result which contains + unbiased data. + + + + + wfh@chromium.org + nparker@chromium.org + + The amount of time, in ms, that it takes to perform a DPAPI Encrypt call. + This is logged once during browser startup on Windows, if there is no stored + key and a new one has to be generated. This data will therefore be biased + towards newer clients. See OSCrypt.Win.Decrypt.Time which contains unbiased + data. + + + + + wfh@chromium.org + forshaw@chromium.org + + The Windows GetLastError after a failure from calling into DPAPI to decrypt + the master key for the os_crypt library on Windows. This is recorded during + the OSCrypt::Init each time the decryption fails. + + + + + mark@chromium.org + Events seen by the OSX NSException swizzle. + + + + spqchan@chromium.org + + This event is recorded each time a user triggers fullscreen for a browser + window. It indicates if the fullscreen is triggered for the browser or the + tab content. + + + + + erikchen@chromium.org + + This event is recorded each time a user triggers fullscreen for a browser + window. It indicates the mechanism (immersive vs. AppKit) and the type of + AppKit Fullscreen (Presentation Mode vs. Canonical Fullscreen). + + + + + erikchen@chromium.org + + This event is recorded each time a user triggers fullscreen for a browser + window. It indicates the screen in which the window was fullscreened, and + the number of screens available. + + + + + erikchen@chromium.org + + This event is recorded each time a Handoff is received by Chrome on OSX. The + enumeration indicates the source of the Handoff. + + + + + + Removed 11/2020. + + avi@chromium.org + mark@chromium.org + + The instances of other copies of Google Chrome on the user's Mac. Logged + once on startup, and only for Chrome Beta and Chrome Dev. Will be used to + determine if/how home directory migration will be done for side-by-side. + + + + + + Removed July 2021, superceded by Mac.FileMenuNativeShare. + + lgrey@chromium.org + + Whether the user successfully shared via a native sharing extension after + selecting it from the File > Share menu. False can indicate failure or + user-initiated cancellation. This is obsolete; the same data is currently + being collected as Mac.FileMenuNativeShare. + + + + + erikchen@chromium.org + + The configuration of the setting "Screens Have Separate Spaces" + available in OSX 10.9+. + + + + + erikchen@chromium.org + + Whether an attempt to load the system hotkeys on a Mac was successful. + + + + + napper@chromium.org + robsc@chromium.org + + When a stylus is touched to screen, the number of palms on the device at + that time. + + + + + napper@chromium.org + robsc@chromium.org + + The time between a finger and a stylus touch. The finger may or may not + still be on the touchscreen. + + + + + napper@chromium.org + robsc@chromium.org + + The time between a palm and a stylus touch. The palm may or may not still be + on the touchscreen. + + + + + robsc@chromium.org + + The count of the number of held events cancelled when we decide to finally + cancel a stroke. Only reported if events have been held, and will be + positive. Events are only held from PalmDetectionFilter. + + + + + robsc@chromium.org + + The count of the number of held events released at once for a stroke when we + decide to release. Only reported if events have been held, and will be + positive. Events are only held from PalmDetectionFilter. + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + The wall-clock time spent until a lookup was canceled. This is reported + every time p2p is used to find a candidate but the request was canceled. + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + The number of candidates on the LAN, i.e. the number of peers on the LAN + offering at least N bytes of the requested file X. This is reported after + examining responses from all peers on the LAN and picking a candidate. + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + The number of p2p downloads of the peer that the returned URL points to. + This is reported after examining responses from all peers on the LAN and + picking a candidate. + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + The wall-clock time spent waiting for the LAN-wide number of p2p downloads + (i.e. the sum of p2p downloads from each peer on the LAN) to drop below the + threshold. This is reported after examining responses from all peers on the + LAN and picking a candidate. + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + The result of the lookup. Possible values include "Found" (if a + candidate - i.e. a peer offering at least N bytes of file X - was chosen), + "Not Found" (if no candidate could be found), "Vanished" + (if a candidate was found but vanished while waiting in line), + "Canceled" (if a candidate was found but the request was canceled + while waiting in line), and "Filtered" (if it was detected that + mDNS was filtered). This is reported after examining responses from all + peers on the LAN when p2p is used to find a candidate. + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + The number of peers implementing p2p file sharing on the network. This is + reported every time p2p is used to look up a resource on a network where + mDNS is not filtered. + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + The wall-clock time spent waiting for one or more candidates (i.e. peers + offering at least N bytes of file X) that all vanished before the LAN-wide + number of p2p downloads dropped below the threshold. This is reported every + time candidates were found using p2p but then vanished. + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + The number of currently connected HTTP clients. This is reported every time + a HTTP client connects. + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + Number of megabytes (1,000,000 bytes) served from the device (via HTTP) + where the client disconnects prematurely. This is reported every time a file + is served and the client disconnects before receiving all data. + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + Number of megabytes (1,000,000 bytes) served from the device (via HTTP). + This is reported every time a file have been served successfully. + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + The average speed at which the download was served at, in kB/s. This is + reported every time a file have been served successfully. + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + The number of files available via p2p. This is reported every time a file is + added or removed to the /var/cache/p2p directory. + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + When a client resumes a download, the HTTP request includes range specifier + to skip the bytes it already has. This metric conveys this as a percentage + of the file size. This is reported every time a file is served, even if the + request does not include a range specifier (in which case 0 is reported). + + + + + ahassani@chromium.org + chromeos-core-services@google.com + + The result of the HTTP request. Possible values include "Response + Sent" (the resource was found and the response was successfully sent), + "Response Interrupted" (the resource was found but the client + disconnected), "Malformed" (the request was malformed), "Not + Found" (the request was for a resource that was not found), and + "Index" (the request was for the '/' or '/index.html' resource). + This is reported for every HTTP request handled. + + + + + sophiechang@chromium.org + chrome-journeys@google.com + Internals>OptimizationGuide + + Records the result of requests to the Optimization Guide Salient Images + backend. + + Recorded for each request to Optimization Guide, so the total count of this + UMA should match that bucket count in PageImageService.Backend. + + + + + + tommycli@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Records the backend chosen for the request. For requests with no valid + backend, this is still recorded as the "No Valid Backend" bucket. + + Only recorded for requests that have passed the URL consent gate. + + + + + + tommycli@chromium.org + chrome-journeys@google.com + UI>Browser>Journeys + + Records whether the URL consent check was successfully passed for this + request. + + + + + + pdr@chromium.org + paint-dev@chromium.org + + Records the reason that a commit was triggered, to enable research into + which event (non-same-origin, FCP, timeout, etc) led to the first commit. + + + + + pdr@chromium.org + paint-dev@chromium.org + + Records whether or not input arrived before the first paint. + + + + + bttk@chromium.org + wychen@chromium.org + + The time spent on loading partner bookmarks, from kickOffReading() to + bookmarkModelLoaded() callback. + + + + + mych@chromium.org + pending-beacon-experiment@chromium.org + + The type of PendingBeacon-related action that the browser has performed. + + This is only recorded when the PendingBeacon API is called to create, send, + or cancel a beacon. See + https://chromium.googlesource.com/chromium/src/+/main/docs/experiments/pending-beacon.md + and https://crrev.com/c/4028260 for more details. + + + + + mych@chromium.org + pending-beacon-experiment@chromium.org + + The type of batch PendingBeacon-related action that the browser has + performed. A batch action means the browser is about to batch process all + queued pending beacon requests at once. + + See + https://chromium.googlesource.com/chromium/src/+/main/docs/experiments/pending-beacon.md + and https://crrev.com/c/4028260 for more details. + + + + + jbauman@chromium.org + + True if a non-flash Pepper Graphics3D context has a share group. + + + + + fabiansommer@chromium.org + dschuff@chromium.org + + The number of out-of-process plugin processes that have loaded a particular + PPB interface version. + + + + + raymes@chromium.org + rsleevi@chromium.org + + Whether a Pepper TCP connect attempt comes from a plugin in a secure or an + insecure origin. + + + + + raymes@chromium.org + rsleevi@chromium.org + + Whether a Pepper UDP bind attempt comes from a plugin in a secure or an + insecure origin. + + + + + nator@chromium.org + rayankans@chromium.org + + Records the number of `periodicsync` events which were fired in a batch. A + batch is defined as the set of `periodicsync` events dispatched at the same + time by the BackgroundSyncManager. Periodic syncs usually run in a batch. + + + + + nator@chromium.org + rayankans@chromium.org + + Records whether the fired `periodicsync` events upon completion orginated + from a background wakeup task or the foreground. + + + + + nator@chromium.org + rayankans@chromium.org + + Time taken to execute a batch of periodicsync events. A batch is defined as + the set of `periodicsync` events dispatched at the same time by the + BackgroundSyncManager. Periodic syncs often run in a batch. + + + + + fbeaufort@chromium.org + media-dev@chromium.org + + Records Picture-in-Picture window control buttons pressed by user (basically + everything except user tap gestures). + + + + + fbeaufort@chromium.org + media-dev@chromium.org + + Records Picture-in-Picture window control user tap gestures. + + + + + + Replaced by PLT.iOS.BrowserInitiatedPageLoadTime2 as of M92, in order to use + more granular buckets above 10 seconds. + + djean@chromium.org + ajuma@chromium.org + + Page load time for Browser-initiated navigations. + + Browser-initiated navigations include all navigations initiated by + interacting with Chrome's UI elements, except for back/forward navigations. + Specifically, typing a URL into the omnibox, tapping the reload button, + loading a bookmark, and loading a page from the reading list (including when + offline) are all considered browser-initiated. Additionally, background + loads for prerendering and reading-list offline sync are also + browser-initiated, as is a reload triggered by switching to a tab whose + WKWebView renderer process was killed by the OS. + + This is recorded for successful main-frame navigations (that is, navigations + that don't result in the browser displaying an error page). The recorded + value measures the time from the navigation request being sent to the + renderer process until all frames have fired their load events. For + background loads, the same interval is measured while the page loads and + fires load events in the background; the metric is not recorded again if the + background-loaed page is later displayed in the foreground. + + Page loads that require network fetches will be slower than those where all + necessary resources are already present in WebKit's HTTP cache. Reload + navigations where all cached resources are up-to-date are particularly fast, + since they don't require any rendering updates either. + + It is possible for a user to interact with a page before all load events + have been fired, so the recorded value should not be interpreted as the time + before the page becomes interactive. + + Most things that affect user-perceived page load time on iOS are within + WebKit, not within Chromium/Chrome code. To assess whether a change in this + metric is caused by a WebKit change, split by OS version. WebKit changes + always come with an OS version change. Obviously, aside from WebKit and + Chromium changes, this metric can move due to exogenous factors such as + changes in what type of web page people are looking at or changes in the + implementation of popular websites. + + Any navigation that is not considered browser-initiated is considered to be + renderer-initiated (see PLT.iOS.RendererInitiatedPageLoadTime). + + + + + djean@chromium.org + ajuma@chromium.org + + Page load time for Browser-initiated navigations. + + Browser-initiated navigations include all navigations initiated by + interacting with Chrome's UI elements, except for back/forward navigations. + Specifically, typing a URL into the omnibox, tapping the reload button, + loading a bookmark, and loading a page from the reading list (including when + offline) are all considered browser-initiated. Additionally, background + loads for prerendering and reading-list offline sync are also + browser-initiated, as is a reload triggered by switching to a tab whose + WKWebView renderer process was killed by the OS. + + This is recorded for successful main-frame navigations (that is, navigations + that don't result in the browser displaying an error page). The recorded + value measures the time from the navigation request being sent to the + renderer process until all frames have fired their load events. For + background loads, the same interval is measured while the page loads and + fires load events in the background; the metric is not recorded again if the + background-loaed page is later displayed in the foreground. + + Page loads that require network fetches will be slower than those where all + necessary resources are already present in WebKit's HTTP cache. Reload + navigations where all cached resources are up-to-date are particularly fast, + since they don't require any rendering updates either. + + It is possible for a user to interact with a page before all load events + have been fired, so the recorded value should not be interpreted as the time + before the page becomes interactive. + + Most things that affect user-perceived page load time on iOS are within + WebKit, not within Chromium/Chrome code. To assess whether a change in this + metric is caused by a WebKit change, split by OS version. WebKit changes + always come with an OS version change. Obviously, aside from WebKit and + Chromium changes, this metric can move due to exogenous factors such as + changes in what type of web page people are looking at or changes in the + implementation of popular websites. + + Any navigation that is not considered browser-initiated is considered to be + renderer-initiated (see PLT.iOS.RendererInitiatedPageLoadTime2). + + + + + + Replaced by PLT.iOS.RendererInitiatedPageLoadTime2 as of M92, in order to + use more granular buckets above 10 seconds. + + djean@chromium.org + ajuma@chromium.org + + Page load time for Renderer-initiated navigations. + + Renderer-initiated navigations are all main-frame navigations that are not + considered to be browser-initiated (see + PLT.iOS.BrowserInitiatedPageLoadTime). Specificially, tapping on links + within web content, navigations triggered by JavaScript, navigations for + restoring tabs on launch, and back/forward navigations are all considered to + be renderer-initiated. + + This is recorded for successful main-frame navigations (that is, navigations + that don't result in the browser displaying an error page). However, this is + not recorded when WebKit handles a back/forward navigation using its page + cache (that is, when the DOM representation of the destination is still + loaded in memory from a recent visit), since we don't get the full set of + WebKit navigation callbacks for such navigations. The recorded value + measures the time from the browser process being notified that the + navigation has started, to all frames having fired their load events. The + time that the browser process is notified that the navigation has started is + usually just after a network request is sent, but can be later for + back/forward navigations on sites that use pushState to generate history + entries; in the latter case, the navigation may be almost finished by the + time the browser finds out about it. As such, depending on the cause of the + navigation, different things are measured. Some types will be very fast + (e.g., pushState/replaceState) and others (such as tapping on links) will be + slower. Furthermore, navigations that require network fetches will be slower + than those where all necessary resources are already present in WebKit's + HTTP cache. + + It is possible for a user to interact with a page before all load events + have been fired, so the recorded value should not be interpreted as the time + before the page becomes interactive. + + Most things that affect user-perceived page load time on iOS are within + WebKit, not within Chromium/Chrome code. To assess whether a change in this + metric is caused by a WebKit change, split by OS version. WebKit changes + always come with an OS version change. Obviously, aside from WebKit and + Chromium changes, this metric can move due to exogenous factors such as + changes in what type of web page people are looking at or changes in the + implementation of popular websites. + + + + + djean@chromium.org + ajuma@chromium.org + + Page load time for Renderer-initiated navigations. + + Renderer-initiated navigations are all main-frame navigations that are not + considered to be browser-initiated (see + PLT.iOS.BrowserInitiatedPageLoadTime). Specificially, tapping on links + within web content, navigations triggered by JavaScript, navigations for + restoring tabs on launch, and back/forward navigations are all considered to + be renderer-initiated. + + This is recorded for successful main-frame navigations (that is, navigations + that don't result in the browser displaying an error page). However, this is + not recorded when WebKit handles a back/forward navigation using its page + cache (that is, when the DOM representation of the destination is still + loaded in memory from a recent visit), since we don't get the full set of + WebKit navigation callbacks for such navigations. The recorded value + measures the time from the browser process being notified that the + navigation has started, to all frames having fired their load events. The + time that the browser process is notified that the navigation has started is + usually just after a network request is sent, but can be later for + back/forward navigations on sites that use pushState to generate history + entries; in the latter case, the navigation may be almost finished by the + time the browser finds out about it. As such, depending on the cause of the + navigation, different things are measured. Some types will be very fast + (e.g., pushState/replaceState) and others (such as tapping on links) will be + slower. Furthermore, navigations that require network fetches will be slower + than those where all necessary resources are already present in WebKit's + HTTP cache. + + It is possible for a user to interact with a page before all load events + have been fired, so the recorded value should not be interpreted as the time + before the page becomes interactive. + + Most things that affect user-perceived page load time on iOS are within + WebKit, not within Chromium/Chrome code. To assess whether a change in this + metric is caused by a WebKit change, split by OS version. WebKit changes + always come with an OS version change. Obviously, aside from WebKit and + Chromium changes, this metric can move due to exogenous factors such as + changes in what type of web page people are looking at or changes in the + implementation of popular websites. + + + + + Please list the metric's owners. Add more owner tags as needed. + + This time is based on the NavigationTiming spec and is a more accurate + version of PLT.RequestToStart. Start: requestStart. Request: + navigationStart. + + + + + Please list the metric's owners. Add more owner tags as needed. + + This time is based on the NavigationTiming spec and is a more accurate + version of PLT.StartToCommit. Start: requestStart. Commit: responseStart. + + + + + Please list the metric's owners. Add more owner tags as needed. + + This time is based on the NavigationTiming spec and is a more accurate + version of PLT.StartToFinish. Start: requestStart. Finish: loadEventEnd. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Time from "request" to "start." "Request"== + time when user requested document. "Start"== time when renderer + requested load of document, after any unload of last document. + + + + + dpad@google.com + cros-peripherals@google.com + + Acceleration setting for pointing sticks (typically TrackPoints, the + miniature red joysticks found in some laptop keyboards). Only reported on + Chrome OS. + + Expired from 2021-04-01 to M113. May be missing some data. + + + + + dpad@google.com + cros-peripherals@google.com + + Sensitivity value for pointing sticks (typically TrackPoints, the miniature + red joysticks found in some laptop keyboards). Only reported on Chrome OS. + + Expired from 2021-04-01 to M113. May be missing some data. + + + + + dpad@google.com + cros-peripherals@google.com + + Setting for the primary button of pointing sticks (typically TrackPoints, + the miniature red joysticks found in some laptop keyboards). Only reported + on Chrome OS. + + Expired from 2021-04-01 to M113. May be missing some data. + + + + + + Removed 2022-09. + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + The body size of each prefetched signed exchanges in + PrefetchedSignedExchangeCache which is attached to a frame. Recorded when + the frame is deleted or is navigated to different document. + + + + + + Removed 2022-09. + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + The total body size of prefetched signed exchanges in + PrefetchedSignedExchangeCache which is attached to a frame. This metric is + recorded when the frame is deleted or is navigated to different document. + This is not recorded when there is no prefetched signed exchanges. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + The number of prefetched signed exchanges in PrefetchedSignedExchangeCache + which is attached to a frame. This metric is recorded when the frame is + deleted or is navigated to different document. This is not recorded when + there is no prefetched signed exchanges. + + + + + + Removed 2022-09. + + ksakamotoro@chromium.org + webpackage-dev@chromium.org + + The total headers size of prefetched signed exchanges including outer + response headers and inner response headers in PrefetchedSignedExchangeCache + which is attached to a frame. This metric is recorded when the frame is + deleted or is navigated to different document. This is not recorded when + there is no prefetched signed exchanges. + + + + + + Expired in M77, later removed. + + holte@chromium.org + The status when loading PersistedLogs from Prefs. + + + + csharp@chromium.org + + Enumeration of errors that happened when reading Preferences files. + + + + + + Obsoleted 02/2021. + + sophiechang@chromium.org + mcrouse@chromium.org + tbansal@chromium.org + + Blocked previews due to Cache-Control:no-transform directive. + + + + + + Not even logged by code. Obsolete in 09/2020. + + ryansturm@chromium.org + + The actual data used for a page load using a preview optimization. + + + + + + Not even logged by code. Obsolete in 09/2020. + + ryansturm@chromium.org + + The estimated amount that the content was inflated for a page load using a + previews optimization. Recorded when a page load using a previews + optimization inflates the data used. + + + + + + Not even logged by code. Obsolete in 09/2020. + + ryansturm@chromium.org + + The estimated percent of data used that a page load would have otherwise + cost for a page load using a previews optimization. Recorded when a page + load using a previews optimization inflates the data used. + + + + + + Obsolete as of 09/2020. + + ryansturm@chromium.org + + The estimated data savings for a page load using a previews optimization. + Recorded when a page load using a previews optimization reduces the data + used. + + + + + + Obsolete as of 09/2020. + + ryansturm@chromium.org + + The estimated percent of data savings for a page load using a previews + optimization. Recorded when a page load using a previews optimization + reduces the data used. + + + + + + Obsoleted 02/2021. + + tbansal@chromium.org + dougarnett@chromium.org + + Records true when a URL matches the regex of denylist. Recorded at the time + of navigation commit. + + + + + + Obsoleted 02/2021. + + tbansal@chromium.org + dougarnett@chromium.org + + Records true when a redirect loop is detected when defer all script is in + use. Recorded at the time of navigation commit. + + + + + + Obsoleted 02/2021. + + ryansturm@chromium.org + + When evaluating whether to show a user a preview, the preview might be + disallowed for various reasons. If the preview is disallowed, then this + reports the reason for disallowing it. If the preview is allowed, then this + generally reports "Previews Allowed". It may instead report + "Previews Allowed without server rule check" for a preview that + expects to check server rules but they are not enabled. Recorded throughout + navigation at the beginning of each navigation, after each redirect, and + during commit. + + + + + + Obsoleted 02/2021. + + robertogden@chromium.org + src/chrome/browser/data_saver/OWNERS + + User interactions with the HTTPS Server Previews notification InfoBar. + + + + + + Obsoleted 02/2021. + + robertogden@chromium.org + User interactions with the Previews Android Omnibox UI. + + + + + Obsoleted 02/2021. + + sophiechang@chromium.org + mcrouse@chromium.org + + Whether the user chose to reload the original page when shown a preview. + + + + + + Not even logged by code. Obsolete in 09/2020. + + ryansturm@chromium.org + + The estimated content length of a page load using a preview optimization. + + + + + + Obsoleted 02/2021. + + robertogden@chromium.org + Records why the page load ended on a given preview type. + + + + + Obsolete as of 11/2020. + + dougarnett@chromium.org + mcrouse@chromium.org + tbansal@chromium.org + + Records the effective connection type of a navigation that triggers a + preview. This is captured at commit time but uses the effective connection + type from the beginning of the navigation. + + + + + + + forshaw@chromium.org + wfh@chromium.org + + Errors returned while launching sandboxed process on Windows. For decoding + error code please refer to http://goo.gl/fJJiAv. + + + + + + + wfh@chromium.org + forshaw@chromium.org + + Errors returned while launching lowbox enabled sandboxed process on Windows. + For decoding error code please refer to http://goo.gl/fJJiAv. + + Warning: this histogram expired in M87, and was revived in M103; data may be + missing. + + + + + ajgo@chromium.org + src/sandbox/policy/win/OWNERS + + Duration of StartSandboxedProcess() including the time Windows spends + starting the suspended process. Emitted on a successful launch of a + sandboxed process on Windows. Only emitted where a high-resolution timer is + available (see Windows.HasHighResolutionTimeTicks). + + + + + + Code removed 2021/06. + + rdevlin.cronin@chromium.org + + The action taken by the user when the "proxy overridden" extension + warning bubble is shown. Logged immediately after the action is taken. + + + + + knollr@chromium.org + peter@chromium.org + + Time from receiving a push message until we checked its origin against + SafeBrowsing. Logged for each received message after the origin abuse check + completes if the origin has notification permissions. + + + + + knollr@chromium.org + peter@chromium.org + + Time from receiving a push message until just before firing the push event + on the Service Worker registration. This might be delayed when a Service + Worker receives multiple messages in a short period as they are handled in + series. Logged just before firing the push event for a message. + + + + + peter@chromium.org + knollr@chromium.org + + When a Service Worker receives a push message, this records whether the + overall operation was successful, or otherwise the type of error + encountered. + + + + + peter@chromium.org + knollr@chromium.org + + When a webpage asks for details about its current push messaging + registration, this records whether the request is successful, or otherwise + the type of error encountered. + + + + + knollr@chromium.org + peter@chromium.org + + Time from receiving a push message until we finished handling it. This + includes the time spent in the Service Worker to handle the push event. + Logged after the push event has been handled. + + + + + peter@chromium.org + rayankans@chromium.org + knollr@chromium.org + + When a Service Worker receives a pushsubscriptionchange event, this records + whether the overall operation was successful, or otherwise the type of error + encountered. + + + + + peter@chromium.org + knollr@chromium.org + + Whenever a Service Worker receives a push message, this records whether + Chrome is completely running in the background. A successful report means + that the message was received when Chrome was in complete background mode, + without UI, while a failure means it was in some other state: in background + with some apps running, showing browser windows, etc. + + + + + peter@chromium.org + knollr@chromium.org + + When a webpage registers for push messaging, this records whether the + request is successful, or otherwise the type of error encountered. + + + + + peter@chromium.org + knollr@chromium.org + + When a message arrives for a lazy subscription and Chrome isn't in the + foreground, it is persisted on disk until next time Chrome is in the + foreground. This histogram measures the time spent in reading and replaying + persisted messages when Chrome goes to the foreground. + + + + + peter@chromium.org + knollr@chromium.org + + When unregistering a legacy non-InstanceID push messaging subscription, this + records the result returned by the GCMDriver (note that exceeding the + maximum number of retries due to network errors is logged as SERVER_ERROR). + + + + + peter@chromium.org + knollr@chromium.org + + When unregistering an InstanceID push messaging subscription, this records + the result returned from deleting the InstanceID (note that exceeding the + maximum number of retries due to network errors is logged as SERVER_ERROR). + + + + + peter@chromium.org + knollr@chromium.org + + When unregistering a website from push messaging, this records the reason + why it is being unregistered. + + + + + peter@chromium.org + knollr@chromium.org + + When unregistering a website from push messaging, this records whether the + request is successful, or otherwise the type of error encountered. + + + + + peter@chromium.org + knollr@chromium.org + + When a Service Worker receives a push message, this records whether it + showed user-visible UX (like a notification), or whether we showed a forced + notification on its behalf. + + + + + knollr@chromium.org + peter@chromium.org + + Records the number of visible notifications for a Service Worker when it + receives a push message. Counted and recorded after handling the push event. + + + + + + Removed in M90 + + holte@chromium.org + Counts how often daily interval events were fired. + + + + + Removed in M90 + + holte@chromium.org + + For each Rappor log that is discarded, the reason that it was discarded. + + + + + + Removed in M90 + + holte@chromium.org + Net error codes for failed Rappor uploads. + + + + + Removed in M90 + + holte@chromium.org + + Success or errors encountered when loading Rappor cohort pref. + + + + + + Removed in M90 + + holte@chromium.org + + Success or errors encountered when loading Rappor secret pref. + + + + + + Removed in M90 + + holte@chromium.org + + For each upload to the Rappor server, log the response received from the + server. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The state of the bookmark bar recorded {Frequency} a user adds to the + reading list. (Desktop only). + + + + + + + + + gambard@chromium.org + bling-team@google.com + + The action chosen by the user after displaying the reading list context + menu. + + + + + gambard@chromium.org + bling-team@google.com + + Number of tries before the download of the entry is successful. + + + + + gambard@chromium.org + bling-team@google.com + Final status of the download of a reading list entry. + + + + gambard@chromium.org + bling-team@google.com + + Time since the first read of the reading list entry getting deleted. 0 if it + has never been read. + + + + + gambard@chromium.org + bling-team@google.com + Whether the displayed version is the offline one. + + + + gambard@chromium.org + bling-team@google.com + + Time since the creation of the read reading list entry getting deleted. + + + + + thegreenfrog@chromium.org + olivierrobin@google.com + + Time since the creation of the read reading list entry being read for the + first time. + + + + + gambard@chromium.org + bling-team@google.com + Number of read entries in reading list. + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + Records whether the reading list and bookmarks sync states match on startup + when not in Incognito or guest mode (Desktop only). + + + + + gambard@chromium.org + bling-team@google.com + + Time since the creation of the unread reading list entry getting deleted. + + + + + gambard@chromium.org + bling-team@google.com + Number of unread entries in reading list. + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + Records the time taken to load the Read Later WebUI and render (at least) + the initial list of entries. This is roughly equivalent to 'time to first + meaningful paint' for the Read Later UI. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The amount of time between the RenderFrameHost StartProvisionalLoad event + and the RenderFrameHost DocumentOnLoadCompleted event for the Read Later + WebUI page. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The amount of time between the RenderFrameHost StartProvisionalLoad and + DidFinishDocumentLoad events for the Read Later WebUI page. + + + + + + Deprecated as of 2021/02. Metric is no longer needed. + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The time taken for the WebUI in the renderer to receive the full list of + entries for the current user profile. This is measured as the time from when + the data was first requested by the WebUI to when the data was received by + the WebUI. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + Records the amount of time between when a reading list bubble is opened and + when it is closed. It does so by recording the difference in time between + when the the hosting WebUIBubbleDialogView's Widget is first created and + when the widget is destroyed. This is logged on Desktop only. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + The number of {ReadStatus} items in the reading list. Recorded {Variation}. + + + + + + + + + + + + + robertshield@chromium.org + Log each stage of a recovery component event. + + + + + Removed January 2021. + + + + tby@chromium.org + charleszhao@chromium.org + + Records situations that can occur during the configuration and + initialization of a RecurrenceRanker. + + + + + + Removed January 2021. + + + + tby@chromium.org + charleszhao@chromium.org + + Whether the conversion of a JSON config for a RecurrenceRanker succeeded for + failed. + + + + + + Removed January 2021. + + + + tby@chromium.org + charleszhao@chromium.org + + Reports the result of a save or load of a RecurrenceRanker model. + + + + + + Removed January 2021. + + + + tby@chromium.org + charleszhao@chromium.org + + Reports when the functions of a RecurrenceRanker model are used. + + + + + awillia@chromium.org + miketaylr@chromium.org + victortan@chromium.org + + Count of requests restarted or the reason why not restarted when reducing + accept-language HTTP header. + + + + + awillia@chromium.org + miketaylr@chromium.org + victortan@chromium.org + + The latency (in milliseconds) to clear the reduce accept language for a + given origin in the language negotiation cache. This histogram is recorded + when clearing persisted value from PrefService. + + + + + awillia@chromium.org + miketaylr@chromium.org + victortan@chromium.org + + The latency (in microseconds) to fetch the reduce accept language for a + given origin in the language negotiation cache. This histogram is recorded + when fetching persisted value from PrefService. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + awillia@chromium.org + miketaylr@chromium.org + victortan@chromium.org + + The latency (in milliseconds) to store the reduced accept language header + value for a given origin in the language negotiation cache. This histogram + is recorded when navigation responses are being processed. + + + + + awillia@chromium.org + miketaylr@chromium.org + victortan@chromium.org + + Count of reduce accept language that need to be persisted to the disk. + Recorded by the renderer. This histogram is recorded when navigation + responses are being processed. + + + + + + Removed in M90. + + ayaelattar@chromium.org + grt@chromium.org + + The result of an attempt to show a relaunch notification dialog. + + + + + + Removed in January 2022. + + engedy@chromium.org + + For each load in a frame, records the number of interface requests to + RenderFrame::GetRemoteInterfaces that arrived to the RenderFrameHostImpl + after the RFHI had already committed the next cross-document navigation. + + This means that |document_scoped_interface_provider_binding_| was already + unbound at the time from the interface connection that had been used to + service RenderFrame::GetRemoteInterface for the previous load, so those + interface requests are dropped. This histogram measures how often, if at + all, that happens in practice. + + + + + ccameron@chromium.org + etienneb@chromium.org + + Time retrieve the fallback fonts on the system used for + RenderTextHarfBuzz::ShapeRuns. This metric is known to be quite slow on bad + cases. + + + + + ccameron@chromium.org + etienneb@chromium.org + + Time retrieve the preferred fallback font on the system used for + RenderTextHarfBuzz::ShapeRuns. Fallback font is determined based on the + input text and locale. + + + + + ccameron@chromium.org + etienneb@chromium.org + + This metric records the fallback font mechanism required to complete the + shaping of a text. + + + + + ccameron@chromium.org + etienneb@chromium.org + + Time to perform RenderTextHarfBuzz::ShapeRuns with retrieved the fallback + fonts. This metric is known to be quite slow on bad cases. + + + + + gabolvr@google.com + droger@chromium.org + + Count the clicks and displays of renderer view context menu item Open Link + as Profile, as well as Open Link in Incognito Window for comparison. If Open + Link as Profile is a submenu, it is counted as displayed even if the submenu + is not open, and only counted one time regardless the amount of items in the + submenu. + + + + + avi@chromium.org + edwardjung@chromium.org + mpearson@chromium.org + Count of renderer view context menu items shown. + + + + + + avi@chromium.org + mpearson@chromium.org + chrome-analysis-team@google.com + + Count of renderer view context menu items (Only commands now) used. + + The user action RenderViewContextMenu.Used.IDC_CONTENT_CONTEXT_SEARCHWEBFOR + is also logged in case that IDC_CONTENT_CONTEXT_SEARCHWEBFOR is logged to + this histogram. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + yhirano@chromium.org + src/net/reporting/OWNERS + + The number of NEL policies loaded from the store. This is recorded when the + NetworkErrorLoggingService requests a load from the backing store, which + typically happens upon the first network request after startup. + + + + + yhirano@chromium.org + src/net/reporting/OWNERS + + The number of NEL policies loaded from the store. This is recorded when the + NetworkErrorLoggingService requests a load from the backing store, which + typically happens upon the first network request after startup. + + + + + yhirano@chromium.org + src/net/reporting/OWNERS + + The number of Reporting endpoint groups loaded from the store. This is + recorded when the ReportingCache requests a load from the backing store, + which happens upon receipt of the first Report-To header or queued report + after startup. + + + + + yhirano@chromium.org + src/net/reporting/OWNERS + + The number of Reporting endpoints loaded from the store. This is recorded + when the ReportingCache requests a load from the backing store, which + happens upon receipt of the first Report-To header or queued report after + startup. + + + + + yhirano@chromium.org + src/net/reporting/OWNERS + + The time (ms) taken to initialize the Reporting and NEL DB. This is recorded + when the DB is initialized, which typically occurs upon the first network + request after startup. + + + + + merkulova@chromium.org + + Records the number of times the factory reset dialog was shown. Grouped by + the viewtype. + + + + + tbansal@chromium.org + + Records if the loading of a resource was blocked because the resource URL + matched the resource loading hints. Recorded every time a resource load is + requested. + + + + + tbansal@chromium.org + + Records the resource load priority of a resource when its loading is not + blocked due to the resource loading hints. Recorded every time a resource + load is requested, and the load is not blocked due to the resource loading + hints. + + + + + tbansal@chromium.org + + Records the resource load priority of a resource when its loading is blocked + due to the resource loading hints. Recorded every time a resource load is + requested and the resource load is blocked because the resource URL matched + the resource loading hints. + + + + + tbansal@chromium.org + dougarnett@chromium.org + + Records if the resource patterns were available at the time of page commit + if the committed previews type was RESOURCE_LOADING_HINTS and the navigation + was redirected. This is a subset of the ResourcePatternsAvailableAtCommit + histogram. + + + + + + Obsoleted M85. + + tbansal@chromium.org + + Records how long after the start of a delayable resource request, a + non-delayable resource request arrived. This is the duration of time that + the delayable request should have been queued for so as to avoid any network + contetion with later-arriving non-delayable requests. + + + + + + Obsoleted M89. + + tbansal@chromium.org + dougarnett@chromium.org + + The duration of time between the end of a non-delayable resource request to + the start of the next non-delayable resource request. Recorded at the start + of all non-delayable requests that are preceeded by at least one completed + non-delayable request in the same resource scheduler client. Recorded only + when a non-delayable request is NOT in-flight. + + + + + tbansal@chromium.org + dougarnett@chromium.org + + The duration of time between the start of a non-delayable resource request + to the start of the next non-delayable resource request. Recorded at the + start of all non-delayable requests that are preceeded by at least one + started non-delayable request in the same resource scheduler client. + Recorded only when a delayable request is in-flight. + + + + + tbansal@chromium.org + dougarnett@chromium.org + + Within a request's lifetime, the peak observed queueing delay tells whether + the request was affected by the network congestion. Records the maximum + network queueing delay when the given request was in-flight. This is emitted + when the request is completed. + + + + + tbansal@chromium.org + + The amount of time the ResourceScheduler queued a request. Recorded in + separate histograms based on the request loading priority at the time the + request was dequeued. + + + + + + Removed Feb 2022. + + eseckler@chromium.org + khokhlov@chromium.org + skyostil@chromium.org + + Records the duration of the period when some low-priority requests were + throttled due to weak radio signal. Only supported on Android. + + + + + + + + + wzang@chromium.org + + Record if updating |should_send_rlz_ping| in RW_VPD is successful within the + maximum retry counts. + + + + + mpolzer@google.com + crisguerrero@chromium.org + chromeos-commercial-remote-management@google.com + + The result when attempting to restore data during a ChromeOS rollback. + + + + + mpolzer@google.com + crisguerrero@chromium.org + chromeos-commercial-remote-management@google.com + + The result when attempting to save data during a ChromeOS rollback. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records results of SafeBrowsing download url check. Warning: this histogram + was expired from M78 to M91. Data may be missing. + + This metric is used to populate a dashboard on go/crsb-site. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + The time it takes for SafeBrowsing to check a download url. Warning: this + histogram was expired from M78 to M91. Data may be missing. + + + + + vakh@google.com + + Response or error codes from the SafeBrowsing service. Logged after a + GetHash request finishes to capture the response code or error code for that + call. Split out from SB2.GetHashErrorResponseOrErrorCode in M49. + + + + + felt@chromium.org + + The time between when we show the SafeBrowsing phishing interstitial and the + user navigating away by for example, closing the tab, clicking the browser + back button or typing another URL in the address bar. + + + + + felt@chromium.org + + The time between when we show the SafeBrowsing phishing interstitial and the + user expanding the "see more info" section of the page. (Only + applies to field trial version 2 of the interstitial.) + + + + + felt@chromium.org + + The time between when we show the SafeBrowsing phishing interstitial and the + user clicking on the learn more link. + + + + + felt@chromium.org + + The time between when we show the SafeBrowsing phishing interstitial and the + user clicking on the proceed link. + + + + + felt@chromium.org + + The time between when we show the SafeBrowsing phishing interstitial and the + user clicking on the report error link. + + + + + felt@chromium.org + + The time between when we show the SafeBrowsing phishing interstitial and the + user clicking on the big green back button. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Count of how many URLs were actually checked vs skipped via + RemoteSafeBrowsingDatabaseManager because the scheme is not supported by + Safe Browsing. Incremented each time a resource load is initiated. + + + + + vakh@chromium.org + csharrison@chromium.org + chrome-counter-abuse-alerts@google.com + + The microseconds between sending the Safe Browsing API call and receiving + the response. Logged in java code and does not include any thread hops or + extra work. Note that this does include task queue time to respond to the + IPC (and that queue time is often non-trivial). + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Latency of URL-classification API calls from Chrome via + RemoteSafeBrowsingDatabaseManager, logged per-request. This includes the + time to go through JNI, check the URL, and return the result and includes + several thread hops betwetween IO and UI threads. The resource-load will not + necessarily be delayed this much (see SB2.Delay for that). + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + The status code provided by GmsCore if it is unable to respond to a URL + check request due to incorrect initialization, not being ready, etc. Logged + on each URL check that hits the internal error condition. The total number + of these should add up to the INTERNAL_ERROR reports under + SB2.RemoteCall.Result. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Result of URL-classification API calls from Chrome via + RemoteSafeBrowsingApiHandler. Logged after each URL is judged safe/not-safe, + or hits a deadline. The INTERNAL_ERROR cases are further classified under + SB2.RemoteCall.InternalErrorStatusCode. + + + + + + Removed from code Jul 2021. + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + The threat sub-type annotated for URLs classified as PHA via remote calls + through RemoteSafeBrowsingApiHandler. "PHA" classifications + generate "malware" interstitials. + + + + + + Removed from code Jul 2021. + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + The threat sub-type annotated returned for URLs classified as social + engineering via remote calls through RemoteSafeBrowsingApiHandler. + "Social engineering" classifications generate "phishing" + interstitials. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Request destinations of resources that were inspected by Safe Browsing in + the SafeBrowsingResourceThrottle. kDocument is for a main resource request + in a main frame or a Portal. Subframe requests are a combination of kIframe + and kFrame. + + + + + + Removed from code in M94. Replaced with SB2.RequestDestination. + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Resource types of resources that were inspected by Safe Browsing in the + SafeBrowsingResourceThrottle. + + Starting M89, this metric is derived from + network::mojom::RequestDestination. kPrefetch, kFavicon, kXhr, kPing, + kNavigationPreloadMainFrame, and kNavigationPreloadSubFrame are all mapped + to kSubResource. + + + + + + Removed 10-2021 due to lack of use. + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The time it takes for the TwoPhaseUploader to complete. This is logged on + every upload. + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + The type of incident discarded by the safe browsing incident reporting + service as a result of profile or service destruction. + + + + + caitkp@chromium.org + The result of deleting a profile's download metadata file. + + + + caitkp@chromium.org + The result of reading a profile's download metadata file. + + + + caitkp@chromium.org + The result of writing a profile's download metadata file. + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + The type of incident given to the safe browsing incident reporting service + but dropped as a result of not participating in safe browsing. + + + + + caitkp@google.com + + The elapsed time to collect environmental data for a safe browsing incident + report. + + + + + caitkp@google.com + + The elapsed time to find the most recent binary download from all loaded + profiles when creating a safe browsing incident report. + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + The type of incident included in an incident report by the safe browsing + incident reporting service. + + + + + caitkp@google.com + + The elapsed time between two successive incidents collated into the same + incident report by the safe browsing incident reporting service. + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + The type of incident pruned by the safe browsing incident reporting service + as a result of not having a matching binary download. + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + The type of incident pruned from a report in the safe browsing incident + reporting service as a result of having previously been reported. + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + The type of incident received by the safe browsing incident reporting + service. + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + The size, in bytes, of a safe browsing incident report. + + + + caitkp@google.com + + The result of an attempted report upload by the safe browsing incident + reporting service. + + + + + caitkp@google.com + + The elapsed time to verify the binary integrity of chrome.exe. + + + + + caitkp@google.com + + The elapsed time to verify the binary integrity of chrome.dll. + + + + + caitkp@google.com + + The elapsed time to verify the binary integrity of chrome_child.dll. + + + + + caitkp@google.com + + The elapsed time to verify the binary integrity of chrome_elf.dll. + + + + + + Removed 09-2022 due to lack of use and historical stability. + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Measures the total duration (including delay due to retries) of a failed + upload request. This is recorded after the last retry on every failed + upload. + + Warning: This histogram was expired in M91 and restored in M92. Data may be + missing in M91. + + + + + + Removed 09-2022 due to lack of use and historical stability. + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The HTTP response code or net error from each upload attempt. This is + recorded once for each network request made as part of an upload, i.e. if an + upload fails the first time, but a retry succeeds, this metric is recorded + twice. + + Warning: This histogram was expired in M91 and restored in M92. Data may be + missing in M91. + + + + + + Removed 09-2022 due to lack of use and historical stability. + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Counts how many retries were needed to complete the upload request. This is + emitted for every successful upload. + + Warning: This histogram was expired in M91 and restored in M92. Data may be + missing in M91. + + + + + + Removed 09-2022 due to lack of use and historical stability. + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Measures the total duration (including delay due to retries) of a successful + upload request. This is recorded for every successful upload. + + Warning: This histogram was expired in M91 and restored in M92. Data may be + missing in M91. + + + + + + Removed 09-2022 due to lack of use and historical stability. + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The size of the upload request body. This is a combination of the upload + data and metadata. This is recorded once for each upload, regardless of + whether it was successful. + + Warning: This histogram was expired in M91 and restored in M92. Data may be + missing in M91. + + + + + + Removed 09-2022 due to lack of use and historical stability. + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Whether the overall upload request succeeded or not. This is recorded once + for an upload request, regardless of how many retries were needed to + complete the upload. + + Warning: This histogram was expired in M91 and restored in M92. Data may be + missing in M91. + + + + + + + antrim@chromium.org + rsorokin@chromium.org + cros-oac@google.com + + What type of authentication was attempted when the user failed to unlock the + lock screen. + + + + + + + antrim@chromium.org + rsorokin@chromium.org + cros-oac@google.com + The time spent for authentication in case of a failure. + + + + + + antrim@chromium.org + rsorokin@chromium.org + cros-oac@google.com + + What type of authentication was attempted when the user successfully + unlocked the lock screen. + + + + + + + antrim@chromium.org + rsorokin@chromium.org + cros-oac@google.com + The time spent for authentication in case of a success. + + + + + + antrim@chromium.org + rsorokin@chromium.org + cros-oac@google.com + The time spent before the screen locker is ready. + + + + charleszhao@chromium.org + chromeos-platform-power@google.com + + The duration for the screen to be in locked/unlocked state. Recorded inside + ScreenlockMonitor, when the screen lock state changes. + + + + + + + + + jeffreycohen@chromium.org + ellyjones@chromium.org + chrome-sharing-core@google.com + + Records user flow for SendTabToSelf feature. + + Because each bucket represents a different aspect of the flow, it's + important to look at "bucket count", not "bucket + proportion". + + On iOS this was not recorded between M85 and M90, inclusive (see + crbug.com/1204944). + + + + + alemate@chromium.org + + Records result of fetching and parsing OEM customization manifest. See + ServicesCustomizationDocument class for more info. Used only on Chrome OS. + + + + + hanxi@chromium.org + yfriedman@chromium.org + hnakashima@chromium.org + mheikal@chromium.org + + Histogram of how Chrome is launched, either in ServiceManager only mode or + as full browser, as well as either cold start or warm start. See + go/servicification_startup_metrics for more details. + + + + + hanxi@chromium.org + yfriedman@chromium.org + hnakashima@chromium.org + mheikal@chromium.org + + Histogram of how Chrome is launched, either in ServiceManager only mode or + as full browser, as well as either cold start or warm start. See + go/servicification_startup_metrics for more details. The UMA data is cached + in the SharedPreference compared with Servicification.Startup2, which might + lose some data when Chrome is running in the ServiceManager only mode. + + + + + forshaw@chromium.org + + True if the the installer successfully added AppContainer ACEs to the + application directory during installation and updating. + + + + + + + etiennep@chromium.org + grt@chromium.org + + The cumulative disk usage in MB during install or uninstall attempt, + recorded right after the install/uninstall attempt on windows only. + + + + + + Removed in M94. + + grt@chromium.org + src/chrome/installer/OWNERS + + Hit following a successful install or update when the legacy "app + launcher" Clients key is deleted from the registry. + + + + + + Removed in M94. + + grt@chromium.org + src/chrome/installer/OWNERS + + Hit following a successful install or update when the legacy + "binaries" Clients key is deleted from the registry. + + + + + + Removed in M94. + + grt@chromium.org + src/chrome/installer/OWNERS + + Hit following a successful install or update when the COM registration for + the legacy "IExecuteCommand" implementation class key is deleted + from the registry. + + + + + + Removed in M94. + + grt@chromium.org + src/chrome/installer/OWNERS + + Hit following a successful install or update when the legacy + "install-extension" app command is deleted from the registry. + + + + + zmin@chromium.org + grt@chromium.org + Record the status of unpacking the contents of a 7z file. + + + + + + huangs@chromium.org + + The peak page file usage by setup.exe in KB during install or uninstall + attempt. + + + + + + + huangs@chromium.org + + The peak working set size of setup.exe in KB during install or uninstall + attempt. + + + + + + Removed in M100 (expired a long time ago). + + waffles@chromium.org + + Hit following a successful install or update when the legacy profile count + keys / values are deleted from the registry. + + + + + + + grt@chromium.org + ydago@chromium.org + + The final exit-result of the entire run of setup.exe on Windows. + + + + + + Expired on 10/2020. + + dcheng@chromium.org + rsesek@chromium.org + + Tracks whether an attempt to map shared memory was blocked due to too much + shared memory already being mapped into the address space. + + + + + mpearson@chromium.org + + The number of entries in shortcuts backend's database when initialized, + which happens during profile load. + + + + + etienneb@chromium.org + gab@chromium.org + + Time for shutdown initiated by the browser exit menu command. + + + + + etienneb@chromium.org + gab@chromium.org + + Time duration for shutdown initiated by the browser exit menu command. The + duration covers from the shutdown trigger to the deletion of the + BrowserImpl. Note: Android does not have shutdown metrics. + + + + + etienneb@chromium.org + gab@chromium.org + + Time for shutdown initiated by an end session (user logs off, shuts down or + reboots without explicitly exiting). + + + + + etienneb@chromium.org + gab@chromium.org + + Time duration for shutdown initiated by an end session (user logs off, shuts + down or reboots without explicitly exiting).The duration covers from the + shutdown trigger to the deletion of the BrowserImpl. Note: Android does not + have shutdown metrics. + + + + + etienneb@chromium.org + gab@chromium.org + + Time duration for shutdown for a not valid exit. This situation happen when + a chrome process is already running and the process is terminated after the + process singleton rendez-vous. + + + + + etienneb@chromium.org + gab@chromium.org + + Time for shutdown for a not valid exit. This situation happen when a chrome + process is already running and the process is terminated after the process + singleton rendez-vous. The duration covers from the shutdown trigger to the + deletion of the BrowserImpl. Note: Android does not have shutdown metrics. + + + + + etienneb@chromium.org + gab@chromium.org + + Time duration for clean shutdown that are not initiated by the users. The + duration covers from the shutdown trigger to the deletion of the + BrowserImpl. Note: Android does not have shutdown metrics. + + + + + etienneb@chromium.org + gab@chromium.org + + Time duration for clean shutdown that are not catched by other not initiated + by the users. The duration covers from the shutdown trigger to the deletion + of the BrowserImpl. Note: Android does not have shutdown metrics. + + + + + etienneb@chromium.org + gab@chromium.org + + The number of renderer processes that couldn't be shutdown quickly due to + onbeforeunload or onunload listeners. + + + + + etienneb@chromium.org + gab@chromium.org + + The number of renderer processes running when shutdown was called. + + + + + etienneb@chromium.org + gab@chromium.org + + The type of the last shutdown. + + In M-108, the detection of shutdown due to early exit paths changed and + these shutdowns will be moved from the NotValid bucket to the Other bucket. + + + + + etienneb@chromium.org + gab@chromium.org + + The action type that triggered a browser shutdown. The metric is emitted + just after BrowserImpl deletion. Note: Android does not have shutdown + metrics. + + In M-108, the detection of shutdown due to early exit paths changed and + these shutdowns will be moved from the NotValid bucket to the Other bucket. + + + + + etienneb@chromium.org + gab@chromium.org + Time for shutdown for a silent exit. + + + + etienneb@chromium.org + gab@chromium.org + + Time for shutdown for a silent exit. The duration covers from the shutdown + trigger to the deletion of the BrowserImpl. Note: Android does not have + shutdown metrics. + + + + + etienneb@chromium.org + gab@chromium.org + + Time for shutdown initiated by the last browser window being closed. + + + + + etienneb@chromium.org + gab@chromium.org + + Time for shutdown initiated by the last browser window being closed. The + duration covers from the shutdown trigger to the deletion of the + BrowserImpl. Note: Android does not have shutdown metrics. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + Records if the fetched Signed Exchange certchain was served from HTTP cache + or not. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + Reports the result of Signed Exchange cert verification, including success. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + Reports the result of Signed Exchange CT verification, including success. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + Records true when a fallback redirect of Signed Exchange has failed with + ERR_TO_MANY_REDIRECTS. + + Total count of SignedExchange.LoadResult2 should be used as a baseline of + this histogram. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + Records the result of loading a resource from Signed HTTP Exchange. Emitted + each time a response is handled as Signed Exchange. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + The status of OCSP response in Signed Exchange certificates. Reported each + time Signed Exchange's OCSP check is performed. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + Reports the revocation status of OCSP response in Signed Exchange + certificates. Emitted when Signed Exchange's OCSP check is performed, but + only when an up-to-date OCSP response was stapled. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + Records if the prefetched Signed Exchange was properly formatted and passed + verification steps. Reported for each completed SignedExchange prefetch. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + Recorded when Signed Exchange signature was expired. Records the time delta + between current time and signature's "expires" value. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + Recorded when Signed Exchange signature was not yet valid. Records the time + delta between current time and signature's "date" value. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + Reports the result of Signed Exchange signature verification, including + success. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + The amount of time elapsed to fetch certificate chain from certUrl, for + which the fetch has failed. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + The amount of time elapsed to fetch certificate chain from certUrl, for + which the fetch has succeeded. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + The amount of time that elapsed during + SignedExchangeSignatureVerifier::Verify. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + Number of seconds until the Signed Exchange's expiration time. Recorded when + Signed Exchange signature verification is performed, and emitted only for + Signed Exchanges within the validity period. + + + + + awillia@chromium.org + loading-dev@chromium.org + + The behaviour of site isolated javascript code cache recorded for each cache + transaction. It records if the request was serviced and if serviced how it + was serviced for ex: hit, miss, update. + + Warning: this histogram was expired from 2022-07-24 to 2023-04-03; data may + be missing. + + + + + yhirano@chromium.org + loading-dev@chromium.org + + The amount of time spent to fetch a code cache. Recorded only for a JS code + cache, and recorded only when a non-empty code cache is found. + + + + + yhirano@chromium.org + loading-dev@chromium.org + + Represents whether fetching from the code cache succeeded. Recorded when the + code cache result gets available. + + + + + yhirano@chromium.org + loading-dev@chromium.org + + The amount of time that could be saved if we had a memory-backed code cache. + Recorded when the code cache result gets available. + + + + + yhirano@chromium.org + loading-dev@chromium.org + + Represents whether fetching from the memory-backed code cache would succeed. + Recorded when the code cache result gets available. + + + + + yhirano@chromium.org + loading-dev@chromium.org + + Represents the (hypothetical) size of the memory-backed code cache. Recorded + for every 5 minutes. + + + + + awillia@chromium.org + loading-dev@chromium.org + + The behaviour of site isolated web assembly code cache recorded for each + cache transaction during WASM compilation. It records if the request was + serviced and if serviced how it was serviced for ex: hit, miss, update. + + Warning: this histogram was expired from 2020-04-19 to 2023-04-03; data may + be missing. + + + + + + Removed in Oct 2020. + + ericrk@chromium.org + The scale factor of any images drawn by Skia. + + + + + Removed in Oct 2020. + + ericrk@chromium.org + + Whether a call to drawBitmap(Rect) or drawImage(Rect) used the tiled or + non-tiled rasterization path. + + + + + + Removed in Oct 2020. + + ericrk@chromium.org + + The count of images drawn by Skia with a given filter quality. + + + + + + Removed in Oct 2020. + + ericrk@chromium.org + + The path taken by Skia when it attempts to lock a texture for use. + + + + + egdaniel@google.com + bsalomon@google.com + + The number of Skia render passes sent to the GPU during a GrContext::submit + call. The max value that is sent here is 100 so anything in the 100 bucket + actually includes render pass counts of 100+. Though we don't expect to be + reaching 100 render passes often. This is collected each time we submit to + the GPU in Skia. + + + + + egdaniel@google.com + bsalomon@google.com + + The total amount of memory that the GrVkMemoryAllocator used by Skia's + Vulkan backend has allocated. This is GPU memory for VkImages and VkBuffers. + Note that the allocator may be shared with other users outside of Skia and + this amount includes their uses as well. This is collected each time we + request an allocation from Skia. + + + + + egdaniel@google.com + bsalomon@google.com + + The percent of allocated memory that is in use by the GrVkMemoryAllocator + used by Skia's Vulkan backend. This is GPU memory for VkImages and + VkBuffers. Note that the allocator may be shared with other users outside of + Skia and this includes their allocations as well. This is collected each + time we request an allocation from Skia. + + + + + + + pavely@chromium.org + src/chrome/browser/ui/messages/OWNERS + + Records the identifier of a snackbar every time one is shown. + + + + + ianwen@chromium.org + + Records how users interact with the special locale promotion dialog. + + + + + + Removed 2021/10: This histogram was added as part of an investigation that + has been completed. + + timvolodine@chromium.org + chrome-language@google.com + + Whether the Android spellchecking service was available at the start of a + new spellchecking session. Note that the user can disable the Android + spellchecking service in settings, in which case it will show up as not + available in the histogram. + + Warning: for chrome versions 78-88 this histogram was listed as expired, so + for that period the data might be missing or incomplete. + + + + + + Removed 2021/10: This histogram was added as part of an investigation that + has been completed. + + timvolodine@chromium.org + chrome-language@google.com + + Measures the amount of time it takes to receive results from the + spellchecking service on Android. More precisely this is the + SystemClock.elapsedRealtime() between the + SpellCheckerSession.getSentenceSuggestions() and the invocation of the + onGetSentenceSuggestions() callback. + + + + + basiaz@google.com + chrome-language@google.com + + The length of text checked via async checking. + + Warning: this histogram was expired from M83 to M107; data may be missing. + + + + + basiaz@google.com + chrome-language@google.com + + The length of text checked by spellCheck. No replacement suggestions were + requested. + + Warning: this histogram was expired from M83 to M107; data may be missing. + + + + + basiaz@google.com + chrome-language@google.com + + The length of text checked by spellCheck. Replacement suggestions were + requested. + + Warning: this histogram was expired from M83 to M107; data may be missing. + + + + + basiaz@google.com + chrome-language@google.com + + The number of words checked within a session. + + Warning: this histogram was expired from M83 to M107; data may be missing. + + + + + basiaz@google.com + chrome-language@google.com + + The average number of words checked per hour. Sampled every 30 minutes. + Warning: this histogram was expired from M83 to M107; data may be missing. + + + + + basiaz@google.com + chrome-language@google.com + + The number of sessions that started with spellchecking enabled. + + Warning: this histogram was expired from M83 to M107; data may be missing. + + + + + basiaz@google.com + chrome-language@google.com + + The number of misspelled words within a session. + + Warning: this histogram was expired from M83 to M107; data may be missing. + + + + + + Removed 2021/01: the relevant code path isn't used anymore. + + gujen@google.com + chrome-language@google.com + The percentage of misspelled words within checked words. + + + + basiaz@google.com + chrome-language@google.com + + The number of misspelled-but-replaced words within a session. + + Warning: this histogram was expired from M83 to M107; data may be missing. + + + + + + Removed 2021/01: the relevant code path isn't used anymore. + + gujen@google.com + chrome-language@google.com + The percentage of replaced words within misspelled words. + + + + basiaz@google.com + chrome-language@google.com + + The number of occurrences that shows spelling suggestion within a session. + This is incremented and logged when a context menu with spelling suggestions + is shown for a misspelled word. + + Warning: this histogram was expired from M83 to M107; data may be missing. + + + + + groby@chromium.org + chrome-language@google.com + + Whether the user has opted in to asking Google for spelling suggestions. + Recorded both when spelling is initialized and when the preference is + changed. + + + + + yyushkina@google.com + gujen@google.com + chrome-language@google.com + + The elapsed time, in ms, between the moment the SimpleURLLoader starts + downloading the request and the moment the SimpleURLLoader callback is + invoked after the request finishes, whether an error or a success. + + + + + yyushkina@google.com + gujen@google.com + chrome-language@google.com + The HTTP code of Spelling service responses. + + + + yyushkina@google.com + gujen@google.com + chrome-language@google.com + + Describes the results returned by the Spelling service by assigning them to + one of three high-level buckets: request/service error, success with no + suggestions, and success with spelling suggestions. + + + + + gujen@google.com + chrome-language@google.com + + The percentage of replacement executions within suggestion occurrences. + + + + + gujen@google.com + chrome-language@google.com + + Counts how many languages are added to Chrome by the user but are not + supported for spell check (today Chrome only supports a hard-coded list of + locales for spell check). + + This is a measure of the potential impact of adding support for non-Hunspell + locales in the spell check settings. This also helps answer the following + question: should the Chrome spell check settings raise awareness of Windows + language packs and / or link to documentation describing how to install a + Windows language pack? + + This is recorded once during spell check initialization, and then once each + time the user changes their Chrome languages. + + + + + gujen@google.com + chrome-language@google.com + + Of all the currently enabled spell check languages, counts how many are + supported by the different spell checkers (Hunspell and the Windows OS). + + This helps measure the impact and reach of the native spell checker + integration. + + This is recorded once during spell check initialization, and then once each + time the user changes their enabled spell check languages. + + + + + gujen@google.com + chrome-language@google.com + + Measures the time it takes to perform one spell check end to end. The start + time is taken just before invoking Hunspell or the native spell checker (via + Mojo), and the end time is taken just before invoking the Blink spell check + callback. + + This is recorded every time a spell check is performed. + + + + + gujen@google.com + chrome-language@google.com + + Measures the time it takes to generate spelling suggestions when a user + right clicks a misspelled word. The start time is taken just before invoking + Hunspell for the suggestions, and the end time is taken just after the final + suggestion list is constructed. + + This is recorded every time the user opens the context menu on a misspelled + word, but only if the suggestions hadn't been pre-generated (which happens + when all spell check locales are supported by the OS spell checker). + + + + + meacer@chromium.org + + Users can opt in to send reports of certificate validation errors to Google. + This records the outcome whenever Chrome sends such a report. + + Some certificate validation reports might not be received because proxies, + firewalls or other content filters might filter report uploads. + + + + + + Removed in M98 + + estark@chromium.org + + Users can opt in to send reports of certificate validation errors to Google. + This records the error code whenever Chrome fails to send such a report. + + + + + + Expired in M77, code removed in M98 + + estark@chromium.org + + Sites can opt in to Expect CT, a reporting feature that sends a report + whenever a TLS connection does not have valid Certificate Transparency + information associated with it. This records the error code when Chrome + fails to send an Expect CT report. + + + + + + Expired in M77, code removed in M98 + + estark@chromium.org + + Sites can opt in to Expect CT, a reporting feature that sends a report + whenever a TLS connection does not have valid Certificate Transparency + information associated with it. This metric fires whenever Chrome attempts + to send an Expect CT report. + + + + + amanvr@chromium.org + carlscab@chromium.org + woa-performance@google.com + + The histogram is being used to track the number of messages + (content::mojom::FrameHost::SubresourceResponseStarted IPCs) resulting in + no-op (i.e. returning without doing anything) but requiring an IPC vs + messages which revoke exceptions after seeing a good certificate when + calling SSLManager::DidStartResourceResponse() from + RenderFrameHostImpl::SubresourceResponseStarted(). We are not interested in + calls to SSLManager::DidStartResourceResponse() from ReadyToCommitNavigation + since they don't involve mojo messages. From local benchmarks, we observe + this request causes significant IPC chatter, and this histogram will help us + understand it better. + + + + + + Expired in 02/2020. Code removed in M98. + + estark@chromium.org + + Keeps track of various insecure content events, such as loading an HTTP + script from an HTTPS page. + + + + + + Replaced by SSL.MixedContentShown2, which does not log the *WithCertErrors + buckets when the main frame load also has certificate errors. Removed in + 03/2021. + + carlosil@chromium.org + Tracks when mixed content is displayed or run. + + + + carlosil@chromium.org + estark@chromium.org + + Tracks when mixed content is loaded, differentiated by blockable, + optionally-blockable mixed content, and mixed forms. Also tracks when a site + with a valid certificate loads a subresource with an invalid certificate. + Replaced SSL.MixedContentShown. + + + + + carlosil@chromium.org + estark@chromium.org + + Tracks when mixed content is loaded from a "non-webby" URL, e.g. + an external protocol. The security of such URLs is unknown, but they are + exempt from mixed content UI treatment because they don't usually return + data to the browser. This histogram tracks how often such content is loaded + so that we can decide whether to block such resources unless an enterprise + policy is enabled. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Number of accounts available for Single Sign On with the current device, + recorded at the time the SSO Promo is shown. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Action the user takes when the Single Sign On promotion is shown. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Number of times the promotion has been seen on the current device. + + + + + futhark@chromium.org + + Microseconds spent in StyleEngine::InvalidateStyle. Only samples from high + resolution timers are recorded. + + + + + futhark@chromium.org + + Microseconds spent in RebuildLayoutTree called from Document::UpdateStyle. + + + + + futhark@chromium.org + + Microseconds spent in RecalcStyle called from Document::UpdateStyle. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + The net error code recorded when request for a subresource web bundle was + failed. + + + + + horo@chromium.org + webpackage-dev@chromium.org + + The value of content length header of a subresource web bundle, or zero if + the content-length header is missing. + + + + + jbroman@chromium.org + webpackage-dev@chromium.org + + Whether (non-standard) JSON comments occur in a webbundle script element. + Logged each time it is parsed as valid JSON, potentially twice due to, e.g., + the preload scanner. + + + + + horo@chromium.org + webpackage-dev@chromium.org + The result of loading subresource web bundles. + + + + horo@chromium.org + webpackage-dev@chromium.org + + The max memory usage per renderer process for subresource web bundles which + are kept in the network process's memory. Recorded when all the subresource + web bundles for the renderer process are released. + + + + + hayato@chromium.org + webpackage-dev@chromium.org + + The counts of Web Bundles origin types requested by Subresource Loading with + Web Bundles. Recorded when a script element whose type is webbundle is + inserted into a document. + + + + + horo@chromium.org + webpackage-dev@chromium.org + + The received data size of a subresource web bundle. Recorded when received + all the body of the subresource web bundle. + + + + + ksakamoto@chromium.org + webpackage-dev@chromium.org + + The number of resources contained in a web bundle. Recorded when bundle + metadata is received and parsed successfully. + + + + + mathp@chromium.org + + The counts of network error codes encountered by SuggestionsService when an + attempt to fetch suggestions from the server fails. + + + + + mathp@chromium.org + + The counts of HTTP response codes encountered by SuggestionsService when + attempting to fetch suggestions from the server. + + + + + mathp@chromium.org + + The latency of a SuggestionsService fetch that results in a success + response. + + + + + + Removed some time before 10/2020. + + siggi@chromium.org + + Number of URLs present in the Suggestions local blacklist when the + Suggestions service is created. + + + + + mathp@chromium.org + + The counts of response states (such as empty or invalid) encountered by + SuggestionsService when attempting to fetch suggestions from the server. + + + + + + The corresponding feature was removed. + + minch@chromium.org + omrilio@chromium.org + + Drag an app window from top in tablet mode will result in different window + states. Logged when the app drag ended to record the window end state. + + + + + + The corresponding feature was removed. + + minch@chromium.org + omrilio@chromium.org + + The number of the action that drag an app window from top in tablet mode. + Logged when the TabletModeController is destructed, which means the user + session is ended. + + + + + + The corresponding feature was removed. + + minch@chromium.org + omrilio@chromium.org + + The number of the action that drag an app window from top in tablet mode + when splitview is active. Logged when the TabletModeController is + destructed, which means the user session is ended. + + + + + minch@chromium.org + omrilio@chromium.org + + The number of each volume adjust type in tablet mode. Logged when starts + volume adjust while in tablet mode. + + + + + + The corresponding feature was removed. + + minch@chromium.org + omrilio@chromium.org + + The number of the action that drag a tab of the browser window in tablet + mode. Logged when the TabletModeController is destructed, which means the + user session is ended. + + + + + + The corresponding feature was removed. + + minch@chromium.org + omrilio@chromium.org + + The type of a tab drag done in tablet mode. Logged when start to drag a tab + of the browser window in tablet mode. + + + + + + The corresponding feature was removed. + + minch@chromium.org + omrilio@chromium.org + + The number of the action that drag a tab of the browser window in tablet + mode when splitview is active. Logged when the TabletModeController is + destructed, which means the user session is ended. + + + + + + The corresponding feature was removed. + + minch@chromium.org + omrilio@chromium.org + + The type of the window (app window or tab strip) drag end event in tablet + mode. Logged when the window drag in tablet mode ended. + + + + + + The corresponding feature was removed. + + minch@chromium.org + omrilio@chromium.org + + The number of windows in overview when dragging a window from top in tablet + mode. Logged when start the window drag and overview has been opened behind. + + + + + pmonette@chromium.org + kristianm@chromium.org + + The total number of certificates for modules loaded (or potentially loaded) + into the browser process that are signed by Microsoft. A catalog counts as a + single certificate, and may refer to many modules. Measured shortly after + startup. Windows only. This histogram was expired between M85 and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + The total number of certificates for modules loaded (or potentially loaded) + into the browser process. A catalog counts as a single certificate, and may + refer to many modules. Measured shortly after startup. Windows only. This + histogram was expired between 2019-12-31 and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + Records whether an equivalent driver letter path was found for a device + path. This histogram was expired between M85 and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + Records the number of modules that were blocked from loading into the + browser process by the third-party DLL blocking feature. This is recorded + every 5 minutes. This histogram was expired between M85 and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + Records whether or not Chrome is still blocking third-party DLLs. This is a + bit that turns to false when the in-process printing is invoked. Recorded + every 5 minutes. This histogram was expired between M85 and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + Records the number of unique modules that were blocked from loading into the + browser process by the third-party DLL blocking feature. This is recorded + every 5 minutes. This histogram was expired between M85 and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + The number of registered input method editors found on the user's machine. + This is emitted shortly after startup when the IME enumeration takes place. + This histogram was expired between M77 and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + The total number of third-party modules (neither Microsoft nor Google) that + are loaded in the browser process. Measured shortly after startup. Windows + only. This histogram was expired between M85 and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + The total number of third-party modules (neither Microsoft nor Google) that + are not yet loaded in the browser process, but may potentially be (shell + extensions, for example). Measured shortly after startup. Windows only. This + histogram was expired between 2019-12-31 and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + The total number of signed modules loaded (or potentially loaded) into the + browser process. Measured shortly after startup. Windows only. This + histogram was expired between 2019-12-31 and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + The total number of modules loaded (or potentially loaded) into the browser + process that are signed via a catalog. Measured shortly after startup. + Windows only. This histogram was expired between 2019-12-31 and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + The total number of modules loaded (or potentially loaded) into the browser + process that are signed by Microsoft. Measured shortly after startup. + Windows only. This histogram was expired between M85 and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + The total number of modules loaded (or potentially loaded) into the browser + process. Measured shortly after startup. Windows only. This histogram was + expired between M85 and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + The total number of unsigned modules loaded (or potentially loaded) into the + browser process. Measured shortly after startup. Windows only. This + histogram was expired between M85 and M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + The number of registered shell extensions found on the user's machine. This + is emitted shortly after startup when the shell extensions enumeration is + done. Doesn't count duplicates. This histogram was expired between M85 and + M114. + + + + + pmonette@chromium.org + kristianm@chromium.org + + Records whether or not a loaded third party module could be uninstalled + using the Windows Apps & Features page. This histogram was expired + between M85 and M114. + + + + + + Removed 01/2021. + + dfried@chromium.org + pbos@chromium.org + + While taking a screenshot of the current tab for use as a thumbnail, the + time it took to copy the tab's contents into a bitmap. + + + + + carlosk@chromium.org + skym@chromium.org + + The time it takes to detect whether a thumbnail requires a gradient overlay. + This is run when thumbnails are downloaded for content suggestions, as they + load and the result is cached for future use. It is Android specific. + + + + + carlosk@chromium.org + skym@chromium.org + + Whether a thumbnail used for a suggestions image requires a gradient to be + overlaid to not fade into the background. It applies to the thumbnails used + for content suggestions and is Android specific. + + + + + + Removed 01/2021. + + dfried@chromium.org + pbos@chromium.org + + While taking a screenshot of the current tab for use as a thumbnail, the + time it took to post-process the captured bitmap. + + + + + + Removed Sept 2021 due to lack of use. + + pdr@chromium.org + vmpstr@chromium.org + + Measures whether the tile manager exceeded the hard GPU memory budget + (OOMed). Recorded each time the tile manager assigns GPU memory to tiles. + + + + + + + alemate@chromium.org + michaelpg@chromium.org + Events in TimeZoneRequest. + + + + + + alemate@chromium.org + michaelpg@chromium.org + Http response codes in TimeZoneRequest. + + + + + + alemate@chromium.org + michaelpg@chromium.org + + The time elapsed between the sending of the first API request and the time + the final (failed) response was recorded. Includes all retries. + + + + + + + alemate@chromium.org + michaelpg@chromium.org + + The time elapsed between the sending of the first API request and the time + the final (successfull) response was recorded. Includes all retries. + + + + + + + alemate@chromium.org + michaelpg@chromium.org + Result of TimeZoneRequest. + + + + + + alemate@chromium.org + michaelpg@chromium.org + Number of retries until the final response was recorded. + + + + elainechien@chromium.org + robliao@chromium.org + + Chrome Labs features user-facing experiments through a button in the + toolbar. + + This metric tracks which experiment (also called lab in the context of + Chrome Labs) a user selects {State} for. This histogram is emitted to when + {State} is selected in the combobox of the ChromeLabs dialog. + + + + + + + + + + peterlaurens@chromium.org + + Number of milliseconds passed between the event that triggers the + presentation of the tools menu (the main menu of actions accessed from the + toolbar), and the actual appearance of the menu on screen. Includes the + animation duration. + + + + + peterlaurens@chromium.org + + The number of millseconds between the user requesting a new incognito tab, + from within the tab switcher, e.g. by tapping the New Tab button from the + tab switcher UI, and it completing its animation on screen. + + + + + jhawkins@chromium.org + Tracks touchpad device state. + + + + gavinwill@chromium.org + cros-peripherals@chromium.org + + Tracks touchpad haptic click sensitivity setting changes by the user. Only + reported on Chrome OS. + + + + + gavinwill@chromium.org + cros-peripherals@chromium.org + + Tracks touchpad haptic click sensitivity setting on startup. Only reported + on Chrome OS. + + + + + gavinwill@chromium.org + cros-peripherals@chromium.org + + Tracks touchpad haptic feedback setting changes by the user. Only reported + on Chrome OS. + + + + + gavinwill@chromium.org + cros-peripherals@chromium.org + + Tracks touchpad haptic feedback setting on startup. Only reported on Chrome + OS. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + Tracks touchpad natural scroll setting changes by the user. Only reported on + Chrome OS. + + Warning: this histogram was expired from 2022-06-15 to M105; data may be + missing. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + Tracks touchpad natural scroll setting on startup. Only reported on Chrome + OS. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + Tracks touchpad sensitivity setting changes by the user. This replaces the + old Touchpad.Sensitivity.Changed metric. Only reported on Chrome OS. + + Warning: this histogram was expired from 2022-06-15 to M105; data may be + missing. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + Tracks touchpad sensitivity setting on startup. This replaces the old + Touchpad.Sensitivity.Started metric. Only reported on Chrome OS. + + Warning: this histogram was expired from 2022-06-15 to M105; data may be + missing. + + + + + + + zentaro@chromium.org + cros-peripherals@google.com + + Whether touchpad scroll acceleration is enabled. Only reported on Chrome OS. + + Warning: this histogram was expired from 2020-12-01 to M105; data may be + missing. + + + + + + + zentaro@chromium.org + cros-peripherals@google.com + + Touchpad scroll sensitivity value. Only reported on Chrome OS. + + Warning: this histogram was expired from 2020-12-01 to M105; data may be + missing. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + Tracks touchpad TapDragging setting changes by the user. Only reported on + Chrome OS. + + Warning: this histogram was expired from 2022-06-15 to M105; data may be + missing. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + Tracks touchpad TapDragging setting on startup. Only reported on Chrome OS. + + Warning: this histogram was expired from 2022-06-15 to M105; data may be + missing. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + Tracks touchpad TapToClick setting changes by the user. Only reported on + Chrome OS. + + Warning: this histogram was expired from 2022-06-15 to M105; data may be + missing. + + + + + zentaro@chromium.org + cros-peripherals@google.com + + Tracks touchpad TapToClick setting changes by the user. Only reported on + Chrome OS. + + + + + girard@chromium.org + input-dev@chromium.org + + Recorded when a touch event excludes an active touch (a touch-id/dwId that + previously generated a TOUCHEVENTF_DOWN, and has not since generated a + TOUCHEVENTF_UP). Chromium generates a simulated event to maintain + consistency/correctness. Only recorded on Windows. + + Warning: This histogram was expired after M95, and resurrected in M108. + + This workaround will be removed once usage drops off. See + https://crbug.com/811273 for details. + + + + + flackr@chromium.org + + Tracks whether Touch Event Feature Detection is enabled. This is based on + the touch events enabled flag and the presence of a touchscreen. + + Team: input-dev@chromium.org. + + NOTE: This metric was incorrectly recorded on Chrome OS for versions 42 + through 45, see http://crbug.com/499476 for more details. As of + http://crbug.com/644318, we changed the internal name to + TouchEventFeatureDetection, but we still keep the old histogram name here to + keep consistensy. + + + + + apronin@chromium.org + mnissler@chromium.org + cros-hwsec+uma@chromium.org + + Reported at boot if the previous boot session was interrupted in the middle + of a TPM command during the first 30 seconds of uptime. + + + + + ssid@chromium.org + + Reason why background tracing finalization was not allowed. Also see + "Tracing.Background.ScenarioState" metric, which records the total + number of times finalization was allowed and not allowed. + + + + + oksamyt@chromium.org + tracing@chromium.org + chrometto-team@google.com + + The size, in kilobytes, of a finalized trace ready to be uploaded. Values + can range from 1KB to 100MB. This replaces + Tracing.Background.FinalizingTraceSizeInKB, which had a minimum of 1MB and + was not precise enough for WebView traces. + + + + + oysteine@chromium.org + + Records state of the Background Tracing system, from when scenarios are + attempted to be activated until they're completed (successfully or failed) + + + + + oksamyt@chromium.org + tracing@chromium.org + chrometto-team@google.com + + The size, in kilobytes, of a trace about to be uploaded. Values can range + from 1KB to 100MB. + + + + + eseckler@chromium.org + tracing@chromium.org + + Records success or failure of creating the shared buffer in + ProducerClient::InitSharedMemoryIfNeeded() + + + + + khokhlov@google.com + tracing@chromium.org + + Records the time it takes to dump a full view hierarchy into the trace. + + + + + bsep@chromium.org + + The device scales available on the system at startup. A system may report + more than one if it has multiple displays with varying device scales. Only + logged on Windows. + + + + + malaykeshav@chromium.org + + Records the time spent in uncompressing a gzipped animation file. + + + + + + + msarda@chromium.org + droger@chromium.org + + State of the user settings for making searches and browsing better, recorded + each time a regular profile is loaded (this histogram is not recoded for + system profiles, guest profiles, off-the-record profiles or irregular + ChromeOS profiles). + + + + + + Deprecated as of 2023/01 in favor of + UnifiedConsent.MakeSearchesAndBrowsingBetter.OnProfileLoad as histogram + UnifiedConsent.MakeSearchesAndBrowsingBetter.OnStartup was also recorded for + all profiles, including system, guest and other irregular ChromeOS profiles. + + msarda@chromium.org + droger@chromium.org + + State of the user settings for making searches and browsing better, recorded + each time a profile was loaded. Note: Starting with CL + https://crrev.com/c/3913924 (M109), this histogram was no longer recorded + for System, Guest and other irregular profiles on desktop and ChromeOS. + + + + + + + droger@chromium.org + msarda@chromium.org + + All *off* sync data types are recorded when the user confirmed the sync + setup after going through the advanced opt-in flow. + + + + + emshack@chromium.org + pbos@chromium.org + + Measures the days elapsed from an update being visible to the browser and + the browser being restarted or quit. + + Warning: this histogram expired after M87, and was re-added in M92; data may + be missing. + + + + + emshack@chromium.org + pbos@chromium.org + + Measures the hours elapsed from an update being visible to the browser and + the browser being restarted or quit. + + + + + spqchan@chromium.org + + Tracks the upgrade notification stage. This is recorded with every UMA log. + + + + + + Removed in M90. + + grt@chromium.org + ydago@chromium.org + + Records the type of poll that first detected an installed version change. + Note that a browser that is running while multiple updates are applied will + only record this metric once. + + + + + mpolzer@google.com + crisguerrero@chromium.org + chromeos-commercial-remote-management@google.com + + Tracks what is the reason we're doing a rollback instead of an update (going + to a more stable channel or admin-initiated enterprise rollback). We're + showing different notifications depending on the reason. + + Sent when the device finished installing the rollback image, shows the + notification and is waiting for reboot. + + This metric is specific to ChromeOS. + + + + + alemate@chromium.org + cros-oac@google.com + xiyuan@chromium.org + + Measures the time elapsed on Chrome OS between when Chrome is started, and + when the login prompt is again visible after a logout. This statistic is + only collected when preceeded by a logout. + + Warning: this histogram was expired from M77 to M96 some data may be + missing. + + + + + satorux@chromium.org + hashimoto@chromium.org + + The system uptime on Chrome OS when the dbus-daemon process crashes, + resulting in a reboot. + + + + + alemate@chromium.org + cros-oac@google.com + xiyuan@chromium.org + + Measures the time elapsed on Chrome OS for setting up for a login after a + logout. More specifically, it is the time between when the Cryptohome is + unmounted (the last step in the logout process) and when the login prompt is + again visible after a logout. + + Warning: this histogram was expired from M85 to M96 some data may be + missing. + + + + + alemate@chromium.org + cros-oac@google.com + xiyuan@chromium.org + + Measures the time elapsed on Chrome OS when performing a logout. More + specifically, it is the time between when a logout is initiated and when the + Cryptohome is unmounted, signaling the last step in the logout process. This + statistic is not collected when the logout is part of a restart or shutdown. + + Warning: this histogram was expired from 09/2020 to M96 some data may be + missing. + + + + + alemate@chromium.org + cros-oac@google.com + xiyuan@chromium.org + + Measures the time elapsed on Chrome OS between initiating a logout and the + next time the login prompt is visible again. This statistic is not collected + if the machine is shutdown between the logout initiation and the prompt + becoming visible. + + Warning: this histogram was expired from M77 to M96 some data may be + missing. + + + + + alemate@chromium.org + cros-oac@google.com + xiyuan@chromium.org + + Measures the time elapsed on Chrome OS between when a logout is initiated + and the UI has stopped (and Chrome has exited) during the logout process. + This statistic is not collected if the logout is part of a restart or + shutdown. + + Warning: this histogram was expired from M77 to M96 some data may be + missing. + + + + + alemate@chromium.org + cros-oac@google.com + xiyuan@chromium.org + + Measures the time elapsed on Chrome OS between when all user-associated + processes have been terminated during the logout process and when Chrome is + started again to show the login screen. + + Warning: this histogram was expired from M77 to M96 some data may be + missing. + + + + + alemate@chromium.org + cros-oac@google.com + xiyuan@chromium.org + + Measures the time elapsed on Chrome OS between when the UI has stopped + (Chrome has exited), and when all other associated processes have been + terminated during the logout process. This statistic is not collected if the + logout is part of a restart or shutdown. + + Warning: this histogram was expired from M77 to M96 some data may be + missing. + + + + + + Removed in M100. + + wanderview@chromium.org + dcheng@chromium.org + + Measures whether DoSimpleHost() in url_canon_host.cc escaped any characters + in the ASCII table. This is recorded every time a URL hostname is + successfully parsed. + + + + + + Removed in M100. + + wanderview@chromium.org + dcheng@chromium.org + + This histogram records which ASCII characters are escaped in DoSimpleHost(). + Each escaped character is recorded separately, but only once for any + invocation of DoSimpleHost(). This can potentially be recorded every time a + URL hostname is parsed, but only if parsing escaped at least one character. + + + + + pnoland@chromium.org + fgorski@chromium.org + + Android: count of Usage Stats events. Recorded as these events occur; e.g. + when a domain is associated with a token, or a site is suspended. + + + + + jasontt@chromium.org + assistive-eng@google.com + + Distribution of the device images that users changed (Chrome OS). The + statistic is recorded each time the user changes their device image to a + different one in Settings. + + This metric expired in March 2022 and was revived in M105. Data between + these times is incomplete. + + This metric supersedes `UserImage.Changed` due to a change in enum values. + + + + + + + achuith@chromium.org + alemate@chromium.org + jasontt@chromium.org + assistive-eng@google.com + cros-oac@google.com + + Distribution of the default images that existing users log in with (Chrome + OS). One sample is taken each time the user logs in. + + This metric supersedes UserImage.LoggedIn2 due to a change in enum values. + Special value 0 (Camera image) of ChromeOSUserImageId2 is never recorded in + this histogram. + + Warning: this histogram was expired from 2022-03-30 to 2022-08-01; data may + be missing. + + + + + achuith@chromium.org + The time it took to download user's profile picture. + + + + achuith@chromium.org + antrim@chromium.org + cros-lurs@google.com + + The number of users of different types that log in to the system (Chrome + OS). + + + + + + + alemate@chromium.org + antrim@chromium.org + cros-lurs@google.com + + The time between one regular user logging out and a different regular user + logging in (Chrome OS). Delays above thirty minutes or which span system + reboots or non-regular-user logins are not reported. + + + + + atwilson@chromium.org + + Whether the profile_ever_initialized() user attribute migration has + completed for the current user. + + + + + + + alemate@chromium.org + michaelpg@chromium.org + rsorokin@chromium.org + cros-oac@google.com + + This is logged when new user type reported by Gaia is different from the old + one (for existing user). + + + + + + Removed 01/2021. + + rsorokin@chromium.org + cros-oac@google.com + + The result of restoring account id on Chrome restart after crash on Chrome + OS. + + + + + binlu@google.com + + Records instances of navigator.vibrate. Includes whether or not it comes + with a user gesture, same-origin subframe or cross-origin subframe. + + + + + yoshiki@chromium.org + + Chrome OS Video Player: the results of the cast API extension load. This is + recorded after the initialization of the extension is finished. + + + + + yoshiki@chromium.org + + Chrome OS Video Player: the length of casted video (in seconds). + + + + + yoshiki@chromium.org + + Chrome OS Video Player: the number of cast devices. This is recorded when + the cast extension finishes the discovery. + + + + + yoshiki@chromium.org + + Chrome OS Video Player: the number of files being opened on launch. + + + + + yoshiki@chromium.org + + Chrome OS Video Player: type of playback (eg. local play, cast). This is + recorded when a video starts playing. + + + + + wychen@chromium.org + dtrainor@chromium.org + The interval between ViewResourceAdapter#getBitmap calls. + + + + oka@chromium.org + + An integer representing a state transition from x to y in the form of x * + 1000 + y. If the transition is not expected, the value is negated. For + example an expected transition from SHOWING (= 2) to SHOWN (= 1) is denoted + as 2001, and an unexpected transition from SHOWING to SHOWING is denoted as + -2002. See KeyboardControllerState for the correspondence between the number + and the enum. + + + + + basiaz@google.com + chrome-language@google.com + + Android: The action performed by Assistant upon being invoked during a voice + search initiated via the {Source}, such as transcription of a voice search + query or translation of the current page. This is recorded after an + Assistant intent has completed successfully. + + + + + + + + + + + + + + basiaz@google.com + chrome-language@google.com + + Android: Whether Translate extras were successfully attached to an Assistant + intent. This is recorded just before the intent is sent to Assistant, and is + only recorded if the Translate extras are enabled. + + + + + basiaz@google.com + chrome-language@google.com + + Android: The events related to granting or denying audio permission for + system level transcription (as opposite to Assistant). Will be logged + {Timing}. + + + + + + + + + basiaz@google.com + chrome-language@google.com + + Android: The source of a dismissed voice search, such as omnibox or NTP. + This is recorded after the dismissed intent returns to Chrome. + + + + + basiaz@google.com + chrome-language@google.com + + Android: The target of a dismissed voice search, such as the system + transcription dialog or Assistant. This is recorded after the dismissed + intent returns to Chrome. + + + + + basiaz@google.com + chrome-language@google.com + + Android: The source of a failed voice search, such as omnibox or NTP. This + is recorded after any intent failure, which could occur before an intent is + sent (if the send fails) or after the intent returns unsuccessfully. It will + only be recorded once. + + + + + basiaz@google.com + chrome-language@google.com + + Android: The target of a failed voice search, such as the system + transcription dialog or Assistant. This is recorded after any intent + failure, which could occur before an intent is sent (if the send fails) or + after the intent returns unsuccessfully. It will only be recorded once. + + + + + basiaz@google.com + chrome-language@google.com + + Android: The source of a successful voice search, such as omnibox or NTP. + This is recorded immediately after the successful intent returns to Chrome. + + + + + basiaz@google.com + chrome-language@google.com + + Android: The target of a successful voice search, such as the system + transcription dialog or Assistant. This is recorded immediately after the + successful intent returns to Chrome. + + + + + muyuanli@chromium.org + + Counts the number of requests to retrieve voice interaction context when no + user interaction is initiated. + + + + + basiaz@google.com + chrome-language@google.com + + Records the time it takes between the user clicking the mic and chrome + receiving the transcribed voice query. This is recorded after an Assistant + intent has completed successfully. + + + + + basiaz@google.com + chrome-language@google.com + + Records the time it takes between the user clicking the mic and chrome + receiving the transcribed voice query. This is recorded after an Assistant + intent has completed successfully. This histogram is limited to intents sent + to {Target}. See VoiceInteraction.QueryDuration.Android for the total count + across all targets. + + + + + + basiaz@google.com + chrome-language@google.com + + Records the time it takes between the user clicking the mic and chrome + receiving the intent response for {Action} actions. This is recorded after + an Assistant intent has completed successfully. These per-action variants + are recorded only when non-transcription actions are enabled. See + VoiceInteraction.QueryDuration.Android for the total count that includes + clients with non-transcription actions disabled. + + + + + + + + + + + + + basiaz@google.com + chrome-language@google.com + + Android: The source of a voice search start event, such as omnibox or NTP. + This is recorded immediately before the voice transcription intent is sent. + + + + + basiaz@google.com + chrome-language@google.com + + Android: The target of a voice search start event, such as the system + transcription dialog or Assistant. This is recorded immediately before the + voice transcription intent is sent. + + + + + basiaz@google.com + chrome-language@google.com + + Android: The source of an incoming result that doesn't align with an + outgoing request from Chrome. This is recorded when the extraneous intent + response is received. + + + + + basiaz@google.com + chrome-language@google.com + + Android: The target of an intent result that doesn't align with an outgoing + request from Chrome. This is recorded when the extraneous intent response is + received. + + + + + muyuanli@chromium.org + + Records the time between user interaction and the actual request arrival. + + + + + basiaz@google.com + chrome-language@google.com + + Android: Records the confidence value of a successful voice search as a + percentage. This is recorded when the voice intent returns successfully. + + + + + basiaz@google.com + chrome-language@google.com + + Android: Records the confidence value of a successful voice search as a + percentage, limited to intents sent to {Target}. This is recorded when the + voice intent returns successfully. + + + + + + basiaz@google.com + chrome-language@google.com + + Android: Records whether the voice search produced results. This is recorded + when the voice intent returns successfully. + + + + + basiaz@google.com + chrome-language@google.com + + Android: Records whether the voice search produced results, limited to + intents sent to {Target}. This is recorded when the voice intent returns + successfully. + + + + + + ajuma@chromium.org + gambard@chromium.org + + [iOS] Reports URL matches between the return value from the WebState's + GetLastCommittedURL and GetCurrentURL methods. It is expected the origins + will be equal to confirm that GetCurrentURL can now be replaced with + GetLastCommittedURL. This will be called each time WebStateImpl:: + GetCurrentURL(URLVerificationTrustLevel* trust_level) is called, which is an + old method of obtaining the url and trust level. The trust level was only + relevant with UIWebView, so this method is only called from code which has + not yet been updated since UIWebView was removed. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time it takes to call all observers of the WebContents observer + method {Method}. Logged every time the method is called. + + + + + + benwgold@chromium.org + mdjones@chromium.org + + Records the number of milliseconds that it takes for a web context fetch to + complete. Recorded when the javascript execution completes. To start will be + used for Google Lens image queries to track time to retrieve page context, + but may extend to other features over time. + + + + + ajuma@chromium.org + gambard@chromium.org + + [iOS] Counts the number of time the backForwardList of the WebView gets out + of sync with the URL exposed by the WebView. This should not happen and is + probably an issue in WebKit. This is only recorded when there is an error. + + + + + + Removed 2021-11, since the WebKit bug whose occurrences were being tracked + by this metric no longer reprodcues on iOS 13+. + + ajuma@chromium.org + gambard@chromium.org + + [iOS] Records the action take when the backForwardList of the WebView is out + of sync with the URL exposed by the WebView when starting a new provisional + navigation. The URLs can get out of sync because of a bugs in WebKit. This + is only recorded when the URLs are out of sync. + + + + + ajuma@chromium.org + gambard@chromium.org + + [iOS] Report cache hit/miss for WKWebView cert verification. + CRWWKNavigationHandler has a cache of pending cert verification results to + avoid extra verifications when presenting SSL interstitial. This metric + helps to understand how often this cache miss happens. + + + + + mrefaat@chromium.org + + [iOS] Measures the proportion of external URL requests that originate from a + subframe without any user interaction (e.g. an advertisement contains an + iframe directed at the App Store). + + + + + battre@chromium.org + asully@chromium.org + + If a migration to a new WebDatabase schema fails, this histogram records the + target version to which the migration failed. + + + + + battre@chromium.org + asully@chromium.org + + Records whether WebDatabase::Init succeeds or otherwise a failure reason. + + + + + kenjibaheux@chromium.org + ksakamoto@chromium.org + + A histogram tracking the time we spent showing blank text because a web font + wasn't available by the time we needed it. Measured once per @font-face that + ended up showing blank text. + + + + + hajimehoshi@chromium.org + kenjibaheux@chromium.org + kouhei@chromium.org + ksakamoto@chromium.org + + Recorded upon web fonts load. Counts the number of times web font is loaded + from cache (disk cache or memory cache), fetched over network, or served + from data URL. + + + + + xiaochengh@chromium.org + chrome-rendering-core@google.com + + Recorded when render-blocking web font preloads have reached the maximum + blocking time, and therefore, turned into non-render-blocking. Records the + number of web font preloads that are still pending. This is a diagnostic + metric for feature RenderBlockingFonts. + + + + + kenjibaheux@chromium.org + ksakamoto@chromium.org + + The time it takes for a webfont download to finish, for webfonts of under + 10KB. + + + + + kenjibaheux@chromium.org + ksakamoto@chromium.org + + The time it takes for a webfont download to finish, for webfonts of + 10KB-50KB. + + + + + kenjibaheux@chromium.org + ksakamoto@chromium.org + + The time it takes for a webfont download to finish, for webfonts of + 50KB-100KB. + + + + + kenjibaheux@chromium.org + ksakamoto@chromium.org + + The time it takes for a webfont download to finish, for webfonts of + 100KB-1MB. + + + + + kenjibaheux@chromium.org + ksakamoto@chromium.org + + The time it takes for a webfont download to finish, for webfonts of over + 1MB. + + + + + kenjibaheux@chromium.org + ksakamoto@chromium.org + + The time taken for a webfont download that failed. Includes aborted + requests. + + + + + + Removed 2021-03 + + kenjibaheux@chromium.org + ksakamoto@chromium.org + + The value of font-display @font-face descriptor. Counted only when + explicitly specified in the @font-face rule. + + + + + kenjibaheux@chromium.org + ksakamoto@chromium.org + + This metrics is logged when a page that use web fonts is loaded. The value + is whether we had to wait on at least one web font and ended up showing + blank text, or not. + + + + + yaoxia@chromium.org + shivanisha@chromium.org + + For each http cache transaction for a font in Google Fonts, record the cache + status. + + + + + + Removed in M91. + + ksakamoto@chromium.org + toyoshim@chromium.org + + The load limit state when the first disk-cache-only request fails by cache + miss, if WebFonts cache-aware timeout adaptation is enabled and applicable. + + + + + hajimehoshi@chromium.org + kenjibaheux@chromium.org + kouhei@chromium.org + ksakamoto@chromium.org + + Whether a locallly installed font is actually used when @font-face had local + sources. + + + + + + No longer recorded in M89. + + droger@chromium.org + + Histogram for the format of decoded WebP images on iOS, as Chrome re-encodes + WebP images on that platform. + + + + + mgiuca@chromium.org + + Counts the number of calls to navigator.share. Includes both successful and + failed shares. + + + + + mgiuca@chromium.org + + Records the outcome of calls to navigator.share. This will not count any + calls that never complete (e.g., if the page closes while the picker is + open). Therefore, DO NOT look at the raw percentages of this histogram; + instead, compare these numbers with the WebShare.ApiCount.Share total. + + NOTE: At the moment, if the user cancels the picker, its recording will be + delayed, and possibly never recorded (https://crbug.com/636274), so that + will account for a discrepancy between ShareOutcome and ApiCount.Share. + + + + + jackhou@chromium.org + + The success or failure of all extension installs from the webstore. This + includes those initiated by sync. + + + + + dbeam@chromium.org + URLs for which Chrome creates WebUIControllers. + + + + dschuyler@chromium.org + tbuckley@chromium.org + bettes@chromium.org + + Paths within chrome://settings visited. For evaluating popularity and + priorities for chrome://settings GUI. Note that this metric used to include + paths that were part of OS settings, but starting with M-81, this metric + only records browser settings paths. + + + + + dpapad@chromium.org + etienneb@chromium.org + tluk@chromium.org + + The elapsed time for URL requests made through the WebUIURLLoaderFactory. + The reported duration is the time spent in the browser process from the + reception of the mojo request up to the content delivery through mojo call. + + + + + collinbaker@chromium.org + tluk@chromium.org + + The WebUI tab strip is a more touch-friendly tab strip used in place of + Chrome's native tab strip in some cases. It can be opened and closed. This + records how a user closed it. + + + + + johntlee@chromium.org + dpapad@chromium.org + + The WebUI tab strip is a more touch-friendly tab strip used in place of + Chrome's native tab strip in some cases. This records how a user closed a + tab within the WebUI tab strip. + + + + + yuhengh@chromium.org + tluk@chromium.org + romanarora@chromium.org + + The amount of time between the RenderFrameHost StartProvisionalLoad event + and the RenderFrameHost DocumentOnLoadCompleted event for the WebUI tab + strip page. This happens once when a browser window with WebUI tab strip + enabled is created. WebUITabStrip.LoadDocumentTime should be smaller or + equal to WebUITabStrip.LoadCoimpletedTime. + + + + + yuhengh@chromium.org + tluk@chromium.org + romanarora@chromium.org + + The amount of time between the RenderFrameHost StartProvisionalLoad and + DidFinishDocumentLoad events for the WebUI tab strip page. This happens once + when a browser window with WebUI tab strip enabled is created. + WebUITabStrip.LoadDocumentTime should be smaller or equal to + WebUITabStrip.LoadCoimpletedTime. + + + + + collinbaker@chromium.org + tluk@chromium.org + + The WebUI tab strip is a more touch-friendly tab strip used in place of + Chrome's native tab strip in some cases. It can be opened and closed. This + records how a user opened it. + + + + + collinbaker@chromium.org + tluk@chromium.org + + The WebUI tab strip is a more touch-friendly tab strip used in place of + Chrome's native tab strip in some cases. It can be opened and closed. This + records how long it was open when closing. + + + + + robliao@chromium.org + johntlee@chromium.org + + WebUI Tabstrip: Time from activating a tab from WebUI to receiving an + activation notification in WebUI. + + + + + robliao@chromium.org + johntlee@chromium.org + + WebUI Tabstrip: Time needed to create all of the tab elements at launch. + + + + + robliao@chromium.org + johntlee@chromium.org + + WebUI Tabstrip: Time from requesting the tab data to receiving the data. + + + + + + + reillyg@chromium.org + + Records the reason why the WebUSB device chooser was closed. + + + + + + + reillyg@chromium.org + + Records the reason why the "WebUSB device detected" notification + was dismissed. + + + + + + + reillyg@chromium.org + + Records when the user revokes permission for an origin to connect to a USB + device using the WebUSB API. + + + + + + Renamed in M99. Please see "Android.WebView.ApiCall" going + forward, which has the same logging behavior. + + ntfschr@chromium.org + src/android_webview/OWNERS + Records calls to WebView APIs in WebViewChromium. + + + + tmartino@chromium.org + msarda@chromium.org + droger@chromium.org + chrome-signin-team@google.com + + Records the result of promoting sign-in via the Welcome page. + + + + + tmartino@chromium.org + + Records whether or not Chrome was the default browser when the user left the + Win10-specific Welcome page. + + + + + pmonette@chromium.org + tmartino@chromium.org + + Emits a "true" sample when the revamped WebUI-based welcome page + is added to the startup tabs list. This means that barring an error on + startup, it was shown to the user. This histogram can only be recorded + during first-run flow, when the EnableWelcomeWin10 experiment is enabled. + + + + + pmonette@chromium.org + tmartino@chromium.org + + Emits a "true" sample when the old external welcome page is added + to the startup tabs list. This means that barring an error on startup, it + was shown to the user. This histogram can only be recorded during first-run + flow, when the EnableWelcomeWin10 experiment is disabled. + + + + + pmonette@chromium.org + tmartino@chromium.org + + Records whether or not the check that verifies if Chrome is pinned to the + taskbar has timed out. This check is done when the welcome page is opened in + order to determine which instructions to display to the user. + + + + + tmartino@chromium.org + + Records whether or not Chrome was pinned to the taskbar when the user left + the Win10-specific Welcome page. + + + + + rbpotter@chromium.org + mahmadi@chromium.org + + Records load events for the What's New page when a load event occurs. This + tracks how many times loading remote content is attempted, and whether it + succeeds, fails and results in an error page, fails and redirects to the New + Tab Page, fails and doesn't open the tab (for preloading), or fails and + closes the tab. Load is attempted when the page is first opened or on first + startup after updating to a new milestone. Success or failure will occur + when the network request completes. Desktop only. + + + + + rbpotter@chromium.org + mahmadi@chromium.org + + Records the net error or HTTP response code of the network request for the + remote content for the iframe in the What's New page. This request is + triggered when the What's New page is opened. Desktop only. + + + + + rbpotter@chromium.org + mahmadi@chromium.org + + Records whether the What's New page should try to show, whether it is + overridden (e.g. by welcome) and whether the user is ineligible (e.g. due to + being in incognito mode). Recorded when startup tabs are being determined at + initialization. Desktop only. + + + + + flackr@chromium.org + input-dev@chromium.org + + Records whether or not a GSU event with wheel source is latched to the + current scrolling element. It is false for the first GSU event of every + scrolling sequence and true for the rest of the GSU events. + + + + + zturner@chromium.org + + Count of page loads in each of the 2 different environments (metro/desktop) + on Windows 8. + + + + + + Retired in M99. + + davidbienvenu@chromium.org + fdoray@chromium.org + + A top level window's occlusion state. Recorded each time the state changes. + + + + + noms@chromium.org + The type of category clicked in the Windows Jumplist + + + + nhiroki@chromium.org + chrome-worker@google.com + Records the exit code of WorkerThread. + + + + ainslie@chromium.org + edwardjung@chromium.org + Number of times that each menu item is clicked. + + + + rpop@chromium.org + + The number of times each tab or window restore option in the Recent Tabs + submenu is clicked. + + + + + ainslie@chromium.org + edwardjung@chromium.org + + The time a user takes to select a menu item after opening the menu. + + + + + kkimlabs@chromium.org + + Time difference between touch down and touch up on Android wrench button. + + + + + + Removed July 2021 as enough data was collected. + + huangdarwin@chromium.org + src/ui/base/clipboard/OWNERS + + Counts how often the X11 server fails to register an atom. Recorded when + ::XInternAtom fails (returns None). Failure rates will inform whether we + implement error handling. https://crbug.com/1000919 + + + + + panicker@chromium.org + + Records occurence of async XHR during page dismissal state (unload, + beforeunload, pagehide etc). + + + + + foolip@chromium.org + + Records the time spent in sync XHR requests on the main thread. + + + + + foolip@chromium.org + + Records the time spent in sync XHR requests in a worker thread. + + + + + panicker@chromium.org + + Records occurence of sync XHR during page dismissal state (unload, + beforeunload, pagehide etc). + + + + + kdillon@chromium.org + panicker@chromium.org + + Records occurence of sync XHR requests during page dismissal state (unload, + beforeunload, pagehide etc) that were forbidden. + + + + + hfung@chromium.org + + The number of results (either query or URL) from ZeroSuggest. This is set + every time a successful response from ZeroSuggest is received, which can be + every time the user focuses on the omnibox. + + + + + hfung@chromium.org + + The number of query results returned from ZeroSuggest. This is set every + time a successful response from ZeroSuggest is received, which can be every + time the user focuses on the omnibox. + + + + + hfung@chromium.org + + The number of URL results returned from ZeroSuggest. This is set every time + a successful response from ZeroSuggest is received, which can be every time + the user focuses on the omnibox. + + + + + + diff --git a/histograms/metadata/page/OWNERS b/histograms/metadata/page/OWNERS new file mode 100644 index 000000000000..77cdb1fe158e --- /dev/null +++ b/histograms/metadata/page/OWNERS @@ -0,0 +1,8 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +csharrison@chromium.org +iclelland@chromium.org +johnidel@chromium.org +toyoshim@chromium.org diff --git a/histograms/metadata/page/histograms.xml b/histograms/metadata/page/histograms.xml new file mode 100644 index 000000000000..54c9ff7c8094 --- /dev/null +++ b/histograms/metadata/page/histograms.xml @@ -0,0 +1,3103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + emshack@chromium.org + chrome-desktop-ui-sea@google.com + + The type of Page Action currently shown. Logged once per ephemeral page + action the first time it becomes visible on a given page. + + + + + + Histogram is in the process of being removed in in favor of + Extensions.ExtensionsWithPageActions that emits only on profile open for + "user" profiles (profiles where people can install extensions, + specifically profiles that can have non-component extensions installed). + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + The number of Extensions that have Page Actions. Measured once per profile + open. + + + + + emshack@chromium.org + chrome-desktop-ui-sea@google.com + + Records events related to overall ephemeral page action icon click through + rate (CTR) calculation. + + The CTR can be calculated by computing "Clicked" / + "Shown". "Clicked" means the page action icon was + clicked. "Shown" means that the page action icon was displayed. + "Shown" is logged once per page action the first time it becomes + visible on a given page, and "Clicked" is logged once per click. + + + + + emshack@chromium.org + chrome-desktop-ui-sea@google.com + + The number of ephemeral Page Actions currently shown. Measured each time a + page action icon is clicked. + + + + + emshack@chromium.org + chrome-desktop-ui-sea@google.com + + The number of ephemeral Page Actions currently shown. Measured each time a + new page is loaded, and then again when each new page action appears on the + same page. + + + + + emshack@chromium.org + chrome-desktop-ui-sea@google.com + + Records events related to percentage of pages with actions calculation. + + The percentage of pages with at least one ephemeral action shown can be + calculated by computing "Action Shown" / "Page Shown". + The percentage of pages with multiple ephemeral actions shown can be + calculated by computing "Multiple Actions Shown" / "Page + Shown". "Page Shown" is logged once when a given page is + first loaded, "Action Shown" is logged when the first page action + is displayed on a given page, and "Multiple Actions Shown" is + logged the first time a page action appears on a given page alongside a + second page action. + + + + + emshack@chromium.org + chrome-desktop-ui-sea@google.com + + Records events related to {PageActionType} page action icon click through + rate (CTR) calculation. + + The CTR can be calculated by computing "Clicked" / + "Shown". "Clicked" means the page action icon was + clicked. "Shown" means that the page action icon was displayed. + "Shown" is logged once per page action the first time it becomes + visible on a given page, and "Clicked" is logged once per click. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jkarlin@chromium.org + johnidel@chromium.org + chrome-analysis-team@google.com + + Records the time from frame navigation start to FirstContentfulPaint of each + ad frame that receives a FirstContentfulPaint. The time could be quite + large, as some ads don't paint until they're scrolled into view. But the + metric is still useful in aggregate. + + Recorded for all ad frames with non-zero bytes or cpu usage that receive a + FirstContentfulPaint. Recorded when the ad frame or page is destroyed. + + Changes to how cross-origin content is loaded (e.g., security policies, + network prioritization) or to iframes can certainly affect this metric. + + Do not modify this metric in any way without contacting + chrome-analysis-team@google.com. + + + + + altimin@chromium.org + bmcquade@chromium.org + hajimehoshi@chromium.org + + Counts the events related to the back-forward cache, like when the page is + put into the back-forward cache. + + + + + jkarlin@chromium.org + johnidel@chromium.org + + Only recorded if the page has at least one identified ad frame. Recorded in + PageLoadMetrics when the page is destroyed. Bytes include all bytes used by + the network to load a resource and response body bytes for cached resources + (from both the HTTP and memory caches). An ad frame consists of the + identified ad frame and all of its children (which may also be ads, but are + counted as part of the ancestor ad frame). Includes resources that did not + finish loading. + + + + + alexmt@chromium.org + johnidel@chromium.org + + Total number of network bytes that went towards loading non-ad resources for + a single page over its entire lifetime. This includes resources that did not + finish or were canceled. Only recorded for pages with non-zero total bytes, + including those without an ad frame and pages with no ad resources. Recorded + when the page is destroyed. + + + + + alexmt@chromium.org + johnidel@chromium.org + + The percentage of network bytes loaded by the page that are attributed to ad + resources (including ad resources in the main frame) across the entire page + load. Only recorded for pages with non-zero network bytes, including those + without an ad frame and pages with no ad resources. Recorded when the page + is destroyed. + + + + + alexmt@chromium.org + johnidel@chromium.org + + The percentage of all bytes loaded by the page that are attributed to ad + resources (including ad resources in the main frame) across the entire page + load. Only recorded for pages with non-zero total bytes, including those + without an ad frame and pages with no ad resources. Recorded when the page + is destroyed. + + + + + johnidel@chromium.org + jkarlin@chromium.org + + Records whether the heavy ad intervention was disallowed by the blocklist on + a frame. Only recorded when the heavy ad blocklist is enabled and available + (e.g. this is not recorded in incognito mode). + + + + + johnidel@chromium.org + jkarlin@chromium.org + + Records whether a heavy ad frame was deleted prior to the page being + destroyed/navigated. Recorded per-frame, only if the frame is considered a + heavy ad, when the frame is destroyed. For example, this is true if the + iframe element is deleted by javascript. This is recorded whether or not the + ads are actually unloaded by the intervention. + + + + + johnidel@chromium.org + jkarlin@chromium.org + + Records whether a possible intervention was ignored because the page was the + result of a reload. This is checked prior to checking whether a given site + is blocklisted. Therefore it is possible this histogram records |Ignored| + when the intervention wouldn't have actually triggered. This is recorded + when an ad frame becomes eligible for the heavy ad intervention to unload + it. + + + + + johnidel@chromium.org + justinmiron@google.com + + Records the number of network bytes used by a heavy ad unloaded due to + network usage by the heavy ad intervention. It is recorded at the time of + unload and the value may be larger than the heavy ads threshold due to the + delay in unloading an ad. + + + + + johnidel@chromium.org + jkarlin@chromium.org + + Records whether a page with a heavy ad is reloaded or navigated/destroyed + for any other reason. Only recorded for pages that had at least one heavy ad + prior to being navigated/reloaded/destroyed. This is recorded whether or not + the ads are actually unloaded by the intervention. + + + + + cammie@chromium.org + jkarlin@chromium.org + johnidel@chromium.org + chrome-ads-histograms@google.com + + The maximum reported number of kilobytes of memory used by V8 by the main + frame in this pageload. + + Only recorded if the page has at least one identified ad frame. Recorded in + PageLoadMetrics when the page is destroyed. An ad frame consists of the + identified ad frame and all of its children (which may also be ads, but are + counted as part of the ancestor ad frame). + + + + + cammie@chromium.org + jkarlin@chromium.org + johnidel@chromium.org + chrome-ads-histograms@google.com + + The number of V8 memory measurement updates received by + AdsPageLoadMetricsObserver per pageload. Only recorded if the page has at + least one identified ad frame. Recorded in PageLoadMetrics when the page is + destroyed. + + + + + johnidel@chromium.org + jkarlin@chromium.org + + Total number of network bytes that went towards loading ad resources for a + single page over it's entire lifetime. This includes resources that did not + finish or were canceled. Only recorded for pages with non-zero ad bytes. + + + + + bmcquade@chromium.org + sullivan@chromium.org + speed-metrics-dev@chromium.org + + The time from the user input that triggers the top-level navigation for an + AMP document to the time that the navigation for the AMP document is + initiated in the AMP frame. This gives insight into how often AMP documents + are navigated to via same document navigations without being prerendered. + + This histogram has incomplete data. It expired after M78 and was re-added in + M90. + + + + + bmcquade@chromium.org + sullivan@chromium.org + speed-metrics-dev@chromium.org + + The time from the main frame navigation to the subsequent subframe + navigation for the AMP document. Only recorded for non-same-page + navigations. + + This histogram has incomplete data. It expired after M78 and was re-added in + M90. + + + + + bmcquade@chromium.org + sullivan@chromium.org + speed-metrics-dev@chromium.org + + Measures First Input Delay, the duration between the hardware timestamp and + the start of event processing on the main thread for the first meaningful + input per navigation, in an AMP subframe document. Recorded on first page + interaction. See https://goo.gl/tr1oTZ for a detailed explanation. Excludes + scrolls. Only non-same-document navigations are included. + + This histogram has incomplete data. It expired after M78 and was re-added in + M90. + + + + + sullivan@chromium.org + speed-metrics-dev@chromium.org + + The number of interactions of a page load, in AMP subframe. Definition of an + interaction: + https://web.dev/better-responsiveness-metric/#group-events-into-interactions + + + + + iclelland@chromium.org + speed-metrics-dev@chromium.org + + The {NormalizedResponsivenessMetric} of a page load, in AMP subframes, in + ms. For this metric, we measure the latency of a user interaction by the + {UserInteractionLatency} within the user interaction. Full navigation means + we only include non-same-document navigations, otherwise we only include + same-document navigations. + + Recorded at the end of the AMP document lifetime, such as when the document + is being navigated away from. + + + + + + + + + + + + + + + + + + + + + + + + sullivan@chromium.org + speed-metrics-dev@chromium.org + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has + occurred in the AMP subframe. The gap between two consecutive shifts in a + window is not bigger than 1000ms and the maximum window size is 5000ms. This + metric's integral value is 10000x the fractional cumulative layout shift + score described in the explainer. If {Bfcache} is triggered, we record the + metric when the user navigates away or closes the page after the page was + restored from back-forward cache. Otherwise, we record it at the end of the + page lifetime, such as when the page is being navigated away from or when a + tab is being closed. + + Recorded for non same-document AMP navigations in the main frame, at the end + of the AMP document lifetime, such as when the document is being navigated + away from. + + Replaces + PageLoad.Clients.AMP.LayoutInstability.MaxCumulativeShiftScore.Subframe.SessionWindow.Gap1000ms.Max5000ms + and increases granularity in order to get more coverage for ~40% of the + values in the 0-0.1 range. + + + + + iclelland@chromium.org + speed-metrics-dev@chromium.org + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has + occurred in a {Window}, in the AMP subframe. The gap between two consecutive + shifts in a window is not bigger than {Gap} and the maximum window size is + {MaxWindowSize}. This metric's integral value is 100x the fractional + cumulative layout shift score described in the explainer. If the + {Navigation} is FullNavigation, we record the metric for non same-document + AMP navigations in the main frame, at the end of the AMP document lifetime, + such as when the document is being navigated away from. Otherwise, only + same-document navigations are included. + + + + + + + + + + + + + + + + + + bmcquade@chromium.org + sullivan@chromium.org + speed-metrics-dev@chromium.org + + The time from user input to first "contentful" paint in an AMP + subframe document. Will be zero or near-zero in cases where the AMP subframe + document was prerendered. Only same-document navigations are included. + + This histogram has incomplete data. It expired after M78 and was re-added in + M90. + + + + + bmcquade@chromium.org + sullivan@chromium.org + speed-metrics-dev@chromium.org + + The time from user input to first "contentful" paint in an AMP + subframe document. Only non-same-document navigations are included. + + This histogram has incomplete data. It expired after M78 and was re-added in + M90. + + + + + bmcquade@chromium.org + sullivan@chromium.org + speed-metrics-dev@chromium.org + + The time from user input to largest "contentful" paint in an AMP + subframe document. Only same-document navigations are included. + + Excludes any content painted after user input. The value is recorded at the + end of each page load unless there is an abort or user input before text or + image paint. See http://bit.ly/fcp_plus_plus for details. + + Will be zero or near-zero in cases where the AMP subframe document was + prerendered. + + This histogram has incomplete data. It expired after M78 and was re-added in + M90. + + + + + bmcquade@chromium.org + sullivan@chromium.org + speed-metrics-dev@chromium.org + + The time from user input to largest "contentful" paint in an AMP + subframe document. Only non-same-document navigations are included. + + Excludes any content painted after user input. The value is recorded at the + end of each page load unless there is an abort or user input before text or + image paint. See http://bit.ly/fcp_plus_plus for details. + + This histogram has incomplete data. It expired after M78 and was re-added in + M90, and also after 2022-12-11 until M111. + + + + + nidhijaju@chromium.org + ricea@chromium.org + + The normalized UserInteractionLatency.HighPercentile2 (responsive metric) of + a page load when Cache Transparency is enabled, in ms. For this metric, we + measure the latency of a user interaction by the MaxEventDuration within the + user interaction. Recorded at the end of the page load lifetime. + + + + + nidhijaju@chromium.org + ricea@chromium.org + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has + occured in a Window. The gap between two consecutive shifts in a window is + not bigger than 1000ms and the maximum window size is 5000ms. This metric's + integral value is 10000x the fractional cumulative layout shift score + described in the explainer. Only recorded for page loads where Cache + Transparency is enabled. The metric is emitted when the navigation is + completed. + + + + + nidhijaju@chromium.org + ricea@chromium.org + + The time from navigation start to first "contentful" paint. This + metric is recorded iff the page loads and the event happens in the + foreground. + + + + + nidhijaju@chromium.org + ricea@chromium.org + + The time from navigation start to the time the largest content (text or + image) is first painted, across all frames. This metric is recorded at the + end of each page load or the latest time when we can reliably record, iff + the page loads and the event happens in the foreground. + + + + + lbrady@google.com + shivanisha@chromium.org + dom@chromium.org + + Measures First Input Delay, the duration between the hardware timestamp and + the start of event processing on the main thread for the first meaningful + input per navigation. Recorded on first FencedFrames' page interaction. See + https://goo.gl/tr1oTZ for a detailed explanation. Excludes scrolls. + + + + + toyoshim@chromium.org + mparch-dev@chromium.org + + Measures the cumulative layout shift score (bit.ly/lsm-explainer) that has + occurred on the FencedFrames page (including all subframes). Higher values + correspond to greater instability, which is bad. Recorded at the end of the + page lifetime, such as when the page is being navigated away from or when a + tab is being closed. On Android it's done when the browser is backgrounded. + + + + + lbrady@google.com + shivanisha@chromium.org + dom@chromium.org + + Measures the cumulative layout shift score (bit.ly/lsm-explainer) that has + occurred in the FencedFrames page's main frame. Recorded at the end of the + page lifetime, such as when the page is being navigated away from or when a + tab is being closed. On Android, it's done when the browser is backgrounded. + + + + + toyoshim@chromium.org + mparch-dev@chromium.org + + The time from navigation start to first "contentful" paint. This + metric does not include all FencedFrames' page loads. Recorded iff the page + loads and the event happens in the foreground. + + + + + lbrady@google.com + shivanisha@chromium.org + dom@chromium.org + + Measures the time from navigation timing's navigation start to the time the + first image is painted, for FencedFrames' main frame documents. For images + that render progressively, this is recorded as soon as any image pixels have + been drawn iff the page loads and the event happens in the foreground. + + + + + toyoshim@chromium.org + mparch-dev@chromium.org + + Measures the time from navigation timing's navigation start to the time the + first paint is performed, for FencedFrames' main frame documents. Recorded + iff the page loads and the event happens in the foreground. + + + + + toyoshim@chromium.org + mparch-dev@chromium.org + + Measures the time from navigation timing's navigation start to the time the + largest content (text or image) is first painted, across all frames under + the FencedFrames root. Excludes any content painted after user input. + Includes content that has been removed from the page. See web.dev/lcp for + more details. + + The value is recorded at the end of each page load or the latest time when + we can reliably record: when the page is navigated away, the browser is + closed, or on Android when the browser is backgrounded, iff the page loads + and the event happens in the foreground. + + + + + tluk@chromium.org + chrome-cros@chromium.org + + Measures First Input Delay, the duration between the hardware timestamp and + the start of event processing on the main thread for the first meaningful + input per navigation. See https://goo.gl/tr1oTZ for a detailed explanation. + Only recorded for side search navigations from the side panel that happen + entirely in the foreground. + + + + + tluk@chromium.org + chrome-cros@chromium.org + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has + occurred in a Window. The gap between two consecutive shifts in a window is + not bigger than 1000ms and the maximum window size is 5000ms. This metric's + integral value is 10000x the fractional cumulative layout shift score + described in the explainer. Only recorded for side search navigations from + the side panel. The metric is emitted when the navigation is completed or + the app is backgrounded on Android. + + + + + tluk@chromium.org + chrome-cros@chromium.org + + Measures the time in milliseconds from navigation timing's navigation start + to the time when the page first paints content, in the AMP subframe. A + contentful paint includes a paint of text, image, SVG, or canvas. Only + recorded for side search navigations from the side panel that happen + entirely in the foreground. + + + + + sullivan@chromium.org + speed-metrics-dev@chromium.org + + Measures the time from navigation timing's navigation start to the time the + first image is painted, for main frame documents. For images that render + progressively, this is recorded as soon as any image pixels have been drawn. + Only recorded for side search navigations from the side panel that happen + entirely in the foreground. + + + + + tluk@chromium.org + chrome-cros@chromium.org + + Measures the time in milliseconds from navigation timing's navigation start + to the time when the page first paints the experimental largest content + (text or image) within viewport, in the AMP subframe. See + http://bit.ly/largest_contentful_paint_explainer for more details. Differs + from SubFrame.PaintTiming.NavigationToLargestContentfulPaint in that removed + content is still considered a valid candidate. Only recorded for side search + navigations from the side panel that happen entirely in the foreground. The + metric is emitted when the navigation is completed or the app is + backgrounded on Android. + + + + + spelchat@chromium.org + chrome-brapp-loading@google.com + + Measures the time in milliseconds from navigation timing's navigation start + to the time when the page first paints content, for Google Search page + loads. A contentful paint includes a paint of text, image, SVG, or canvas. + Only recorded for Search navigations that start in the foreground and stay + in the foreground until the first contentful paint. + + + + + spelchat@chromium.org + chrome-brapp-loading@google.com + + Measures the time in milliseconds from navigation timing's navigation start + to the time when the page first paints the experimental largest content + (text or image) within viewport, for Google Search page loads. See + http://bit.ly/largest_contentful_paint_explainer for more details. Differs + from SubFrame.PaintTiming.NavigationToLargestContentfulPaint in that removed + content is still considered a valid candidate. Only recorded for Search + navigations that happen entirely in the foreground. The metric is emitted + when the navigation is completed or the app is backgrounded on Android. + + + + + spelchat@chromium.org + chrome-brapp-loading@google.com + + Measures the time from navigation timing's navigation start to the time the + parser started, for Google Search page loads. Only recorded for Search + navigations that start in the foreground and stay in the foreground until + parse start. + + + + + ksakamoto@chromium.org + src/content/browser/preloading/prerender/OWNERS + + PageLoad.InteractiveTiming.FirstInputDelay4, but for page loads that were + prerendered and were later activated. Note that prerendered page loads are + excluded from PageLoad.InteractiveTiming.FirstInputDelay4. + + + + + + + + ksakamoto@chromium.org + src/content/browser/preloading/prerender/OWNERS + + PageLoad.LayoutInstability.CumulativeShiftScore.MainFrame, but for page + loads that were prerendered and were later activated. Note that prerendered + page loads are excluded from + PageLoad.LayoutInstability.CumulativeShiftScore.MainFrame. + + + + + + + + ksakamoto@chromium.org + src/content/browser/preloading/prerender/OWNERS + + PageLoad.LayoutInstability.CumulativeShiftScore, but for page loads that + were prerendered and were later activated. Note that prerendered page loads + are excluded from PageLoad.LayoutInstability.CumulativeShiftScore. + + + + + + + + kenoss@chromium.org + src/content/browser/preloading/prerender/OWNERS + + PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms2, + but for page loads that were prerendered and were later activated. Note that + prerendered page loads are excluded from + PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms2. + + + + + + + + ksakamoto@chromium.org + src/content/browser/preloading/prerender/OWNERS + + Measures the time from the start of initial prerendering navigation to the + start of activation navigation. This corresponds to the activationStart + attribute of PerformanceNavigationTiming. Recorded when a prerendered page + is activated. + + + + + + + + ksakamoto@chromium.org + src/content/browser/preloading/prerender/OWNERS + + PageLoad.PaintTiming.NavigationToFirstContentfulPaint, but for page loads + that were prerendered and were later activated. This measures the time + relative to the activation navigation start. Note that prerendered page + loads are excluded from + PageLoad.PaintTiming.NavigationToFirstContentfulPaint. + + + + + + + + ksakamoto@chromium.org + src/content/browser/preloading/prerender/OWNERS + + PageLoad.PaintTiming.NavigationToFirstPaint, but for page loads that were + prerendered and were later activated. This measures the time relative to the + activation navigation start. Note that prerendered page loads are excluded + from PageLoad.PaintTiming.NavigationToFirstPaint. + + + + + + + + ksakamoto@chromium.org + src/content/browser/preloading/prerender/OWNERS + + PageLoad.PaintTiming.NavigationToLargestContentfulPaint2, but for page loads + that were prerendered and were later activated. This measures the time + relative to the activation navigation start. Note that prerendered page + loads are excluded from + PageLoad.PaintTiming.NavigationToLargestContentfulPaint2. + + + + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + PageLoad.InteractiveTiming.FirstInputDelay4, but recorded iff + {PrivacySandboxAdsApi} was used in the page. + + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms2, + but recorded iff {PrivacySandboxAdsApi} was used in the page. + + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + PageLoad.PaintTiming.NavigationToFirstContentfulPaint, but recorded iff + {PrivacySandboxAdsApi} was used in the page. + + + + + + linnan@chromium.org + johnidel@chromium.org + measurement-api-dev+metrics@google.com + + PageLoad.PaintTiming.NavigationToLargestContentfulPaint2, but recorded iff + {PrivacySandboxAdsApi} was used in the page. + + + + + + tbansal@chromium.org + + Records if the time from navigation to first contentful paint was less than + the specified threshold. Also, records the total number of first contentful + paints. For a single first contentful paint event, data may be recorded in + multiple buckets. Recorded at the time when first contentful paint happens. + Recorded only for page loads that have scheme http://. + + + + + dougarnett@chromium.org + tbansal@chromium.org + + Records if the time from navigation to first contentful paint was less than + the specified threshold. Also, records the total number of first contentful + paints. For a single first contentful paint event, data may be recorded in + multiple buckets. Recorded at the time when first contentful paint happens. + Recorded only for page loads that have scheme http://, are user-initiated, + and are new navigations (that is, they are not reloads nor forward or back + navigations). + + + + + tbansal@chromium.org + + Records if the time from navigation to first contentful paint was less than + the specified threshold. Also, records the total number of first contentful + paints. For a single first contentful paint event, data may be recorded in + multiple buckets. Recorded at the time when first contentful paint happens. + Recorded only for page loads that have scheme https://. + + + + + dougarnett@chromium.org + tbansal@chromium.org + + Records if the time from navigation to first contentful paint was less than + the specified threshold. Also, records the total number of first contentful + paints. For a single first contentful paint event, data may be recorded in + multiple buckets. Recorded at the time when first contentful paint happens. + Recorded only for page loads that have scheme https://, are user-initiated, + and are new navigations (that is, they are not reloads nor forward or back + navigations). + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The {Timing} time of pages with the Service Worker fetch handlers. Metrics + won't be recorded if pages are not controlled by service workers. The + metrics are broken down by {HandlerType}. {HandlerType} only explains the + page's handler type, and it does not mean the fetch handler is actually + skipped or not. + + + + + + + + + + + + + tluk@chromium.org + chrome-cros@chromium.org + + Measures First Input Delay, the duration between the hardware timestamp and + the start of event processing on the main thread for the first meaningful + input per navigation. See https://goo.gl/tr1oTZ for a detailed explanation. + Only recorded for side search navigations from the side panel. + + + + + tluk@chromium.org + chrome-cros@chromium.org + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has + occurred in a Window. The gap between two consecutive shifts in a window is + not bigger than 1000ms and the maximum window size is 5000ms. This metric's + integral value is 10000x the fractional cumulative layout shift score + described in the explainer. Only recorded for side search navigations from + the side panel. + + This is recorded when the side search WebContents in the side panel is + navigated. + + + + + tluk@chromium.org + chrome-cros@chromium.org + + Measures the time from navigation start to first contentful paint. Only + recorded for side search navigations from the side panel. + + + + + tluk@chromium.org + chrome-cros@chromium.org + + Measures the time from navigation start to largest contentful paint. Only + recorded for side search navigations from the side panel. + + This is recorded when the side search WebContents in the side panel is + navigated. + + + + + dtapuska@chromium.org + kenjibaheux@google.com + + Measures the time from navigation start to first contentful paint. Recorded + for pages that contain a resource that may benefit from stale while + revalidate. + + + + + dtapuska@chromium.org + kenjibaheux@google.com + + Measures the time from parse start to first contentful paint. Recorded for + pages that contain a resource that may benefit from stale while revalidate. + + + + + jkarlin@chromium.org + johnidel@chromium.org + + The time from navigation start to the first contentful paint of third-party + (in respect to scheme://eTLD+1) frames on pages. Note that this can be + significantly delayed due to lazy loading. + + Note also that all of the PageLoad.Clients.ThirdParty.Frames metrics will + only be recorded for the first kMaxRecordedFrames (50) active iframe + RenderFrameHosts (at any given time). + + + + + awillia@chromium.org + djmitche@chromium.org + + The time from navigation start to the first contentful paint of third-party + opaque origin frames on pages. Note that this metric is only collected when + the top-level origin is not opaque. Also, this metric can be significantly + delayed due to lazy loading. + + Note also that all of the PageLoad.Clients.ThirdParty.Frames metrics will + only be recorded for the first kMaxRecordedFrames (50) active iframe + RenderFrameHosts (at any given time). + + + + + awillia@chromium.org + djmitche@chromium.org + + The time from navigation start to the largest contentful paint of + third-party opaque origin frames on pages. Note that this metric is only + collected when the top-level origin is not opaque. + + Note also that all of the PageLoad.Clients.ThirdParty.Frames metrics will + only be recorded for the first kMaxRecordedFrames (50) active iframe + RenderFrameHosts (at any given time). + + + + + jkarlin@chromium.org + yaoxia@chromium.org + + The number of third party (in respect to scheme://eTLD+1) origins on a page + that read cookies either via resource request headers or document.cookie. + + + + + jkarlin@chromium.org + yaoxia@chromium.org + + The number of third party (in respect to scheme://eTLD+1) origins on a page + that changed cookies either via resource response headers or + document.cookie. + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + The number of third-parties (in respect to scheme://eTLD+1) on a page that + access local storage via window.localStorage. + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + The number of third-parties (in respect to scheme://eTLD+1) on a page that + access session storage via window.sessionStorage. + + + + + shivanisha@chromium.org + jkarlin@chromium.org + + Records the largest contentful paint only for pages that load a third party + font and whose largest contentful resource type is text. See + PageLoad.PaintTiming.NavigationToLargestContentfulPaint2 for details. + + + + + kenoss@chromium.org + toyoshim@chromium.org + + The duration of + UseCounterPageLoadMetricsObserver::DidActivatePrerenderedPage. + + Recorded iff the page is prerendered and activated. When a page is + prerendered, metrics "Blink.UseCounter.*" are buffered into + memory. When a page is activated then, buffered metrics are flushed and + recorded. This metric records the duration of this flush, in case of this + cause a performance degradation. + + Warning: this histogram was expired from 2023-03-16 to 2023-03-29; data may + be missing. + + + + + ksakamoto@chromium.org + chikamune@chromium.org + blink-network-dev@chromium.org + + PageLoad.PaintTiming.NavigationToFirstContentfulPaint, but recorded only for + {Origin} navigations. + + + + + + + + + ksakamoto@chromium.org + chikamune@chromium.org + blink-network-dev@chromium.org + + PageLoad.InteractiveTiming.FirstInputDelay4, but recorded only for {Origin} + navigations. + + + + + + + + + ksakamoto@chromium.org + chikamune@chromium.org + blink-network-dev@chromium.org + + PageLoad.PaintTiming.NavigationToLargestContentfulPaint2, but recorded only + for {Origin} navigations. + + + + + + + + + ksakamoto@chromium.org + chikamune@chromium.org + blink-network-dev@chromium.org + + PageLoad.LayoutInstability.CumulativeShiftScore, but recorded only for + {Origin} navigations. + + + + + + + + + ksakamoto@chromium.org + chikamune@chromium.org + blink-network-dev@chromium.org + + PageLoad.LayoutInstability.CumulativeShiftScore.MainFrame, but recorded only + for {Origin} navigations. + + + + + + + + + johnidel@chromium.org + chrome-ads-histograms@google.com + + Only recorded if the page has at least one identified ad frame. Recorded in + PageLoadMetrics when the page is destroyed. Cpu measures the wall time of + tasks attributable to a frame as reported by the MainThreadTaskScheduler as + well as time spent servicing scripted animations by each document (not + attributable by the MainThreadTaskScheduler). An ad frame consists of the + identified ad frame and all of its children (which may also be ads, but are + counted as part of the ancestor ad frame). Includes resources that did not + finish loading. Does not consider time while a page is backgrounded. + + + + + alexmt@chromium.org + johnidel@chromium.org + + Recorded when the page is destroyed or the app is backgrounded on mobile. + Records the total wall time of tasks attributable to the page across its + lifetime. Considers both the CPU usage while the page is in the foreground + and in the background. + + + + + alexmt@chromium.org + johnidel@chromium.org + + Recorded when the page is destroyed or the app is backgrounded on mobile. + Records the total wall time of tasks attributable to the page across its + lifetime. Does not consider CPU usage while a page is backgrounded. + + + + + bmcquade@chromium.org + csharrison@chromium.org + + Measures the time from navigation timing's navigation start to the time the + DOMContentLoaded event is fired, for main frame documents. + + + + + bmcquade@chromium.org + csharrison@chromium.org + + + Measures the time from navigation timing's navigation start to the time the + load event is fired, for main frame documents. + + + + + + This experimental metric has been removed from the code. + + bmcquade@chromium.org + csharrison@chromium.org + + This metric is still experimental and not yet ready to be relied upon. + Measures the time from navigation start to the time the page load was + aborted due to being backgrounded. + + + + + + This experimental metric has been removed from the code. + + csharrison@chromium.org + + This metric is still experimental and not yet ready to be relied upon. + Measures the time from navigation start to the time the page load was + aborted by the user closing the tab or browser. + + + + + + This experimental metric has been removed from the code. + + csharrison@chromium.org + + This metric is still experimental and not yet ready to be relied upon. + Measures the time from navigation start to the time the page load was + aborted by a forward or back navigation. + + + + + + This experimental metric has been removed from the code. + + csharrison@chromium.org + + This metric is still experimental and not yet ready to be relied upon. + Measures the time from navigation start to the time the page load was + aborted by a new navigation. + + + + + + This experimental metric has been removed from the code. + + csharrison@chromium.org + + This metric is still experimental and not yet ready to be relied upon. + Measures the time from navigation start to the time the page load was + aborted. The abort cause is unknown. + + + + + + This experimental metric has been removed from the code. + + csharrison@chromium.org + + This metric is still experimental and not yet ready to be relied upon. + Measures the time from navigation start to the time the page load was + aborted by a reload. + + + + + + This experimental metric has been removed from the code. + + csharrison@chromium.org + + This metric is still experimental and not yet ready to be relied upon. + Measures the time from navigation start to the time the page load was + aborted by the user pressing stop. + + + + + dougarnett@chromium.org + tbansal@chromium.org + sullivan@chromium.org + + The maximum size click input burst for the page load. A click input burst is + a sequence of user click inputs at approximately the same screen position + where the clicks each occur soon after the previous one (e.g., within half + second). This is intended to detect possible rage clicks by the user. + + Note: stat collection stopped in August 2021, and resumes in February 2023. + + + + + spelchat@chromium.org + chrome-brapp-loading@google.com + + The time between the OS-level input event that initiated a navigation, and + the navigation actually starting. + + + + + spelchat@chromium.org + chrome-brapp-loading@google.com + + The time between the OS-level input event that initiated a navigation, and + the navigation actually starting, for background loads. + + + + + spelchat@chromium.org + chrome-brapp-loading@google.com + + The time between the OS-level click/tap event and navigation start, for + clicks on links in the renderer. + + + + + spelchat@chromium.org + chrome-brapp-loading@google.com + + The time between the OS-level keypress/tap event in the omnibox and + navigation start, for navigations from the omnibox. + + + + + + This experimental metric has been replaced by + PageLoad.LayoutInstability.CumulativeShiftScoreAtFirstOnHidden in M113, + which is now an official histogram without any change in the implementation. + + lanwei@chromium.org + speed-metrics-dev@chromium.org + + Measures the cumulative layout shift score (bit.ly/lsm-explainer) that has + occurred on the page (including all subframes) until the first time the page + moves from the foreground to the background. It is recorded when the tab is + first hidden after it is first shown in foreground. This metric is trying to + record the layout shift values which are not able to be recorded in + PageLoad.LayoutInstability.CumulativeShiftScore for some reasons. + + + + + + This experimental metric has been removed from the code and it is replaced + by + PageLoad.LayoutInstability.MaxCumulativeShiftScoreAtFirstOnHidden.SessionWindow.Gap1000ms.Max5000ms + which increases granularity to get coverage for ~25% of the values in the + 0-0.1 range by using 50 buckets for the 0.0-2.4 range instead of 0.0-10.0 + range in M113. + + lanwei@chromium.org + speed-metrics-dev@chromium.org + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has + occurred in a Window until the first time the page moves from the foreground + to the background. The gap between two consecutive shifts in a window is not + bigger than 1000ms and the maximum window size is 5000ms. This metric's + integral value is 10000x the fractional cumulative layout shift score + described in the explainer. It is recorded when the tab is first hidden + after it is first shown in foreground. This metric is trying to record the + layout shift values which are not able to be recorded in + PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms2 + for some reasons. + + + + + cammie@chromium.org + jkarlin@chromium.org + johnidel@chromium.org + + The maximum reported number of kilobytes of memory used by V8 by the main + frame in this pageload. + + Only recorded if memory tracking is enabled. Recorded in PageLoadMetrics + when the page is destroyed. + + + + + cammie@chromium.org + jkarlin@chromium.org + johnidel@chromium.org + + The maximum reported aggregate number of kilobytes of memory used by V8 by + subframes in this pageload. The value recorded is the maximum simultaneous + usage by all subframes during this pageload, not including the main frame. + + Only recorded if memory tracking is enabled. Recorded in PageLoadMetrics + when the page is destroyed. + + + + + cammie@chromium.org + jkarlin@chromium.org + johnidel@chromium.org + + The maximum reported aggregate number of kilobytes of memory used by V8 by + all frames in this pageload. The value recorded is the maximum simultaneous + usage by all frames during this pageload, including the main frame. + + Only recorded if memory tracking is enabled. Recorded in PageLoadMetrics + when the page is destroyed. + + + + + nhiroki@chromium.org + chrome-loading@google.com + + The interval between when a callback for the navigation loader is last + invoked and when navigation commit message is sent to a renderer process for + the main resource of a main frame navigation. + + + + + nhiroki@chromium.org + chrome-loading@google.com + + The interval between when the final HTTP request is sent and when the + headers of the final HTTP response is received for the main resource of a + main frame navigation. + + + + + nhiroki@chromium.org + chrome-loading@google.com + + The interval between when the headers of the final HTTP response is received + and when a callback for the navigation loader is last invoked for the main + resource of a main frame navigation. + + + + + nhiroki@chromium.org + chrome-loading@google.com + + The interval between when the first HTTP request is sent and when the + headers of the first HTTP response is received for the main resource of a + main frame navigation. + + + + + nhiroki@chromium.org + chrome-loading@google.com + + The interval between when the headers of the first HTTP response is received + and when a callback for the navigation loader is first invoked for the main + resource of a main frame navigation. + + + + + nhiroki@chromium.org + chrome-loading@google.com + + The time relative to navigation start that a callback for the navigation + loader is last invoked for the main resource of a main frame navigation. + + + + + nhiroki@chromium.org + chrome-loading@google.com + + The time relative to navigation start that the final HTTP request is sent + for the main resource of a main frame navigation. + + + + + nhiroki@chromium.org + chrome-loading@google.com + + The time relative to navigation start that the headers of the final HTTP + response is received for the main resource of a main frame navigation. + + + + + nhiroki@chromium.org + chrome-loading@google.com + + The time relative to navigation start that a callback for the navigation + loader is first invoked for the main resource of a main frame navigation. + + + + + nhiroki@chromium.org + chrome-loading@google.com + + The time relative to navigation start that the first HTTP request is sent + for the main resource of a main frame navigation. + + + + + nhiroki@chromium.org + chrome-loading@google.com + + The time relative to navigation start that the headers of the first HTTP + response is received for the main resource of a main frame navigation. + + + + + nhiroki@chromium.org + chrome-loading@google.com + + The time relative to navigation start that navigation commit message for a + main frame navigation is sent to a renderer process. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time from load start to when headers have been received for + resource requests which come from the cache. Logged for every + {RequestDestination} resource request from the cache. + + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time from when the navigation commit was sent to the renderer + to the first subresource load start. Logged for every page load which has + subresources. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time from navigation start to the first subresource load start. + Logged for every page load which has subresources. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time from load start to when headers have been received for + resource requests which do not come from the cache. Logged for every + {RequestDestination} resource request which is not from the cache. + + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the aggregate time of subresource requests (from start to when + headers have been received) which have been completed before the first + contentful paint. Logged for every page load. + + + + + iclelland@chromium.org + speed-metrics-dev@chromium.org + + Determines the final status for this page load. That is, records whether the + page was never foregrounded, was foregrounded but did not reach FCP, or did + reach FCP. The metric is recorded at the end of each page load. As usual + with PageLoad metrics, we consider app backgrounding on Android to be the + end of page load as well as the app could be evicted by Android anytime + after that happens. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time from when the page is first eligible to paint to when the + first paint occurs. Logged for every foreground page load. + + + + + sullivan@chromium.org + + The time between the OS-level input event that initiated a navigation, and + the first contentful paint of the page that was loaded in the navigation. + + + + + cduvall@chromium.org + jam@chromium.org + + Measures the time from navigation start to when the page is eligible to + paint. Logged for every foreground page load. + + + + + npm@chromium.org + speed-metrics-dev@chromium.org + + The total amount of time the page spent in the foreground. Note that this + metric adds all foreground durations occurring for the page. For example: if + the page starts foregrounded during 1 second, then goes to the background + for a while, then is foregrounded again for 2 seconds, and then is unloaded, + this metric reports 3 seconds. The metric is recorded at the end of each + page load. As usual with PageLoad metrics, we consider app backgrounding on + Android to be the end of page load as well as the app could be evicted by + Android anytime after that happens. + + + + + cammie@chromium.org + jkarlin@chromium.org + chrome-ads-histograms@google.com + + For each identified ad frame, whether the origin of the ad creative frame + matches or differs from the origin of the main frame. + + The ad creative frame is heuristically determined, from among an identified + ad frame and all of its children, as the first of these frames to record a + First Contentful Paint. If no FCP is recorded, the creative origin status is + marked as indeterminate. + + + + + cammie@chromium.org + jkarlin@chromium.org + chrome-ads-histograms@google.com + + For each identified ad frame, whether the origin of the ad creative frame + matches or differs from the origin of the main frame, further split by + whether the frame has lifecycle updates throttled. Metric is emitted on + frame deletion. + + The ad creative frame is heuristically determined, from among an identified + ad frame and all of its children, as the first of these frames to record a + First Contentful Paint. If no FCP is recorded, the creative origin status is + marked as indeterminate. Frames that are render-throttled will not have an + FCP. Ad frames with indeterminate creative origin status are broken out as + throttled or not. + + + + + johnidel@chromium.org + chrome-ads-histograms@google.com + + For each identified ad frame, whether the origin of the ad matches the + origin of the main frame, differs from the origin of the main frame, or is + indeterminable. + + An ad frame consists of the identified ad frame and all of its children + (which may also be ads, but are counted as part of the ancestor ad frame). + Frames of zero bytes (e.g., never had a document or their document was + doc.written and no sub-resources were loaded) are not counted. + + + + + johnidel@chromium.org + csharrison@chromium.org + + For each identified ad frame, whether the sticky user activation bit was + ever set on the frame. Recorded for each ad frame when the page is destroyed + or navigated away from, including ad frames that no longer exist. + + An ad frame consists of the identified ad frame and all of its children + (which may also be ads, but are counted as part of the ancestor ad frame). + Frames of zero bytes (e.g., never had a document or their document was + doc.written and no sub-resources were loaded) are not counted. + + + + + jkarlin@chromium.org + johnidel@chromium.org + + The number of frames on the page that have loaded more than 0 bytes of + content or had non-zero CPU usage. + + For pages with zero ad frames, the other PageLoad.Clients.Ads metrics are + not recorded unless otherwise specified. This metric is not recorded on + sites where the subresource filter is enabled. + + Child frames of an ad frame are not included in the count. + + + + + johnidel@chromium.org + jkarlin@chromium.org + + Records heavy ad type for each ad frame, as determined by the first + threshold hit (see FrameData::HeavyadStatus). This is recorded regardless of + feature flag or other conditions that prevent the heavy ad intervention from + occuring. This includes 1 megabyte of random additive noise on the network + threshold. As such, it is possible for this histogram to record different + values for the same frame than PageLoad.HeavyAds.ComputedType2. + + Recored for all ad frames with non-zero bytes. Recorded when the ad frame + destroyed or when the page is destroyed. + + It is possible for multiple thresholds to be hit at the same time, with the + higher valued enums winning those race conditions. + + + + + johnidel@chromium.org + jkarlin@chromium.org + + Records the type of heavy ad unloaded by the heavy ad intervention. Heavy ad + type is determined by the first threshold hit. This is not recorded for ad + frames that are considered heavy but did not fufill other criteria for the + intervention. This includes the feature being enabled and being below the + per-origin intervention cap. + + It is possible for multiple thresholds to be hit at the same time, with the + higher valued enums winning those race conditions. + + + + + + + altimin@chromium.org + hajimehoshi@chromium.org + bfcache-dev@chromium.org + speed-metrics-dev@chromium.org + + Measures First Input Delay, the duration between the hardware timestamp and + the start of event processing on the main thread for the first meaningful + input per back-forward navigation. Recorded on first page interaction after + the page is restored from the back-forward cache. See https://goo.gl/tr1oTZ + for a detailed explanation. Excludes scrolls. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org AND chrome-analysis-team@google.com. + + Bucketing for this histogram should be kept in sync with bucketing for + PageLoad.InteractiveTiming.FirstInputDelay4. These two histograms will be + aggregated on the server to form the authoritative metric. + + + + + + + altimin@chromium.org + hajimehoshi@chromium.org + bfcache-dev@chromium.org + speed-metrics-dev@chromium.org + + iOS only. This is the same as + PageLoad.InteractiveTiming.FirstInputDelay.AfterBackForwardCacheRestore, but + uses the same bucketing on iOS as non-iOS platforms use in that metric. + + Measures First Input Delay, the duration between the hardware timestamp and + the start of event processing on the main thread for the first meaningful + input per back-forward navigation. Recorded on first page interaction after + the page is restored from the back-forward cache. See https://goo.gl/tr1oTZ + for a detailed explanation. Excludes scrolls. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org AND chrome-analysis-team@google.com. + + Bucketing for this histogram should be kept in sync with bucketing for + PageLoad.InteractiveTiming.FirstInputDelay4_iOSFixed. These two histograms + will be aggregated on the server to form the authoritative metric. + + + + + + + sullivan@chromium.org + speed-metrics-dev@chromium.org + chrome-analysis-team@google.com + + Measures First Input Delay, the duration between the hardware timestamp and + the start of event processing on the main thread for the first meaningful + input per navigation. Recorded on first page interaction. See + https://goo.gl/tr1oTZ for a detailed explanation. Excludes scrolls. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org AND chrome-analysis-team@google.com. + + Bucketing for this histogram should be kept in sync with bucketing for + PageLoad.InteractiveTiming.FirstInputDelay.AfterBackForwardCacheRestore. + These two histograms will be aggregated on the server to form the + authoritative metric. + + Log of major changes: http://bit.ly/chrome-speed-metrics-changelog + + + + + + + sullivan@chromium.org + speed-metrics-dev@chromium.org + chrome-analysis-team@google.com + + iOS only. This is the same as PageLoad.InteractiveTiming.FirstInputDelay4, + but uses the same bucketing on iOS as non-iOS platforms use in that metric. + + Measures First Input Delay, the duration between the hardware timestamp and + the start of event processing on the main thread for the first meaningful + input per navigation. Recorded on first page interaction. See + https://goo.gl/tr1oTZ for a detailed explanation. Excludes scrolls. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org AND chrome-analysis-team@google.com. + + Bucketing for this histogram should be kept in sync with bucketing for + PageLoad.InteractiveTiming.FirstInputDelay.AfterBackForwardCacheRestore_iOSFixed. + These two histograms will be aggregated on the server to form the + authoritative metric. + + Log of major changes: http://bit.ly/chrome-speed-metrics-changelog + + + + + sullivan@chromium.org + speed-metrics-dev@chromium.org + + The duration between navigation start and the hardware timestamp of the + first meaningful input per navigation. Recorded on first page interaction. + See https://goo.gl/tr1oTZ for a detailed explanation. Excludes scrolls. + + + + + + + sullivan@chromium.org + speed-metrics-dev@chromium.org + chrome-analysis-team@google.com + + The duration between the hardware timestamp and the start of event + processing on the main thread for a meaningful input. Excludes scrolls. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org AND chrome-analysis-team@google.com. + + WARNING: The long tail of this metric is buggy on Mac (overflows for a + subset of users) which can lead to surprising false regressions or + improvements. + + + + + + + sullivan@chromium.org + speed-metrics-dev@chromium.org + + The duration between navigation start and the hardware timestamp of a + meaningful input. Excludes scrolls. + + + + + sullivan@chromium.org + speed-metrics-dev@chromium.org + + The number of user interactions in a page load. Definition of interaction: + https://web.dev/better-responsiveness-metric/#group-events-into-interactions + + + + + + + + + iclelland@chromium.org + speed-metrics-dev@chromium.org + + The duration between the start of event processing and the end of event + processing on the main thread for a meaningful input. Excludes scrolls. + + This metric is recorded when users interact with the page, which may trigger + input events such as pointerdown, keydown, click and mousedown. + + + + + iclelland@chromium.org + speed-metrics-dev@chromium.org + + The duration between the end of event processing and the time when the first + paint was performed on the main thread for a meaningful input. Excludes + scrolls. + + This metric is recorded when users interact with the page, which may trigger + input events such as pointerdown, keydown, click and mousedown. + + + + + iclelland@chromium.org + speed-metrics-dev@chromium.org + + The {NormalizedResponsivenessMetric} of a page load {PageLoadType}, in ms. + For this metric, we measure the latency of a user interaction by the + {UserInteractionLatency} within the user interaction. + + Recorded at the end of the page load lifetime, such as when users navigate + to a new web page, except + UserInteractionLatencyAtFirstOnHidden.HighPercentile2, which is recorded + when a page is moved from the foreground to the background for the first + time. UserInteractionLatencyAtFirstOnHidden.HighPercentile2 is trying to + record the INP values which are not able to be recorded in + UserInteractionLatency.HighPercentile2 for some reasons. + + + + + + + + + + + + + + + + + + + + + + + + csharrison@chromium.org + bmcquade@chromium.org + + Counts of various internal error conditions in the page_load_metrics system. + + + + + toyoshim@chromium.org + src/components/page_load_metrics/OWNERS + src/content/browser/preloading/prerender/OWNERS + + The status of validity check of PageLoadTiming structs received from the + render process over IPC. Recorded when timing information is {Condition}. + Warning: this histogram was expired from 2021-01-31 to 2023-01-13; data may + be missing. + + + + + + + + + + + toyoshim@chromium.org + mparch-dev@chromium.org + + This records the Page type that each PageLoadTracker tracks. This metric is + recorded when a PageLoadTracker is created for a Page. + + + + + iclelland@chromium.org + speed-metrics-dev@chromium.org + + Measures whether the largest contentful paint, whose timestamp is measured + by PageLoad.PaintTiming.NavigationToLargestContentfulPaint2, comes from text + or image. This value is recorded whenever + PageLoad.PaintTiming.NavigationToLargestContentfulPaint2 is recorded. + + + + + iclelland@chromium.org + speed-metrics-dev@chromium.org + + Measures whether the largest contentful paint in the main frame, whose + timestamp is measured by + PageLoad.PaintTiming.NavigationToLargestContentfulPaint2.MainFrame, comes + from text or image. This value is recorded whenever + PageLoad.PaintTiming.NavigationToLargestContentfulPaint2.MainFrame is + recorded. + + + + + sullivan@chromium.org + + Breakdown of NavigationToFirstContentfulPaint counts by process that + initiated the navigation (this will only be renderer or browser). + + + + + lingqi@chromium.org + chrome-prerendering@google.com + + Records error codes for loading of a main resource of a main frame which + belongs to a prerendered and then activated page when the page received + loading completion event for the resource. + + This metric is used to monitor whether preload cache intercepting logic + causes extra page loading errors. + + + + + + + + kenoss@chromium.org + src/content/browser/preloading/prerender/OWNERS + + Counts page load events related to Prerender2, like navigation in + prerendered main frame and prerendering activation navigation. Recorded when + those events are observed in PageLoadTracker. + + + + + nhiroki@chromium.org + src/content/browser/preloading/prerender/OWNERS + + Records results of the foreground check per event type in + PrerenderPageLoadMetricsObserver. + + + + + + + + + + + nhiroki@chromium.org + src/content/browser/preloading/prerender/OWNERS + + Counts page load observer events related to Prerender2, like + FirstContentfulPaint. Recorded when those events are observed in + PrerenderPageLoaderMetricsObserver. + + + + + nhiroki@chromium.org + src/content/browser/preloading/prerender/OWNERS + + Records the visibility of an initiator page in PageLoadTracker when a + prerendered page gets activated. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + 'Swap time' is the timestamp of the renderer submitting a CompositorFrame, + and 'Presentation time' is the timestamp of the frame becoming visible on + screen. This metric measures the duration between the swap-time and the + presentation-time. This is recorded only if a valid presentation-timestamp + is available. See PageLoad.Internal.Renderer.PresentationTime.Valid for how + often the presentation-timestamp is valid. This is reported only for + compositor-frames that report a paint-timing metric (e.g. + FirstContentfulPaint etc.), and after that frame has been displayed on + screen. + + The metric had expired on 2020-09-27, and re-enabled on 2021-03-17. So the + data within this period is incomplete. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + This boolean keeps track of whether a valid presentation-timestamp was + received or not. This is reported only for compositor-frames that report a + paint-timing metric (e.g. FirstContentfulPaint etc.), and after that frame + has been displayed on screen. + + The metric had expired on 2020-09-27, and re-enabled on 2021-03-17. So the + data within this period is incomplete. + + + + + mehdika@chromium.org + blink-interactions-team@google.com + + Measures the number of events observed before the first paint. This metric + is emitted for every committed page load, immediately after the first paint + is complete. When the DropInputEventsBeforeFirstPaint feature is enabled + these events will be dropped as the user may not have seen the content they + are interacting with yet. Since there is a delay from the first paint + presentation to when the notification about it is received the user may have + actually seen the first paint for some of these events. If many events are + being dropped we may need to revisit this experiment or improve the + measurement to only those after the first paint. + + + + + mehdika@chromium.org + blink-interactions-team@google.com + + Measures time difference between first paint and last event dropped by + DropInputEventsBeforeFirstPaint feature. This metric is emitted for every + committed page load, immediately after the first paint is complete. When the + DropInputEventsBeforeFirstPaint feature is enabled events observed before + the first paint will be dropped as the user may not have seen the content + they are interacting with yet. Since there is a delay from the first paint + presentation to when the notification about it is received the user may have + actually seen the first paint for some of these events. If this time + difference is long enough to affect user experience we may need to revisit + this experiment. We are logging 0 timestamp if there is no suppressed event + or the most recent suppressed event is before the first paint time so that + we have a count of the number of times the behavior was good to compare the + size of the bad cases to. + + + + + bmcquade@chromium.org + skobes@chromium.org + + Measures the cumulative layout shift score (bit.ly/lsm-explainer) that has + occurred on the page (including all subframes). Higher values correspond to + greater instability, which is bad. Recorded at the end of the page lifetime, + such as when the page is being navigated away from or when a tab is being + closed. Stable since M79; previous versions are expermental and subject to + fluctuation between releases. + + Bucketing for this histogram should be kept in sync with bucketing for + PageLoad.LayoutInstability.CumulativeShiftScore.AfterBackForwardCacheRestore. + These two histograms will be aggregated on the server to form the + authoritative metric. + + Log of major changes: http://bit.ly/chrome-speed-metrics-changelog + + + + + + + altimin@chromium.org + hajimehoshi@chromium.org + bfcache-dev@chromium.org + + Measures the cumulative layout shift score (bit.ly/3fQz29y) that has + occurred on the page (including all subframes) after the page is restored + from the back-forward cache. Recorded when the user navigates away or closes + the page after the page was restored from back-forward cache. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org AND chrome-analysis-team@google.com. + + Bucketing for this histogram should be kept in sync with bucketing for + PageLoad.LayoutInstability.CumulativeShiftScore. These two histograms will + be aggregated on the server to form the authoritative metric. + + + + + bmcquade@chromium.org + skobes@chromium.org + + Measures the cumulative layout shift score (bit.ly/lsm-explainer) that has + occurred in the main frame. Recorded at the end of the page lifetime, such + as when the page is being navigated away from or when a tab is being closed. + + + + + altimin@chromium.org + hajimehoshi@chromium.org + bfcache-dev@chromium.org + + Measures the cumulative layout shift score (bit.ly/3fQz29y) that has + occurred in the main frame after the page is restored from the back-forward + cache. Recorded when the user navigates away or closes the page after the + page was restored from back-forward cache. + + + + + lanwei@chromium.org + speed-metrics-dev@chromium.org + + Measures the cumulative layout shift score (bit.ly/lsm-explainer) that has + occurred on the page (including all subframes) until the first time the page + moves from the foreground to the background. It is recorded when the tab is + first hidden after it is first shown in foreground. This metric is trying to + record the layout shift values which are not able to be recorded in + PageLoad.LayoutInstability.CumulativeShiftScore for some reasons. + + + + + + + sullivan@chromium.org + speed-metrics-dev@chromium.org + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has + occurred in after back forward cache restore. The gap between two + consecutive shifts in a window is not bigger than 1000ms and the maximum + window size is 5000ms. This metric's integral value is 10000x the fractional + cumulative layout shift score described in the explainer. If {Bfcache} is + triggered, we record the metric when the user navigates away or closes the + page after the page was restored from back-forward cache. Otherwise, we + record it at the end of the page lifetime, such as when the page is being + navigated away from or when a tab is being closed. + + Replaces + PageLoad.LayoutInstability.MaxCumulativeShiftScore.AfterBackForwardCacheRestore.SessionWindow.Gap1000ms.Max5000ms + and increases granularity in order to get more coverage for ~5% of values in + the 0-0.1 range. + + + + + + + sullivan@chromium.org + speed-metrics-dev@chromium.org + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has + occurred in a Window. The gap between two consecutive shifts in a window is + not bigger than 1000ms and the maximum window size is 5000ms. This metric's + integral value is 10000x the fractional cumulative layout shift score + described in the explainer. If {Bfcache} is triggered, we record the metric + when the user navigates away or closes the page after the page was restored + from back-forward cache. Otherwise, we record it at the end of the page + lifetime, such as when the page is being navigated away from or when a tab + is being closed. + + Replaces + PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms + and increases granularity to get coverage for ~25% of the values in the + 0-0.1 range. + + + + + iclelland@chromium.org + speed-metrics-dev@chromium.org + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has + occurred in a {Window}. The gap between two consecutive shifts in a window + is not bigger than {Gap} and the maximum window size is {MaxWindowSize}. + This metric's integral value is 10x the fractional cumulative layout shift + score described in the explainer. If {Bfcache} is triggered, we record the + metric when the user navigates away or closes the page after the page was + restored from back-forward cache. Otherwise, we record it at the end of the + page lifetime, such as when the page is being navigated away from or when a + tab is being closed. + + + + + + + + + + + + + + + + + + + + lanwei@chromium.org + speed-metrics-dev@chromium.org + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has + occurred in a Window until the first time the page moves from the foreground + to the background. The gap between two consecutive shifts in a window is not + bigger than 1000ms and the maximum window size is 5000ms. This metric's + integral value is 10000x the fractional cumulative layout shift score + described in the explainer. It is recorded when the tab is first hidden + after it is first shown in foreground. This metric is trying to record the + layout shift values which are not able to be recorded in + PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms2 + for some reasons. + + Replaced + Experimental.LayoutInstability.MaxCumulativeShiftScoreAtFirstOnHidden.SessionWindow.Gap1000ms.Max5000ms + and increases granularity to get coverage for ~25% of the values in the + 0-0.1 range. + + + + + bmcquade@chromium.org + + For page loads that start in the foreground, measures the duration of time + until one of the following events occurs: the load of the main resource + fails, the page load is stopped, the tab hosting the page is closed, the + render process hosting the page goes away, a new navigation which later + commits is initiated in the same tab, or the tab hosting the page is + backgrounded. This metric has a very long tail, for pages that spend a long + period of time in the foreground. As such, use of the mean or tail values + are not recommended. + + + + + jkarlin@chromium.org + + The time since navigation start before the user presses the back button on a + page. Only measures page loads that remained in foreground and were created + by user gesture inside the renderer (as opposed to browser UX gestures). + + + + + bmcquade@chromium.org + csharrison@chromium.org + + Measures the time from navigation timing's navigation start to the time the + user first foregrounds an initially backgrounded tab. Only measures + navigations that started in the background. + + + + + sullivan@chromium.org + speed-metrics-dev@chromium.org + + Measures the time from a background tab being switched to the foreground to + the time the first contentful paint is performed, for main frame documents. + + + + + + + ksakamoto@chromium.org + speed-metrics-dev@chromium.org + chrome-analysis-team@google.com + + + The time from navigation start to first "contentful" paint. This + metric does not include all page loads. If you need all page loads, add + PageLoad.PaintTiming.NavigationToFirstContentfulPaint.Background. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org AND chrome-analysis-team@google.com. + + Bucketing for this histogram should be kept in sync with bucketing for + PageLoad.PaintTiming.NavigationToFirstPaint.AfterBackForwardCacheRestore. + These two histograms will be aggregated on the server to form the + authoritative metric. + + Log of major changes: http://bit.ly/chrome-speed-metrics-changelog + + + + + sullivan@chromium.org + speed-metrics-dev@chromium.org + + Measures the time from navigation timing's navigation start to the time the + first image is painted, for main frame documents. For images that render + progressively, this is recorded as soon as any image pixels have been drawn. + + + + + ksakamoto@chromium.org + speed-metrics-dev@chromium.org + + Measures the time from navigation timing's navigation start to the time the + first paint is performed, for main frame documents. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org. + + + + + altimin@chromium.org + djw@chromium.org + bfcache-dev@chromium.org + speed-metrics-dev@chromium.org + + Measures the time from back-forward navigation timing's navigation start to + the time the first paint is performed, for main frame documents. Recorded + only when the page is restored from back-forward cache. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org. + + Bucketing for this histogram should be kept in sync with bucketing for + PageLoad.PaintTiming.NavigationToFirstContentfulPaint. + + + + + + + altimin@chromium.org + bfcache-dev@chromium.org + speed-metrics-dev@chromium.org + + Meastures the time duration between the page restore from BFcache and the + {Count} requestAnimationFrame time. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org AND chrome-analysis-team@google.com. + + Bucketing for this histogram should be kept in sync with bucketing for + PageLoad.PaintTiming.NavigationToFirstContentfulPaint. These two histograms + will be aggregated on the server to form the authoritative metric. + + + + + + + + + + npm@chromium.org + speed-metrics-dev@chromium.org + + Measures the time from navigation timing's navigation start to the time the + largest content (text or image) is first painted, across all frames. + Excludes any content painted after user input. Includes content that has + been removed from the page. See web.dev/lcp for more details. + + The value is recorded at the end of each page load or the latest time when + we can reliably record: when the page is navigated away, the browser is + closed, or on Android when the browser is backgrounded. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org AND chrome-analysis-team@google.com. + + Log of major changes: http://bit.ly/chrome-speed-metrics-changelog + + + + + sisidovski@google.com + kouhei@chromium.org + + Similar to PaintTiming.NavigationToLargestContentfulPaint2, this measures + the time in milliseconds from navigation timing's navigation start to the + time when the page first paints the largest content (text or image) in the + cross-site subframe which is the top candidate of largest contentful paint. + + + + + npm@chromium.org + speed-metrics-dev@chromium.org + + Measures the time from navigation timing's navigation start to the time the + largest content (text or image) is first painted, for main frame documents. + See PageLoad.PaintTiming.NavigationToLargestContentfulPaint2 for more + information. + + + + + lanwei@chromium.org + speed-metrics-dev@chromium.org + + Measures the time from navigation timing's navigation start to the time the + largest content (text or image) is first painted, across all frames. + Recorded at the point when a page which has been opened in the foreground is + moved to the background for the first time. Excludes any content painted + after user input. Includes content that has been removed from the page. See + web.dev/lcp for more details. + + This metric is trying to record the LCP values which are not able to be + recorded in PageLoad.PaintTiming.NavigationToLargestContentfulPaint2 for + some reasons. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org AND chrome-analysis-team@google.com. + + Log of major changes: http://bit.ly/chrome-speed-metrics-changelog + + + + + bmcquade@chromium.org + csharrison@chromium.org + speed-metrics-dev@chromium.org + + Measures the time from when the HTML parser started, to when the page first + paints content. + + + + + bmcquade@chromium.org + csharrison@chromium.org + + Measures the time from navigation timing's navigation start to the time the + parser started, for main frame documents. + + + + + cduvall@chromium.org + swarm-team@google.com + + Measures the time that the HTML parser spent blocked on the execution of + scripts, for main frame documents that finished parsing. + + This histogram has incomplete data. It expired on 2022-02-01 and was + re-added on 2022-05-23. + + + + + cduvall@chromium.org + swarm-team@google.com + + Measures the time that the HTML parser spent blocked on the execution of + scripts inserted from document.write, for main frame documents that finished + parsing. + + This histogram has incomplete data. It expired on 2022-02-01 and was + re-added on 2022-05-23. + + + + + bmcquade@chromium.org + csharrison@chromium.org + + Measures the time that the HTML parser spent blocked on the load of scripts, + for main frame documents that finished parsing. + + + + + sclittle@chromium.org + offline-dev@chromium.org + + Total time the browser process waited for all render processes to save their + respective frames while saving a page into MHTML. + + + + + sclittle@chromium.org + offline-dev@chromium.org + + Time the browser process waited on a single frame to be saved by a render + processes while saving a page into MHTML. + + + + + sclittle@chromium.org + offline-dev@chromium.org + Final status of the MHTML save operation for a page. + + + + sclittle@chromium.org + offline-dev@chromium.org + + Time spent by the renderer main thread while saving one frame of a page to + MHTML. + + + + + sclittle@chromium.org + offline-dev@chromium.org + + Time spent writing a frame's encoded MHTML data to the file or data pipe + handle passed to the Renderer, recorded when the writing is done and the + handle is closed. Note that when writing to a data pipe, this metric does + not precisely reflect the time taken to write the data to disk. + + + + + sclittle@chromium.org + offline-dev@chromium.org + Reports the result of an attempt to load an MHTML archive. + + + + + diff --git a/histograms/metadata/password/OWNERS b/histograms/metadata/password/OWNERS new file mode 100644 index 000000000000..38ad8929a56b --- /dev/null +++ b/histograms/metadata/password/OWNERS @@ -0,0 +1,13 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +ioanap@chromium.org +mamir@chromium.org +vasilii@chromium.org +vsemeniuk@google.com + +# For PasswordProtection* metrics +drubery@chromium.org +thefrog@chromium.org +xinghuilu@chromium.org diff --git a/histograms/metadata/password/histograms.xml b/histograms/metadata/password/histograms.xml new file mode 100644 index 000000000000..0376d727daae --- /dev/null +++ b/histograms/metadata/password/histograms.xml @@ -0,0 +1,4443 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fhorschig@chromium.org + ioanap@chromium.org + + Android only. Records whenever users faces an action in the accessory bar or + one of its sheets. + + + + + fhorschig@chromium.org + ioanap@chromium.org + + Android only. Records whenever users select an action in the accessory bar + or one of its sheets. + + + + + fhorschig@chromium.org + ioanap@chromium.org + + Android only. Records how often users encounter the keyboard accessory bar. + Its buckets show the contents when it came up. Every bucket may be logged up + to one time per impression. + + + + + fhorschig@chromium.org + ioanap@chromium.org + + Android only. Records how many suggestions a user faced when opening a + sheet. The base histogram counts impressions across all sheets. + + + + + fhorschig@chromium.org + ioanap@chromium.org + + Android only. Records which type of suggestion was selected from an open + sheet. + + + + + fhorschig@chromium.org + ioanap@chromium.org + + Android only. Records how often the bottom sheet was opened or closed by a + user and the overall count of closures. Closing buckets may be logged up to + one time per trigger. There are suffixes for each specific sheet type. + + + + + ioanap@chromium.org + fhorschig@chromium.org + + Android only. Records how often the user clicks on a certain toggle when + opening an accessory sheet together with the state the toggle was in before + clicking. + + + + + ioanap@chromium.org + fhorschig@chromium.org + + Android only. Records how often the user sees a certain toggle when opening + an accessory sheet together with the state the toggle was in. + + + + + ioanap@chromium.org + fhorschig@chromium.org + + Android only. Records the number of times that the keyboard accessory was + shown on a form for which saving is disabled (with a crossed-out key icon). + Recorded when the user focuses the password field. + + Note: Only the "Shown" bucket should contain samples. + + + + + ioanap@chromium.org + vasilii@chromium.org + + Android only. Records the interactions with the password generation dialog + for {GenerationType}. Recorded when the user taps a button in the dialog or + dismsses it. + + + + + + + + + vsemeniuk@google.com + vasilii@chromium.org + + Records whether user clicked accept button on the Biometric Authentication + before filling promo dialog. Recorded when the dialog is closed. + + + + + vasilii@chromium.org + kazinova@google.com + + Whether the user proceeded to the list of the left compromised passwords + from the bubble following save/update password. + + + + + vasilii@chromium.org + kazinova@google.com + + The state of the bubble shown after users saves/updates a password. It + notifies the user about leftover compromised passwords. + + + + + vasilii@chromium.org + + When the password management bubble opened, what state was it in? + + + + + kolos@chromium.org + shaikhitdin@google.com + + Measures difference in length between generated password and submitted + password. False if length decreased, true if length increased. Uploaded once + per modified generated password submission. + + + + + kolos@chromium.org + shaikhitdin@google.com + + Measures types of user editing of generated passwords. Mask tracks if there + are several types of changes simultaneously happening on generated password. + Uploaded once per modified generated password submission. + + + + + kolos@chromium.org + shaikhitdin@google.com + + Measures difference in {CharacterClass} between generated password and + submitted password. Uploaded once per modified generated password + submission. + + + + + + + + + + + + kazinova@google.com + kolos@chromium.org + vasilii@chromium.org + + Measures the frequency of various password generation events. + + Note that this histogram is logged from the renderer process, and + consequently the numbers should not be directly compared to the other + PasswordGeneration.* histograms, which are logged from the browser process. + Histograms logged in different processes are lost at different rates, which + introduces systematic bias between histograms logged in the renderer process + vs. those logged in the browser process. + + + + + kolos@chromium.org + + Measures the frequency of user editing of generated passwords. Uploaded once + per generated password save. Applicable to automatic and manual generations. + + + + + kazinova@google.com + vasilii@chromium.org + Records an entry if (and only if) a popup was shown. + + + + kazinova@google.com + kolos@chromium.org + + Measures the frequency of submission events for passwords that could have + been generated, but the user didn't choose to use the feature. This is to + compare with PasswordGeneration.SubmssionEvent. + + + + + kazinova@google.com + kolos@chromium.org + + Measures the frequency of submission events for generated passwords. This is + similar to PasswordManager.ActionsTakenWithPsl but only tracks events which + are interesting for generated passwords. + + + + + kazinova@google.com + kolos@chromium.org + vasilii@chromium.org + + The number of times that we try to upload a form that we believe should + trigger password generation. False means that something about the form would + not allow us to try upload (not an Autofillable field, uploading disabled, + Autofill servers in backoff, etc.). True does not mean that the upload + actually completed successfully, just that it was started. + + + + + ioanap@chromium.org + vasilii@chromium.org + + Records user-triggered events related to a generated password. Only the last + occurring event is logged. The recording takes place when the password form + is destroyed. + + + + + mlerman@chromium.org + + Time required to create the local hash of the user's GAIA password. + + + + + vasilii@chromium.org + src/components/password_manager/OWNERS + + Records attempts to prompt user to save a password when password store is + not ready for saving passwords due to an initialization error. Recorded once + per form submission. + + + + + kazinova@google.com + vasilii@chromium.org + + The type of event that the Password Manager used for detecting a password + form submission when saving or updating a password. Recorded each time a + user accepts a password save/update prompt. + + + + + kazinova@google.com + vasilii@chromium.org + + Recorded whenever the user accesses the passwords in the settings page. + + + + + vasilii@chromium.org + kazinova@google.com + + The dismissal reason of the account chooser with multiple accounts. Recorded + when the account chooser is dismissed. + + + + + vasilii@chromium.org + kazinova@google.com + + The dismissal reason of the account chooser with one account. Recorded when + the account chooser is dismissed. + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + mamir@chromium.org + treib@chromium.org + + Records whether the account-scoped password storage had to be cleared during + profile initialization. + + + + + mamir@chromium.org + treib@chromium.org + + Records whether the account-scoped password storage had to be cleared during + regular profile initialization. + + + + + treib@chromium.org + victorvianna@google.com + mamir@chromium.org + + When the user accepts to move a password from the profile store to the + account store, this records what user action caused the moving flow to be + offered. If the flow is offered but rejected by the user, the histogram is + not recorded. Recorded only in Win/Mac/Linux/iOS and only once during bulk + move from settings. + + + + + treib@chromium.org + victorvianna@google.com + mamir@chromium.org + + When the user is offered to move a password from the profile store to the + account store, this records what user action caused the moving flow to be + offered. Recorded only in Win/Mac/Linux. + + + + + mamir@chromium.org + treib@chromium.org + + Recorded whenever a user opts in to the account-scoped password storage. The + recorded value is the total number of opted-in accounts in this profile, + including the new opt-in. + + + + + mamir@chromium.org + treib@chromium.org + + Recorded whenever a user opts out of the account-scoped password storage. + The recorded value is the total number of opted-in accounts remaining in + this profile after the current opt-out. + + + + + treib@chromium.org + victorvianna@google.com + mamir@chromium.org + + Records how many passwords in the account store were unsynced when the user + signed out of their Google Account. Recorded only in Win/Mac/Linux when a + user of the account-scoped password storage signs out. + + + + + victorvianna@google.com + src/components/password_manager/OWNERS + + Records the action that caused the one-time account storage notice to be + dismissed. Recorded for {EntryPoint} once both the bottom sheet and password + settings have been closed (the latter only in case the user clicked "go + to settings"). Mobile-only (in fact only iOS as of 03/2023). + + + + + + + + + + + victorvianna@google.com + src/components/password_manager/OWNERS + + Records the new state (enabled/disabled) of the account storage opt-in + switch in password settings. Recorded when the switch is flipped by the + user, only on iOS. + + + + + mamir@chromium.org + treib@chromium.org + + The amount of active browsing time that was spent in different user states + related to the PasswordManager's account-scoped storage. + + This time is measured from when the user starts interacting with the browser + until either they stopped interacting with the browser (as determined by + DesktopSessionDurationTracker) or their user state changes. These end-points + are when the metric is emitted. + + Because a duration can end either because the user became inactive or + because their status changed, the distribution of individual durations + measured are unlikely to be helpful. Instead, please compare total + durations. + + This metric is only recorded on Win/Mac/Linux/iOS (iOS from M113). + + Note: As part of crbug/1223007, we discovered that histogram + PasswordManager.AccountStorageUserStateDuration.SignedOutUser was recorded + for Guest and System profiles which wasn't intentional. This was fixed in + M93. + + One caveat with this metric is that if the user has multiple profiles open + at the same time, their session activity will be logged from all the + profiles, instead of only from the profile that the user is using at that + moment. + + Recorded for {UserSyncingType} + + + + + + treib@chromium.org + mamir@chromium.org + + Records how many blocklisting entries are downloaded to the account store + after unlocking account store. + + + + + treib@chromium.org + mamir@chromium.org + + Records how many non-blacklisting credentials are downloaded to the account + store after unlocking account store. + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + mamir@chromium.org + treib@chromium.org + + The number of accounts {DifferenceType}. Recorded once per Chrome profile, + soon after startup, only for users who are opted in to the account-scoped + storage. Recorded at most once per day. + + + + + + + + + + + mamir@chromium.org + treib@chromium.org + + The number of accounts {DifferenceType}. Recorded soon after startup at most + one per day for regular profiles and only if user opted in to the + account-scoped storage. + + + + + + + + + + + mamir@google.com + + Tracks which store is used when the user adds a new credential from + Settings. True means account store, false means device store. Recorded only + for users who opted in for account storage and thus are given a choice. Only + applicable to Desktop platform. + + + + + + Obsolete in M110 because imported passwords were counted as manually added: + https://crbug.com/1400263. Replaced with + PasswordManager.AddCredentialFromSettings.UserAction2 histogram. + + vidhanj@google.com + + Records the user actions performed when a new credential is added from + Settings. Only applicable to Desktop and iOS platforms. + + + + + vidhanj@google.com + + Records the user actions performed when a new credential is added from + Settings. Only applicable to Desktop and iOS platforms. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The number of facets for which affiliation information was requested in a + network fetch. Recorded for each network fetch. Warning: this histogram was + expired from M90 to M92; data may be missing. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The time elapsed between creation of the AffiliationBackend and the first + time it needed to issue a network fetch. Warning: this histogram was expired + from M90 to M92; data may be missing. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The elapsed time between subsequent network fetches. Recorded whenever the + AffiliationBackend initiated a network fetch, regardless of success or + failure. Warning: this histogram was expired from M90 to M92; data may be + missing. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + Errors reported by SQLite while using the affiliation database database. + + + + + vsemeniuk@google.com + vasilii@chromium.org + The result of AffiliationDatabase::Store call. + + + + vsemeniuk@google.com + vasilii@chromium.org + + Recorded only when serialized response from the Affiliation Service can't be + parsed. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The network error code, as reported by the underlying URLFetcher. Recorded + only for each network fetch that failed due to network/server errors. + Warning: this histogram was expired from M90 to M92; data may be missing. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The HTTP response code, as reported by the underlying URLFetcher. Recorded + only for each network fetch that failed due to network/server errors. + Warning: this histogram was expired from M90 to M92; data may be missing. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + Whether the network fetch succeeded, failed due to network/server errors, or + contained malformed data. Recorded for each network fetch. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The time elapsed between sending a request to AffiliationService and + receiving a response. Recorded only when request {Status}. + + + + + + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The size of an affiliation service hash lookup response in bytes. Recorded + only when request {Status}. + + + + + + + + + vsemeniuk@google.com + vasilii@chromium.org + + Usage and timing of the Affiliation Service GetChangePasswordUrl call. + + + + + mamir@chromium.org + mastiz@chromium.org + + Records different results upon adding a remote password to the password + manager. It is recorded every time after receiving remote password + incremental updates from the server. + + + + + mamir@chromium.org + mastiz@chromium.org + + Records different results upon updating a remote password to the password + manager. It is recorded every time after receiving remote password + incremental updates from the server. Warning: this histogram was expired + from 2021-07-31 to 2022-11-17; data may be missing. + + + + + mamir@chromium.org + mastiz@chromium.org + + Records different states upon applying remote sync changes to the password + manager. It recorded every time after receiving remote password incremental + updates from the server. Warning: this histogram was expired from 2021-07-31 + to 2022-11-17; data may be missing. + + + + + + Obsolete in M110 after automated password change deprecation. + + kolos@chromium.org + battre@chromium.org + + Resolution action to fix a compromised credential when there is a + "Change password automatically" button. + + + + + kolos@chromium.org + battre@chromium.org + + Resolution action to fix a compromised credential when there is no + "Change password automatically" button. Starting with M110, no + credential will have a button to change the password automatically anymore + so this is recorded for all compromised credentials. + + + + + + Obsolete in M110 after automated password change deprecation. + + brunobraga@google.com + jkeitel@google.com + + The reason why the "Assistant stopped" bubble was closed. The + bubble is shown when an automatic password change flow on Desktop is ended + prematurely. + + + + + + Obsolete in M110 after automated password change deprecation. + + kolos@chromium.org + battre@chromium.org + + Resolution action to fix a compromised credential when there is a password + change script for the credential's domain. The metric is reported also if + the automated password change feature is disabled. + + + + + vasilii@chromium.org + kazinova@google.com + + The dismissal reason of the auto-signin first run experience. + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + kazinova@google.com + vsemeniuk@google.com + + Indicates whether biometric authentication before filling is enabled. + Recorded 30 seconds after PasswordStore is created which happens once per + profile, and at most once per day. + + + + + kazinova@google.com + vsemeniuk@google.com + + Indicates whether biometric authentication before filling is enabled. + Recorded 30 seconds after PasswordStore is created which happens at most + once per day for regular profiles. + + + + + ioanap@chromium.org + fhorschig@chromium.org + + Records the result of the attempt to re-auth the user via biometrics when + filling a password or signing in from the account chooser dialog. From M97, + CancelledByChrome is recorded when the auth is cancelled and before the auth + result actually returns. + + + + + ioanap@chromium.org + fhorschig@chromium.org + + Recorded whenever a password filling surface or the account chooser dialog + checks whether it can use biometrics to re-authenticate the user. + + + + + vasilii@chromium.org + vsemeniuk@google.com + + Recorded any time a client of AuthenticatorWin requests to check biometric + availability. If availability can't be checked, it records that immediately. + If it can be checked, it records the status when the callback for + OnAvailabilityReceived is invoked. + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + kazinova@google.com + vasilii@chromium.org + + The number of accounts stored in password_manager::StatisticsTable. These + are accounts for which the user ignored the save bubble at least once. The + count is recorded once per browser start-up. (In case of multiple profiles, + the counts are for the profile that first has a WebContents created.) + + + + + kazinova@google.com + vasilii@chromium.org + + The number of accounts stored in password_manager::StatisticsTable. These + are accounts for which the user ignored the save bubble at least once. The + count is recorded once per browser start-up for regular profiles. (In case + of multiple profiles, the counts are for the profile that first has a + WebContents created.) + + + + + vasilii@chromium.org + vsemeniuk@google.com + + The time the password bulk check was running until canceled by the user. + + + + + vasilii@chromium.org + vsemeniuk@google.com + + Count of credentials analyzed when the password bulk check completed + successfully (see '.CheckedCredentialsOnErrorOrCanceled' for non-success + cases). Note that this counts unique username+password pairs, so in the case + of password reuse, this does not correspond to the number of user-visible + credentials. + + + + + vasilii@chromium.org + vsemeniuk@google.com + + Count of credentials that were supposed to be analyzed if the password bulk + check encountered an error or was canceled (see '.CheckedCredentials' for + the success case). Note that this counts unique username+password pairs, so + in the case of password reuse, this does not correspond to the number of + user-visible credentials. + + + + + ioanap@chromium.org + fhorschig@chromium.org + + Count of compromised credentials shown in the UI, recorded whenever a bulk + leak check finished successfully. As opposed to 'BulkCheck.LeaksFound', this + metric includes duplicates (i.e. same username+password pair saved for + multiple domains), and it also includes other types of compromised + credentials (e.g. phished). + + + + + vasilii@chromium.org + vsemeniuk@google.com + Error encountered during the password bulk check. + + + + vasilii@chromium.org + vsemeniuk@google.com + + Count of leaked credentials found when the password bulk check completed + successfully. Note that this counts unique username+password pairs, so in + the case of password reuse, this does not correspond to the number of + user-visible credentials. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + Referrer of a navigation to the Password Check page. Recorded when the user + visits the Password Check settings page, either via native or Web UI. + + + + + ioanap@chromium.org + fhorschig@chromium.org + + Referrer of a navigation to the Password Check UI Settings view. Recorded + when the user enters the view. Replaces + PasswordManager.BulkCheck.PasswordCheckReferrerAndroid histogram. Fixing the + bug that LEAK_DIALOG entry was reported as PHISHED_WARNING_DIALOG with UPM + enabled. + + + + + vasilii@chromium.org + vsemeniuk@google.com + + The time it took for the password bulk check to complete successfully. + + + + + vasilii@chromium.org + vsemeniuk@google.com + + The average time per credential when the password bulk check completed + successfully. + + + + + vsemeniuk@google.com + vasilii@chromium.org + User actions performed on the Password Check settings page. + + + + ioanap@chromium.org + fhorschigg@chromium.org + User actions performed on the Password Check settings view. + + + + vsemeniuk@google.com + kazinova@google.com + sygiet@google.com + + If user have enabled biometric authentication on their device. It is + recorded whenever DeviceAuthenticatorMac::CanAuthenticate is called. + + + + + battre@chromium.org + kazinova@google.com + chrome-password-manager-metrics-alerts@google.com + + When the password manager sees new forms on the page, it records in this + histogram whether there were any SSL certificate errors. The presence of SSL + errors likely means that the password manger will stop working, so the + reporting is done at the last point when password manager is still + guaranteed to be active. Some particular errors are distinguished, with the + rest being reported in a catch-all bucket. + + + + + vasilii@chromium.org + vsemeniuk@google.com + + Count of known {Issue}. Recorded at most once per day for regular profiles. + + + + + + + + + + ioanap@chromium.org + fhorschig@chromium.org + + Records the errors displayed by the saved credential entry editor, when the + user encounters them. Android-only for now. + + + + + ioanap@chromium.org + fhorschig@chromium.org + + Records actions performed by the users in the {CredentialEntryType} view. + Android-only for now. + + + + + + + + + + ioanap@chromium.org + izuzic@google.com + + Records the API error code encountered while attempting to fetch the + Credential Manager launch intent from Google Play Services for the + {ProfileType}. This is recorded after the asynchronous call comes back with + an error. + + + + + + ioanap@chromium.org + izuzic@google.com + + Records the API error code encountered while attempting to fetch the + Credential Manager launch intent from Google Play Services for the + {ProfileType}. This is recorded after the asynchronous call comes back with + an error only if ConnectionResult was set on the returned error. + + + + + + ioanap@chromium.org + fhorschig@chromium.org + + Records the error encountered while attempting to fetch the Credential + Manager launch intent from Google Play Services for the {ProfileType}. This + is recorded either before making the actual request (if the preconditions + are not met) or after the asynchronous call comes back with an error. + + + + + + ioanap@chromium.org + fhorschig@chromium.org + + Records the time(ms) elapsed between asking Google Play Services for the + intent used to open the Credential Manager for the {ProfileType} and + receiving it. It includes synchronous calls made to get the + CredentialManagerClient. Recorded when the asynchronous call comes back and + only on success. + + + + + + ioanap@chromium.org + fhorschig@chromium.org + + Records whether fetching the Credential Manager launch intent from Google + Play Services for the {ProfileType} was successful or not. Recorded when the + asynchronous call comes back. + + + + + + ioanap@chromium.org + fhorschig@chromium.org + + Records whether the provided intent to launch the Credential Manager for the + {ProfileType} could be used successfully. This is recorded right after + calling send() on the intent which happens when the async call to get the + intent from Google Play Services returns. Metric will not be reported when + the Loading dialog is cancelled by user or timed out. + + + + + + fhorschig@chromium.org + mamir@chromium.org + + Recorded after unlocking the account store from the password filling flow. + Records how many credentials from the account store can be used to fill the + current password form. If a credential is an exact duplicate with a local + credential, it still counts into this metric. + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + kazinova@google.com + vasilii@chromium.org + + The number of stored (non-blacklisted) credentials for which + "duplicates" exist. A duplicate is a credential with the same + signon realm, username, and password - i.e. indistinguishable from the + user's point of view. This records the number of *sets* of duplicated + credentials; the number of credentials in each set of duplicates is not + recorded. Recorded once per Chrome profile at most once per day. + + + + + kazinova@google.com + vasilii@chromium.org + + The number of stored (non-blacklisted) credentials for which + "duplicates" exist. A duplicate is a credential with the same + signon realm, username, and password - i.e. indistinguishable from the + user's point of view. This records the number of *sets* of duplicated + credentials; the number of credentials in each set of duplicates is not + recorded. Recorded at most once per day for regular profiles. + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + kazinova@google.com + vasilii@chromium.org + + The number of stored (non-blacklisted) credentials for which + "mismatched duplicates" exist. A mismatched duplicate is a + credential with the same signon realm and username, but different password. + This records the number of *sets* of duplicated credentials; the number of + credentials in each set of duplicates is not recorded. Recorded once per + Chrome profile at most once per day. + + + + + kazinova@google.com + vasilii@chromium.org + + The number of stored (non-blacklisted) credentials for which + "mismatched duplicates" exist. A mismatched duplicate is a + credential with the same signon realm and username, but different password. + This records the number of *sets* of duplicated credentials; the number of + credentials in each set of duplicates is not recorded. Recorded at most once + per day for regular profiles. + + + + + mamir@chromium.org + treib@chromium.org + + The default store for newly-saved passwords (profile-scoped store or + account-scoped store), recorded whenever it is set explicitly. + + + + + vasilii@chromium.org + kazinova@google.com + + Records the return value of the DeleteUndecryptableLogins method in the + LoginDatabase class. Called for sync user and for each profile when merging + logins from Sync and local database. + + + + + rhalavati@chromium.org + chrome-privacy-core@google.com + + Records availability of password manager suggestions in regular and + off-the-record modes. + + + + + kazinova@google.com + battre@chromium.org + + Records a bitmask of password form changes after the first time this form is + seen by Password Manager. Recorded once per a form when the form is removed + from DOM. Bit 0 - changes in number of fields, bit 1 - changes in fields + renderer ids, bit 2 - changes in autocomplete attributes, bit 3 - changes in + form control types, bit 4 - changes in field names. + + + + + vasilii@chromium.org + kazinova@google.com + + Indication whether users change the credentials (username and password) in + the save bubble of the password manager, considering only cases where the + user saves a new credential or updates a credential. + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + kazinova@google.com + vasilii@chromium.org + + Indicates whether the password manager is enabled. Recorded 30 seconds after + PasswordStore is created which happens once per profile, and at most once + per day. + + + + + + Obsolete in M113 and superseeded by the PasswordManager.EnableState metrics. + + kazinova@google.com + vasilii@chromium.org + + Indicates whether the password manager is enabled. Recorded 30 seconds after + PasswordStore is created at most once per day for regular profiles. + + + + + markusheintz@google.com + mamir@chromium.org + + Indicates whether the password manager is enabled or disabled and by why + e.g. by the user, policy, extension ... . Recorded 30 seconds after + PasswordStore is created at most once per day for regular profiles. + + + + + izuzic@google.com + ioanap@chromium.org + + Records the reason that caused the Password Manager error message on Android + to be dismissed. It's recorded when the user dismisses the message by + clicking the Sign in button or when the message is autodismissed because of + the timeout. + + + + + izuzic@google.com + ioanap@chromium.org + + Records the reason that caused the Password Manager error message to be + displayed. It's recorded as soon as the message is created and the recorded + reason is the error type. Currently only used on Android. + + + + + kolos@chromium.org + khamutov@google.com + + Measures whether a password vote had a field name collision, i.e. multiple + fields that should have an Autofill type uploaded have the same name. + + + + + kazinova@google.com + vasilii@chromium.org + + When a credential is filled, whether it comes from an Android app. + + + + + kazinova@google.com + battre@chromium.org + + This metric records the user experience with regards to passwords filling. + It is only recorded on password form submissions that are considered to be + successful. + + The first 4 buckets (0..3) are ranging from the best filling behavior + (automatic filling on page load without user interaction necessary) to the + worst (the user had to manually type a password that was already saved). + + The following buckets (4..5) indicate cases when it was impossible to fill + credentials because unknown credentials were submitted, meaning that the + submitted password was not saved before. + + The last bucket (6) corresponds to the strange cases, where the submitted + form has neither user input nor autofilled data in password fields. This + might indicate third-party password manager use, or might be a + measurement/submission classification error. + + + + + mamir@chromium.org + treib@chromium.org + + This metric records the source of filled passwords: The profile-scoped + store, the account-scoped store, both of them, or none of them (if the user + typed the password manually). It is only recorded on password form + submissions that are considered to be successful. + + + + + theocristea@google.com + kazinova@google.com + vsemeniuk@google.com + + This metric records whether filling was successful or not on IOS. The metric + is recorded when filling upon suggestion click or on page load. + + + + + kazinova@google.com + vasilii@chromium.org + + When offering to fill the username and password, whether at least one of the + credentials in the dropdown comes from an Android app. + + + + + kazinova@google.com + battre@chromium.org + + Records whether the PasswordAutofillAgent in the renderer manages to fill + credentials as instructed by the browser or records a failure reason + otherwise. Only the outcome of the first attempt to fill is recorded. + + This is replicated as PasswordForm.Fill.FirstFillingResultInRenderer in UKM. + + + + + kazinova@google.com + battre@chromium.org + + This metric records why the browser instructs the renderer not to fill the + credentials on page load but to wait for the user to confirm the credential + to be filled. Only the value of the first decision to fill is recorded. + + This is replicated as PasswordForm.Fill.FirstWaitForUsernameReason in UKM. + + + + + kazinova@google.com + vasilii@chromium.org + + The success or failure of deserializing saved FormData. Failure either + indicates corrupted data or the presence of bugs in the serialization or + deserialization code. + + + + + roagarwal@chromium.org + chrome-incognito@google.com + + This histogram records the browser profile type when a password form is + submitted. + + + + + rhalavati@chromium.org + chrome-privacy-core@google.com + + This histogram records the browser profile type when a password form is + visited. This is recorded once for each frame. + + + + + kazinova@google.com + kolos@chromium.org + + When the generation state of a password was changed, records whether an + existing form corresponding to the password was found. + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + kazinova@google.com + vasilii@chromium.org + + Breakdown of HTTP credentials with regard to the existence of a HTTPS + credential with the same username and whether the corresponding website has + HSTS enabled. Recorded once for each HTTP credential on profile open. + + + + + kazinova@google.com + vasilii@chromium.org + + Breakdown of HTTP credentials with regard to the existence of a HTTPS + credential with the same username and whether the corresponding website has + HSTS enabled. Recorded once for each HTTP credential on regular profile + open. + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + kazinova@google.com + vasilii@chromium.org + + Number of HTTP saved passwords that were migrated to HTTPS. Recorded on + HTTPS password form load when there are no credentials saved. + + + + + kazinova@google.com + vasilii@chromium.org + + Number of HTTP saved passwords that were migrated to HTTPS. Recorded for the + regular profiles on HTTPS password form load when there are no credentials + saved. + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + kazinova@google.com + vasilii@chromium.org + + The mode of migration applied to HTTP passwords migrating to HTTPS. Recorded + on HTTPS password form load when there are no credentials saved. + + + + + kazinova@google.com + vasilii@chromium.org + + The mode of migration applied to HTTP passwords migrating to HTTPS. Recorded + for the regular profiles on HTTPS password form load when there are no + credentials saved. + + + + + eliaskh@chromium.org + natiahlyi@google.com + + Records the user actions related to passwords import flow on desktop. + Reported upon interactions with the password settings page. + + + + + eliaskh@chromium.org + natiahlyi@google.com + + Records if the user selected to delete a file after a succesful import with + no errors. Reported before the import success dialog is closed. + + + + + eliaskh@chromium.org + natiahlyi@google.com + + Tracks how many succesful imports contained only {ErrorType} as errors. + Recorded during the passwords import process triggered from settings, after + parsing the input file. + + + + + + + + + eliaskh@chromium.org + natiahlyi@google.com + + Records number of passwords that were resolved in Passwords Import - + Conflict resolution. Basically the number of conflicting passwords that were + selected to be imported. Recorded during the passwords import process + triggered from settings, after the user clicks on the Repalce button. + + + + + eliaskh@chromium.org + natiahlyi@google.com + + Tracks the number of {Type} per one imported CSV file with Google Password + Manager in Settings UI. Recorded during the passwords import process + triggered from settings, after parsing the input file. + + + + + + + + + + + eliaskh@chromium.org + natiahlyi@google.com + + Tracks the number of rows with {ErrorType} per one imported CSV file with + Google Password Manager in Settings UI. Recorded during the passwords import + process triggered from settings, after parsing the input file. + + + + + + + + + + + + + eliaskh@chromium.org + natiahlyi@google.com + + Tracks the time it takes to import credentials in passwords import flow. The + time that is tracked is the time needed to process the credentials, checking + for conflicts, generating status and storing them. This metric doesn't + include the time needed to read the CSV file. Recorded when the import flow + finished importing all credentials within password settings. + + + + + vasilii@chromium.org + src/components/password_manager/OWNERS + + The number of passwords imported in CSV format per user. Recorded when the + user imports passwords within the password settings. + + + + + eliaskh@chromium.org + natiahlyi@google.com + + Tracks the individual status of a single password entry from the provided + CSV File after it has been processed in the Passwords Import flow in + settings UI. Recorded when a single entry has been processed and checked for + errors or missing fields. Recording occurs within password settings. + + + + + eliaskh@chromium.org + natiahlyi@google.com + + The size of the CSV file (to import passwords from) selected by a user in + bytes. Recorded when the user tries to import passwords from a CSV file. The + user has chosen the file, but the file hasn't been read yet. + + + + + + Obsolete in M111, the enum contained a duplicate - values 7 and 8. Also, + those values were never emmited. + + eliaskh@chromium.org + natiahlyi@google.com + + Tracks the final outcome status of importing a CSV File to Chrome Password + Manager in settings UI. Recorded when the import flow finishes within + password settings. This can be either successfuly or due to an error. Before + M111, values 7 and 8 were not emmited. + + + + + eliaskh@chromium.org + natiahlyi@google.com + + Tracks the final outcome status of importing a CSV File to Chrome Password + Manager in settings UI. Recorded when the import flow finishes within + password settings. This can be either successfuly or due to an error. + + + + + djean@chromium.org + sczs@google.com + + This metric counts how many times the Save Password infobar is shown. + + + + + eic@google.com + tmartino@chromium.com + + This metric counts how many times we fail to copy a field in the Passwords + Details to the pastboard. Only the true bucket is logged. See + crbug.com/1359331. + + + + + skrakowi@chromium.org + chrome-counter-abuse-alerts@google.com + + This metric reports whether a saved password is protected by Phishguard. The + current minimum password length for protection is 8, so this can help us + figure out the proportion of passwords that we are currently not protecting + because its length is shorter than 8 characters. This gets recorded 30 + seconds after PasswordStore is created, which happens once per profile and + at most once per day. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + This metric reports whether a sync password hash is saved. Recorded shortly + after Chrome startup. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + This metric is recorded shortly after Chrome Startup, only for Advanced + Protection users. This is a subset of + PasswordManager.IsSyncPasswordHashSaved. + + + + + arabm@chromium.org + chrome-privacy-team@google.com + + Records selection of password manager suggestions in regular and + off-the-record modes. + + + + + kazinova@google.com + battre@chromium.org + + Records whether a successfully submitted password form has only values that + came from JavaScript. + + + + + vsemeniuk@google.com + vasilii@chromium.org + Result of analyzing a single leak response. + + + + vsemeniuk@google.com + vasilii@chromium.org + + Reason of the dismissal of the leak detection dialog. Recorded when a leaked + credential is detected and the dialog is shown. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + Shows the error that happened in password leak detection on sign-in. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + HTTP response code of a leak lookup request. Only recoded for each network + fetch that failed due to network/server errors. + + + + + vasilii@chromium.org + vsemeniuk@google.com + + When a password is determined as leaked, records if it's saved for other + sites. + + + + + vasilii@chromium.org + vsemeniuk@google.com + + When a password is determined as leaked, records if it's saved in Chrome. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + Whether the network fetch succeeded, failed due to network/server errors, or + contained malformed data. Recorded for each leak lookup. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The time it took from starting a leak check to notifying the user about a + leak. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The time it took to obtain an access token for an authenticated leak lookup + request. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The time it took to receive a server response after issuing a request for a + single leak lookup. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The number of matched prefixes in a single leak lookup response. Only + recorded if the network response was wellformed. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The size of a single leak lookup response in bytes. Only recorded if there + was no network or server error. + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + vasilii@chromium.org + mamir@chromium.org + An error on LoginDatabase initialization. + + + + vasilii@chromium.org + mamir@chromium.org + + An error on LoginDatabase initialization. Recorded when error was + encountered during login database initialization. + + + + + kazinova@google.com + vasilii@chromium.org + + Referrer of a navigation to the "Manage Passwords" page. Recorded + when the user attempts to see their list of passwords, either via native or + Web UI. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + This metric records the type of the preferred password for filling. It is + recorded when the browser instructs the renderer to fill the credentials on + page load. + + + + + kazinova@google.com + vasilii@chromium.org + + Tracks result of navigator.credentials.get() with + mediation="optional". That is the result of account chooser. + + + + + kazinova@google.com + vasilii@chromium.org + + Tracks result of navigator.credentials.get() with + mediation="required". That is the result of forced account + chooser. + + + + + kazinova@google.com + vasilii@chromium.org + + Tracks result of navigator.credentials.get() with + mediation="silent". That is the result of auto sign-in. + + + + + mamir@chromium.org + mastiz@chromium.org + + Records different results upon adding a remote password to the password + manager. It is recorded during the initial sync when merging remote and + local data. + + + + + mamir@chromium.org + mastiz@chromium.org + + Records different results upon updating a remote password in the password + manager. It is recorded during the initial sync when merging remote and + local data. Warning: this histogram was expired from 2021-07-31 to + 2022-11-17; data may be missing. + + + + + ioanap@chromium.org + kazinova@google.com + + Records true when a settings migration occurs as part of the UPM transition. + It is recorded when the settings service (profile-scoped) is instantiated in + a Chrome client with UPM enabled if a migration hasn't already occured. Note + that if UPM is disabled, the next time it is enabled a new migration will + happen and be recorded. + + + + + mamir@chromium.org + treib@chromium.org + + Why was the "move password to account?" bubble closed? Recorded + whenever the bubble is closed, either because the user clicked one of the + buttons or it went away automatically (lost focus) for {UserSyncingType} + + + + + + khamutov@google.com + kolos@chromium.org + chrome-autofill-alerts@google.com + + Whether a newly saved password has an empty username. Recorded right before + a new credential is commited to the store. + + + + + + nepper@chromium.org + battre@chromium.org + kolos@chromium.org + + For a newly saved password, whether the password was generated by Chrome or + typed manually by the user. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + This metric reports a type of a password hash change event where the + associated account is not syncing. Recorded when a non sync password hash is + saved or cleared. + + + + + vasilii@chromium.org + vsemeniuk@google.com + + Records whether Password Manager was opened as a standalone app or inside a + browser window. Recorded every time Password Manager is opened. + + + + + kolos@chromium.org + shaikhitdin@google.com + + Reports whether the form parser has detected an OTP field with regex. + Reported any time when the parser processes a form. Used to compare how + often the new and old OTP regexes detect any OTP field. + + + + + jkeitel@google.com + kolos@chromium.org + + Duration of a password change flow that was triggered from a password check + {StartEvent} {EndEvent}. + + + + + + + + + + + + + + + + + Obsolete in M114 after automated password change deprecation. Look at + PasswordChangeFlowDurationV2 for manual change password flows. + + jkeitel@google.com + kolos@chromium.org + + Duration of a password change flow {EntryPoint} {StartEvent} {EndEvent}. + + + + + + + + + + + + + + + + + + + + + ioanap@chromium.org + vsemeniuk@google.com + + Records whether the provided intent to launch the Password Checkup could be + used successfully. This is recorded right after calling send() on the intent + which happens when the async call to get the intent from Google Play + Services returns. Metric will not be reported when the Loading dialog is + cancelled by user or timed out. + + + + + ioanap@chromium.org + izuzic@google.com + + Records the error code returned by the GMS Password Checkup 1P API while + attempting to {Operation}. This is recorded after the asynchronous call + comes back with an error. This is only recorded for GMS API errors on + Android. + + + + + + ioanap@chromium.org + izuzic@google.com + vsemeniuk@google.com + + Records the backend error code encountered while attempting to {Operation}. + If the code is equal to 2 (API_ERROR), GMS 1P API error code is additionally + reported. This is recorded either before making the actual request (if the + preconditions are not met) or after the asynchronous call comes back with an + error. This is currently only recorded on Android. + + + + + + ioanap@chromium.org + izuzic@google.com + + Records the time(ms) elapsed between asking Google Play Services to + {Operation} and receiving the error response. This is recorded either before + making the actual request (if the preconditions are not met) or after the + asynchronous call comes back with an error. This is currently only recorded + on Android. + + + + + + ioanap@chromium.org + izuzic@google.com + + Records the time(ms) elapsed between asking Google Play Services to + {Operation} and receiving the response. It includes synchronous calls made + to get the PasswordCheckupClient. Recorded when the asynchronous call comes + back and only on success. This is currently only recorded on Android. + + + + + + ioanap@chromium.org + izuzic@google.com + + Records whether attempt to {Operation} using the Google Play Services was + successful or not. Recorded when the asynchronous call comes back. + + + + + + kazinova@google.com + vasilii@chromium.org + + Logs the type of the suggestion in the password dropdown when selected. + + + + + kazinova@google.com + vasilii@chromium.org + Logs the state of the password dropdown when it's shown. + + + + + For some time now, SavedPasswordsPresenter::EditSavedCredentials is used not + only by "password edit dialog", so the metrics is not accurate. + + vsemeniuk@google.com + vasilii@chromium.org + + This metric shows what exactly users change in the password edit dialog: + nothing, username, password or both. + + + + + ioanap@chromium.org + kazinova@google.com + + Measures the frequency of various password export events in settings menu. + Recorded when the user interacts with the password export menu item or + dialog. Curently logged only on Android. + + + + + mamir@chromium.org + rgod@google.com + + This metrics shows how user interacted with the password management native + bubble triggered from the key icon in the omnibox. Recorded during the + interaction with the bubble. + + + + + + Obsolete in M111 as the logic is moved to settings. + + derinel@google.com + mamir@chromium.org + + This metric shows how user created / edited / cleared the note field in the + passwords settings page. Recorded after closing the add/edit password dialog + in settings. + + + + + derinel@google.com + mamir@chromium.org + + This metric shows how user created / edited / cleared the note field in the + passwords settings page. Recorded after closing the add/edit password dialog + in settings. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + This metric shows how many saved credentials (num unique registry-controlled + domains) have password that's equal to the reused password. + + Before M63 this logged a "0" for sync-reuse. + + A "password reuse" is when the user typed a string that is equal + to a saved password on another domain or is equal to the sync password on a + non google-login domain. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + This metric reports whether a password field had been detected on a page + when a password reuse happened. + + A "password reuse" is when the user typed a string that is equal + to a saved password on another domain or is equal to the sync password on a + non google-login domain. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + This metric shows how many credentials are stored in Password Manager when a + password reuse happened. This counts unique registry-controlled domains with + passwords saved. + + A "password reuse" is when the user typed a string that is equal + to a saved password on another domain or is equal to the sync password on a + non google-login domain. + + During M61/M62 this metric logged a "1" for every sync-reuse. It + was fixed in M63 such that it logs actual Password Manager credential count. + + + + + izuzic@google.com + ioanap@chromium.org + + The error codes returned by the GMS Core Password preferences 1P API while + attempting to {Function} for {Setting}. Recorded when the asynchronous job + has returned. This is currently only recorded on Android. + + Replacing PasswordManager.PasswordSettings.{Function}.{Setting}.APIError + which incorrectly recorded *only* the enum values and crashed for all + unknown values. + + + + + + + izuzic@google.com + ioanap@chromium.org + + Records the error encountered in PasswordSettingsUpdater while attempting to + {Function} for {Setting}. This is recorded either before making the actual + request (if the preconditions are not met) or after the asynchronous call + comes back with an error. This is currently only recorded on Android. + + + + + + + izuzic@google.com + ioanap@chromium.org + + Real-time duration of the asynchronous attempt to {Function} for {Setting}. + Recorded when the asynchronous job failed. This is currently only recorded + on Android. + + + + + + + izuzic@google.com + ioanap@chromium.org + + Real-time duration of the asynchronous attempt to {Function} for {Setting}. + Only recorded when the asynchronous job has returned successfully. This is + currently only recorded on Android. + + + + + + + izuzic@google.com + ioanap@chromium.org + + Records whether PasswordSettingsUpdater attempt to {Function} for {Setting} + succeed. Recorded when the asynchronous job has returned. This is currently + only recorded on Android. + + + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The time it takes to group passwords using the information provided by the + affiliation service. Recorded after password grouping is finished. + + + + + vsemeniuk@google.com + fhorschig@chromium.org + + Recorded whenever PasswordStore notifies consumers about changes to logins. + Changes can be made locally (in settings, in bubbles etc.) or remotely (via + sync). Records only true. + + + + + vsemeniuk@google.com + fhorschig@chromium.org + + Android only. |OnLoginsRetained| replaces |OnLoginsChanged| and this metric + records potential calls of |OnLoginsRetained| to measure differences in + volume after switching. The metrics is recorded whenever the PasswordStore + (potentially) requests all logins to notify consumers because data may have + changed. Changes can occur within Chrome (e.g. after saving/updating a + password) or externally. + + + + + kazinova@google.com + vasilii@chromium.org + + Recorded on Android when the password store backend is created. This happens + on startup and once per profile, only for users in the UPM experiment. Users + can be unenrolled from UPM after encountering errors in communication with + the backend and reenrolled back if the backend communication is considered + reliable again. Records the number of times the user has attempted to + automatically reenroll in Google Mobile Services. + + + + + kazinova@google.com + vasilii@chromium.org + + Recorded on Android when the password store backend is created. This happens + on startup and once per profile, only for users in the UPM experiment. Users + can be unenrolled from UPM after encountering errors in communication with + the backend and reenrolled back if the backend communication is considered + reliable again. Records the number of times the user was reenrolled. + + + + + kazinova@google.com + ioanap@chromium.org + fhorschig@chromium.org + + Recorded on Android when the password store backend is created. This happens + on startup and once per profile. It logs whether the user is enrolled in + UPM. In this context, all profiles are enrolled unless they have encountered + an unrecoverable error upon querying GMS Core. Once that happens, a profile + pref is flipped and the client is considered unenrolled from that point on. + + + + + vsemeniuk@google.com + fhorschig@chromium.org + + Total number of logins to be removed by ClearAllLocalPasswords. + + + + + vsemeniuk@google.com + fhorschig@chromium.org + + Ratio between successfully removed logins and total number of logins in the + GMS's local storage. Removal is considered successful when change list is + non-empty. Recorded when all the logins have been processed. If total number + of logins is 0, nothing is recorded. + + + + + izuzic@google.com + ioanap@chromium.org + + Records the last error code returned by the GMS ChromeSync 1P API when + scheduling a retry for the {Operation} operation. This is recorded after the + asynchronous call comes back with an error and it is checked that operation + could be retried. This is only recorded for GMS API errors on Android. + + + + + + + + + + + + + + + + + + + + izuzic@google.com + ioanap@chromium.org + + Records the retry attempt number when the GMS ChromeSync 1P API returned an + error and a retry for the {Operation} operation is about to be scheduled. + This is recorded after the asynchronous call comes back with an error and it + is checked that operation could be retried. This is only recorded for GMS + API errors on Android. + + + + + + + + + + + + + + + + + + + + maxan@chromium.org + ioanap@chromium.org + vasilii@chromium.org + fhorschig@chromium.org + + The error codes returned by the GMS Core ChromeSync 1P API{Function}. + Recorded when the asynchronous job has returned. + + + + + + + + + + + + + + ioanap@chromium.org + vasilii@chromium.org + + The connection result status code returned by the GMS Core ChromeSync 1P + API{Function}. Recorded when the asynchronous job has returned with error + and only if ConnectionResult was set on the returned error. + + + + + + + + + + + + + + maxan@chromium.org + ioanap@chromium.org + vasilii@chromium.org + fhorschig@chromium.org + + This metric reports the error observed when {Function} the PasswordStore + Android backend. Recorded when the asynchronous job has returned. + + + + + + + + + + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + vasilii@chromium.org + src/components/password_manager/OWNERS + + Success rate of initialization of password store. Recorded for every user + once on the Chrome profile startup. + + + + + vasilii@chromium.org + src/components/password_manager/OWNERS + + Success rate of initialization of password store. Recorded for every user + once on the Chrome profile startup. Only recorded for "regular" + profiles, i.e. those in which Password Manager might actually work. This + excludes incognito profiles, guest profiles, system profiles (used for the + profile picker), lockscreen profiles, etc. + + + + + ioanap@chromium.org + vasilii@chromium.org + + Records true if the fallback to the build-in backend occurred during + {Function} execution due to error returned by the GMS Core backend. True is + recorded when the Android backend function returned with error and fallback + is about to be called. False is never recorded. + + + + + + + + + + + + + + + maxan@chromium.org + ioanap@chromium.org + vasilii@chromium.org + fhorschig@chromium.org + + Records the number of logins {Metric}{Measurement} Recorded when the + asynchronous job for {Function} has returned. + + + + + + + + + + + + + + + + + + + + maxan@chromium.org + ioanap@chromium.org + vasilii@chromium.org + fhorschig@chromium.org + + Records the number of password store changes {Metric}{Measurement} Recorded + when the asynchronous job for {ModifyingFunction} has returned. Recorded + only for non-syncing users and only after initial migration is finished. + + + + + + + + + + + + + + + + + + + + + + maxan@chromium.org + ioanap@chromium.org + vasilii@chromium.org + fhorschig@chromium.org + + Records each {Function} call by the PasswordStore {Backend}. Recorded twice: + 1) when the store issues the request, and 2) as the asynchronous job has + finished or times out. The first bucket may exceed others if Chrome closes + before the request finishes. + + + + + + + + + + + + + + + + + + + + + + + maxan@chromium.org + ioanap@chromium.org + vasilii@chromium.org + fhorschig@chromium.org + + Real-time duration of the asynchronous call to {Function} the PasswordStore + {Backend}. Recorded when the asynchronous job has returned. + + + + + + + + + + + + + + + + + + + + + + + maxan@chromium.org + ioanap@chromium.org + vasilii@chromium.org + fhorschig@chromium.org + + Records whether {Function} the PasswordStore {Backend}. Recorded when the + asynchronous job has returned. False is emitted if an error occurs; + otherwise true is emitted. + + + + + + + + + + + + + + + + + + + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + kazinova@google.com + vasilii@chromium.org + + Whether the passwords are syncing and, if not, then what's causing sync + failures. Recorded after the first sync attempt either succeeds or fails. + + + + + kazinova@google.com + vasilii@chromium.org + + Whether the passwords are syncing and, if not, then what's causing sync + failures. Recorded after the first sync attempt either succeeds or fails for + the regular profiles. + + + + + derinel@google.com + mamir@chromium.org + + Records the user actions performed on password viewing page in desktop + settings. Reported upon interactions with the password settings page. + + + + + khamutov@google.com + kazinova@google.com + + Records successful fills of prefilled username values known as placeholders + and unsuccessful fills that were blocked because the prefilled value was not + identified as a placeholder. Recorded once per PasswordAutofillAgent + instance, when attempting to fill a password form that contains a username + value which was prepopulated by the website. + + + + + vasilii@chromium.org + mamir@chromium.org + + Records the number of locally saved passwords just before the password Sync + was successfully turned on. + + + + + vasilii@chromium.org + vsemeniuk@google.com + + Records the type of a promo card for which user clicked action button in the + Password Manager UI. Recorded when a promo card action button is clicked. + + + + + vasilii@chromium.org + vsemeniuk@google.com + + Records the type of a promo card dismissed in the Password Manager UI. + Recorded when a promo card is dismissed. + + + + + vasilii@chromium.org + vsemeniuk@google.com + + Records the type of a promo card shown in the Password Manager UI. Recorded + when a promo card is shown. + + + + + kazinova@google.com + vasilii@chromium.org + + Breakdown of cases where a password is submitted, but we don't even try and + save it. Recorded for every password form submit. + + + + + kazinova@google.com + vasilii@chromium.org + + Recorded whenever the user interacts with reauthentication in order to + access the passwords in settings, or when such reauthentication is skipped + for a well-defined reason. + + + + + kazinova@google.com + battre@chromium.org + + HTTP response code of fetching a password requirements file. + + + + + kazinova@google.com + battre@chromium.org + + Network error code of fetching a password requirements file. + + + + + kazinova@google.com + battre@chromium.org + + Time until the lookup for a password requirements file completed (or was + aborted). + + + + + kazinova@google.com + battre@chromium.org + + Result of fetching requirements for password during password generation. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The number of passwords analyzed during the password reuse check. Note: this + is a number of unique password values. Recorded after reuse check is + finished. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The number of reused passwords found when the password reuse check + completed. Note: this is a number of unique password values. Recorded after + reuse check is finished. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + The time it took to complete the password reuse check. Recorded after reuse + check is finished. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the type of password (e.g saved password, sync password, enterprise + password etc) reused by the user. This is logged when a password reuse + happens. + + + + + vsemeniuk@google.com + chrome-counter-abuse-alerts@google.com + + Records the number of Gaia password hashes that have been saved for password + reuse detection {SyncConsentStatus}. This is logged during the + initialization of the PasswordReuseManagerImpl class. + + + + + + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + vsemeniuk@google.com + chrome-counter-abuse-alerts@google.com + + Records the number of Gaia password hashes that have been saved for password + reuse detection {SyncConsentStatus}. This is logged during the + initialization of the PasswordReuseManagerImpl class. + + + + + + + + + + ioanap@chromium.org + fhorschig@chromium.org + vasilii@chromium.org + + Why was the save password UI (bubble or infobar) closed? This is currently + recorded only for Android and only after the user has unblacklisted an + origin for saving from the accessory sheet. + + + + + vasilii@chromium.org + treib@chromium.org + mamir@chromium.org + + Why was the save password UI (bubble or infobar) closed? Recorded for + {UserSyncingType} + + + + + + kazinova@google.com + khamutov@google.com + + Why was the save password UI closed on a cleared change password form? + Recorded when the save bubble/infobar is dismissed. + + + + + atsvirchkova@google.com + ioanap@chromium.org + + When Chrome detects an unknown password being entered into a web page, it + shows the message asking if user wants to save or update (if there is + already some other password saved for the site) the password. This histogram + records what user decides to do with the message. Possible outcomes are: to + accept Chrome's offer to save/update the password, to dismiss the message, + to save/update the password in the edit dialog (which can be navigated from + the message), to cancel in the dialog, tell to never save password for the + site. Records the user action when the message is dismissed as well as when + the dialog opened from the message is dismissed. + + + + + + + + + + + kazinova@google.com + vasilii@chromium.org + + Records user actions when Chrome offers to save a username on a page which + is considered to be a username first flow. Recorded on a successful + submission. + + + + + ioanap@chromium.org + kazinova@google.com + + Records user action to enable or disable automatic sign-in in password + settings. Recorded when user interacts with the toggle. This metric is only + logged on Android. + + + + + ioanap@chromium.org + kazinova@google.com + + Records user action to enable or disable password saving in password + settings. Recorded when user interacts with the toggle. This metric is only + logged on Android. + + + + + vasilii@chromium.org + vsemeniuk@google.com + + Records the user actions related to password manager shortcut. Recorded + before showing install prompt, after successful installation, or when user + switched profile inside a shortcut. + + + + + kolos@chromium.org + shaikhitdin@google.com + + Single username vote is sent after user is signed in (i.e. entered password + in password form). This means that there are actually 2 forms in username + first flow, that is single username and password form. + + Form is considered for single username vote in 2 cases: + + (1) There is a password field and no username fields in the password form. + + (2) There is a password field and username value from password form matches + username value in the single username form. + + This metric tracks which of the two cases the vote is coming from. Recorded + once per vote submission. + + + + + mamir@chromium.org + kazinova@google.com + + Describes the result of decrypting a password value from the LoginDatabase. + + + + + mamir@chromium.org + treib@chromium.org + + Which of the password manager's stores (the profile-scoped one and/or the + account-scoped one) were used within the last 28 days for filling passwords. + Recorded whenever a password form is successfully submitted. This should + typically only be used with "Count unique clients". + + + + + mamir@chromium.org + treib@chromium.org + + Which of the password manager's stores (the profile-scoped one and/or the + account-scoped one) were used within the last 7 days for filling passwords. + Recorded whenever a password form is successfully submitted. This should + typically only be used with "Count unique clients". + + + + + kazinova@google.com + vasilii@chromium.org + + Records a frame type (eg. main frame, iframe with the same url as the main + frame, etc) of a submitted password form. Logged only once per submitted + form. + + + + + kazinova@google.com + kolos@chromium.org + + The type (e.g. signup, login, change password) of all submitted password + forms. This is logged on form submission, but doesn't require that the + password manager saves. + + + + + kazinova@google.com + kolos@chromium.org + + For a successful login, whether the origin is HTTPS or HTTP. A succesful + login is detected by local heuristics. The heuristics can misclassify + whether a login succeeded, so this is an approximation. + + + + + kazinova@google.com + vasilii@chromium.org + + The type of event that the Password Manager used for detecting a password + form submission. Recorded for each successful password form submission. + + + + + kazinova@google.com + ioanap@chromium.org + + The error codes returned by the GMS Core ChromeSync 1P CredentialManager API + for setting the current autofill account. Recorded when the asynchronous job + has returned. This is currently only recorded on Android. + + + + + kazinova@google.com + ioanap@chromium.org + + Error code registered when PasswordSyncControllerDelegateAndroid fails in + notifying CredentialManager of the currect account. This happens either when + the request made to the credential manager API returns with a failure or + before, if the PasswordSyncControllerDelegateAndroid makes a call with + incomplete data (e.g. no account is found when one is required). + + + + + kazinova@google.com + ioanap@chromium.org + + Whether PasswordSyncControllerDelegateAndroid succeeded in notifying + CredentialManager of the currect account. Recorded when the async request to + notify the credential manager about the account returns. + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + kazinova@google.com + vasilii@chromium.org + chrome-password-manager-metrics-alerts@google.com + + Information about the user's current sync status crossed with whether their + synced password is saved. Recorded once per Chrome profile at most once per + day. + + + + + kazinova@google.com + vasilii@chromium.org + chrome-password-manager-metrics-alerts@google.com + + Information about the user's current sync status crossed with whether their + synced password is saved. Recorded at most once per day for regular + profiles. + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + mamir@chromium.org + mastiz@chromium.org + + This metric reports the error observed when trying to read the Sync metadata + from the password store during the start of Password sync. + + + + + mamir@chromium.org + mastiz@chromium.org + + This metric reports the error observed when trying to read the Sync metadata + from the password store during the start of Password sync. Recorded only if + password store was created. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + This metric reports a type of a sync password hash change event. Recorded + when a sync password hash is saved or cleared. + + + + + kazinova@google.com + battre@chromium.org + + The time between receiving saved credentials from the password store and + predictions from the Autofill server. Recorded each time when predictions + for a form are received. + + + + + ioanap@chromium.org + fhorschig@chromium.org + kolos@chromium.org + + The index of a selected credential in the Touch To Fill sheet. Only recorded + when the sheet showed at least two entries. + + + + + ioanap@chromium.org + fhorschig@chromium.org + kolos@chromium.org + + The reason why a user dismissed the Touch To Fill sheet. Recorded once for + each dismissal. + + + + + ioanap@chromium.org + fhorschig@chromium.org + The number of credentials shown in the Touch To Fill sheet. + + + + ioanap@chromium.org + fhorschig@chromium.org + kolos@chromium.org + + The final outcome that closes the Touch To Fill sheet (e.g. credentials + filling, settings opened, failed reauth, sheet dismissal). Recorded once for + each closing. + + + + + kolos@chromium.org + fhorschig@chromium.org + + A given form's state (e.g. there are empty fields in the form, or there are + only two fields and they both are filled by Chrome) that indicates whether + the form is ready for submission. Recorded when a Touch To Fill sheet is + shown for that form. + + + + + ioanap@chromium.org + fhorschig@chromium.org + kolos@chromium.org + + Measures whether a credential filling by Touch To Fill leads to a successful + submission or not (submission failed, or the submission could not be + associated with filling by Touch To Fill). A submission after filling is + considered successful iff the filled and submitted usernames coincide, the + timestamps are within one minute and a user hasn't modified any field after + filling. Otherwise, it is reported as 'no successful submission observed'. + The metric is used to compare a login success rate when automated submission + is enabled and disabled. Due to stale or wrong credentials, the success rate + will be degraded independently of automated submission. Recorded when the + password manager has classified a login submission (succeeded or failed) or + a user has modified a field after Touch-To-Fill. + + + + + ioanap@chromium.org + fhorschig@chromium.org + kolos@chromium.org + + The time in milliseconds between filling by the Touch To Fill and a + successful submission (To ensure filling and submitting correspond to each + other, the usernames should coincide and the timestamps should be within one + minute. A successful login after a failed submission or manual typing is not + reported). Used to compare the times when automated submission is enabled + and disabled. Thus, we measure the time saved for a user. Recorded when the + password manager detects that the login was successful. + + + + + ioanap@chromium.org + fhorschig@chromium.org + + The action a user took when interacting with the Touch To Fill sheet. + + + + + vasilii@chromium.org + mamir@chromium.org + + Why was the password manager's UI (bubble or infobar) closed? Save and + update UI are tracked separately. + + + + + kazinova@google.com + ioanap@chromium.org + fhorschig@chromium.org + + Records true when a client's profile is being unenrolled from UPM. This + happens when a password store request to GMS Core fails with an error that + is deemed unrecoverable. + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + kazinova@google.com + ioanap@chromium.org + fhorschig@chromium.org + + Recorded on profile open after the sync service is initialized and once per + profile. It is recorded for clients that have UPM enabled and logs whether + UPM is actually active for them. Reasons why UPM might be inactive are: + passwords sync off or client unenrolled due to unresolvable errors. Note a + client can have both sync off and be unenrolled, in which case it will still + only appear in the sync off bucket, since this is considered the main reason + why the client is inactive for UPM. + + + + + kazinova@google.com + ioanap@chromium.org + fhorschig@chromium.org + + Recorded on profile open after the sync service is initialized and once per + regular profile. It is recorded for clients that have UPM enabled and logs + whether UPM is actually active for them. Reasons why UPM might be inactive + are: passwords sync off or client unenrolled due to unresolvable errors. + Note a client can have both sync off and be unenrolled, in which case it + will still only appear in the sync off bucket, since this is considered the + main reason why the client is inactive for UPM. + + + + + vsemeniuk@google.com + fhorschig@chromium.org + + Records whether passwords were successfully migrated from built in backed to + android backed and the current migration version stored in pref is + greater/equal to the version from feature parameters. Recorded on start up. + + + + + vsemeniuk@google.com + fhorschig@chromium.org + + Real-time duration of {UPMMigrationType}. Recorded when all operations are + completed and migration is finished. + + + + + + vsemeniuk@google.com + fhorschig@chromium.org + + Records success of {UPMMigrationType}. Recorded when the migration is + finished. + + + + + + vasilii@chromium.org + Why was the update password UI (bubble or infobar) closed? + + + + kazinova@google.com + khamutov@google.com + + Why was the update password UI closed on a cleared change password form? + Recorded when the update bubble/infobar is dismissed. + + + + + ioanap@chromium.org + izuzic@google.com + + Records the error code returned by the GMS Password Checkup 1P API which + caused unenrollment. This is recorded when the user is evicted from UPM. + + + + + izuzic@google.com + ioanap@chromium.org + + Records whether the user was successfully signed in after using the sign in + button on the Password Manager error message. The outcome can be either + success or failure. It's recorded when the sign in flow that updates + credentials finishes. Currently only used on Android. + + + + + kazinova@google.com + kolos@chromium.org + + Measures what method was used for username field detection in the renderer + code. The metric may be recorded several times for page visit because it is + recorded at every PasswordForm creation. If a site changes HTML attributes + of fields or server-side predictions is received, different values can be + recorded for the same form. If an outcome of HTML classifier or a + server-side prediction coincides with the outcome of base heuristic, the + metric points to base heuristic method. + + + + + kazinova@google.com + vasilii@chromium.org + + The number of passwords analyzed during the passwords weak check. + + + + + kazinova@google.com + vasilii@chromium.org + + The score of the password that was checked by the passwords weak check. The + score indicates how guessable the password is. + + + + + jkeitel@google.com + vasilii@chromium.org + + The time taken to perform a weakness check for a single password. Recorded + whenever a password weakness score is computed. + + + + + kazinova@google.com + vasilii@chromium.org + The time it took to complete the passwords weak check. + + + + kazinova@google.com + vasilii@chromium.org + + The number of weak passwords found when the passwords weak check completed. + + + + + kolos@chromium.org + jkeitel@google.com + + The type of change password URL opened after requesting, for example, + https://example.com/.well-known/change-password. The metric is emitted when + the appropriate throttle handles such URLs. + + + + + vsemeniuk@google.com + vasilii@chromium.org + + Records the result of the attempt to re-auth the user via biometrics when + {Location}. + + + + + + + + + vsemeniuk@google.com + vasilii@chromium.org + Records the time it takes user to authenticate {Location}. + + + + + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + kazinova@google.com + mamir@chromium.org + treib@chromium.org + vasilii@chromium.org + + The total number of sites that the user has blocklisted in the password + manager's {Store}. Recorded by iterating over stored passwords once per + Chrome profile and at most once per day. + + + + + + + kazinova@google.com + mamir@chromium.org + treib@chromium.org + vasilii@chromium.org + + The total number of sites that the user has blocklisted in the password + manager's {Store}. Recorded by iterating over stored passwords at most once + per day for regular profiles. + + + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + derinel@google.com + vasilii@chromium.org + mamir@chromium.org + + The number of saved passwords that could not be decrypted in the password + manager's {Store}. Recorded once for the profile when it's opened. + + + + + + + + + + Obsolete in M112 due to renaming profile scoped variant from empty to + ProfileStore. Replaced by + PasswordManager.ProfileStore.InaccessiblePasswords3 and + PasswordManager.AccountStore.InaccessiblePasswords3 + + derinel@google.com + vasilii@chromium.org + mamir@chromium.org + + The number of saved passwords that could not be decrypted in the password + manager's {Store}. Recorded once for the regular profile when it's opened. + + + + + + + + + derinel@google.com + vasilii@chromium.org + mamir@chromium.org + + The number of saved passwords that could not be decrypted in the password + manager's LoginDatabase for {Store}. Recorded once for the regular profile + when it's opened. + + + + + + + + + derinel@google.com + mamir@chromium.org + + The encryption status of the login database in the password manager's + {Store} after initialization. Recorded only once per profile when the + database is initialized. + + + + + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + derinel@google.com + mamir@chromium.org + + Total number of credentials with non-empty notes in the password manager's + {Store}. Recorded once per Chrome profile and at most once per day. + + + + + + derinel@google.com + mamir@chromium.org + + Total number of credentials with non-empty notes in the password manager's + {Store}. Recorded at most once per day for regular profiles. + + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + derinel@google.com + mamir@chromium.org + + Total number of notes attached to a password in the password manager's + {Store}. Recorded once for each credential in a Chrome profile and at most + once per day. + + + + + + + Obsolete since Jan 2022 as emitting credentials with 0 notes is not + required. Replaced by + PasswordManager.{Store}PasswordNotes.CountNotesPerCredential3 + + derinel@google.com + mamir@chromium.org + + Total number of notes attached to a password in the password manager's + {Store}. Recorded once for each credential at most once per day for regular + profiles. + + + + + + derinel@google.com + mamir@chromium.org + + Total number of notes attached to a password in the password manager's + {Store}. Recorded once for credentials with 1+ notes at most once per day + for regular profiles. + + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + kazinova@google.com + battre@chromium.org + mamir@chromium.org + treib@chromium.org + + The number of times each saved password from the {Store} has been used to + log in. Split by whether created by the user or generated by Chrome, and + further by whether the user used sync with custom passphrase or not. + Recorded by iterating over stored passwords once per Chrome profile, soon + after startup, and at most once per day. + + + + + + + + kazinova@google.com + battre@chromium.org + mamir@chromium.org + treib@chromium.org + + The number of times each saved password from the {Store} has been used to + log in. Split by whether created by the user or generated by Chrome, and + further by whether the user used sync with custom passphrase or not. + Recorded by iterating over stored passwords soon after startup, at most once + per day for regular profiles. + + + + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + battre@chromium.org + mamir@chromium.org + treib@chromium.org + vasilii@chromium.org + + The number of accounts stored in the password manager's {Store} (across all + sites) for origins with the scheme (e.g., HTTP, HTTPS, FTP) as given in the + histogram suffix. For each scheme, the count is recorded once per Chrome + profile and at most once per day. + + + + + + + battre@chromium.org + mamir@chromium.org + treib@chromium.org + vasilii@chromium.org + + The number of accounts stored in the password manager's {Store} (across all + sites) for origins with the scheme (e.g., HTTP, HTTPS, FTP) as given in the + histogram suffix. For each scheme, the count is recorded at most once per + day for regular profiles. + + + + + + + + Obsolete in M110 after PasswordStore is no longer created for non-regular, + guest, system and incognito profiles. + + kazinova@google.com + vasilii@chromium.org + mamir@chromium.org + treib@chromium.org + battre@chromium.org + + The number of accounts stored {Metric2} in the password manager's {Store}. , + split by whether created by the user or generated by Chrome, and further by + whether the user use sync with custom passphrase or not. Recorded during + browser start-up, once per Chrome profile and at most once per day. + + + + + + + + + + + + kazinova@google.com + vasilii@chromium.org + mamir@chromium.org + treib@chromium.org + battre@chromium.org + + The number of accounts stored {Metric3} in the password manager's {Store}. , + split by whether created by the user or generated by Chrome, and further by + whether the user use sync with custom passphrase or not. Recorded during + browser start-up, at most once per day for regular profiles. + + + + + + + + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records how a user interacts with the password protection interstitial + (a.k.a chrome://reset-password page). Logged when the interstitial is shown + and when the user chooses to change their password. Warning: this histogram + was expired from 2021-01-30 to 2021-10-25; data may be missing. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Records how a user interacts with the password protection modal warning + dialog. Logged when the dialog is shown and when the user chooses to change + their password, ignore warning, or navigate away. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the interval between when the password protection modal warning + dialog is constructed and when the dialog is destructed. The dialog can be + destructed when the user takes action or the web content is destroyed. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records how a user interacts with page info bubble that displays the + password protection warning. Logged when such page info bubble is shown and + when the user chooses to change their password, ignore warning, or mark site + as legitimate via buttons on the page info bubble. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the outcome of the password alert mode, indicating if password alert + warning is shown successfully or if it is skipped for some reason. Warning: + this histogram was expired from 2021-01-30 to 2021-10-25; data may be + missing. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Response or error codes for PasswordProtectionRequest. Logged after chrome + receives response of PasswordProtectionRequest from Safe Browsing service. + + Note: In M98 the error code HTTP_RESPONSE_CODE_FAILURE was changed to log + the actual HTTP response code. + + + + + nwokedi@chromium.org + chrome-counter-abuse-alerts@google.com + + When password protection service detects a reuse of Chrome sync password, + record the type of Chrome sync account on which the reuse happens (e.g. + @gmail.com, @googlemail.com, or other dasher account). + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The time it takes for PasswordProtectionService request. It is not recorded + for requests that were canceled. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the outcome of the password protection request, indicating if + request is sent out successfully or if it is skipped or canceled for some + reason. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the referring app source of the password protection request, + indicating the source of the referring app name in the request. This metric + is only logged on Android. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records if the password protection request, triggered by a(n) {TriggerType}, + was sent with a GAIA-tied OAuth2 token. This token is sent only for + signed-in Enhanced Safe Browsing users. + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs when an event where users reuse their password or focus on a password + field is sent as a sample ping when the URL in the allowlist to Safe + Browsing. Events only happen 1% of the time when URLs match the allowlist. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Verdict types returned by Safe Browsing server for a password protection + request. Request can be triggered when user focuses on a password field or + enters a protected password (syncing, signed-in, or saved). + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The time it takes to extract the visual features of a login page before + sending a PasswordProtectionRequest. Logged every time visual features are + extracted (when an SBER user sends an On Focus ping). + + + + + + diff --git a/histograms/metadata/payment/OWNERS b/histograms/metadata/payment/OWNERS new file mode 100644 index 000000000000..bec98529d8da --- /dev/null +++ b/histograms/metadata/payment/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +rouslan@chromium.org +smcgruer@chromium.org diff --git a/histograms/metadata/payment/histograms.xml b/histograms/metadata/payment/histograms.xml new file mode 100644 index 000000000000..6b527d65a497 --- /dev/null +++ b/histograms/metadata/payment/histograms.xml @@ -0,0 +1,291 @@ + + + + + + + + + + rouslan@chromium.org + web-payments-team@google.com + + Counts the number of Payment Requests (PR) that go through each checkout + step. A single PR may be counted in multiple buckets depending on its final + status. e.g. A completed PR will be counted in all of the following buckets + 1- Initiated, 2- show() called 3- Payment request triggered 4- Payment + handler invoked, 5- Completed. + + + + + rouslan@chromium.org + web-payments-team@google.com + The reason that lead to an abort of the Payment Request. + + + + rouslan@chromium.org + web-payments-team@google.com + + The reason that leads to the Payment Request not being shown to the user. + + + + + rouslan@chromium.org + web-payments-team@google.com + + A payment handler's response to the "canmakepayment" event in its + service worker. The event is fired when "new PaymentRequest()" is + called in JavaScript, but only for URL-based payment methods, only for + already installed payment handlers, and only when not in private browsing + mode. The response from "canmakepayment" is expected to be + "true" in the majority of cases. The value of "false" + could be either the payment handler refusing to make payments or an internal + error, which should both be rare. + + + + + rouslan@chromium.org + web-payments-team@google.com + + An Android payment app's response to an IS_READY_TO_PAY intent. The intent + is sent when "new PaymentRequest()" is called in JavaScript, but + only for URL-based payment methods, only for apps that expose the + IS_READY_TO_PAY intent to Chrome, only when Chrome is able to connect to the + service at this intent filter, and only when not in private browsing mode. + The response from IS_READY_TO_PAY is expected to be "true" in the + majority of cases. The value of "false" could be either the + payment app refusing to make payments or an internal error, which should + both be rare. + + + + + rouslan@chromium.org + web-payments-team@google.com + + A bitfield representing the different events that happened during the + Payment Request. + + + + + rouslan@chromium.org + web-payments-team@google.com + + The 2.0 version of Events. A bitfield representing the different events that + happened during the Payment Request. + + + + + rouslan@chromium.org + web-payments-team@google.com + + Whether a journey logger has recorded an events bit field or not. + + + + + rouslan@chromium.org + web-payments-team@google.com + + When a journey logger attempts to record multiple events bit fields. + + + + + pkotwicz@chromium.org + web-payments-team@google.com + + Records whether the payment ManifestVerifier found the payment method + manifest in the browser cache. + + + + + pkotwicz@chromium.org + web-payments-team@google.com + + Records how long it takes to check the browser cache for the payment method + manifest. + + + + + pkotwicz@chromium.org + web-payments-team@google.com + + Records how long it takes to download the payment method manifest. + + + + + rouslan@chromium.org + web-payments-team@google.com + + The number of suggestions shown to the user during a payment request. + + + + + rouslan@chromium.org + web-payments-team@google.com + + The number of payment methods that an installed Android payment app declares + to support. Recorded when a website creates a new PaymentRequest JS object. + + + + + rouslan@chromium.org + web-payments-team@google.com + + Whether an attempted just-in-time payment handler installation was + successful. Recorded when the attempted installation is finished. + + + + + rouslan@chromium.org + web-payments-team@google.com + + A count of the number of queries to the payment apps of different types, + where the query happens before the purchase flow is initiated. Recorded when + a PaymentRequest object is constructed with payment method parameters that + match with the already installed payment apps on the user device. + + + + + rouslan@chromium.org + web-payments-team@google.com + + True when chrome crawls to refetch the missing icon of an already installed + payment app. + + + + + rouslan@chromium.org + web-payments-team@google.com + + Records the action performed by the user on the Secure Payment confirmation + dialog. The result is Accepted if the affirmitive button is pressed, + Canceled if the dialog is canceled, or Closed if it is otherwise closed. + Logged when the user interacts with the dialog or the dialog is otherwise + closed. + + + + + rouslan@chromium.org + web-payments-team@google.com + + Records the result of the FIDO system prompt, which is shown after the + Secure Payment Confirmation enrollment dialog is accepted. The result is + Accepted if the prompt is successful, i.e., the user has approved the FIDO + system prompt, or Canceled if the prompt is canceled or failed. Logged when + the FIDO system prompt closes. + + + + + rouslan@chromium.org + web-payments-team@google.com + + Records the result of the FIDO system prompt, which is shown after the + Secure Payment Confirmation dialog is accepted. The result is Accepted if + the prompt is successful, or Canceled if the prompt is canceled. Logged when + the FIDO system prompt closes. + + + + + rouslan@chromium.org + web-payments-team@google.com + + Records the size of Credential ID for secure-payment-confirmation method in + bytes. + + + + + rouslan@chromium.org + web-payments-team@google.com + True when a service worker times out 5 mins after request. + + + + rouslan@chromium.org + web-payments-team@google.com + + Records the transaction amounts completed using payment request API after + converting to USD. + + + + + rouslan@chromium.org + web-payments-team@google.com + + Records the transaction amounts triggered using payment request API after + converting to USD. + + + + + + diff --git a/histograms/metadata/pcscan/OWNERS b/histograms/metadata/pcscan/OWNERS new file mode 100644 index 000000000000..532eb34e22d5 --- /dev/null +++ b/histograms/metadata/pcscan/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +mlippautz@chromium.org diff --git a/histograms/metadata/pcscan/histograms.xml b/histograms/metadata/pcscan/histograms.xml new file mode 100644 index 000000000000..c927869e615d --- /dev/null +++ b/histograms/metadata/pcscan/histograms.xml @@ -0,0 +1,74 @@ + + + + + + + + + + bikineev@chromium.org + mlippautz@chromium.org + + Overall duration of a single PCScan cycle in the {Process} process. + Performed by {Actor} thread(s). Reported once per PCScan cycle at the end. + + + + + + + + + + + + + bikineev@chromium.org + mlippautz@chromium.org + + Duration of the PCScan phase that {Phase} in the {Process} process. + Performed by {Actor} thread(s). Reported once per each PCScan cycle at the + end. + + + + + + + + + + + + + + + + + + + + diff --git a/histograms/metadata/pdf/OWNERS b/histograms/metadata/pdf/OWNERS new file mode 100644 index 000000000000..0f75bdfe0edd --- /dev/null +++ b/histograms/metadata/pdf/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +awscreen@chromium.org diff --git a/histograms/metadata/pdf/histograms.xml b/histograms/metadata/pdf/histograms.xml new file mode 100644 index 000000000000..e318d1ca953c --- /dev/null +++ b/histograms/metadata/pdf/histograms.xml @@ -0,0 +1,125 @@ + + + + + + + + + + hnakashima@chromium.org + + Tracks user actions in the PDF viewer. Logged when the document is opened + and when one of the relevant user actions is taken, such as opening the + bookmarks bar or setting the zoom mode to fit-to-page. The enum values that + are named "First" are logged only once per document, so that we + can measure in what percentage of documents a given action was performed at + least once. + + + + + nigi@chromium.org + thestig@chromium.org + + Records encountering a PDF attachment with a specific file extension. This + is logged when a document is opened in the PDF viewer but not in the Print + Preview. The index of "directory" won't be used for this log since + a PDF attachment cannot be a directory. The index of "unknown + extension" won't be used for this log since it will be represented as + the index of "other". + + + + + dhoss@chromium.org + kmoon@chromium.org + thestig@chromium.org + + Tracks what types of forms are present in PDF document, logged when the + document finishes loading. + + + + + nigi@chromium.org + thestig@chromium.org + + Measures if PDFs opened in the PDF viewer have attachments. This is logged + whenever a document is opened in the PDF viewer. + + + + + + Removed 04/2022. It's no longer needed. + + thestig@chromium.org + ankk@microsoft.com + mohitb@microsoft.com + virens@microsoft.com + + Records the number of overlapping link and highlight annotations in a PDF + page. This is logged once per page whenever accessibility tree creation is + triggered for that page. It will not be logged on render or scroll + operations. + + + + + kmoon@chromium.org + thestig@chromium.org + + Tracks what happens when Chrome tries to load a PDF. This metric tracks all + cases, but is focused on measuring failed PDF embeds, which occur if the + user is on Android, or if PDF plugin is disabled. + + + + + hnakashima@chromium.org + thestig@chromium.org + + Tracks the number of pages in PDF documents opened in the PDF viewer. + + + + + nigi@chromium.org + thestig@chromium.org + + Time used for rendering and painting all the visible pages in the PDF + viewer. + + + + + dhoss@chromium.org + thestig@chromium.org + Tracks versions of documents opened in the PDF viewer. + + + + + diff --git a/histograms/metadata/performance_controls/histograms.xml b/histograms/metadata/performance_controls/histograms.xml new file mode 100644 index 000000000000..e2c9092f4300 --- /dev/null +++ b/histograms/metadata/performance_controls/histograms.xml @@ -0,0 +1,117 @@ + + + + + + + + + + agale@chromium.org + estalin@chromium.org + chrome-performance-ui-sea@google.com + + Logged on each battery saver mode bubble close indicating whether the bubble + is dismissed (either by the user or by the system e.g. closed at shutdown) + or used it to turn off battery saver mode for current session. This will be + used to measure the efficacy of the bubble message and the number of users + that interact with the battery saver toolbar button. + + + + + agale@chromium.org + estalin@chromium.org + chrome-performance-ui-sea@google.com + + Logged each time the user opens the settings page through the link on the + battery saver mode IPH. This will be combined with an existing histogram + measuring the number of times the IPH is open to measure how the user + responds to it. + + + + + charlesmeng@chromium.org + chrome-performance-ui-sea@google.com + + Logs the state of the battery saver mode pref when the user makes a change + to it through the settings page. This will be used to measure the + discoverability and usefulness of battery saver mode. + + + + + agale@chromium.org + chrome-performance-ui-sea@google.com + + Logged on each high efficiency mode dialog close indicating whether the user + opened the settings page or dismissed the dialog. This will be used to + measure the efficacy of the dialog message and the number of users that + interact with the high efficiency page action chip. + + + + + agale@chromium.org + chrome-performance-ui-sea@google.com + + Logged each time the user opens the settings page through the link on the + high efficiency mode IPH. This will be combined with an existing histogram + measuring the number of times the IPH is open to measure how the user + responds to it. + + + + + agale@chromium.org + chrome-performance-ui-sea@google.com + + Logged each time the user enables high efficiency mode through the link on + the high efficiency mode IPH. This will be combined with an existing + histogram measuring the number of times the IPH is open to measure how the + user responds to it. + + + + + charlesmeng@chromium.org + chrome-performance-ui-sea@google.com + + Logs whether the user did an add, edit, or remove operation to the tab + discard exception list for high efficiency mode. This will be used to better + understand how users interact with the list, and to see if we need to + improve our heuristics for tab discarding. + + + + + charlesmeng@chromium.org + chrome-performance-ui-sea@google.com + + Logs whether the user enabled or disabled the high efficiency mode pref when + it is changed through the settings page. This will be used to measure the + discoverability and usefulness of high efficiency mode. + + + + + + diff --git a/histograms/metadata/performance_manager/OWNERS b/histograms/metadata/performance_manager/OWNERS new file mode 100644 index 000000000000..90ee302f3e5e --- /dev/null +++ b/histograms/metadata/performance_manager/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +fdoray@chromium.org +joenotcharles@google.com + diff --git a/histograms/metadata/performance_manager/histograms.xml b/histograms/metadata/performance_manager/histograms.xml new file mode 100644 index 000000000000..3188316cd5e6 --- /dev/null +++ b/histograms/metadata/performance_manager/histograms.xml @@ -0,0 +1,79 @@ + + + + + + + + + + anthonyvd@chromium.org + chrome-catan@google.com + + Whether individual accessibility mode flags are set. Recorded with every UMA + report to attempt to slice other metrics based on which a11y flags are set. + + + + + anthonyvd@chromium.org + chrome-catan@google.com + + Whether any accessibility mode flags are set. Recorded with every UMA report + to attempt to slice other metrics based on whether a11y is active. + + + + + anthonyvd@chromium.org + chrome-catan@google.com + + Logged on each UMA upload to represent which user-controllable Efficiency + Mode setting the browser is in during the reported window. If the mode was + changed between uploads, MIXED will be reported for that interval. + + This histogram is used internally to filter other histograms by efficiency + mode. + + + + + joenotcharles@google.com + chrome-catan@google.com + + Logged every time V8DetailedMemoryReporter.GetV8MemoryUsage is sent to a + renderer, with the measurement mode. This can be used to find the volume of + measurement requests to track their performance overhead. + + {Destination} + + + + + + + + + + diff --git a/histograms/metadata/permissions/OWNERS b/histograms/metadata/permissions/OWNERS new file mode 100644 index 000000000000..9306fd21cbb1 --- /dev/null +++ b/histograms/metadata/permissions/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +andypaicu@chromium.org +ravjit@chromium.org diff --git a/histograms/metadata/permissions/histograms.xml b/histograms/metadata/permissions/histograms.xml new file mode 100644 index 000000000000..41d2fdbeee7c --- /dev/null +++ b/histograms/metadata/permissions/histograms.xml @@ -0,0 +1,1688 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + engedy@chromium.org + ravjit@chromium.org + dominickn@chromium.org + meacer@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Whether or not the user checked the option in the external protocol dialog + to remember their choice of opening or not opening the specified app. + Recorded each time the user interacts with the External Protocol Dialog, + when making a decision. + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Tracks user interactions on permission prompts, aggregated across all UI + dispositions, including quiet permission prompts due to CPSS or Crowd Deny. + + One sample is recorded each time a permission request triggers a prompt, + even if the prompt UI is never seen by the user. This histogram does not + include permission requests that are granted/denied because the user had + previously made a decision; nor requests that are denied by Permission + Policy, per-site permission embargo, or are cancelled while queued. + + The suffix of the histogram indicates which particular permission. + + + + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Tracks the action that a user had taken per permission prompt UI + disposition. Suffixed by the UI disposition that the prompt used. Recorded + when a permission prompt has been resolved. + + + + + + + + + + + + + + + + + + + + tungnh@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded when a permission prompt has been resolved and the permission + request was made from a cross-origin iframe. Records the action that a user + had taken. + + + + + + tungnh@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded whenever a permission prompt is shown to the user which was + triggered by a request made from a cross-origin frame. Records what type of + type of permission header policy the top-level document defined for the + accessed feature. + + + + + + andypaicu@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records the number of PermissionStatus handles that have been created by a + document (via the "navigator.permissions" API). Recorded at the + destruction of said document. Only recorded if the document has created at + least one PermissionStatus handle. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + For every permission request that would show a prompt to the user, this + metric tracks whether the request is suppressed by embargo (and the source + of that embargo), or whether there is no embargo and the prompt is shown. + This is the proportion of permission prompts that the user would have seen + that have been blocked due to embargo. + + If the (origin, permission) pair was previously placed under embargo, no + prompt is displayed and the reason for embargo is recorded. Otherwise, the + prompt is shown and a no embargo reason is recorded. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Tracks the reason that an (origin, permission) pair has been placed under + embargo (blocked from making requests for that permission for a period of + time). This is triggered when a permission is placed under embargo for + blacklisting (once Safe Browsing has returned a result), when a permission + prompt has been shown and it is placed under embargo for repeated + dismissals, or when a permission prompt is shown and not embargoed. + + + + + + Removed in July 2022, as it's been unused for some time. + + timloh@chromium.org + + Battery percentage when a geolocation permission prompt was accepted on + Android. + + + + + + Removed in July 2022, as it's been unused for some time. + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + ravjit@chromium.org + elklm@chromium.org + + Battery percentage when a location settings dialog was accepted. + + + + + + Removed in July 2022, as it's been unused for some time. + + timloh@chromium.org + + Battery percentage when a geolocation permission prompt was denied on + Android. + + + + + + Removed in July 2022, as it's been unused for some time. + + timloh@chromium.org + + Battery percentage when a location settings dialog was denied. + + + + + + Removed in July 2022, as it's been unused for some time. + + timloh@chromium.org + + Battery percentage when a geolocation permission prompt was dismissed on + Android. + + + + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records how long it takes for the user to make a decision about permission + request when chip request UI is shown, from when permission prompt is shown + until when the user clicks on one of the buttons in the prompt (accept, + block or close). + + + + + + + + + + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records how long it takes for the user to click on the permission chip after + it was shown. + + + + + fjacky@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Record each time the page info bubble is opened through either the lock icon + or the confirmation chip, how it was opened and how the opening related to + the confirmation chip. + + + + + andypaicu@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Whenever a notification permission prompt is to be displayed, crowd deny + might trigger based on site reputation which will result in a quiet + permission prompt UI to be used. Whenever this happens, there is a small + chance that the normal UI will still be used. This records, when a quiet UI + is supposed to be shown, whether it has been randomly selected into the + hold-back group. In this case the normal UI will be displayed unless + overriden by the user Prefences. + + + + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Record, for each incoming push notification, a delay caused by loading Crowd + Deny component during abusive an origin verification. It's recorded only for + non-abusive origins and only if the Crowd Deny request was made while the + preload data is in the process of being loaded. Timing starts at requesting + CrowdDenyPreloadData::GetReputationDataForSiteAsync, and timing ends after + Crowd Deny returns result to + AbusiveOriginPermissionRevocationRequest::OnSiteReputationReady. + + + + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + + Records, each time a notification permission prompt is about to be shown, + the NotificationUxQuality result for the requesting origin. + + + + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records, each time abusive origin verification is performed, the version of + the Crowd Deny preload data on disk (not necessarily loaded). + + + + + + Adding the obsolete tag for bookkeeping. Histogram not recorded since its + expiry date 2021-10-25 + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + + Records, each time a notification permission prompt is about to be shown, + the whether there is preload data that indicates the origin being on a + warning list. + + + + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + + Records, each time a Safe Browsing request is made in response to a website + requesting the notification permission, how long that Safe Browsing request + took. This also includes all delays introduced by thread hopping. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records, each time a Safe Browsing request is made in response to a website + requesting the notification permission, the Safe Browsing verdict regarding + the notification prompt experience on that site. + + + + + andypaicu@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded when the Default Search Engine automatic permission grant is + reverted. It tracks the transition that the settings for the DSE origin + takes when this happens. Suffixed by `PermissionTypes` to provide + information per permission type. Only recorded for Android as that is the + only platform where the DSE permissions were enabled. + + + + + andypaicu@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded at initialization and when the Default Search Engine origin is + changed. Tracks the setting for the Default Search Engine origin. Suffixed + by `PermissionTypes` to provide information per permission type. Only + recorded for Android as that is the only platform where the DSE permissions + were enabled. + + + + + + Removed in June 2022, since the data it provides is no longer relevant. + + andypaicu@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded when the Default Search Engine automatic permission grant is + reverted and the recorded transition is invalid. Used to help investigate + the scenario in which this happens. Records the backed up setting for the + DSE origin, which is the setting that was in effect before the DSE autogrant + overwrote it in the first place. Suffixed by `PermissionTypes` to provide + information per permission type. + + + + + + Removed in June 2022, since the data it provides is no longer relevant. + + andypaicu@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded when the Default Search Engine automatic permission grant is + reverted and the recorded transition is invalid. Used to help investigate + the scenario in which this happens. Records the effecting setting for the + DSE origin, which is the setting that was in effect before the revert. + Suffixed by `PermissionTypes` to provide information per permission type. + + + + + + Removed in June 2022, since the data it provides is no longer relevant. + + andypaicu@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded when the Default Search Engine automatic permission grant is + reverted and the recorded transition is invalid. Used to help investigate + the scenario in which this happens. Records the end state setting for the + DSE origin, which is the setting that is in effect after the revert. + Suffixed by `PermissionTypes` to provide information per permission type. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded when the user accepts the permission prompt. It tracks the Site + engagement score for sites. For more info check chrome/browser/engagement/ + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded when the user accepts the one time permission prompt. It tracks the + Site engagement score for sites. For more info check + chrome/browser/engagement/ + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded when the user denies the permission prompt. It tracks the Site + engagement score for sites. For more info check chrome/browser/engagement/ + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded when the user dismisses the permission prompt. It tracks the Site + engagement score for sites. For more info check chrome/browser/engagement/ + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded when the user ignores the permission prompt. It tracks the Site + engagement score for sites. For more info check chrome/browser/engagement/ + + + + + tungnh@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded whenever a navigation finished in a primary main frame. Records + what type of permission header policy the top-level document defined for the + feature corresponding to {PermissionType} . + + + + + + + + + + tungnh@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded whenever a permission is used in a cross-origin frame. Records what + type of permission header policy the top-level document defined for the + accessed feature. + + + + + + tungnh@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded whenever a permission is used. Records whether the permission is + used in a cross origin frame. + + + + + + + Removed in 2023/01, as it's no longer needed. To track Notification + revocation use `Notifications.AppNotificationStatus` and + `PushMessaging.DeliveryStatus`. + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records when Chrome has no app-level Notifications permission on Android and + receives a push message. + + + + + + Removed in 2023/01, as it's no longer needed. To track Notification + revocation use `Notifications.AppNotificationStatus` and + `PushMessaging.DeliveryStatus`. + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records when Chrome has app-level Notifications permission on Android, + receives a push message but the grace period was initialized and needs to be + reset. + + + + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + + Recorded when the "Chrome needs permission..." infobar is + resolved. Records the resulting action that was taken. Suffixed by + `PermissionTypes` to provide information per permission type. + + + + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded when the "Chrome needs permission..." infobar might be + displayed to the user because a site already has the permission but Chrome + does not. Records whether the infobar should be displayed or not. Ignores + situations when the infobar cannot be displayed (for example because there + is no appropriate web contents) as in those cases no decision is actually + made. Suffixed by `PermissionTypes` to provide information per permission + type. + + + + + ravjit@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded whenever the permissions prediction service(on-device) responds to + a {PermissionType} permission request. Records whether its response was + ignored or not. + + + + + + fjacky@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Logs granting, revocation, and expiry behaviors of one time permissions. It + records grant events, manual revoke events, expiry due to tab closure or + discards, and expiry in the background due to non-usage. Note that the + number of grants that expired due to the 24 hour maximum grant time limit + can be aproximated by calculating #(granted one time) - #(other events), + though this does not take into account one time permissions that are still + currently active. + + + + + + + + + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records if a user manually reallowed permission state via PageInfo. Recorded + when the user closes a tab, makes cross-origin navigation, or if permission + is used by an origin. Grouped by whether permission was used, the page was + reloaded and a "Reload this page" infobar was shown. + + + + + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + This metric measures how often and in what way users change permissions + state via PageInfo and if we show a "Reload this page" info bar. + Recorded when users changes permissions state or clicks the "Reset + permission" button in PageInfo. + + + + + + + + + + + + + fjacky@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + This metric measures how often and in what way users change their mind + within the first minute of making an active permission decision, i.e. any + PermissionAction that is any action that is not ignore, dismiss or an + automated revoke event. + + + + + + + Removed on 02/2022. Replaced with the newer histogram + Permissions.PredictionService.GeolocationResponse + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded whenever a geolocation permission request is eligible for + Permissions predictions service. Records whether the request was sent to the + backend or if it was held back. + + + + + ravjit@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded whenever a permission is sent to the prediction service. Records + whether the request was sent to the local on-device prediction service or + the server side prediction service. + + + + + ravjit@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded whenever on-device Permissions prediciton service model is + executed. Records if the threshold value for the non-grant score is obtained + from the model's metadata or if the default fallback was used. + + + + + + Removed on 02/2022. Replaced with the newer histogram + Permissions.PredictionService.NotificationResponse + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded whenever a notification permission request is eligible for + Permissions predictions service. Records whether the request was sent to the + backend or if it was held back. + + + + + ravjit@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded whenever the permissions prediction service(server-side) responds + to a {PermissionType} permission request. Records whether its response was + ignored or not. + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Tracks the permission bubbles (merged and non-merged) that are accepted. + Merged bubbles are considered accepted if all permissions are allowed. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + This metric, recorded at the time of a permission prompt accept, records the + total number of prompt dismissal events for this origin since the last time + the user explicitly set the permission state or cleared history / site data + and prior to the accept. The suffix of the histogram indicates which + particular permission. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + This metric, recorded at the time of a permission prompt accept, records the + total number of prompt ignore events for this origin since the last time the + user explicitly set the permission state or cleared history / site data and + prior to the accept. The suffix of the histogram indicates which particular + permission. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded when the user clicks on the one-time allow button of the permission + prompt. Tracks the permission bubbles (merged and non-merged) that are + accepted once. Merged bubbles are considered accepted if all permissions are + allowed. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + This metric, recorded at the time of a permission prompt one-time accept, + records the total number of prompt dismissal events for this origin since + the last time the user explicitly set the permission state or cleared + history / site data and prior to the accept. The suffix of the histogram + indicates which particular permission. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + This metric, recorded at the time of a permission prompt one-time accept, + records the total number of prompt ignore events for this origin since the + last time the user explicitly set the permission state or cleared history / + site data and prior to the accept. The suffix of the histogram indicates + which particular permission. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Tracks the permission bubbles (merged and non-merged) that are denied. + Merged bubbles are considered denied if any permission is denied. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + This metric, recorded at the time of a permission prompt deny, records the + total number of prompt dismissal events for this origin since the last time + the user explicitly set the permission state or cleared history / site data + and prior to the accept. The suffix of the histogram indicates which + particular permission. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + This metric, recorded at the time of a permission prompt deny, records the + total number of prompt ignore events for this origin since the last time the + user explicitly set the permission state or cleared history / site data and + prior to the accept. The suffix of the histogram indicates which particular + permission. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + This metric, recorded at the time of a permission prompt dismiss, records + the total number of prompt dismissal events for this origin since the last + time the user explicitly set the permission state or cleared history / site + data and prior to the dismiss. The suffix of the histogram indicates which + particular permission. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + This metric, recorded at the time of a permission prompt dismiss, records + the total number of prompt ignore events for this origin since the last time + the user explicitly set the permission state or cleared history / site data + and prior to the dismiss. The suffix of the histogram indicates which + particular permission. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + This metric, recorded at the time of a permission prompt ignore, records the + total number of prompt dismissal events for this origin since the last time + the user explicitly set the permission state or cleared history / site data + and prior to the ignore. The suffix of the histogram indicates which + particular permission. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + This metric, recorded at the time of a permission prompt ignore, records the + total number of prompt ignore events for this origin since the last time the + user explicitly set the permission state or cleared history / site data and + prior to the ignore. The suffix of the histogram indicates which particular + permission. + + + + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Tracks whether the user has expanded the infobar notification permission + request. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records whether chrome has notifications already enabled at the app level or + at least is allowed to request for app level permission. When none of these + conditions are true, site level notification permissions are blocked. + Recorded when a site attempts to prompt the user for notifications + permission. Android only. + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Tracks how many times permission prompts are shown to users. + + + + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records how long it takes for the user to make a decision about permission + request when prompt request UI is shown, from when permission prompt is + shown until when the user clicks on one of the buttons in the prompt + (accept, block or close). + + + + + + + + + + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Tracks the action that a user had taken for a {PermissionType} permission + prompt with disposition of type {Disposition}. Recorded when a permission + prompt has been resolved. + + + + + + + + + + + + + + + + + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records if a permission prompt bubble of type {PermissionType} was displayed + as a result of a user having clicked on a chip with disposition + {Disposition} that was subsequently ignored. Chip framework is only + available on Desktop. + + + + + + + + + + + + + + + + + + + + + + + fjacky@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Permission requests are categorized as ignored when the user failed to take + action. This metric captures more detailed information on why a permission + request was ignored. + + + + + + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records how long it takes for the user to take the {Action} action on a + prompt of type {PermissionType} with {Disposition} disposition. The Ignored + state will be recorded if the user closes the tab or a permission chip gets + expired. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recrods {ButtonClick} if a user clicked on "Leanr More" or + "Manage" buttons on the quiet chip of type {PermissionType} with + {Disposition} disposition. Recorded when the permission prompt gets resolved + with {Action} action and only for the quiet chip. + + + + + + + + + + + + + + + + + + + + + + + + + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + Recorded when a permission prompt creation is in progress. + + + + + + + + + + elklm@chromium.org + engedy@chromium.org + + Records how long it takes for the user to click on the quiet chip after it + was shown. Chip framework is only available on Desktop. Recorded only if the + user clicks on the quiet chip. We can learn what % of prompts get ignored by + comparing this metric and + `PermissionPromptDisposition.LocationBarLeftQuietChip`. + + + + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records, each time the quiet UI gets enabled in preferences, whether it was + enabled by the adaptive activation logic. + + + + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records when the quiet notification permission UI state changes, that is, it + either gets enabled or disabled, in preferences. + + + + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records whether the quiet notification permission UI is enabled in + preferences at profile creation. No sample recorded when notifications are + set to be blocked completely. + + + + + Deprecated in M110. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records when a permission request was preignored because it will be shown as + a quiet chip. + + + + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded whenever a permission request is made by a cross-origin site, and + before it is decided whether the request should be displayed to the user. + Records the permission type of the request. + + + + + elklm@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Recorded whenever a permission request is made by a same-origin site, and + before it is decided whether the request should be displayed to the user. + Records the permission type of the request, and is grouped by whether the + requesting frame is the main frame or a sub frame. + + + + + + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records the time elapsed since the grant of the permission until it's + revoked. + + + + + + + reillyg@chromium.org + src/content/browser/serial/OWNERS + + Records the reason why the Serial API chooser, triggered by a call to + navigator.serial.requestPort(), was closed. + + + + + + + reillyg@chromium.org + src/content/browser/serial/OWNERS + Records when permission to access a serial port is revoked. + + + + engedy@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Records the time elapsed since the grant of the permission until it's latest + usage. This histogram will be recorded only for the first usage of a given + permission after the site has loaded. + + + + + mattreynolds@chromium.org + deviceapi-team@google.com + + Records the reason why the WebHID device chooser was closed. + + + + + calamity@chromium.org + dominickn@chromium.org + + The number of days between launches of an origin saved to homescreen or as a + bookmark app shortcut. Recorded at the second and each following launch of a + specific origin from a shortcut, independently per origin. + + + + + calamity@chromium.org + dominickn@chromium.org + + Distribution of the engagement scores accumulated by a user, recorded at + startup per non-incognito profile, and then upon the first + engagement-increasing event every hour thereafter. + + + + + calamity@chromium.org + dominickn@chromium.org + + The percentage of sites on a user's profile that have engagement scores that + fall in these buckets, recorded at startup per non-incognito profile, and + then upon the first engagement-increasing event every hour thereafter. + + + + + calamity@chromium.org + dominickn@chromium.org + + The type of engagement (navigation, user input, etc.) which led to an + accumulation in site engagement. + + + + + calamity@chromium.org + dominickn@chromium.org + + The mean site engagement per origin accumulated by this profile, recorded at + startup per non-incognito profile, and then upon the first + engagement-increasing event every hour thereafter. + + + + + calamity@chromium.org + dominickn@chromium.org + + The median site engagement per origin accumulated by this profile, recorded + at startup per non-incognito profile, and then upon the first + engagement-increasing event every hour thereafter. + + + + + calamity@chromium.org + dominickn@chromium.org + + The total number of origins with a non-zero site engagement score for this + profile, recorded at startup per non-incognito profile, and then upon the + first engagement-increasing event every hour thereafter. + + + + + + Removed in May 2022 / M104. + + calamity@chromium.org + dominickn@chromium.org + + The number of origins which have reached the daily site engagement point + cap, recorded at startup per non-incognito profile, and then upon the first + engagement-increasing event every hour thereafter. Thus, each bin N contains + the number of clients where at least N origins have reached the maximum + daily site engagement point cap. + + + + + calamity@chromium.org + dominickn@chromium.org + + The number of origins which have reached the absolute site engagement point + cap, recorded at startup per non-incognito profile, and then upon the first + engagement-increasing event every hour thereafter. Thus, each bin N contains + the number of clients where at least N origins have reached the maximum + absolute site engagement point cap. + + + + + calamity@chromium.org + dominickn@chromium.org + + The total site engagement accumulated by this profile, recorded at startup + per non-incognito profile, and then upon the first engagement-increasing + event every hour thereafter. + + + + + estark@chromium.org + dullweber@chromium.org + + Tracks actions with the website setting (a.k.a. page info / origin info) + bubble, such as opening it up or clicking on the Connection tab. + + + + + mxcai@chromium.org + dominickn@chromium.org + + Tracks actions with the "All Sites" page in website settings for + builds older than M82. + + + + + ayui@chromium.org + mxcai@chromium.org + + Tracks actions with the "All Sites" page in website settings + starting in M82. No data available for M94, was temporarily expired. Values + 7 and 8 were added with M96. + + + + + eokoyomon@chromium.org + dullweber@chromium.org + + Tracks actions related to page info when discoverability has been activated. + + + + + eokoyomon@chromium.org + dullweber@chromium.org + + Records the amount of time between when the page info is opened and the + highlighted permissions section is clicked. + + + + + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records the amount of time between when the page info is opened and the + highlighted store info section is clicked. + + + + + eokoyomon@chromium.org + dullweber@chromium.org + + Records the amount of time the discoverability icon is shown in the omnibox + before the user clicks into page info. + + + + + zhiyuancai@chromium.org + chrome-shopping@google.com + + Records the amount of time the store icon is shown in the omnibox before the + user clicks into page info. + + + + + olesiamarukhno@google.com + sauski@google.com + chrome-friendly-settings@google.com + + Records the load time of the "All sites" settings page. The load + time is the time between the "GetAllSites" request start and the + time when the storage is fetched and the full information is returned to the + UI. + + + + + + Expired in M81, stopped emitting in M100. + + miguelg@chromium.org + finnur@chromium.org + + Count of how often a specific content type (permission) is changed using the + content settings menu. + + Note: The values of this metric collected for Chrome 49 (early 2016) are + innacurate and should not be trusted. crbug.com/589255. + + + + + + Expired in M81, stopped emitting in M100. + + miguelg@chromium.org + finnur@chromium.org + + Count of how often a specific content type (permission) is set to 'Allowed' + using the content settings menu. + + Note: The values of this metric collected for Chrome 49 (early 2016) are + innacurate and should not be trusted. crbug.com/589255. + + + + + + Expired in M77, stopped emitting in M100. + + miguelg@chromium.org + finnur@chromium.org + + Count of how often a specific content type (permission) is set to 'Ask' + using the content settings menu. + + + + + + Expired in M81, stopped emitting in M100. + + miguelg@chromium.org + finnur@chromium.org + + Count of how often a specific content type (permission) is set to 'Blocked' + using the content settings menu. + + Note: The values of this metric collected for Chrome 49 (early 2016) are + innacurate and should not be trusted. crbug.com/589255. + + + + + + Expired in M77, stopped emitting in M100. + + miguelg@chromium.org + finnur@chromium.org + + Count of how often a specific content type (permission) is reset to the + default value using the content settings menu. + + Note: The values of this metric collected for Chrome 49 (early 2016) are + innacurate and should not be trusted. crbug.com/589255. + + + + + + Expired in M96, stopped emitting in M100. + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + ravjit@chromium.org + elklm@chromium.org + + Count of how often a specific content type (permission) is changed to the + session only value using the content settings menu. This option only exists + for cookies. + + + + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Count of how often a specific content type (permission) is changed using the + Origin Info dialog. + + Note: The values of this metric collected for Chrome 49 (early 2016) are + innacurate and should not be trusted. crbug.com/589255. + + + + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Count of how often a specific content type (permission) is set to 'Allowed' + using the Origin Info dialog. + + Note: The values of this metric collected for Chrome 49 (early 2016) are + innacurate and should not be trusted. crbug.com/589255. + + + + + andypaicu@chromium.org + engedy@chromium.org + hkamila@chromium.org + src/components/permissions/PERMISSIONS_OWNERS + + Count of how often a specific content type (permission) is set to 'Blocked' + using the Origin Info dialog. + + Note: The values of this metric collected for Chrome 49 (early 2016) are + innacurate and should not be trusted. crbug.com/589255. + + + + + + diff --git a/histograms/metadata/phonehub/OWNERS b/histograms/metadata/phonehub/OWNERS new file mode 100644 index 000000000000..a3e769bce86c --- /dev/null +++ b/histograms/metadata/phonehub/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +crisrael@google.com +hansberry@chromium.org +julietlevesque@google.com diff --git a/histograms/metadata/phonehub/histograms.xml b/histograms/metadata/phonehub/histograms.xml new file mode 100644 index 000000000000..25cb11e7e702 --- /dev/null +++ b/histograms/metadata/phonehub/histograms.xml @@ -0,0 +1,655 @@ + + + + + + + + + + + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + The feature status changes to PhoneHub after login. Note that this does not + include the steady state feature status on user login or the status changes + to the feature status prior to that. + + + + + + There was a bug associated with the recording on this metric. During + investigation, we decided that this metric is of no value and so it was + removed. Deprecated 07/2022 + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + The steady state feature status of PhoneHub on user login. + + + + pushi@google.com + chromeos-cross-device-eng@google.com + + The time to generate valid attestation before sending message to phone. + Emitted when a valid attestation is generated and ready to send CrosState + message to phone. + + + + + pushi@google.com + chromeos-cross-device-eng@google.com + + The time to generate an invalid attestation before sending message to phone. + Emitted when an invalid attestation is generated and ready to send CrosState + message to phone. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + The time since the last successful discovery of the phone. Emitted when the + PhoneHub tray bubble is opened prior to connected to the phone. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + The page which is shown in the Phone Hub tray bubble when it is first + opened. This is only emitted when we know the phone is connectable because + it has been discovered nearby in the past 2 minutes. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Records if the Android component has storage access permission. If not, + Camera Roll is hidden and the settings toggle is grayed out. Emitted when a + change of access state is reported by the Android device. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Records user clicks on Camera Roll items. Emmited when opening the context + menu associated with the item. + + + + + + jasonsun@chromium.org + chromeos-cross-device-eng@google.com + + Emits to one and only one bucket. Used to help track engagement with Camera + Roll. Emitted once per opening of the PhoneHub bubble when Camera Roll items + are first shown. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Records Camera Roll items shown in PhoneHub. Emmited when displaying or + updating thumbnails. + + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Records download events in the Camera Roll context menu. Emitted when user + clicks on download for a Camera Roll item. + + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Logs the result of attempting to download a file from Phone Hub's Camera + Roll. + + + + + jasonsun@chromium.org + chromeos-cross-device-eng@google.com + + Measures the data transfer rate of downloading a recent photo or video taken + on a connected phone via Phone Hub. Emitted when an item is downloaded + successfully. + + + + + jasonsun@chromium.org + chromeos-cross-device-eng@google.com + + Measures the amount of time it takes for the Chromebook to receive the + up-to-date set of recent photos and videos taken on a connected phone and + display their thumbnails on the Phone Hub tray. + + + + + jianbing@google.com + chromeos-cross-device-eng@google.com + + Emitted when a new multidevice suite user goes through the multidevice + onboarding flow, when the user enables the Camera Roll toggle in Settings, + and when user chose to turn on the feature in camera roll onboarding dialog + inside phone hub panel. + + + + + + No longer valid as combined feature onboarding flow replaced existing camera + roll op-in flow. Deprecated 04/2022. + + jianbing@google.com + chromeos-cross-device-eng@google.com + + Records events from the Camera Roll opt-in view within the Phone Hub tray + bubble. Emitted when the opt-in view is shown and when the user clicks the + confirm/dismiss buttons. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Measures actions taken by the user as part of the Phone Hub feature; emitted + when the user attempts the actions described in the PhoneHubUserAction enum. + + Used to measure engagement and track 28DA user counts. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + The duration of time the phone is in the connected state, and becomes + disconnected. + + + + + crisrael@google.com + chromeos-cross-device-eng@google.com + + The duration of time the phone is in the connecting state and becomes + connected. Emitted when the phone connects to the Chromebook. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Measures PhoneHub connection success rate, considering attempts where the + phone is not nearby as failures. This is recorded at the end of each + connection attempt, whether it fails or succeeds and the failures are broken + down into more specific categories in + PhoneHub.Connection.Result.FailureReason + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + The reason for which a connection attempt to the phone has failed. This is a + breakdown of the failure bucket of PhoneHub.Connection.Result and is + recorded on each connection failure. + + + + + + This metric is being deprecated for PhoneHub.Connection.Latency in order to + capture latencies over 10 seconds. Deprecated 09/2022. + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + The duration of time the phone is in the connecting state, and becomes + connected. + + + + + pushi@google.com + chromeos-cross-device-eng@google.com + + The duration of time the chromebook sends CrosState request message and + completes processing returned PhoneStatusSnapshot message. Emitted when + PhoneStatusSnapshot is processed. + + + + + pushi@google.com + chromeos-cross-device-eng@google.com + + Measures success rate of Phone Hub PhoneStatusSnapshot processing during a + connection session. Emitted when Phone Hub is disconnected. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + Events for the given PhoneHub interstitial screen. {Screen} + + + + + + + + + + + + + + + + crisrael@google.com + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + The duration of time it from the More Apps button in Phone Hub to go from + intialization to finished loading apps after receiving the app list update. + Emitted after the app list is finished loading. + + + + + crisrael@google.com + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Records whether the more apps button in the recent apps list view in Phone + Hub is showing the glimmer animation (still waiting for an apps list update) + or if it immediately shows the loaded state. Emitted when the Phone Hub + connected view opens and shows the more apps button. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Indicates the feature state of Phone Hub features. This metric is emitted to + at the creation of the user session (when the user logs in), when any + multi-device feature state changes, and every 30 minutes. {PhoneHubFeature} + + + + + + + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Records the time it takes for the user to successfully go through the + Chromebook UI that guides them through granting Phone Hub notifications + access on their phone. Emitted once at the end of a successful setup flow. + The user should only need to go through the flow once successfully for each + phone they pair to. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Records {AllStatusesOrLastStatus} the Chromebook UI that guides them through + granting Phone Hub notifications access on their phone. Emitted each time + the user goes through the notification access setup flow. The user should + only need to go through the flow once successfully for each phone they pair + to. + + + + + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + The number of PhoneHub notifications, logged each time a notification is + added or removed. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Events logged after the user interacts with a PhoneHub notification by + sending an inline reply or dismissing it. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + The message length of a mirrored PhoneHub notification, not including the + title, logged each time a notification is added or updated. + + + + + + No longer valid as combined feature onboarding flow replaced existing + notification op-in flow. Deprecated 04/2022. + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + Events for the given notification opt-in prompt. + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + Tracks the UI surface with which users enable Phone Hub. + + + + jianbing@google.com + chromeos-cross-device-eng@google.com + + Actions user performed in combined multidevice feature set up {SetupScreen}. + Event would be emitted when user click on buttons on {SetupScreen} and setup + finished screen is shown. + + + + + + + + + + + + + + + mavishsu@google.com + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Tracks the multidevice permissions onboarding setup mode. Logged when intro + screen is displayed. + + + + + mavishsu@google.com + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Tracks the multidevice permissions onboarding setup mode. Logged when set up + finished screen is displayed. + + + + + jianbing@google.com + chromeos-cross-device-eng@google.com + + Tracks which feature combination user is setting up. Event would be emitted + when {ModeRecordingEvent}. + + + + + + + + + crisrael@google.com + chromeos-cross-device-eng@google.com + + Tracks how long it takes to receive a ping back from the Phone after sending + a ping request from the Chromebook. Emitted when the Chromebook receives a + ping response. + + + + + crisrael@google.com + chromeos-cross-device-eng@google.com + + Tracks the success rate of receiving pings from the Phone after a request + has been sent from the Chromebook. Success emitted when a ping is received, + Failure is emitted if a response was not received within the time-out + period. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + Event logged after the user clicks on a quick action. + + + + crisrael@google.com + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Logs the recent apps UI state when the Phone Hub bubble is opened. + + + + + crisrael@google.com + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + The time it takes to transition between showing the Loading state to the + Failed state. Emitted when the Failed state is shown. + + + + + crisrael@google.com + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + The time it takes to transition between showing the Loading state to the app + icons state. Emitted when the app icons are shown. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Logs the current screen when the settings button is clicked in the tray + bubble. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Logs the current screen for the PhoneHub tray given bubble event (i.e. on + bubble open or close). + + + + + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + After a tab continuation chip is clicked, the index of the tab is logged. + Tab indices are ordered left-to-right, top-to-bottom in a standard LTR + locale. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Logs the result of attempting a tether connection to measure the connection + success rate. + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Tracks the result of each type of message request. Logged each time a + request message was sent and a response was received. + + + + + + + + + + + + + + + + + jonmann@chromium.org + chromeos-cross-device-eng@google.com + + Counts for each command sent. Note that PhoneHubMessageType also includes + message types that are recieved by CrOS. Those will always have a zero value + in this histogram. + + + + + + diff --git a/histograms/metadata/platform/OWNERS b/histograms/metadata/platform/OWNERS new file mode 100644 index 000000000000..f1e98689c830 --- /dev/null +++ b/histograms/metadata/platform/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +iby@chromium.org +mutexlox@chromium.org +xuhong@chromium.org diff --git a/histograms/metadata/platform/histograms.xml b/histograms/metadata/platform/histograms.xml new file mode 100644 index 000000000000..4085505373f5 --- /dev/null +++ b/histograms/metadata/platform/histograms.xml @@ -0,0 +1,2420 @@ + + + + + + + + + + grundler@chromium.org + groeck@chromium.org + sonnyrao@chromium.org + + Count of crashes (user, kernel, and unclean shutdowns) during the previous + day, or the most recent day the device was in use. Reported at most once a + day. + + + + + grundler@chromium.org + groeck@chromium.org + sonnyrao@chromium.org + + Count of crashes (user, kernel, and unclean shutdowns) during the previous + epoch-week, or the most recent epoch-week the device was in use. Reported at + most once a week. Epoch-weeks divide the time in 7-day intervals starting at + the UNIX epoch. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Chrome OS (ARM Chromebooks using Exynos 5250 only) Adaptive Support Voltage + Group, recorded once per bootup. Indicates which "bin" the SoC is + part of, which sets the voltage that different rails on the system will run + at. The values 0-11 are valid. A value of 12 indicates an error parsing + dmesg and should be investigated. See also Platform.LotIdEnum. + + + + + cernekee@chromium.org + + Indicates whether the kernel's ACPI Smart Battery System driver logged an + error trying to find the battery on boot. + + + + + yich@google.com + cros-hwsec-userland-eng+uma@google.com + + Record the bootlockbox space availability when bootlockbox started. + + + + + mnissler@chromium.org + dossym@chromium.org + + Indicates the status of the developer switch on Chrome OS hardware. The + developer switch allows users to run their own code on the device. + + + + + mnissler@chromium.org + dossym@chromium.org + + On Chrome OS hardware, indicates whether flash write protection is enabled + for the firmware indicated by the histogram suffix. + + + + + mnissler@chromium.org + dossym@chromium.org + + Indicates the status of the hardware write protect switch on Chrome OS + hardware. The write protect switch protects firmware from being rewritten. + + + + + sonnyrao@chromium.org + chromeos-performance@google.com + + Chrome OS number of disk sectors read at boot from kernel start to + login-prompt-ready. + + + + + sonnyrao@chromium.org + chromeos-performance@google.com + + Chrome OS number of disk sectors written at boot from kernel start to + login-prompt-ready. + + + + + chenyian@google.com + cros-hwsec-userland-eng+uma@google.com + + Each sample is the status code when Chaps needs to reinitializing token. + + + + + chenyian@google.com + cros-hwsec-userland-eng+uma@google.com + + Each sample is the return value of a chaps session decrypt operation. The + return code is defined in pkcs11 specification. There is exactly one sample + logged for every chaps session decrypt operation. + + + + + chenyian@google.com + cros-hwsec-userland-eng+uma@google.com + + Each sample is the return value of a chaps session digest operation. The + return code is defined in pkcs11 specification. There is exactly one sample + logged for every chaps session digest operation. + + + + + chenyian@google.com + cros-hwsec-userland-eng+uma@google.com + + Each sample is the return value of a chaps session encrypt operation. The + return code is defined in pkcs11 specification. There is exactly one sample + logged for every chaps session encrypt operation. + + + + + chenyian@google.com + cros-hwsec-userland-eng+uma@google.com + + Each sample is the return value of a chaps session sign operation. The + return code is defined in pkcs11 specification. There is exactly one sample + logged for every chaps session sign operation. + + + + + chenyian@google.com + cros-hwsec-userland-eng+uma@google.com + + Each sample is the return value of a chaps session verify operation. The + return code is defined in pkcs11 specification. There is exactly one sample + logged for every chaps session verify operation. + + + + + chenyian@google.com + cros-hwsec-userland-eng+uma@google.com + + Each sample is the return value of a chaps token manager load token + operation. There is exactly one sample logged for every call to + SlotManagerImpl::LoadToken(). + + + + + chenyian@google.com + cros-hwsec-userland-eng+uma@google.com + + Each sample is the return value of a chaps token manager unload token + operation. There is exactly one sample logged for every call to + SlotManagerImpl::UnloadToken(). + + + + + chenyian@google.com + cros-hwsec-userland-eng+uma@google.com + Each sample is the TPM Availability status. + + + + sonnyrao@chromium.org + chromeos-memory@google.com + + Chrome OS size of allocated swap area in megabytes (before compression) + + + + + sonnyrao@chromium.org + chromeos-performance@google.com + + CPU frequency as percent of the baseline frequency, sampled every 30s. This + may be throttled down from 100% due to power dissipation issues (too high + temperature). It may also be throttled up (turbo), but the kernel does not + report the actual turbo frequency, so we put such samples in the 101% + bucket. + + + + + iby@chromium.org + mutexlox@chromium.org + cros-telemetry@google.com + + (Chrome OS only) An enum indicating the reasons for removal of crash reports + on devices. Generally, we'll remove crash reports after successfully sending + them, but there are other reasons for removal (e.g. if the metadata file was + malformed). These should be rare, but bugs in the crash reporting system may + cause us to start removing crashes before sending them more often. This + metric is intended to monitor crash reporting system health. + + + + + + + + + iby@chromium.org + mutexlox@chromium.org + vapier@chromium.org + + Generic event of interest from Chrome OS. Intended mainly to help assess the + frequency of rare error conditions. + + + + + drinkcat@chromium.org + dnschneid@chromium.org + + Detects presence of /run/crouton, indicating that crouton has been started + since the previous boot. Value 0/"Total count" is reported on + boot, 1/"Started" is reported after the file presence is detected + (checked periodically). + + + + + semenzato@chromium.org + bsimonnet@chromium.org + + Total CPU time accumulated since the last version update. Reported at most + once a day. + + + + + semenzato@chromium.org + bsimonnet@chromium.org + + Total use time (device ON and not asleep) since last version update. + Reported at most once a day. + + + + + + + semenzato@chromium.org + bsimonnet@chromium.org + mutexlox@chromium.org + iby@chromium.org + cros-telemetry@google.com + + Total use time (device ON and not asleep) in the previous day, or the most + recent day the device was in use. Reported at most once a day. + + + + + fshao@chromium.org + phoenixshen@chromium.org + chromeos-kukui@google.com + + Ratio of time a detachable base keyboard is active, i.e. when the USB + interface is not auto-suspended. Reported every 30 seconds when the base is + connected. + + + + + fshao@chromium.org + phoenixshen@chromium.org + chromeos-kukui@google.com + + For devices with a detachable base: whether or not the base is connected on + boot. Recorded by upstart task on boot. + + + + + fshao@chromium.org + phoenixshen@chromium.org + chromeos-kukui@google.com + Result of a detachable base pair operation. + + + + fshao@chromium.org + phoenixshen@chromium.org + chromeos-kukui@google.com + + Detachable base firmware updates can be configured to only occur on boot. In + this mode, any update will be considered "pending" until the + system is rebooted, at which point the update may take place. Every time a + detachable base is connected to the system, a metric representing the + pending update status is recorded. Its possible values are as follows: (0) + communication error; (1) no update available; (2) critical update available; + or (3) non-critical update available. The definition of "critical" + is up to the software performing updates, and would typically be used in the + case of a security issue, or broken functionality in a previous firmware + version. + + + + + fshao@chromium.org + phoenixshen@chromium.org + chromeos-kukui@google.com + Result of a detachable base RO firmware update. + + + + fshao@chromium.org + phoenixshen@chromium.org + chromeos-kukui@google.com + Result of a detachable base RW firmware update. + + + + dlunev@chromium.org + chromeos-storage@google.com + + Emits when io-burst-triggered Write Boost expires. Specifies how well the + Write Boost is utilized, i.e. amount of cycles with bandwidth over trigger + threshold divided by total amount of cycles Write Boost was enabled. + + + + + dlunev@chromium.org + chromeos-storage@google.com + + Emits when io-burst-triggered Write Boost expires. Specifies length of + io-burst-triggered Write Booster period. + + + + + dlunev@chromium.org + chromeos-storage@google.com + + Emits when the io-burst ends or when the burst triggers WriteBoost. + Specifies if the burst resulted in enabling Write Booster. + + + + + dlunev@chromium.org + chromeos-storage@google.com + + Emits when application-triggered Write Boost expires. Specifies how well the + Write Boost is utilized, i.e. amount of cycles with bandwidth over trigger + threshold divided by total amount of cycles Write Boost was enabled. + + + + + dlunev@chromium.org + chromeos-storage@google.com + + Emits when applications-triggered Write Boost expires. Specifies length of + application-triggered Write Booster period. + + + + + achuith@chromium.org + tls@chromium.org + + Number of users home directories on the device. Logged once a day. + + + + + achuith@chromium.org + omrilio@chromium.org + + Number of days between now and the last login of the device's least recent + user. Logged once a day, if disk usage is high. + + + + + achuith@chromium.org + omrilio@chromium.org + + Number of user home dirs on device. Logged once a day, if disk usage is + high. + + + + + keescook@google.com + + Chrome OS KB in use in the /home/chronos filesystem tree. Logged once a day + during log file cleanup. + + + + + keescook@google.com + + Chrome OS KB in use in the /var filesystem tree. Logged once a day during + log file cleanup. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The result of an attempt to Install a DLC package. DLCs are ChromiumOS + Software packages that are installed in the stateful partition. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The result of an attempt to Uninstall a DLC package. DLCs are ChromiumOS + Software packages that are installed in the stateful partition. + + + + + gwendal@google.com + chromeos-storage@google.com + + eMMC [5.0] Device lifetime estimation for flash. This field provides an + estimated indication about the device lifetime that is reflected by the + averaged wear out of memory of a given type relative to its maximum + estimated lifetime. + + + + + iby@google.com + mutexlox@google.com + cros-telemetry@google.com + + On ChromeOS, number of external metrics samples read in from the platform. + Emitted once every 30 seconds. If this is too large (over 100,000), we will + silently lose metrics. Additionally, 100,000 is the largest number we'll + ever record here: we stop counting when we hit 100,000. + + + + + kendraketsui@google.com + mutexlox@google.com + cros-telemetry@google.com + + Records number of boot attempts on a device since receiving a variations + safe seed from Chrome. This value is reported every time a device boots. + + + + + gwendal@google.com + chromeos-storage@google.com + + Number of file system errors, as reported by dumpe2fs "FS Error + count" field. Reported once per boot. + + + + + gwendal@google.com + chromeos-storage@google.com + + True when kernel reports that the file system needs deep recovery. File + system has corruption the kernel can not fix by itself. Reported once per + boot. + + + + + gwendal@google.com + chromeos-storage@google.com + + True when kernel reports that the file system needed recovery at boot. It + indicates the filesytem was not properly unmounted, but was recovered. + Reported once per boot. + + + + + yuanpengni@chromium.org + chromeos-core-services@google.com + + Records if the system firmware mismatched OS bundled firmware. Reported once + per boot by dev_debug_vboot. + + + + + campello@google.com + chromeos-fwupd@google.com + + Indicates the return value of a firmware activation operation via fwupd. + Reported once per activation operation. + + + + + campello@google.com + chromeos-fwupd@google.com + + Time elapsed during the firmware update operation. Sent after every + sucessful update firmware operation via fwupd. + + + + + campello@google.com + chromeos-fwupd@google.com + + Indicates the return value of a firmware update operation via fwupd. + Reported once per update operation. + + + + + asavery@chromium.org + evgreen@chromium.org + + The difference between the amount of memory and swap available and the + amount of space needed to successfully hibernate on ChromeOS devices when + there is not enough memory available when hibernate is triggered. Recorded + at hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The duration in seconds we waited for the hibernate Resume Signal Ready from + powerd on ChromeOS devices. Reported at resume from hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The duration in seconds we wait for hibernate files to be setup on ChromeOS + devices with LVM. Reported at hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The difference between the amount of memory and swap available and the + amount of space needed to successfully hibernate on ChromeOS devices when + there is more memory available than needed when hibernate is triggered. + Recorded at hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The duration in seconds spent preloading the hibernate image on ChromeOS + devices. Reported at resume from hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The rate in MiB/s we are preloading the hibernate image on ChromeOS devices. + Reported at resume from hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The size in KiB of the hibernate image we preload on ChromeOS devices. + Reported at resume from hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The total duration in seconds spent preloading and moving the hibernate + image on ChromeOS devices. This should be the summation of the preloading + and main image durations. Reported at resume from hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The rate in MiB/s we preloaded and moved the hibernate image on ChromeOS + devices. Reported at resume from hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The size in KiB of the hibernate image we preload and move on ChromeOS + devices. This should be the summation of the preloaded and main image sizes. + Reported at resume from hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The duration in seconds spent moving in the hibernate image on ChromeOS + devices. Reported at resume from hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The rate in MiB/s we are moving the hibernate image on ChromeOS devices. + Reported at resume from hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The size in KiB of the hibernate image we are moving on ChromeOS devices. + Reported at resume from hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The duration in seconds spent writing the hibernate image on ChromeOS + devices. Reported at hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The rate in MiB/s we wrote the hibernate image on ChromeOS devices. Reported + at hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The size in KiB of the hibernate image we wrote on ChromeOS devices. + Reported at hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + The time between when hiberman receives the request to resume, and when + resume is ready to launch. This represents an approximation of how long the + user had to wait for a hibernate resume to occur. Recorded when resume is + ready, and reported when hiberman flushes metrics at the completion of + resume. + + + + + asavery@chromium.org + evgreen@chromium.org + + ChromeOS total memory and swap available in MiB when hibernate is triggered. + Reported at hibernate. + + + + + asavery@chromium.org + evgreen@chromium.org + + ChromeOS memory available in MiB when hibernate is triggered. Reported at + hibernate. + + + + + fbarchard@chromium.org + pwnall@chromium.org + + The maximum supported micro-architecture on an Intel platform. This value is + logged at program start time. + + + + + + + grundler@chromium.org + groeck@chromium.org + bgeffon@chromium.org + cros-telemetry@google.com + + Count of kernel crashes during the previous day, or the most recent day the + device was in use. Reported at most once a day. + + + + + + + grundler@chromium.org + groeck@chromium.org + bgeffon@chromium.org + cros-telemetry@google.com + + Count of kernel crashes since the last OS update, normalized as number of + crashes per year of active use (active use = device is ON and not asleep). + Reported daily. + + + + + + + grundler@chromium.org + groeck@chromium.org + bgeffon@chromium.org + cros-telemetry@google.com + + Count of kernel crashes since the last OS update, normalized as number + crashes per year of CPU time. Reported daily. + + + + + + + grundler@chromium.org + groeck@chromium.org + bgeffon@chromium.org + cros-telemetry@google.com + + Count of kernel crashes since the last OS update, reported daily. + + + + + + + grundler@chromium.org + groeck@chromium.org + bgeffon@chromium.org + cros-telemetry@google.com + + Count of kernel crashes during the previous epoch-week, or the most recent + epoch-week the device was in use. Reported at most once a week. Epoch-weeks + divide the time in 7-day intervals starting at the UNIX epoch. + + + + + + + grundler@chromium.org + groeck@chromium.org + bgeffon@chromium.org + cros-telemetry@google.com + + Time elapsed between the last two kernel crashes. Sent after every kernel + crash. + + + + + uekawa@chromium.org + shaochuan@chromium.org + + KmsVnc graphics method in use, depending on command line flags and + auto-detected kernel graphics features. Recorded at start up of VNC server. + + + + + yich@google.com + cros-hwsec-userland-eng+uma@google.com + + Each sample is the result code of a libhwsec operation issued through + libhwsec that belongs to {Category}. Success is 0. For the other error + codes, see src/platform2/libhwsec/error/tpm_retry_action.h. Recorded when + the libhwsec operation finished in the middleware. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sonnyrao@chromium.org + chromeos-performance@google.com + + Number of logical processors. This includes Hyperthreaded cores. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Chrome OS (ARM Chromebooks using Exynos 5250 only) indication about whether + we're part of a special lot ID. Special lot IDs are groups of chips that + have special case handling in the kernel for the Adaptive Support Voltage + code (the normal logic doesn't work). See also Platform.AsvGroup. Note that + fused devices are never part of a special lot (currently) and only some + unfused lots are "special". + + + + + hajimehoshi@chromium.org + kouhei@chromium.org + sonnyrao@chromium.org + chromeos-memory@google.com + + Various memory usage % of total memory on Chrome OS devices (snapshotted + every 30s). Warning: this histogram was expired from 2021-07-02 to 2022-01; + data may be missing. + + + + + hajimehoshi@chromium.org + kouhei@chromium.org + sonnyrao@chromium.org + chromeos-memory@google.com + + Various memory usage amount on Chrome OS devices (snapshotted every 30s). + + + + + + + bgeffon@chromium.org + khmel@chromium.org + chromeos-memory@google.com + + Memory usage of all ARC and ARCVM processes in Chrome OS, reported every 10 + minutes. + + + + + + + bgeffon@chromium.org + chromeos-memory@google.com + + Memory usage of browser and helper processes (excluding GPU process and + renderers) in Chrome OS, reported every 10 minutes. + + + + + + + bgeffon@chromium.org + chromeos-memory@google.com + + Memory usage of user-level daemons in Chrome OS, reported every 10 minutes. + + + + + + + bgeffon@chromium.org + chromeos-memory@google.com + + Memory usage of the GPU process in Chrome OS, reported every 10 minutes. + + + + + + + bgeffon@chromium.org + chromeos-memory@google.com + + Memory usage of renderer processes in Chrome OS, reported every 10 minutes. + + + + + + + bgeffon@chromium.org + chromeos-memory@google.com + + Memory usage of VMs (crostini and others, except for ARCVM) in Chrome OS, + reported every 10 minutes. + + + + + hajimehoshi@chromium.org + kouhei@chromium.org + + Chrome OS total anonymous memory (active + inactive) as % of total memory 1 + minute after boot. + + + + + hajimehoshi@chromium.org + kouhei@chromium.org + + Chrome OS total anonymous memory (active + inactive) as % of total memory 5 + minutes after boot. + + + + + hajimehoshi@chromium.org + kouhei@chromium.org + + Chrome OS total anonymous memory (active + inactive) as % of total memory 30 + minutes after boot. + + + + + hajimehoshi@chromium.org + kouhei@chromium.org + + Chrome OS total anonymous memory (active + inactive) as % of total memory + 150 minutes after boot. + + + + + hajimehoshi@chromium.org + kouhei@chromium.org + + Chrome OS total anonymous memory (active + inactive) as % of total memory + 750 minutes after boot. + + + + + roccochen@chromium.org + chromeos-minidiag-eng@google.com + + Total number of launches of the MiniDiag (pre-boot diagnostic tool) since + the last upload. This metrics is recorded right after booting into ChromeOS. + This metrics leverages a coreboot command, elogtool, to retrieve the event + log and count launch events. + + + + + roccochen@chromium.org + chromeos-minidiag-eng@google.com + + Records the duration that the MiniDiag (pre-boot diagnostic tool) is open. + This metrics is recorded right after booting into ChromeOS. This metrics + leverages a coreboot command, elogtool, to retrieve the event log and count + launch events. + + + + + roccochen@chromium.org + chromeos-minidiag-eng@google.com + + Test item-specific duration of the MiniDiag (pre-boot diagnostic tool) since + the last upload. This metrics is recorded right after booting into ChromeOS. + This metrics leverages a coreboot command, elogtool, to retrieve the event + log and count launch events. The TestType is the same as + cros_diagnostics_diag_types listed in coreboot/util/cbfstool/eventlog.c + since all the data are parsed from them. + + + + + + + + + + + + roccochen@chromium.org + chromeos-minidiag-eng@google.com + + Test item-specific results of the MiniDiag (pre-boot diagnostic tool) since + the last upload. This metrics is recorded right after booting into ChromeOS. + This metrics leverages a coreboot command, elogtool, to retrieve the event + log and count launch events. The TestType and MiniDiagResultType are the + same as cros_diagnostics_diag_types and cros_diagnostics_diag_results listed + in coreboot/util/cbfstool/eventlog.c since all the data are parsed from + them. + + + + + + + + + + + + lbaraz@chromium.org + xuhong@chromium.org + cros-reporting-team@google.com + + Recorded when missive clientlib calls ReportQueue::Enqueue to post an event + to ERP. It counts occurrences of the call returning success or each possible + error Status. + + + + + xuhong@chromium.org + lbaraz@chromium.org + cros-reporting-team@google.com + + The percentage of CPU time that the Missive daemon has been using. The CPU + usage is not expected to be high and any usage beyond 100% is considered to + be in the overflow bucket. This is reported once every 10 minutes and only + if the Missive daemon is running. + + + + + xuhong@chromium.org + lbaraz@chromium.org + cros-reporting-team@google.com + + The amount of memory that the Missive daemon has been using. This is + reported once every 10 minutes and only if the Missive daemon is running. + + + + + lbaraz@chromium.org + xuhong@chromium.org + cros-reporting-team@google.com + + Recorded when Missive runs the storage directory migration function (called + each time when Missive starts). It counts the status of the migration. + + + + + xuhong@chromium.org + lbaraz@chromium.org + cros-reporting-team@google.com + + Counter of each case RESOURCE_EXHAUSTED error was returned by missive + Storage to the caller. This is reported only when such error happens + (rarely), and only if the Missive daemon is running. + + + + + vshenvi@google.com + cros-reporting-team@google.com + + Would only be true. Recorded whenever the generation id is reset in the + storage queue. The generation id is set up once during storage queue + initialization using the metadata file that matches the last sequencing id + used to track, deduplicate and confirm delivery by the server. The + generation id is reset when this file is missing or corrupted and the + sequencing is irreparably broken. + + + + + xuhong@chromium.org + lbaraz@chromium.org + cros-reporting-team@google.com + + The amount of disk storage that the Missive daemon has been using for + storing encrypted records. This is reported once every hour and only if the + Missive daemon is running. + + + + + xuhong@chromium.org + lbaraz@chromium.org + cros-reporting-team@google.com + + Would only be true. Recorded whenever an unusual timestamp is encountered + when enqueuing a record, which will be rejected. + + + + + andrewlassalle@google.com + cros-connectivity@google.com + + Result of the |CheckForWedgedModem| function. The function checks the modem + state after modemfwd starts, and tries to recover the modem if the modem is + non responsive. This function is only called once after boot, so a single + value is emitted per boot. + + + + + andrewlassalle@google.com + cros-connectivity@google.com + + Result of the DLC install action performed by modemfwd. Some device variants + use a DLC to store their FW. When this DLC is installed, a metric is logged. + + + + + andrewlassalle@google.com + cros-connectivity@google.com + + Result of each DLC uninstall action performed by modemfwd. Modemfwd will + remove any modem DLCs that are not for the device's variant. Each uninstall + will log a metric. + + + + + andrewlassalle@google.com + cros-connectivity@google.com + The result of each modem FW install attempt. + + + + ujjwalpande@google.com + cros-connectivity@google.com + + Metric to track time taken by modemfwd helpers in seconds to flash the + firmwares to modem. Values will be reported only for successful flashing + cases as flashing times in case of failures could be misleading. + + + + + andrewlassalle@google.com + cros-connectivity@google.com + + The location that modemfwd uses for the FW install. After modemfwd + determines if a DLC will be used or not, a metric is logged with the + location used. + + + + + ujjwalpande@google.com + cros-connectivity@google.com + Report state of modem recovery operation. + + + + apronin@chromium.org + mnissler@chromium.org + cros-hwsec+uma@chromium.org + + File system encryption key status for the encrypted stateful file system on + Chrome OS. The encryption key is the one that is used by the kernel to + protect actual file contents on disk. + + + + + apronin@chromium.org + mnissler@chromium.org + cros-hwsec+uma@chromium.org + + Type/Origin of the system key used for the encrypted stateful file system on + Chrome OS. This key is used to wrap the actual file system encryption key. + + + + + apronin@chromium.org + mnissler@chromium.org + cylai@google.com + cros-hwsec+uma@chromium.org + + The amount of time for Chrome OS mount-encrypted to take TPM ownership. + + + + + sonnyrao@chromium.org + chromeos-memory@google.com + + Page faults per second averaged over 30s interval, sampled continuously. + + + + + sonnyrao@chromium.org + chromeos-memory@google.com + + Page faults per second averaged over 1s interval, sampled every 30s. + + + + + gwendal@google.com + chromeos-storage@google.com + + Number of disk sectors per second read by Chrome OS in a long interval + (currently 30s) + + + + + gwendal@google.com + chromeos-storage@google.com + + Number of disk sectors per second read by Chrome OS in a short interval + (currently 1s, sampled every 30s) + + + + + asavery@chromium.org + gwendal@chromium.org + chromeos-storage@google.com + + The remaining reserved space (SMART 232). The value counts down typically + from 100 to 0, sent at boot. + + + + + asavery@chromium.org + gwendal@chromium.org + chromeos-storage@google.com + + The total number of 512-byte sectors written during the lifetime of the + device, sent at boot. + + + + + asavery@chromium.org + gwendal@chromium.org + chromeos-storage@google.com + + The total number of 512-byte sectors written during the lifetime of the + device, sent at boot. + + + + + asavery@chromium.org + gwendal@chromium.org + chromeos-storage@google.com + + Percentage Used Endurance Indicator. A value of 0 indicates a new device, a + value of 100 indicates the device is at the end of its lifespan as projected + by the manufacturer. Values greater than 100 indicate the device is beyond + the projected lifespan. Maximum value is 255, sent at boot. + + + + + gwendal@google.com + chromeos-storage@google.com + Disk communication errors (SMART 199), sent at boot. + + + + gwendal@google.com + chromeos-storage@google.com + Uncorrectable disk errors (SMART 187), sent at boot. + + + + vpalatin@google.com + + USB device ID of the charger plugged into a Spring device (if any), sent + once a minute. The Device ID is composed from the following 4 8-bit + registers of the TSU6721 chip: ADC (07h), Device Type 3 (15h), Device Type 2 + (0Bh), Device Type 1 (0Ah). Device Type 1/2/3 is a bitmap and most of bits + are mutually exclusive (excepted VBUS debounce). ADC is the 5-bit value of + the ID pin, but for most types (as in Device Type), there are only one or + two possible ID pin connections/values. The datasheet can be found here: + http://www.ti.com/lit/ds/symlink/tsu6721.pdf. + + Note that different brand/models of the charger can have the same ID. + + + + + sarthakkukreti@chromium.org + gwendal@chromium.org + chromeos-storage@google.com + Chrome OS stateful partition format. Sampled once per boot. + + + + asavery@chromium.org + gwendal@chromium.org + chromeos-storage@google.com + + Chrome OS stateful partition space free. Sampled once daily. + + + + + asavery@chromium.org + gwendal@chromium.org + chromeos-storage@google.com + + Chrome OS stateful partition lifetime writes. Sampled once daily. + + + + + asavery@chromium.org + gwendal@chromium.org + chromeos-storage@google.com + + The amount of time in hours since the last trim when chromeos-trim triggers + a trim for the stateful partition. The chromeos-trim script is run daily, + but a trim is only triggered if the previous run was interrupted, the amount + of writes since the last trim is greater than X% of the remaining space in + stateful or we have not trimmed in 7 days. Reported at most once a day. + + + + + asavery@chromium.org + gwendal@chromium.org + chromeos-storage@google.com + + The amount of data in the stateful partition that is erased when + chromeos-trim triggers a trim. The chromeos-trim script is run daily, but a + trim is only triggered if the previous run was interrupted, the amount of + writes since the last trim is greater than X% of the remaining space in + stateful or we have not trimmed in 7 days. Reported at most once a day. + + + + + achuith@chromium.org + omrilio@chromium.org + Chrome OS stateful partition usage level. + + + + asavery@chromium.org + gwendal@chromium.org + chromeos-storage@google.com + + Chrome OS stateful partition space used. Sampled once daily. + + + + + asavery@chromium.org + gwendal@chromium.org + chromeos-storage@google.com + + Chrome OS stateful partition KiB writes per day. Sampled once daily. + + + + + dehrenberg@chromium.org + cast-analytics@google.com + + The number of blocks marked bad in an MTD partition. This is relevant for + devices with raw NAND flash, such as Chromecast. Sampled once daily, if the + Chromecast is on for any significant length of time in the day. + + + + + asavery@chromium.org + gwendal@chromium.org + chromeos-storage@google.com + + Vendor specific estimate of the percentage of NVM subsystem life used based + on the actual usage and the manufacturer's prediction of NVM life. A value + of 100 indicates the estimated endurance has been consumed, but may not + indicate a failure. Values can exceed 100, with percentages greater than 254 + represented as 255. + + + + + asavery@chromium.org + gwendal@chromium.org + chromeos-storage@google.com + + UFS Device life time estimation. This field provides an indication of the + device life time based on the amount of performed program/erase cycles. The + calculation is vendor specific. + + + + + asavery@chromium.org + chromeos-memory@google.com + Number of pages swapped IN over a day, sampled daily. + + + + sonnyrao@chromium.org + chromeos-memory@google.com + + Average pages/second swapped IN over a 30s interval, sampled every 30s. + + + + + sonnyrao@chromium.org + chromeos-memory@google.com + + Average pages/second swapped IN over a 1s interval, sampled every 30s. + + + + + asavery@chromium.org + chromeos-memory@google.com + Number of pages swapped OUT over a day, sampled daily. + + + + sonnyrao@chromium.org + chromeos-memory@google.com + + Average pages/second swapped OUT over a 30s interval, sampled every 30s. + + + + + sonnyrao@chromium.org + chromeos-memory@google.com + + Average pages/second swapped OUT over a 1s interval, sampled every 30s. + + + + + granaghan@google.com + cros-hwsec+uma@chromium.org + + Time in milliseconds AP RO verification took. Captured every cold boot. + + + + + yich@google.com + cros-hwsec-userland-eng+uma@google.com + + Each sample is the result code of a TPM authorized command issued through + tcsd. Success is 0. For the other error codes, see + /usr/include/tss/tpm_error.h. + + + + + cylai@google.com + cros-hwsec-userland-eng+uma@google.com + + Reporting the TPM command ordinal that results in TPM_E_AUTH2FAIL code. Note + that this is only applicable for TPM1.2. + + + + + cylai@google.com + cros-hwsec-userland-eng+uma@google.com + + Reporting the TPM command ordinal that results in TPM_E_AUTHFAIL code. Note + that this is only applicable for TPM1.2. + + + + + cylai@chromium.org + cros-hwsec-userland-eng+uma@google.com + + Each sample is the value of the TPM dictionary attack counter reported at + boot and hourly while running. Any non-zero value is unexpected. + + + + + cylai@chromium.org + cros-hwsec-userland-eng+uma@google.com + + Each sample is the status of an hourly attempt to reset the TPM dictionary + attack counter. + + + + + yich@google.com + cros-hwsec-userland-eng+uma@google.com + + Each sample is the result code of a TPM command issued through tcsd. Success + is 0. For the other error codes, see /usr/include/tss/tpm_error.h. + + + + + granaghan@google.com + cros-hwsec+uma@chromium.org + + AP RO Verification status and detailed result. Captured every cold boot. + + + + + granaghan@google.com + cros-hwsec+uma@chromium.org + + Time in milliseconds filesystem initialization and scanning took. Captured + every cold boot. + + + + + granaghan@google.com + cros-hwsec+uma@chromium.org + + Number of bytes used by the filesystem. Captured every cold boot. + + + + + mnissler@chromium.org + cros-hwsec+uma@chromium.org + + Number of attempts until a successful TPM firmware update. This is the total + sum of attempts, i.e. number of failed attempts + 1 for the final successful + attempt. Note that we're not in a position to report UMA after failed + attempts, so this will only be reported by devices that eventually see a + successful attempt. + + + + + mnissler@chromium.org + cros-hwsec+uma@chromium.org + Status of a complete TPM firmware update attempt. + + + + mnissler@chromium.org + cros-hwsec+uma@chromium.org + Exit status of the TPM firmware updater script. + + + + anatol@google.com + cros-hwsec+uma@chromium.org + + Trusted Platform Module hardware alerts that signal about the chip abnormal + situation. + + + + + chenyian@google.com + cros-hwsec-userland-eng+uma@google.com + + Report if TPM clear is success or not after a power wash. TPM should not be + owned after the power wash. + + + + + yich@google.com + cros-hwsec-userland-eng+uma@google.com + + Report the TPM ownership can be take or not for each TPM initialization + process. The process usually happen at the first boot of device. + + + + + yich@google.com + cylai@google.com + cros-hwsec+uma@chromium.org + + The amount of time for Chrome OS to take TPM ownership. Recorded when + tpm_manager takes the ownership of TPM. + + + + + cylai@chromium.org + cros-hwsec+uma@chromium.org + + The status of the secrets that tpm manager holds. + + Warning: this histogram was expired from 2021-09-01 to 2022-06-14; data may + be missing. + + + + + mnissler@chromium.org + cros-hwsec+uma@chromium.org + + Indicates a fingerprint of hardware + firmware versions for the TPM chip + present in a Chrome OS device. + + + + + chingkang@chromium.org + cros-hwsec+uma@chromium.org + + The TPM1 command and response code send from {Client} to trousers. The value + is the encoding of 2 bytes command code and 2 bytes response code. + + + + + + + + + + + + + + + chingkang@chromium.org + cros-hwsec+uma@chromium.org + + The TPM2 command and response code send from {Client} to trunks. The value + is the encoding of 2 bytes command code and 2 bytes response code. + + + + + + + + + + + + + + + chingkang@chromium.org + cros-hwsec+uma@chromium.org + Command code of the first timeout reading TPM command + + + + chingkang@chromium.org + cros-hwsec+uma@chromium.org + System uptime when first timeout reading TPM command occurs + + + + chingkang@chromium.org + cros-hwsec+uma@chromium.org + Command code of the first timeout writing TPM command + + + + chingkang@chromium.org + cros-hwsec+uma@chromium.org + System uptime when first timeout writing TPM command occurs + + + + cylai@google.com + chingkang@chromium.org + cros-hwsec+uma@chromium.org + + The write errno recovered after rebinding the TPM driver; recorded only once + when trunks notices the write errno is gone after restart. + + + + + yich@google.com + cros-hwsec+uma@chromium.org + + Each sample is the result code of a TPM command issued through trunks. For + the error codes, see src/platform2/trunks/tpm_generated.h. + + + + + cylai@google.com + chingkang@chromium.org + cros-hwsec+uma@chromium.org + + The write errno changed after rebinding the TPM driver; recorded only once + when trunks notices the write errno has changed after restart. + + + + + cylai@google.com + chingkang@chromium.org + cros-hwsec+uma@chromium.org + + The sticky write errno after rebinding the TPM driver; recorded only once + when trunks notices the write errno isn't changed after restart. + + + + + cylai@chromium.org + cros-hwsec-userland-eng+uma@google.com + Records occurrences of U2F commands sent to cr50. + + + + mutexlox@chromium.org + iby@chromium.org + cros-telemetry@google.com + + Use time (device ON and not asleep) in a particular period (approximately + every five minutes). To compute usage time in a given period (e.g. a day), + sum up all reported values of this metric for that period (day). As with + other UMA metrics on CrOS, this will be uploaded roughly every half-hour. + This will eventually supercede Platform.DailyUseTime, which has significant + limitations (e.g. it may not report on the right day). + + + + + mutexlox@chromium.org + iby@chromium.org + cros-telemetry@google.com + + Use time samples that would have gone to Platform.UnaggregatedUsageTime, but + which are implausibly big. For example, we've seen individual samples of ~1 + billion seconds, and many more of over 1 million seconds, which are both far + too large to be valid data. metrics_daemon records this metric whenever an + individual 5-minute usage sample exceeds 2 hours (defined by + kMaxAcceptableUnaggregatedUsageTime, in metrics_daemon.cc, in platform2). + + + + + + + semenzato@chromium.org + bsimonnet@chromium.org + iby@chromium.org + mutexlox@chromium.org + cros-telemetry@google.com + + Count of unclean OS shutdowns during the previous day, or the most recent + day the device was in use. Specifically, the counter is incremented during + boot if the OS did not shut down cleanly and the previous shutdown was not + due to a kernel crash (kernel crashes are counted elsewere) and the previous + shutdown did not occur while the device was suspended (failures while + suspended are assumed to be the battery running down). Reported at most once + a day. + + + + + + + semenzato@chromium.org + bsimonnet@chromium.org + iby@chromium.org + mutexlox@chromium.org + cros-telemetry@google.com + + Count of crashes (user) during the previous day, or the most recent day the + device was in use. Reported at most once a day. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + Sample collected 10s after boot, showing how many WiFi interfaces are + present. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + Logged (with a constant value of 1) if a WiFi device experienced a PCI + failure such that it is being removed from the system. Typically, Chrome OS + will follow such a removal with an attempt to rescan the bus and recover + device functionality. See also Platform.WiFiStatusAfterForcedPCIRescan for + the result of such attempts. + + + + + norvez@chromium.org + cros-network-metrics@google.com + + Shows the WiFi status after the PCI bus is rescanned to recover WiFi. The UI + depends on shill noticing that wlan0 is back up, so the only happy case is + one where shill recognizes wlan0 after the rescan completes. + + + + + gwendal@google.com + chromeos-storage@google.com + + Number of disk sectors per second written by Chrome OS in a long interval + (currently 30s) + + + + + gwendal@google.com + chromeos-storage@google.com + + Number of disk sectors per second written by Chrome OS in a short interval + (currently 1s, sampled every 30s) + + + + + bgeffon@chromium.org + chromeos-memory@google.com + + Compressed swap size in megabytes. This is the actual amount of RAM used by + the system to compress memory (i.e. after compression). Snapshot every 30s. + + + + + bgeffon@chromium.org + chromeos-memory@google.com + + The ratio of compressed memory (zram) before and after compression when the + denominator at least 1 MB. Ratios of interest are between 1 and 6 (typically + between 2 and 3), and we express them as a percentage (between 100% and + 600%). The size of memory before compression includes zero-filled pages. + Values close to 100% indicate low compression effectiveness. Snapshot every + 30s. + + + + + asavery@chromium.org + gwendal@chromium.org + + Number of incompressible pages stored in zram. A large number suggests lower + compression effectiveness. Snapshot every 30s. + + + + + asavery@chromium.org + gwendal@chromium.org + + The fraction of compressed memory that consists of incompressible pages. We + express this as a percentage (between 0% and 100%). Values close to 100% + mean we are not able to effectively benefit from compression. Snapshot every + 30s. + + + + + asavery@chromium.org + gwendal@chromium.org + + The fraction of the uncompressed memory size that consists of incompressible + pages. We express this as a percentage (between 0% and 100%). Values close + to 100% mean we are not able to effectively benefit from compression. + Snapshot every 30s. + + + + + sonnyrao@google.com + chromeos-memory@google.com + + RAM savings in megabytes from using memory compression. This is the + difference between the RAM size before and after compression. Snapshot every + 30s. + + + + + sonnyrao@google.com + chromeos-memory@google.com + + Number of zero-filled pages that the OS is compressing. A large number + suggests wasteful allocation. Snapshot every 30s. + + + + + sonnyrao@google.com + chromeos-memory@google.com + + The fraction of compressed memory that consists of zero-filled pages. + Snapshot every 30s. + + + + + vbendeb@chromium.org + ti50-core+uma@chromium.org + + A histogram of values representing AP RO verification state on ChromeOS + devices in the field. The values are collected on each ChromeOS start up and + are clustered in two ranges: 0..7 and 20..34, both ranges could grow. + + Cr50 and Ti50 are two generations of GSC (Google Security Chip), their AP RO + verification states are named such that it is clear which particular chip + version they refer to. + + + + + + + + + apronin@chromium.org + vbendeb@chromium.org + cros-hwsec+uma@chromium.org + + A sparse histogram of values of Board ID flags programmed in GSC devices in + the field. Board ID flags is a 32 bit field, and while there only are a few + expected values, conceivably any bit combination could be encountered. + + + + + + + + + vbendeb@chromium.org + apronin@chromium.org + cros-hwsec+uma@chromium.org + + A sparse histogram of values indexed by 4 byte Board ID code programmed in + GSC reported by devices where there is a mismatch between the RLZ code and + the Board ID value programmed in the GSC. + + + + + + + + + apronin@chromium.org + vbendeb@chromium.org + cros-hwsec+uma@chromium.org + + A histogram of flash log event types collected from the GSC device. Log + event type is an 8 bit value. This histogram does not allow to drill into + particular log entries' contents, but allows to collect a general statistics + of events. A script running on the Chrome OS device polls the GSC for new + flash log events after every start up. + + + + + + + + + vbendeb@chromium.org + cros-hwsec+uma@chromium.org + + A sparse histogram of values indexed by 4 byte Board ID code programmed in + GSC, reported by devices where there is no mismatch between the RLZ code and + the Board ID value. + + + + + + + + + vbendeb@chromium.org + apronin@chromium.org + cros-hwsec+uma@chromium.org + + A sparse histogram of values indexed by 4 byte RLZ code reported by devices + where there is a mismatch between the RLZ code and the Board ID value + programmed in the GSC. Since RLZ code could be misprogrammed, a sparse + histogram is used to allow keeping track of outliers. + + + + + + + + + dmurph@chromium.org + pwnall@chromium.org + + Errors returned by CreateFile on Windows that PlatformFileError doesn't yet + support. + + + + + + diff --git a/histograms/metadata/plugin/histograms.xml b/histograms/metadata/plugin/histograms.xml new file mode 100644 index 000000000000..02a276a5655f --- /dev/null +++ b/histograms/metadata/plugin/histograms.xml @@ -0,0 +1,40 @@ + + + + + + + + + + Please list the metric's owners. Add more owner tags as needed. + Record usage of PPB_Flash.Navigate() Pepper API. + + + + gab@chromium.org + + The time it took to complete a synchronous IPC made from the PPAPI process. + + + + + + diff --git a/histograms/metadata/plugin_vm/OWNERS b/histograms/metadata/plugin_vm/OWNERS new file mode 100644 index 000000000000..4f4165307fc3 --- /dev/null +++ b/histograms/metadata/plugin_vm/OWNERS @@ -0,0 +1,2 @@ +# All GuestOSes share the same OWNERS +file:../crostini/OWNERS diff --git a/histograms/metadata/plugin_vm/histograms.xml b/histograms/metadata/plugin_vm/histograms.xml new file mode 100644 index 000000000000..bdc8ff25725e --- /dev/null +++ b/histograms/metadata/plugin_vm/histograms.xml @@ -0,0 +1,110 @@ + + + + + + + + + + kimjae@google.com + timloh@google.com + Recorded at each time PluginVM DLC is installed. + + + + timloh@google.com + joelhockey@google.com + + Times when user is engaged and Plugin VM apps are running in the background, + but the user isn't focusing on an Plugin VM app window. See + PluginVm.EngagementTime.Total for further details. + + + + + timloh@google.com + joelhockey@google.com + + Times when user is engaged and focuses on a Plugin VM window. See + PluginVm.EngagementTime.Total for further details. + + + + + timloh@google.com + joelhockey@google.com + + Total of PluginVm.EngagementTime.Background and .Foreground, which is the + time the user is engaged and Plugin VM is running either in the foreground + or background. See PluginVm.EngagementTime.Total for further details. + + + + + timloh@google.com + joelhockey@google.com + + Total CrOS user session time (from login to logout) excluding times when + user "disengages": screen is locked or dims down due to user idle. + Engagement time metrics, along with foreground and background time, are only + collected on users with Plugin VM enabled. All four metrics are accumulated + and recorded to UMA once a day. For Total Plugin VM engagement time, see + PluginVm.EngagementTime.PluginVmTotal. + + + + + joelhockey@chromium.org + okalitova@chromium.org + timloh@chromium.org + + Recorded at each attempt to launch PluginVm, recording whether this attempt + is successful or not. + + + + + timloh@chromium.org + chromeos-core-services@google.com + Recorded when the Plugin VM installer fails. + + + + joelhockey@chromium.org + okalitova@chromium.org + timloh@chromium.org + + Recorded at each attempt to set up PluginVm, recording the setup result. As + of M83, errors are grouped together here and broken down in + PluginVm.SetupFailureReason. + + + + + + diff --git a/histograms/metadata/power/OWNERS b/histograms/metadata/power/OWNERS new file mode 100644 index 000000000000..374edac09f05 --- /dev/null +++ b/histograms/metadata/power/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +olivierli@chromium.org +tby@chromium.org diff --git a/histograms/metadata/power/histograms.xml b/histograms/metadata/power/histograms.xml new file mode 100644 index 000000000000..19f99a9f6527 --- /dev/null +++ b/histograms/metadata/power/histograms.xml @@ -0,0 +1,2573 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 01/2022: Replaced with AllTabsHidden_VideoCapture, AllTabsHidden_Audio and + AllTabsHidden_NoVideoCaptureOrAudio. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fdoray@chromium.org + pmonette@chromium.org + catan-team@chromium.org + + See definition of PerformanceClass.AverageCPU8.ProcessName. This is recorded + every 2 minutes for {UsageScenario} (see go/chrome_power_use_per_scenario). + + + + + + fdoray@chromium.org + pmonette@chromium.org + catan-team@chromium.org + + Sum of the average CPU utilization of each process of the type + {ProcessName}, read out at each two-minute interval. The utilization is in + the 0-100% range per CPU, which is then summed up and multiplied by 100. The + histogram is capped at 20000 (equivalent to 2 cores fully loaded). I.e. 4 + cores busy at 25% each will read as 25 * 4 * 100 = 10000. If no process of + type {ProcessName} existed during the interval, a sample of zero is still + emitted. + + Not recorded on Android. + + NOTE: On Windows, this is not recorded on CPUs that do not support constant + rate TSC. + + + + + + olivierli@chromium.org + catan-team@chromium.org + + See definition of PerformanceMonitor.EnergyImpact2.ProcessName. This is + recorded every 2 minutes for {UsageScenario} (see + go/chrome_power_use_per_scenario). + + + + + + olivierli@chromium.org + catan-team@chromium.org + + (Mac only) The sum of the Energy Impact of each process of the type + {ProcessName}. Energy Impact is a synthetic power use estimate, as displayed + in macOS Activity Monitor and the battery menu. This incorporates CPU + utilization, idle wakeups, IO, and task QoS level using per-machine-model + weights. Divide by 100 to match Activity Monitor's scale. Recorded every two + minutes. + + NOTE: This metric has one signigicant limitation, it doesn't report the CPU + usage of processes that terminate before the end of the interval. This means + that short lived processes will rarely be included in the data. Furthermore, + we know that short-lived processes are very common (see + Renderer.ProcessLifetime). A future version of this metric will address this + limitation. + + + + + + pmonette@chromium.org + catan-team@chromium.org + + Records whether or not the CPU supports constant rate TSC, which allows a + more precise calculation of the CPU usage of a process. Recorded during + startup when the ProcessMonitor is instantiated. + + Only Recorded on Windows. + + + + + olivierli@chromium.org + catan-team@chromium.org + + See definition of PerformanceMonitor.IdleWakeups2.ProcessName. This is + recorded every 2 minutes for {UsageScenario} (see + go/chrome_power_use_per_scenario). + + + + + + olivierli@chromium.org + catan-team@chromium.org + + The sum of the average CPU idle wakeups per second of each process of the + type {ProcessName}, sampled every two minutes. + + NOTE: This metric has one signigicant limitation, it doesn't report the CPU + usage of processes that terminate before the end of the interval. This means + that short lived processes will rarely be included in the data. Furthermore, + we know that short-lived processes are very common (see + Renderer.ProcessLifetime). A future version of this metric will address this + limitation. + + + + + + olivierli@chromium.org + catan-team@chromium.orgg + + See definition of PerformanceMonitor.PackageExitIdleWakeups2.ProcessName. + This is recorded every 2 minutes for {UsageScenario} (see + go/chrome_power_use_per_scenario). + + + + + + olivierli@chromium.org + catan-team@chromium.orgg + + (Mac only) The sum of the average package exit idle wakeups per second of + each process of the type {ProcessName}, sampled every two minutes. This is a + subset of wakeups that indicate that the processor complex was taken out of + low-power state. For more info, see the powermetrics man page on macOS. + + NOTE: This metric has one signigicant limitation, it doesn't report the CPU + usage of processes that terminate before the end of the interval. This means + that short lived processes will rarely be included in the data. Furthermore, + we know that short-lived processes are very common (see + Renderer.ProcessLifetime). A future version of this metric will address this + limitation. + + + + + + fdoray@chromium.org + catan-team@chromium.org + + Details about whether or not it's possible to get coalition resource usage + data on the system. Only on macOS, recorded once at startup. + + + + + fdoray@chromium.org + catan-team@chromium.org + + The IO reads reported by the resource coalition mechanism on macOS. The data + is reported as the rate per second during this interval with a byte + granularity. This is recorded every 2 minutes for {UsageScenario} (see + go/chrome_power_use_per_scenario). + + + + + + fdoray@chromium.org + catan-team@chromium.org + + The IO writes reported by the resource coalition mechanism on macOS. The + data is reported as the rate per second during this interval with a byte + granularity. This is recorded every 2 minutes for {UsageScenario} (see + go/chrome_power_use_per_scenario). + + + + + + + Deprecated in 07/2021 because the computation was wrong. Replaced by + PerformanceMonitor.ResourceCoalition.CPUTime2. + + sebmarchand@chromium.org + catan-team@chromium.org + + Average CPU utilization reported by the resource coalition mechanism on + macOS. Read out at each two-minute interval. The utilization is in the + 0-100% range per CPU, which is then summed up and multiplied by 100. The + histogram is capped at 20000 (equivalent to 2 cores fully loaded). I.e. 4 + cores busy at 25% each will read as 25 * 4 * 100 = 10000. + + + + + fdoray@chromium.org + catan-team@chromium.org + + Average CPU utilization reported by the resource coalition mechanism on + macOS. The utilization is in the 0-100% range per CPU, which is then summed + up and multiplied by 100. The histogram is capped at 20000 (equivalent to 2 + cores fully loaded). I.e. 4 cores busy at 25% each will read as 25 * 4 * 100 + = 10000. This is recorded for {UsageScenario10sec} (see + go/chrome_power_use_per_scenario). + + + + + + fdoray@chromium.org + catan-team@chromium.org + + Average CPU utilization reported by the resource coalition mechanism on + macOS. The utilization is in the 0-100% range per CPU, which is then summed + up and multiplied by 100. The histogram is capped at 20000 (equivalent to 2 + cores fully loaded). I.e. 4 cores busy at 25% each will read as 25 * 4 * 100 + = 10000. This is recorded every 2 minutes for {UsageScenario} (see + go/chrome_power_use_per_scenario). + + + + + + + Deprecated in 07/2021 because the name of the metric was wrong. Replaced by + PerformanceMonitor.ResourceCoalition.Power. + + sebmarchand@chromium.org + catan-team@chromium.org + + The energy usage reported by the resource coalition mechanism on macOS. + Reported every 2 minutes. Only available on devices with an ARM CPU. + + + + + siggi@chromium.org + catan-team@chromium.org + + (Mac only) A synthetic power use estimate, as displayed in macOS Activity + Monitor and the battery menu. This incorporates CPU utilization, idle + wakeups, IO, and task QoS level using per-machine-model weights. Divide by + 100 to match Activity Monitor's scale. Only available on macs with an Intel + CPU. + + This EnergyImpact score is computed from the usage reported by the resource + coalition mechanism on macOS. It accounts for the resource usage of all + Chrome processes no matter how short-lived, as well as XPC services running + on Chrome's behalf. + + This is recorded every 2 minutes for {UsageScenario} (see + go/chrome_power_use_per_scenario). + + + + + + + Deprecated in 07/2021 because the computation was wrong. Replaced by + PerformanceMonitor.ResourceCoalition.GPUTime2. + + sebmarchand@chromium.org + catan-team@chromium.org + + Average GPU utilization reported by the resource coalition mechanism on + macOS. Read out at each two-minute interval. The utilization is in the + 0-100% range and is multiplied by 100. The histogram is capped at 10000 + (equivalent to the GPU being used 100% of the time). + + + + + fdoray@chromium.org + catan-team@chromium.org + + Average GPU utilization reported by the resource coalition mechanism on + macOS. The utilization is in the 0-100% range and is multiplied by 100. The + histogram is capped at 10000 (equivalent to the GPU being used 100% of the + time). This is recorded every 2 minutes for {UsageScenario} (see + go/chrome_power_use_per_scenario). + + + + + + fdoray@chromium.org + catan-team@chromium.org + + The interrupt wakeup rate reported by the resource coalition mechanism on + macOS. The data is reported as the rate per second during this interval with + a milliwakeup granularity. This is recorded every 2 minutes for + {UsageScenario} (see go/chrome_power_use_per_scenario). + + + + + + fdoray@chromium.org + catan-team@chromium.org + + The platform idle wakeup rate reported by the resource coalition mechanism + on macOS. The data is reported as the rate per second during this interval + with a milliwakeup granularity. This is recorded every 2 minutes for + {UsageScenario} (see go/chrome_power_use_per_scenario). + + + + + + fdoray@chromium.org + catan-team@chromium.org + + The power usage reported by the resource coalition mechanism on macOS. Only + reported on devices with an ARM CPU. This is recorded every 2 minutes for + {UsageScenario} (see go/chrome_power_use_per_scenario). + + + + + + fdoray@chromium.org + catan-team@chromium.org + + Average CPU time spent in a given QoS level, as reported by the resource + coalition mechanism on macOS. The utilization is in the 0-100% range and is + multiplied by 100. The histogram is capped at 10000 (equivalent to the GPU + being used 100% of the time). This is recorded every 2 minutes for + {UsageScenario} (see go/chrome_power_use_per_scenario). + + + + + + + + + + + + + + + olivierli@chromium.org + catan-team@chromium.org + + Record the usage scenario that applies to the last 2 mins of Chrome use. + Recorded every two minutes on a timer. For more information on user + scenarios see go/chrome_power_use_per_scenario. + + Values in the enum match the variants present in the + "UsageScenario" variants. + + + + + olivierli@chromium.org + catan-team@chromium.org + + Record the usage scenario that applies to the last 10 seconds of Chrome use. + Recorded every two minutes on a timer. For more information on user + scenarios see go/chrome_power_use_per_scenario. + + Values in the enum match the variants present in the + "UsageScenario10Sec" variants. + + + + + dbasehore@chromium.org + chromeos-platform-power@google.com + + The battery percentage of the system when the AC charger is unplugged. This + metric is recorded upon unplug of an AC charger, unless the system is + shutdown. Since this metric is only reported when the battery percentage has + reached the hold percent (the battery charge % that charging is delayed at, + which is 80%) for Adaptive Charging, most values should be high. + + We record this under several variants, which split this result by the type + of charging that is used to charge to full once the hold percent is reached. + Normal charging uses the default rate of charging, slow charging uses a + battery charge current limit of 0.1C (10% of battery design capacity) and + mixed charging is a combination of both normal and slow charging which can + occur when the unplug time prediction moves sooner, resulting in the switch + from slow charging to normal charging in order to finish charging by the + unplug time predicted. + + {AdaptiveChargingType} + + + + + + dbasehore@chromium.org + chromeos-platform-power@google.com + + The difference between the correct delay time and the actual delay time for + Adaptive Charging, as computed by (correct delay - actual delay) in minutes. + Adaptive Charging delays charging from a hold charge percentage, 80%, to + full if it predicts the charger will be unplugged more than 3 hours in the + future. The correct delay time ends exactly 3 hours before the user unplugs + the charger, or 2 hours before the user unplugs if the available time is + less than 3 hours. This metric is recorded upon unplug of an AC charger, if + the hold percent was reached. + + We record this under several variants, which split this result by whether + Adaptive Charging is enabled and active, a heuristic disabled the feature, + the user canceled the feature for this use, the user disabled the feature, + or the feature is not supported on the hardware class. We still record the + metric if the feature is not supported, since we may backport support to + older systems, and we'd like to know how well the ML model does before + enabling support. + + Since metrics don't work with negative values, this is additionally split + across Late and Early variants. The absolute values of negatives are + reported under the Late variant. Positive and 0 values are reported under + the Early variant. + + + + + + + + + + + + + + + + dbasehore@chromium.org + chromeos-platform-power@google.com + + Total time, in minutes, for Adaptive Charging. This metric is recorded upon + unplug unplug of an AC charger, if the hold percent (the battery charge % + that charging is delayed at, which is 80%) for Adaptive Charging was + reached. This is split by two variants, Available and Delay, which report + the available time for Adaptive Charging and the delay time for Adaptive + Charging. + + + + + + + + + dbasehore@chromium.org + chromeos-platform-power@google.com + + The difference, in minutes, between when the AC charger is unplugged and + when it was predicted to be unplugged by the Adaptive Charging feature. + Computed as (actual - predicted). This metric is recorded upon unplug of an + AC charger, if the hold percent (the battery charge % that charging is + delayed at, which is 80%) for Adaptive Charging was reached. + + We record this under several variants, which split this result by whether + Adaptive Charging is enabled and active, a heuristic disabled the feature, + the user canceled the feature for this use, the user disabled the feature, + or the feature is not supported on the hardware class. We still record the + metric if the feature is not supported, since we may backport support to + older systems, and we'd like to know how well the ML model does before + enabling support. + + Since metrics don't work with negative values, this is additionally split + across Late and Early variants. The absolute values of negatives are + reported under the Late variant. Positive and 0 values are reported under + the Early variant. + + + + + + + + + + + + + + + + dbasehore@chromium.org + chromeos-platform-power@google.com + + This shows the time spent fully charged while on AC in minutes. + + We record this under several variants, which split this result by whether + Adaptive Charging is enabled and active, a heuristic disabled the feature, + the user canceled the feature for this use, the user disabled the feature, + or the feature is not supported on the hardware class. We still record the + metric if the feature is not supported, since we may backport support to + older systems, and we'd like to know how well the ML model does before + enabling support. + + + + + + + + + + + + dbasehore@chromium.org + chromeos-platform-power@google.com + + The time it takes to fully charge from the Adaptive Charging hold percent + (the battery charge % that we delay charging at). This is recorded to make + sure that we leave enough time for systems to fully charge to full from the + hold percent. + + We record this under several variants, which split this result by the type + of charging that is used to charge to full once the hold percent is reached. + Normal charging uses the default rate of charging, slow charging uses a + battery charge current limit of 0.1C (10% of battery design capacity) and + mixed charging is a combination of both normal and slow charging which can + occur when the unplug time prediction moves sooner, resulting in the switch + from slow charging to normal charging in order to finish charging by the + unplug time predicted. + + {AdaptiveChargingType} + + + + + + bkersten@chromium.org + slangley@chromium.org + + The Ambient Light Sensor reading sampled on resume from suspend. Only + applicable to Chrome OS. + + + + + + Removed in March 2022 without replacement. + + eseckler@chromium.org + skyostil@chromium.org + woa-performance@google.com + + Total seconds of CPU time consumed by Chrome, split by process type as well + as core type and core frequency. Currently only implemented on Android. For + every second of CPU time consumed by a process on a specific CPU core type + and at a specific frequency, a sample is recorded into the bucket for the + frequency range. Samples are recorded periodically depending on the task + load of each process's main thread. The histogram thus shows the total sum + of CPU time seconds spent for a specific process and core type across all + users. + + Compared with Power.CpuTimeSecondsPerCoreTypeAndFrequency, the values in + this histogram are approximated from more widely supported global + per-CPU-core time_in_state stats, while + Power.CpuTimeSecondsPerCoreTypeAndFrequency reads per-thread time_in_state + stats that are only supported on newer Pixel devices (as of mid-2020). + + For a histogram of daily per-user values, select "Per-Client + Aggregation Mode". + + + + + eseckler@chromium.org + khokhlov@chromium.org + woa-performance@google.com + + Records the average CPU load caused by the corresponding process over the + last 30 (or more) seconds. Emitted at the end of each such period, so not + more often that once in 30 sec. Note that CPU load can be greater than 100% + on milti-core systems. + + + + + + + + + + + puthik@chromium.org + mqg@chromium.org + chromeos-platform-power@google.com + + The level of the backlight as a percentage when the privacy screen is in + {PrivacyScreenState} state and the device is powered by {PowerSource}. + Sampled every 30 seconds. Chrome OS only. + + + + + + + + + + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + Chrome OS {BatteryCapacityType} battery capacity in milliwatt-hours. + + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + Chrome OS battery charge health percentage. Sampled once when device starts + charging. + + + + + pmonette@chromium.org + fdoray@chromium.org + + The availability of the battery discharge granularity. If true, + Power.BatteryDischargeGranularity is reported for this client. + + This is reported at the end of every valid 1 minute interval. An invalid + interval is one that deviate too much from 1 minute, which can be caused by + the computer going to sleep, or the OS sending multiple notifications in a + row. + + Reported only on Windows, when a single battery is installed and the + operating system says that the unit is mWh. + + + + + pmonette@chromium.org + fdoray@chromium.org + + Reports if the battery discharge granularities are ordered according to the + MSDN documentation. + + The documentation states that the most coarse granularity is the first + element among all reporting scales. + + Reported only on Windows, every time the battery state is queried. + + + + + pmonette@chromium.org + fdoray@chromium.org + + The granularity of the battery discharge rate value as reported by the + operating system, if available. Always the most coarse granularity among all + the reporting scales of the battery, regardless of the current capacity. + + This is reported at the end of every valid 1 minute interval. An invalid + interval is one that deviate too much from 1 minute, which can be caused by + the computer going to sleep, or the OS sending multiple notifications in a + row. + + Reported only on Windows, when a single battery is installed and the + operating system says that the unit is mWh. + + + + + pmonette@chromium.org + fdoray@chromium.org + + The granularity of the battery discharge rate value as reported by the + operating system, if available. Always the most coarse granularity among all + the reporting scales of the battery, regardless of the current capacity. + + This is reported at the end of every valid 1 minute interval. An invalid + interval is one that deviate too much from 1 minute, which can be caused by + the computer going to sleep, or the OS sending multiple notifications in a + row. + + Reported only on Windows, when a single battery is installed and the + operating system says that the unit is mWh. + + + + + etiennep@chromium.org + olivierli@chromium.org + + Battery discharge mode describing whether BatteryDischargeRateMilliwatts5 + could be reported or not, and why. + + This is reported at the end of every valid 1 minute interval. An invalid + interval is one that deviate too much from 1 minute, which can be caused by + the computer going to sleep, or the OS sending multiple notifications in a + row. + + This is recorded for {UsageScenario}. + + This contains {IntervalType}. + + + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + Chrome OS battery discharge rate in mW sampled every 30 seconds while the + device runs on battery. + + + + + etiennep@chromium.org + olivierli@chromium.org + lgrey@chromium.org + + Battery discharge in milliwatts, example: - Used capacity at the beginning + of the interval: 1000 mWh; - Used capacity at the end of the interval: 1010 + mWh; - Discharge: (1010-1000) = 10 mWh per minute - Reported value: 600 mW. + + This is reported at the end of every valid 1 minute interval. An invalid + interval is one that deviate too much from 1 minute, which can be caused by + the computer going to sleep, or the OS sending multiple notifications in a + row. + + This is recorded for {UsageScenario}. + + This contains {IntervalType}. + + + + + + + pmonette@chromium.org + catan-team@chromium.org + + Battery discharge in milliwatts, example: - Used capacity at the beginning + of the interval: 1000 mWh; - Used capacity at the end of the interval: 1010 + mWh; - Discharge: (1010-1000) = 10 mWh per minute - Reported value: 600 mW. + + This is reported at the end of every valid 1 minute interval. An invalid + interval is one that deviate too much from 1 minute, which can be caused by + the computer going to sleep, or the OS sending multiple notifications in a + row. + + Clients with a coarse battery discharge granularity (>17 mWh) are + excluded. + + This is recorded for {UsageScenario}. + + This contains {IntervalType}. + + + + + + + etiennep@chromium.org + olivierli@chromium.org + lgrey@chromium.org + + Battery discharge rate per minute, with 1/10000 of full charge resolution, + example: - Battery capacity = 4000 mAh; - Battery charge at the beginning of + the interval: 3900 mAh; - Battery charge at the end of the interval: 3700 + mAh; - Discharge proportion: (3900-3700) / 4000 = 0.05 - Reported value: + 500. + + This is reported at the end of every valid 1 minute interval. An invalid + interval is one that deviate too much from 1 minute, which can be caused by + the computer going to sleep, or the OS sending multiple notifications in a + row. + + This is recorded for {UsageScenario}. + + This contains {IntervalType}. + + + + + + + puthik@chromium.org + evgreen@chromium.org + chromeos-platform-power@google.com + + Chrome OS battery discharge rate in mW while the system was hibernated, + sampled at resume. Only reported if the system was on battery power both + before hibernating and after resuming, if the energy level didn't increase + while hibernated (which would indicate that an AC adapter was connected), + and if the system was hibernated for at least a minute. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + Chrome OS battery discharge rate in mW while the system was suspended, + sampled at resume. Only reported if the system was on battery power both + before suspending and after resuming, if the energy level didn't increase + while suspended (which would indicate that an AC adapter was connected), and + if the system was suspended for at least a minute. + + + + + tbroch@chromium.org + + Counts the number of times we have read the battery status from sysfs and if + it gave us sensible values. Chrome OS only. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + Chrome OS battery life while in active state, measured in minutes using + {BatteryCapacityType} full capacity of the battery pack. + + This is calculated using size of the battery divide by battery discharge + rate sampling in Power.BatteryDischargeRate. Note that the size of the + battery is derated by the low battery shutdown percent. + + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + Chrome OS battery life while suspended, measured in hours using + {BatteryCapacityType} full capacity of the battery pack. + + This is calculated using size of the battery divide by battery discharge + rate sampling in Power.BatteryDischargeRateWhileSuspended. + + + + + + ryansturm@chromium.org + tbansal@chromium.org + + The drop in battery since the last operating system battery update as a + percent of total device battery. If the drop is not a round percentage + point, the unreported amount will be carried over until the battery level + drops by a full percentage point. Recorded when the battery level drops by + more than a percentage point. If the user charges the device, the battery + tracking is reset (the amount carried over is reset). This histograms sum is + most likely the most useful figure when comparing experiments. Recorded even + when Chrome is in the background. + + + + + tbroch@chromium.org + + Chrome OS remaining battery charge as percent of the maximum battery charge, + sampled at the end of a user session when the device is on AC. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + Chrome OS remaining battery charge as percent of the maximum battery charge, + sampled at the end of a user session when the device is on battery. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + Chrome OS remaining battery charge as percent of the maximum battery charge, + sampled at the start of a user session when the device is on AC. + + + + + tbroch@chromium.org + + Chrome OS remaining battery charge as percent of the maximum battery charge, + sampled at the start of a user session when the device is on battery. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + Chrome OS remaining battery charge as percent of the maximum battery charge, + sampled when charging starts. + + + + + dianders@chromium.org + + Chrome OS (Snow RO firmware 2695.90.0 only) number of 8K chunks that were + fixed (memory corruption corrected) for each suspend/resume cycle. Expect 0 + around 97% of the time and a non-zero value around 3% of the time. + + + + + dianders@chromium.org + + Chrome OS (Snow RO firmware 2695.90.0 only) number of 4-byte words that were + fixed (memory corruption corrected) for each suspend/resume cycle. Expect 0 + around 97% of the time and a non-zero value around 3% of the time. Would be + exactly equal to Power.BitfixChunks if there were only one corrupted word in + each chunk but is sometimes several times higher. + + + + + bleung@chromium.org + puthik@chromium.org + chromeos-platform-power@google.com + + Connected charging ports on Chrome OS. A sample is reported every time that + the power manager polls sysfs (typically every 30 seconds). Ordinals are + assigned based on the lexicographical ordering of power supply names from + sysfs and have no implied correspondence with ports' physical locations. For + example, with ports 'CROS_USB_PD_CHARGER0' and 'CROS_USB_PD_CHARGER1', + 'first' refers to the former and 'second' to the latter. To determine a + port's physical location, see the powerd charging_ports pref in the device's + overlay. + + + + + + Deprecated in 03/2022 because the Power Scheduler feature did not launch. + + eseckler@chromium.org + skyostil@chromium.org + woa-performance@google.com + + For clients enrolled in CPU affinity restriction experiments (e.g. + restricting execution to little cores only), records the new CPU affinity + for a process every time it is changed, provided it was succcessfully set. + + + + + + Deprecated in 03/2022 because the Power Scheduler feature did not launch. + + eseckler@chromium.org + skyostil@chromium.org + woa-performance@google.com + + For clients enrolled in CPU affinity restriction experiments (e.g. + restricting execution to little cores only), records whether the CPU + affinity for a process could be succcessfully set. + + + + + + Removed in March 2022 without replacement. + + eseckler@chromium.org + skyostil@chromium.org + woa-performance@google.com + + Total seconds of CPU time consumed by Chrome, split by process type as well + as core type and core frequency. Currently only implemented on Android. For + every second of CPU time consumed by a process on a specific CPU core type + and at a specific frequency, a sample is recorded into the bucket for the + frequency range. Samples are recorded periodically depending on the task + load of each process's main thread. The histogram thus shows the total sum + of CPU time seconds spent for a specific process and core type across all + users. + + For a histogram of daily per-user values, select "Per-Client + Aggregation Mode". + + + + + + Deprecated in 11/2022 without replacement. + + eseckler@chromium.org + oksamyt@chromium.org + woa-performance@google.com + + Total seconds of CPU time consumed by Chrome's {ProcessType} process, split + by power mode. Currently only implemented on Android. For every second of + CPU time consumed by the process, while a specific PowerMode was active, a + sample is recorded into the bucket for the PowerMode. Samples are recorded + periodically depending on the task load of each process's main thread. The + histogram thus shows the total sum of CPU time seconds spent per PowerMode + within all {ProcessType} processes across all users. + + For a histogram of daily per-user values, select "Per-Client + Aggregation Mode". + + + + + + + + + + + eseckler@chromium.org + skyostil@chromium.org + woa-performance@google.com + + Total seconds of CPU time consumed by Chrome, split by process type. + Currently only implemented on Android. For every second of CPU time consumed + by one process, a sample is recorded into the bucket for the process's type. + Samples are recorded periodically depending on the task load of each + process's main thread. The histogram thus shows the total sum of CPU time + seconds spent per process type across all users. + + For a histogram of daily per-user values, select "Per-Client + Aggregation Mode". + + + + + eseckler@chromium.org + skyostil@chromium.org + woa-performance@google.com + + Total seconds of CPU time consumed by Chrome/WebView in the {Visibility} + state, split by process type. Currently only implemented on Android. For + every second of CPU time consumed by one process, a sample is recorded into + the bucket for the process's type. Samples are recorded periodically + depending on the task load of each process's main thread. The histogram thus + shows the total sum of CPU time seconds spent per process type across all + users. + + For a histogram of daily per-user values, select "Per-Client + Aggregation Mode". + + + + + + + + + + eseckler@chromium.org + skyostil@chromium.org + woa-performance@google.com + + Total seconds of CPU time consumed by Chrome's {ProcessType} process, split + by thread type. Currently only implemented on Android. For every second of + CPU time consumed by one thread, a sample is recorded into the bucket for + the thread's type. CPU time consumed by a process that cannot be attributed + to a specific thread is recorded into the "UnattributedThread" + bucket. Samples are recorded periodically depending on the task load of each + process's main thread. The histogram thus shows the total sum of CPU time + seconds spent per thread type (within {ProcessType} processes) across all + users. + + For a histogram of daily per-user values, select "Per-Client + Aggregation Mode". + + + + + + + + + + + michaelbai@chromium.org + pdr@chromium.org + peter@chromium.org + + Whether the primary main document has an inferred dark color scheme. Emitted + each time WebContents infers a new non-empty color scheme. + + + + + + + + + chirantan@chromium.org + abhishekbh@chromium.org + ravisadineni@chromium.org + + The amount of time a system spent awake every time it woke up in dark + resume. + + + + + chirantan@chromium.org + abhishekbh@chromium.org + ravisadineni@chromium.org + + The amount of time a system spent awake every time it woke up in dark resume + triggered by an unknown or unsupported wake trigger. + + + + + chirantan@chromium.org + abhishekbh@chromium.org + ravisadineni@chromium.org + + The amount of time a system spent awake every time it woke up in dark resume + triggered by a WiFi disconnect. + + + + + chirantan@chromium.org + abhishekbh@chromium.org + ravisadineni@chromium.org + + The amount of time a system spent awake every time it woke up in dark resume + triggered by a WiFi packet pattern match. + + + + + chirantan@chromium.org + abhishekbh@chromium.org + ravisadineni@chromium.org + + The amount of time a system spent awake every time it woke up in dark resume + triggered by a net detect SSID match. + + + + + chirantan@chromium.org + + The number of times a system woke up in dark resume in an hour. Note that + this value is scaled up or down to an hour based on the amount of time the + system spent in suspend. So if the system suspended for 20 minutes and woke + up 3 times, it would report a value of 9. + + + + + mqg@chromium.org + charleszhao@chromium.org + + The dimming events inside power_manager.metrics.DimEvent, recorded when a + quick-dim/standard-dim starts or ends. The device is on {PowerSource} when + the metrics is recorded. + + + + + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The result of attempting to read an external display's brightness on Chrome + OS. A read attempt is made after successfully requesting the brightness (see + Power.ExternalBrightnessRequestResult). + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The result of requesting an external display's brightness on Chrome OS. A + request is sent when the user presses a brightness key and the current + brightness is not already cached. A successful request is followed shortly + thereafter by a read attempt (see Power.ExternalBrightnessReadResult). + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The result of attempting to change an external display's brightness on + Chrome OS. A request is sent when the user presses a brightness key and the + current brightness is either already cached or successfully loaded. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The result of attempting to open an I2C device to control an external + display's brightness on Chrome OS. An attempt is made when a display is + connected to a device that lacks an internal display. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The time that the firmware took to resume the Chrome OS device from + suspend-to-RAM state when running on AC at pre-suspend time. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The time that the firmware took to resume the Chrome OS device from + suspend-to-RAM state when running on battery at pre-suspend time. + + + + + + + eseckler@chromium.org + khokhlov@chromium.org + woa-performance@google.com + chrome-analysis-team@google.com + + + Periodically samples the battery capacity drained while Chrome is a + foreground app and the device is on battery power {DarkeningType}. Sampled + every 30 seconds while foregrounded. Also sampled when Chrome is + backgrounded or the device connects to a charger. {Exclusive} + + Sample values are reported in microampere-hours and averaged over successive + sampling points without a change in capacity counter values. Since the + capacity counter resolution differs between device models, averaging the + values allows us to make comparisons between frequent small capacity drops + and infrequent large drops. For example, a 20,000 uAh drop over two + successive periods of 30 seconds will be reported as two samples of 10,000 + uAh. + + For more details, see http://bit.ly/chrome-android-foreground-battery-drain. + + Only supported on Android. For WebView, the metric considers the time during + in which at least one WebView is visible on the screen as + "foreground" time. For Chrome, it considers any time the Chrome + app is visible, including when in multi-window mode. + + Note that the capacity counter can be implemented in different ways by + different devices/OEMs and its accuracy can vary (across devices and at + different times on the same device, also due to environmental factors like + device temperature or charge level). + + We've found looking at the 99%ile-trimmed mean more useful than looking at + specific percentiles, especially when filtering for specific device models. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + + + + + + + + + + + eseckler@chromium.org + skyostil@chromium.org + woa-performance@google.com + + Periodically samples the battery capacity drained while Chrome is a + foreground app and the device is on battery power. Sampled every 30 seconds + while foregrounded. Also sampled when Chrome is backgrounded or the device + connects to a charger. {Exclusive} + + Sample values are reported as provided by the battery capacity counter (in + microampere-hours). Because the resolution of this counter is rather coarse + (usually between 500 and 50,000 uAh), the uAh value may have been drained + over a longer time period than 30 seconds. See also + Power.ForegroundBatteryDrain.30SecondsAvg, which averages the values over + successive sampling points without change in counter values. + + Only supported on Android. For WebView, the metric considers the time during + in which at least one WebView is visible on the screen as + "foreground" time. For Chrome, it considers any time the Chrome + app is visible, including when in multi-window mode. + + Note that the capacity counter can be implemented in different ways by + different devices/OEMs and its accuracy can vary (across devices and at + different times on the same device, also due to environmental factors like + device temperature or charge level). + + + + + + + + + eseckler@chromium.org + skyostil@chromium.org + woa-performance@google.com + + Records a sample for every 0.1 milliampere-hours of battery capacity that + are drained while Chrome is a foreground app and the device is on battery + power. The battery counter is inspected every 30 seconds while foregrounded. + It is also inspected when Chrome is backgrounded or the device connects to a + charger. The histogram thus shows the total sum of battery capacity consumed + across all users. {Exclusive} + + Only supported on Android. For WebView, the metric considers the time during + in which at least one WebView is visible on the screen as + "foreground" time. For Chrome, it considers any time the Chrome + app is visible, including when in multi-window mode. + + Note that the capacity counter can be implemented in different ways by + different devices/OEMs and its accuracy can vary (across devices and at + different times on the same device, also due to environmental factors like + device temperature or charge level). + + For a histogram of daily per-user values, see the computed histogram + Power.DailyForegroundBatteryDrain. + + + + + + + + + eseckler@chromium.org + khokhlov@google.com + skyostil@chromium.org + woa-performance@google.com + + Periodically samples the radio (cellular/wifi) signal strength level while + Chrome is a foreground app and the device is on battery power. Sampled every + 30 seconds and when Chrome is backgrounded or the device connects to a + charger. + + Only supported on Android. + + + + + + + + + eseckler@chromium.org + khokhlov@google.com + skyostil@chromium.org + woa-performance@google.com + + Counts the number of radio wakeups while Chrome is a foreground app, the + device is on battery power and connection type is cellular. Values are + distributed across buckets according to the radio signal quality. + + Caveat: signal quality is measured at the end of 30-sec period, so it might + not reflect the quality during the entire period. + + Only supported on Android. Disabled by default. Please supply the + ForegroundRadioStateCountWakeups feature flag to turn this metric on. + + + + + eseckler@chromium.org + khokhlov@google.com + skyostil@chromium.org + woa-performance@google.com + + Periodically samples the number of kibibytes received over network while + Chrome is a foreground app and the device is on battery power. Sampled every + 30 seconds and when Chrome is backgrounded or the device connects to a + charger. Values are distributed across buckets according to the radio signal + quality. + + Caveat: signal quality is measured at the end of 30-sec period, so it might + not reflect the quality during the entire period. + + Only supported on Android. + + + + + + + + + + + + + carlscab@google.com + eseckler@chromium.org + khokhlov@google.com + woa-performance@google.com + + Recorded every time the device thermal state changes while Chrome is a + foreground app. + + Only supported on Android. + + + + + eseckler@chromium.org + khokhlov@google.com + woa-performance@google.com + + Damaged area of a LayerTree's CompositorFrame in device-independent pixels. + Recorded every time a new frame is produced. + + + + + + + + + eseckler@chromium.org + khokhlov@google.com + woa-performance@google.com + + Diagonal length of the damaged area of a LayerTree's CompositorFrame in + device-independent pixels. Recorded every time a new frame is produced. + + + + + + + + + pmonette@chromium.org + catan-team@chromium.org + + Records whether or not the reporting client has a battery discharge + granularity less or equal to 17 mWh, which is the threshold to report the + Power.BatteryDischargeRatePreciseMilliwatts histogram. + + This is reported at the end of every valid 1 minute interval. An invalid + interval is one that deviate too much from 1 minute, which can be caused by + the computer going to sleep, or the OS sending multiple notifications in a + row. + + Only Recorded on Windows. + + + + + puthik@chromium.org + evgreen@chromium.org + chromeos-platform-power@google.com + + The number of hibernate attempts performed for a single hibernate request + (e.g. triggered by transition from suspend to hibernation) that was + eventually canceled on Chrome OS. This also includes requests that were + canceled due to the system eventually shutting down due to repeated + hibernation failures. This is recorded just after the SuspendDone signal is + emitted, while cleaning up from the canceled attempt. + + + + + puthik@chromium.org + evgreen@chromium.org + chromeos-platform-power@google.com + + The number of hibernation attempts performed for a single hibernation + request (e.g. triggered by transition from suspend to hibernation) that + eventually succeeded on Chrome OS. This includes the successful attempt. + This is recorded after the system resumes, just after the SuspendDone signal + is emitted, while unwinding the suspend preparations. + + + + + + Deprecated in 11/2022 without replacement. + + eseckler@chromium.org + khokhlov@chromium.org + woa-performance@google.com + + Records the average CPU load caused by the corresponding process over the + last 5 sec (or more) of Idle power mode. Emitted at the end of each such + period, so not more often that once in 5 sec. Note that CPU load can be + greater than 100% on milti-core systems. + + + + + + + + + + + tbroch@chromium.org + napper@chromium.org + + Number of times that that the screen has been dimmed in response to user + inactivity, reported daily. The count is accumulated through the day, + spanning reboots, and sent once the system clock indicates that a full day + or more has passed since the last report. If the system is suspended or off + for more than a day, the current count will be reported immediately the next + time the system boots, but the skipped days will not be reported. Chrome OS + only. + + + + + tbroch@chromium.org + napper@chromium.org + + Number of times that that the screen has been turned off in response to user + inactivity, reported daily. The count is accumulated through the day, + spanning reboots, and sent once the system clock indicates that a full day + or more has passed since the last report. If the system is suspended or off + for more than a day, the current count will be reported immediately the next + time the system boots, but the skipped days will not be reported. Chrome OS + only. + + + + + tbroch@chromium.org + napper@chromium.org + + Number of times that that the system has suspended in response to user + inactivity, reported daily. The count is accumulated through the day, + spanning reboots, and sent once the system clock indicates that a full day + or more has passed since the last report. If the system is suspended or off + for more than a day, the current count will be reported immediately the next + time the system boots, but the skipped days will not be reported. Chrome OS + only. + + + + + tbroch@chromium.org + napper@chromium.org + + Chrome OS user idle time since the screen dimmed sampled when the user + becomes active again if the device runs on AC. + + + + + tbroch@chromium.org + napper@chromium.org + + Chrome OS user idle time since the screen dimmed sampled when the user + becomes active again if the device runs on battery. + + + + + tbroch@chromium.org + napper@chromium.org + + Chrome OS user idle time since the screen turned off sampled when the user + becomes active again if the device runs on AC. + + + + + tbroch@chromium.org + napper@chromium.org + + Chrome OS user idle time since the screen turned off sampled when the user + becomes active again if the device runs on battery. + + + + + tbroch@chromium.org + napper@chromium.org + + Chrome OS user idle time sampled when the user becomes active again if the + device runs on AC. + + + + + tbroch@chromium.org + napper@chromium.org + + Chrome OS user idle time sampled when the user becomes active again if the + device runs on battery. + + + + + pmonette@chromium.org + catan-team@chromium.org + + Records the time between each IOPMPowerSource event. The recorded value is + clamped between 55 seconds and 65 seconds for maximum precision around the + expected value. Only recorded on MacOS. + + + + + pmonette@chromium.org + catan-team@chromium.org + + Records the time between each IOPMPowerSource event. The recorded value is + not clamped and covers the range from zero seconds to 3 minutes. Only + recorded on MacOS. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The time that the kernel took to resume the Chrome OS device from + suspend-to-RAM state when running on AC at pre-suspend time. + + + + + tbroch@chromium.org + + The time that the kernel took to resume the Chrome OS device from + suspend-to-RAM state when running on battery at pre-suspend time. + + + + + tbroch@chromium.org + + The time that the kernel took to suspend-to-RAM the Chrome OS device when + running on AC. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The time that the kernel took to suspend-to-RAM the Chrome OS device when + running on battery. + + + + + tbroch@chromium.org + + The level of the keyboard backlight as a percentage. Sampled every 30 + seconds. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The length of time, in seconds, that a user spent in a single session. + Values for this metric are clamped to 12 hours, so the last bucket should be + considered to be including all metrics above 12 hours. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + Number of times that that the system has suspended in response to its lid + being closed, reported daily. The count is accumulated through the day, + spanning reboots, and sent once the system clock indicates that a full day + or more has passed since the last report. If the system is suspended or off + for more than a day, the current count will be reported immediately the next + time the system boots, but the skipped days will not be reported. Chrome OS + only. + + + + + mqg@chromium.org + charleszhao@chromium.org + + The lock events inside power_manager.metrics.LockEvent, recorded when a + quick-lock/standard-lock starts. The device is on {PowerSource} when the + metrics is recorded. + + + + + + + + + olivierli@chromium.org + markchang@chromium.org + + Instantaneous power consution in milliwatts, for the system as a whole and + broken down by component. Only recorded on macOS. Only valid on Intel based + systems. NB: The collection method was changed in May 2019, which may look + like a regression in timeline view. + + + + + avi@chromium.org + lgrey@chromium.org + + Whether the user's machine is on battery power. Sampled once per minute. + Unlike Power.Mac.IsOnBattery, this correctly logs desktop Macs as not being + on battery. + + + + + lgrey@chromium.org + olivierli@chromium.org + + Thermal state of the user's machine as reported by macOS's [NSProcessInfo + thermalState]. Sampled once per minute. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + Reasons why power-management-related daily metrics were reported. Chrome OS + only. + + + + + tbroch@chromium.org + napper@chromium.org + + The number of times that the Automatic Light Sensor (ALS) adjusted the + brightness during a session. Values for this metric are clamped to 10k + count, so the last bucket should be considered to be including all metrics + above 10k. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The number of user sessions that occured since the last time that the device + was charged. Values for this metric are clamped at 10k, so the last bucket + should be considered to include all metrics about 10k. + + + + + skardach@google.com + svenva@google.com + chromeos-platform-power@google.com + + Reports the time a Chrome OS device spends in the S0ix idle state while not + suspended (that is between system resume and suspend events) as a percentage + of the time spent in the Package C10 (PC10) idle state. Reported only if at + the time of measurement the time spent in PC10 is non-zero. + + Data points for this metric are recorded on every resume and suspend event + and therefore the metric itself is reported on every suspend attempt, + starting from the second one. + + Only available on Chrome OS devices with Intel CPU. + + + + + skardach@google.com + svenva@google.com + chromeos-platform-power@google.com + + Reports the time a Chrome OS device spends in the Package C10 (PC10) idle + state as a percentage of the time device is not suspended (that is between + system resume and suspend events). Reported even if the value is zero. + + Data points for this metric are recorded on every resume and suspend event + and therefore the metric itself is reported on every suspend attempt, + starting from the second one. + + Only available on Chrome OS devices with Intel CPU. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The amount of time between the user pressing the power button and Chrome + acknowledging the button-down event on Chrome OS. Values for this metric are + capped to two seconds. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The amount of time between the user pressing the power button and releasing + it on Chrome OS. + + + + + minch@chromium.org + xdai@chromium.org + Actions performed while the power button menu is open. + + + + emaamari@google.com + chromeos-commercial-identity@google.com + + Indicates a press of the power button, recorded when PowerManagerClient + receives a signal that the power button was pressed and notifies + FingerprintPowerButtonRaceDetector. + + + + + minch@chromium.org + xdai@chromium.org + + Press power button in laptop mode will result in different scenarios + according to the power button up state. Counts the different power button + press scenarios in laptop mode. + + + + + minch@chromium.org + xdai@chromium.org + + Press power button in tablet mode will result in different scenarios + according to the power button up state. Counts the different power button + press scenarios in tablet mode. + + + + + + Deprecated in 11/2022 without replacement. + + eseckler@chromium.org + skyostil@chromium.org + woa-performance@google.com + + Records the new value of the {ProcessType} process power mode every time a + change is detected (happens on the order of once per second). + + + + + + + + + + + + Deprecated in 03/2022 because the Power Scheduler feature did not launch. + + eseckler@chromium.org + skyostil@chromium.org + woa-performance@google.com + + Duration during which CPU throttling was active. Only recorded when a CPU + throttling policy is active (e.g. throttle while idle). A sample is recorded + every time throttling stops (e.g. when exiting idle state). + + + + + + Deprecated in 03/2022 because the Power Scheduler feature did not launch. + + eseckler@chromium.org + skyostil@chromium.org + woa-performance@google.com + + Duration in milliseconds during which CPU throttling was active, split by + the CPU affinity for that duration. Only recorded when a CPU throttling + policy is active (e.g. throttle while idle). A sample is recorded every time + throttling stops (e.g. when exiting idle state), on the order of once per + second. + + + + + bleung@chromium.org + puthik@chromium.org + chromeos-platform-power@google.com + + The maximum power supported by the connected power supply on Chrome OS. A + sample is reported every time that the power manager polls sysfs (typically + every 30 seconds) and sees a connected supply. + + + + + bleung@chromium.org + puthik@chromium.org + chromeos-platform-power@google.com + + The maximum voltage supported by the connected power supply on Chrome OS. A + sample is reported every time that the power manager polls sysfs (typically + every 30 seconds) and sees a connected supply. + + + + + bleung@chromium.org + puthik@chromium.org + chromeos-platform-power@google.com + + The type of the connected power supply on Chrome OS. A sample is reported + every time that the power manager polls sysfs (typically every 30 seconds) + and sees a connected supply. + + + + + tbroch@chromium.org + + The reason for the Chrome OS power manager shutting down or rebooting the + system. + + + + + thanhdng@chromium.org + napper@chromium.org + Type of messages that are reported by smart charging. + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The number of suspend attempts on Chrome OS. Samples are reported before + each attempt, so this histogram may include cases where the system crashed + instead of suspending. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The number of suspend attempts performed for a single suspend request (e.g. + triggered by the lid being closed) that was eventually canceled on Chrome + OS. This also includes requests that were canceled due to the system + eventually shutting down due to repeated suspend failures. This is recorded + just after the SuspendDone signal is emitted, while cleaning up from the + canceled attempt. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The number of suspend attempts performed for a single suspend request (e.g. + triggered by the lid being closed) that eventually succeeded on Chrome OS. + This includes the successful attempt. This is recorded after the system + resumes, just after the SuspendDone signal is emitted, while unwinding the + suspend preparations. + + + + + niwa@chromium.org + puthik@chromium.org + chromeos-platform-power@google.com + + The amount of time powerd waited until all clients (e.g. Bluetooth Manager) + to be ready to suspend after receiving a suspend request. The maximum + recorded value is 60 seconds. + + + + + puthik@chromium.org + chromeos-platform-power@google.com + + The results of suspend attempts on Chrome OS. Samples are reported after + each attempt. + + + + + tbroch@chromium.org + + Chrome OS time in minutes spent in suspend-to-RAM mode sampled at boot + (i.e., the device most likely ran out of battery while in suspend). + + + + + tbroch@chromium.org + + Chrome OS time in minutes spent in suspend-to-RAM mode sampled at resume. + + + + + tbroch@chromium.org + napper@chromium.org + + The number of times that the user adjusted the brightness during a session + when on AC. Values for this metric are clamped to 10k count, so the last + bucket should be considered to be including all metrics above 10k. + + + + + tbroch@chromium.org + napper@chromium.org + + The number of times that the user adjusted the brightness during a session + when on battery. Values for this metric are clamped to 10k count, so the + last bucket should be considered to be including all metrics above 10k. + + + + + mqg@chromium.org + charleszhao@chromium.org + + The duration of a {HpsEvent}, recorded on undimming/deferring. + + + + + + + + + + + napper@chromium.org + thanhdng@chromium.org + + What happens when UserActivityManager receives a screen dim imminent + notification. Only applicable to Chrome OS. + + + + + napper@chromium.org + thanhdng@chromium.org + + What happens after screen is dimmed following model instruction. Only + applicable to Chrome OS. + + + + + napper@chromium.org + thanhdng@chromium.org + + What happens after screen dim is deferred following model instruction. Only + applicable to Chrome OS. + + + + + napper@chromium.org + thanhdng@chromium.org + + What happens after screen is dimmed by powerd by ignoring the model + instruction. Only applicable to Chrome OS. + + + + + napper@chromium.org + thanhdng@chromium.org + + Status of logging previous idle event after a screen dim imminent signal is + received. Only applicable to Chrome OS. + + + + + alanlxl@chromium.org + amoylan@chromium.org + napper@chromium.org + + Records the event (various failures or success) of loading smart dim + component. Only applicable to Chrome OS. + + + + + alanlxl@chromium.org + amoylan@chromium.org + napper@chromium.org + + Records the type of expected version (default, experimental or empty) used + by smart dim component installer. Only applicable to Chrome OS. + + + + + alanlxl@chromium.org + amoylan@chromium.org + napper@chromium.org + + Records the worker type that is used by smart dim ml agent to make a + decision. Only applicable to Chrome OS. + + + + + alanlxl@chromium.org + amoylan@chromium.org + napper@chromium.org + + The source of web page info in smart dim features, emitted everytime smart + dim is requested. + + + + + amoylan@chromium.org + napper@chromium.org + napper@chromium.org + pmalani@chromium.org + + The time elapsed between a Smart Dim Inference Request being sent to the ML + model, and the request being canceled before the result is returned. + + + + + amoylan@chromium.org + napper@chromium.org + napper@chromium.org + pmalani@chromium.org + + The time elapsed between a Smart Dim Inference Request being sent to the ML + model and a result being returned. + + + + + napper@chromium.org + thanhdng@chromium.org + + This is the status code returned by the model when calculating a user + inactivity score. If it is any value other than 0 (success), then some issue + has occurred in the score calculation, either because preprocess was not + loaded or parsed correctly, or the preprocessor failed to process a + RankerExample. Only applicable to Chrome OS. + + + + + napper@chromium.org + thanhdng@chromium.org + + The result of parsing the dim threshold parameter value. Only applicable to + Chrome OS. + + + + + + diff --git a/histograms/metadata/prefetch/DIR_METADATA b/histograms/metadata/prefetch/DIR_METADATA new file mode 100644 index 000000000000..9c19fed21334 --- /dev/null +++ b/histograms/metadata/prefetch/DIR_METADATA @@ -0,0 +1,11 @@ +# Metadata information for this directory. +# +# For more information on DIR_METADATA files, see: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md +# +# For the schema of this file, see Metadata message: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto + +monorail { + component: "Internals>Preload>PrefetchProxy" +} diff --git a/histograms/metadata/prefetch/OWNERS b/histograms/metadata/prefetch/OWNERS new file mode 100644 index 000000000000..f551e9aa35ff --- /dev/null +++ b/histograms/metadata/prefetch/OWNERS @@ -0,0 +1,8 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +curranmax@chromium.org +spelchat@chromium.org +tbansal@chromium.org +toyoshim@chromium.org diff --git a/histograms/metadata/prefetch/histograms.xml b/histograms/metadata/prefetch/histograms.xml new file mode 100644 index 000000000000..3cefa25c88ae --- /dev/null +++ b/histograms/metadata/prefetch/histograms.xml @@ -0,0 +1,584 @@ + + + + + + + + + + + + + + + + + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + If a prefetch request has started but the head of the prefetch response has + not been received yet when a navigation to a URL that matches the prefetch, + then the prefetch service will block until the head of the prefetch response + is received and then decide to serve or not serve the prefetch. + + This histogram records the amount of time that the prefetch service blocked + until the head of the prefetch response was received. This histogram is only + recorded for prefetches that are {WasServed} and with an Eagerness of + {SpeculationEagerness}. + + + + + + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Cross-Origin prefetches requested via the Speculation Rules API are made in + an isolated network context. When the prefetched link is navigated to, the + cookies are copied from this isolated network context to the user's default + network context. + + This histogram records the time from the start of the cookie copy to when + the URL interceptor trying to serve the prefetch checks the status of the + cookie copy. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Cross-Origin prefetches requested via the Speculation Rules API are made in + an isolated network context. When the prefetched link is navigated to, the + cookies are copied from this isolated network context to the user's default + network context. + + This histogram records the time required to copy cookies from the isolated + network context used for a prefetch to the user's default network context + after a prefetched link is navigated to. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Cross-Origin prefetches requested via the Speculation Rules API are made in + an isolated network context. When the prefetched link is na vigated to, the + cookies are copied from this isolated network context to the user's default + network context. + + This histogram records the time required to read the cookies from the + isolated network context used for a prefetch before being copied to the + user's default network context after a prefetched link is navigated to. Note + this does not include the time it takes to write the cookies to the default + network context. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the amount of time that the navigation to a previously prefetched + page was delayed because cookies had to be copied from the isolated cookie + jar. + + This is only the amount of time in which the cookie copy process blocks + intercepting the navigation. The overall time it takes for the cookie copy + process is recorded to the + "PrefetchProxy.AfterClick.Mainframe.Cookie(Copy|Read|Write)Time" + histograms. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Cross-Origin prefetches requested via the Speculation Rules API are made in + an isolated network context. When the prefetched link is na vigated to, the + cookies are copied from this isolated network context to the user's default + network context. + + This histogram records the time required to write cookies from the isolated + network context used for a prefetch to the user's default network context + after a prefetched link is navigated to. Note this does not include the time + it takes to read the cookies from the isolated network context. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + The redirect chain size of a served prefetch. This histogram is recorded + only for prefetches that are served for a navigation. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + If a prefetch request has started but the head of the prefetch response has + not been received yet when a navigation to a URL that matches the prefetch, + then the prefetch service will block until the head of the prefetch response + is received and then decide to serve or not serve the prefetch. + + This histogram records whether or not prefetch service will block or not for + a prefetch. This histogram is only for prefetches with an Eagerness of + {SpeculationEagerness}. + + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Whether the full redirect chain of a prefetch is served (true), or just part + of the redirect was served (false). This histogram is only recorded when: 1) + the prefetch had at least one redirect (i.e. the redirect chain is at least + 2), and 2) at least part of prefetch redirect chain is served. + + + + + curranmax@chromium.org + chrome-brapp-loading@chromium.org + + How old a cached probe result was when it was used, in hours. + + + + + + curranmax@chromium.org + chrome-brapp-loading@google.com + + Records the status of canary check cache lookups. A sample is recorded every + time Chrome attempts to use a resource prefetched using the prefetch proxy. + Cache misses or cached failures result in filter probing the origin before + the prefetched response can be used. + + + + + + curranmax@chromium.org + chrome-brapp-loading@chromium.org + + Records the end state of a probe just before it goes inactive. This happens + when the prober succeeds, fails and has no more retries, or the delegate + stops probing. + + + + + + curranmax@chromium.org + chrome-brapp-loading@chromium.org + + Records the amount of time spent generating a cache key for the availability + prober. In particular, this tracks how much getNetworkOperator calls might + be slowing down this method. See crbug.com/1266018 for more details. + + + + + + curranmax@chromium.org + chrome-brapp-loading@chromium.org + + Records the net error of a completed or timed out probe. Note that if a HTTP + response does not occur within the probe's TTL, when a sample will also be + added to the ERR_TIMED_OUT bucket. + + + + + + curranmax@chromium.org + chrome-brapp-loading@chromium.org + + Records the number of attempts that are made to achieve a successful canary + check. This is recorded every time we make a canary check and the result is + a success. In particular, this means this is no recorded when a result was + already cached or when the check attempt fails after exhausting its retries. + This metric is 1-based so if a probe succeeds the first time, a sample of 1 + will be recorded. + + + + + + curranmax@chromium.org + chrome-brapp-loading@chromium.org + + Records the amount of time spent working on a single probe attempt to get to + a failed state. Recorded every time a probe fails. + + + + + + curranmax@chromium.org + chrome-brapp-loading@chromium.org + + Records the amount of time spent working on a single probe attempt to get to + a successful state. Recorded every time a probe succeeds. + + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records whether or not there was an existing prefetch with a matching URL + from a different referring document when a new prefetch is requested. This + is recorded everytime a prefetch is requested. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the response body length as cached in memory encountered when + isolated prefetching a mainframe HTML resource from the Google Search Result + Page. Recorded for non-network error prefetches only. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the time taken to establish a socket connection when isolated + prefetching a mainframe HTML resource from the Google Search Result Page. + Recorded for non-network error prefetches only. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the number of cookies that needed to be copied from the prefetch + navigation to the user's profile after a prefetched link is navigated to. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the Net Error encountered when isolated prefetching a mainframe HTML + resource from the Google Search Result Page. Recorded for every completed + prefetch. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the HTTP response code encountered isolated prefetching a mainframe + HTML resource from the Google Search Result Page. Recorded for non-network + error prefetches only. Redirects are not included here. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the duration of a Retry-After header on a 503 response to a + mainframe prefetch request. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the total number of redirects encountered while doing all the + prefetches on an eligible Google Search Result page. Only recorded when at + least one prefetch was attempted. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the total time taken when isolated prefetching a mainframe HTML + resource from the Google Search Result Page. Recorded for successful + non-network error prefetches only. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the number of existing eligible prefetches with a matching URL from + a different referring document when a new prefetch is requested. This is + only recorded for prefetches where there is at least one existing prefetch + with a matching URL. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the number of existing prefetches with a matching URL from a + different referring document when a new prefetch is requested. This is + recorded everytime a prefetch is requested. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the number of existing prefetches with a matching referring URL and + matching prefetch URL from a different referring document when a new + prefetch is requested. This is only recorded for prefetches where there is + at least one existing prefetch with a matching URL. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the number of existing prefetches with a matching referring render + frame host and matching prefetch URL from a different referring document + when a new prefetch is requested. This case can occur if and only if there + was a same origin navigation that re-used the same render frame host and + both pages requested to prefetch the same URL. This is only recorded for + prefetches where there is at least one existing prefetch with a matching + URL. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the number of existing prefetches with a successfully completed + prefetched responses and matching URL from a different referring document + when a new prefetch is requested. This is only recorded for prefetches where + there is at least one existing prefetch with a matching URL. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + The redirect chain size of a prefetch. This histogram is recorded once for + each prefetch. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the final status of the PrefetchStreamingURLLoader used to request + the prefetch. + + This is recorded once for each prefetch that is requested using a streaming + URL loader. It is recorded when the streaming URL loader is deleted which + can be when: 1) the URL loader is canceled, 2) the URL loader completed + serving the prefetch, or 3) the prefetch was deleted and not used. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the Net Error encountered when Chrome did a fallback from the + prefetch proxy. Recorded only on fallbacks. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the HTTP response code encountered when connecting to the prefetch + proxy CONNECT tunnel. Recorded every time Chrome gets CONNECT tunnel + response headers. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + The network context transition required to handle a redirect while + prefetching. Prefetches require an isolated network context if user data + cannot be included in the prefetch. Otherwise the prefetch is made in the + default network context. This histogram is recorded for every redirect. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + The result of receiving a redirect while prefetching. This histogram is + recorded for every redirect. + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Records the number of spare renderers that were attempted to be started on + the SRP, when the feature param is enabled. + + + + + curranmax@chromium.org + chrome-brapp-loading@chromium.org + + Records whether a pretch type change was or was not supported by the + PrefetchProxy code. A page can change the speculation rule for a given + prefetch, but not all possible changes are currently supported. If the type + change is not supported then the prefetch retains its initial type. + + This histogram is recorded each time the type of a prefetch is attempted to + be changed. + + + + + + diff --git a/histograms/metadata/preloading/DIR_METADATA b/histograms/metadata/preloading/DIR_METADATA new file mode 100644 index 000000000000..f0c1039f9d44 --- /dev/null +++ b/histograms/metadata/preloading/DIR_METADATA @@ -0,0 +1,11 @@ +# Metadata information for this directory. +# +# For more information on DIR_METADATA files, see: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md +# +# For the schema of this file, see Metadata message: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto + +monorail { + component: "Internals>Preload" +} diff --git a/histograms/metadata/preloading/OWNERS b/histograms/metadata/preloading/OWNERS new file mode 100644 index 000000000000..8a356c6bb3a2 --- /dev/null +++ b/histograms/metadata/preloading/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +curranmax@chromium.org +spelchat@chromium.org diff --git a/histograms/metadata/preloading/histograms.xml b/histograms/metadata/preloading/histograms.xml new file mode 100644 index 000000000000..c41a2b0c42c8 --- /dev/null +++ b/histograms/metadata/preloading/histograms.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + spelchat@chromium.org + curranmax@chromium.org + chrome-brapp-loading@google.com + + Logged once for each preconnection request sent by renderer to the browser + when intercepting pointerdown events. Note that the browser may ignore some + of those requests (like duplicate requests or requests made by users that + disabled preloading via the UI) and will not always forward the preconnect + request to the network service. Associated with the Source ID of the page + triggering the preconnection. + + + + + isaboori@google.com + spelchat@chromium.org + sreejakshetty@chromium.org + jbroman@chromium.org + chrome-brapp-loading@chromium.org + + After the user starts a new navigation, the outcome of the + {PreloadingPredictor} preloading predictor is recorded as a true positive or + a false positive. These statistics are used to compute precision of the + preloading predictor. The statistics about negative cases are not required + to compute the precision and are not recorded here. + + + + + + isaboori@google.com + spelchat@chromium.org + sreejakshetty@chromium.org + jbroman@chromium.org + chrome-brapp-loading@chromium.org + + After the user starts a new navigation, the outcome of any eligible + {PreloadingPredictor} preloading predictor is recorded as a true positive or + a false negative. These statistics are used to compute recall of the + preloading predictor. The statistics about false positive and true negative + cases are not required to compute the recall and are not recorded here. + + + + + + mcnee@chromium.org + chrome-brapp-loading@chromium.org + + Records whether prerendering a back navigation is possible at the time of + the prediction of a back navigation by {PreloadingPredictor}. + + + + + + isaboori@google.com + spelchat@chromium.org + sreejakshetty@chromium.org + jbroman@chromium.org + chrome-brapp-loading@chromium.org + + After the user starts a new navigation, the outcome of the preloading + attempt of type {PreloadingType} that is triggered by {PreloadingPredictor} + is recorded as a true positive or a false positive. These statistics are + used to compute precision of the preloading attempt. The statistics about + negative cases are not required to compute the precision and are not + recorded here. + + + + + + + isaboori@google.com + spelchat@chromium.org + sreejakshetty@chromium.org + jbroman@chromium.org + chrome-brapp-loading@chromium.org + + After the user starts a new navigation, the outcome of any eligible + preloading attempt of type {PreloadingType} that is triggered by + {PreloadingPredictor} or the lack of an attempt by an eligible predictor is + recorded as a true positive or a false negative. These statistics are used + to compute recall of the preloading attempt. The statistics about false + positive and true negative cases are not required to compute the recall and + are not recorded here. + + + + + + + spelchat@chromium.org + sreejakshetty@chromium.org + jbroman@chromium.org + liuwilliam@chromium.org + chrome-brapp-loading@chromium.org + + Records the triggering outcome of a preloading attempt of type + {PreloadingType} and triggered by {PreloadingPredictor} that happened on the + previous page load at the time a new navigation is started. + + + + + + + + diff --git a/histograms/metadata/print/OWNERS b/histograms/metadata/print/OWNERS new file mode 100644 index 000000000000..ae70a1b3498f --- /dev/null +++ b/histograms/metadata/print/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +awscreen@chromium.org +jimmyxgong@chromium.org +gavinwill@chromium.org diff --git a/histograms/metadata/print/histograms.xml b/histograms/metadata/print/histograms.xml new file mode 100644 index 000000000000..eb20415d8c17 --- /dev/null +++ b/histograms/metadata/print/histograms.xml @@ -0,0 +1,272 @@ + + + + + + + + + + + Data no longer needed 2022-06. + + rbpotter@chromium.org + thestig@chromium.org + + Actions performed by the user when the print destination search widget is + shown to the user. + + + + + thestig@chromium.org + dhoss@chromium.org + + Time from when print preview is initiated until the initial preview is sent + to the preview tab for rendering. + + + + + + + thestig@chromium.org + dhoss@chromium.org + + Time from when print preview is initiated until the preview PDF generation + is started. + + + + + thestig@chromium.org + + Count the number of requests received to show the manage printers dialog. + + + + + thestig@chromium.org + dhoss@chromium.org + + Count the total number of printers shown in destination drop down list. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Tracks the outcome of a print journey on ChromeOS. This metric attempts to + capture all expected outcomes when a user goes to print. Once Print Preview + is opened, this metric gets recorded after one of the following: either + Print Preview is canceled and closed, or the attempted print job completes. + + + + + rbpotter@chromium.org + awscreen@chromium.org + + Track type of documents printed (HTML vs PDF). Recorded immediately after a + user requests that a document be printed. + + + + + + Data no longer needed 2022-05. + + gavinwill@chromium.org + cros-peripherals@google.com + + Records true if the user printed, or false if the user canceled, while being + shown a red/error status for their selected printer on Chrome OS. + + + + + + Data no longer needed 2022-05. + + gavinwill@chromium.org + cros-peripherals@google.com + + Records true if the user printed, or false if the user canceled, while being + shown a green/good status for their selected printer on Chrome OS. + + + + + + Data no longer needed 2022-05. + + gavinwill@chromium.org + cros-peripherals@google.com + + Records true if the user printed, or false if the user canceled, while being + shown a grey/unknown status for their selected printer on Chrome OS. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Tracks the success rate of a print job on ChromeOS while the {StatusReason} + status is shown for the selected printer in Print Preview. The metric is + recorded once the print job completes. + + + + + + + + + + + + + + + + + + + + + + + thestig@chromium.org + awscreen@chromium.org + + Track the popularity of print settings. (Settings when printing to PDF are + excluded from this statistic.) + + + + + rbpotter@chromium.org + thestig@chromium.org + + Actions performed by the user interacting with print settings UI elements. + + + + + thestig@chromium.org + + The number of times regenerate preview requests received before the first + preview data is available. + + + + + + + thestig@chromium.org + dhoss@chromium.org + + Time taken to render and generate PDF for print preview. (Includes time to + reflow the page back to normal, but not the time to reflow the page to + prepare for printing.) + + + + + + + thestig@chromium.org + dhoss@chromium.org + + Time taken to render and generate PDF for print preview divided by the + number of pages. (Includes time to reflow the page back to normal, but not + the time to reflow the page to prepare for printing.) + + + + + thestig@chromium.org + dhoss@chromium.org + + Count how frequently a set of pre-defined print preview errors occur. + + + + + thestig@chromium.org + awscreen@chromium.org + Time taken to render to PDF for print preview. + + + + gavinwill@chromium.org + thestig@chromium.org + + Records the error that puts Print Preview into an error state. The NONE + error state is not recorded. In an error state, the Print button is + disabled. + + + + + gavinwill@chromium.org + thestig@chromium.org + + Records `Success` when Print Preview transitions from the initial NOT_READY + state to the READY state. Records `Failure` when Print Preview transitions + from the initial NOT_READY state to the ERROR state. This metric only + records for non-PDF destinations. + + + + + thestig@chromium.org + awscreen@chromium.org + + Action taken by the user in the preview tab such as print, cancel, print to + pdf and show advanced print settings dialog. + + + + + + diff --git a/histograms/metadata/printing/OWNERS b/histograms/metadata/printing/OWNERS new file mode 100644 index 000000000000..ae70a1b3498f --- /dev/null +++ b/histograms/metadata/printing/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +awscreen@chromium.org +jimmyxgong@chromium.org +gavinwill@chromium.org diff --git a/histograms/metadata/printing/histograms.xml b/histograms/metadata/printing/histograms.xml new file mode 100644 index 000000000000..abbf2cc7a5c3 --- /dev/null +++ b/histograms/metadata/printing/histograms.xml @@ -0,0 +1,448 @@ + + + + + + + + + + thestig@chromium.org + awscreen@chromium.org + + On Windows, the average size of a printed page after converting to EMF. + Recorded after conversion. + + + + + thestig@chromium.org + awscreen@chromium.org + + On Windows, the average size of a printed page after converting to EMF with + the reduced rasterization feature turned on. Recorded after conversion. + + + + + thestig@chromium.org + awscreen@chromium.org + + On Windows, the average size of a printed page after converting to level 2 + PostScript. Recorded after conversion. + + + + + thestig@chromium.org + awscreen@chromium.org + + On Windows, the average size of a printed page after converting to level 3 + PostScript. Recorded after conversion. + + + + + thestig@chromium.org + awscreen@chromium.org + + On Windows, the average size of a printed page after converting to level 3 + PostScript with Type 42 fonts. Recorded after conversion. + + + + + thestig@chromium.org + awscreen@chromium.org + + On desktop, the average size of a printed page after converting to PWG + Raster format. Recorded after conversion. + + + + + bmgordon@chromium.org + cros-printing-dev@chromium.org + + Records whether resolution of a .local address via mDNS was successful. The + metric is recorded during attempted setup of a printer discovered via mDNS. + + + + + skau@chromium.org + pawliczek@chromium.org + + Records the highest IPP version reported by a printer when we query the + printer for attributes. Useful to understand the population of printers + currently used. Recorded during printer setup for IPP printers. Recorded + only on ChromeOS. + + + + + bmgordon@chromium.org + cros-printing-dev@chromium.org + + Record if the request for IPP attributes was successful during printer + setup. This only occurs for setup attempts of IPP and IPPS printers. + Starting with M79, this is only recorded if the printer was reachable. + + Recorded when printers are queried for attributes in ChromeOS settings. + + + + + bmgordon@chromium.org + cros-printing-dev@chromium.org + + Record if the request for IPP attributes was successful in reaching the + printer. Recorded during the attempt to setup IPP/IPPS printers. + + + + + bmgordon@chromium.org + project-bolton@google.com + + Records the print job duration of a cancelled print job. Includes time spent + in a suspended or error state. Only recorded on Chrome OS. + + + + + bmgordon@chromium.org + project-bolton@google.com + + Records the print job duration of a done/completed print job. Includes time + spent in a suspended or error state. Only recorded on Chrome OS. + + + + + + + bmgordon@chromium.org + cros-printing-dev@chromium.org + + The final status of every print job that was succesfully queued. Only used + on Chrome OS. + + Recorded upon the completion of each print job by the CupsPrintJobManager. + + + + + luum@chromium.org + cros-printing-dev@chromium.org + + Records when a synced printer's outdated separate make and model strings + have been migrated to the new merged form. Recorded during initial sync + across PrintersSyncBridge. + + + + + bmgordon@chromium.org + project-bolton@google.com + + The number of detected network printers classified as Automatic, excluding + Saved printers. Recorded when the user navigates to the OS Settings Printing + page to set up printers. Only recorded on Chrome OS. + + + + + bmgordon@chromium.org + project-bolton@google.com + + The number of detected network printers classified as Discovered, excluding + Saved printers. Recorded when the user navigates to the OS Settings Printing + page to set up printers. Only recorded on Chrome OS. + + + + + bmgordon@chromium.org + project-bolton@google.com + + The number of detected network printers that have not been saved. Recorded + when the user navigates to the OS Settings Printing page to set up printers. + Only recorded on Chrome OS. + + + + + bmgordon@chromium.org + project-bolton@google.com + + Records the total size of the printed document (PDF) sent to CUPS. Only + recorded on Chrome OS. + + + + + bmgordon@chromium.org + src/chromeos/printing/OWNERS + + The protocol for a printer that was added. Used to track printer churn by + protocol. Only on Chrome OS. + + + + + nmuggli@google.com + project-bolton@google.com + + Tracks when the printer edit dialog is opened and certain user interactions. + Every time the dialog is opened, the first bucket will get incremented. + Additional buckets will get incremented for specific actions, such as + clicking the View PPD button. Therefore, the first bucket acts as the total + number of potential events and subsequest buckets track how many times + specific events occurred. Only on Chrome OS. + + + + + bmgordon@chromium.org + src/chromeos/printing/OWNERS + + The protocol for a printer that was removed. Used to track printer churn by + protocol. Only on Chrome OS. + + + + + bmgordon@chromium.org + src/chromeos/printing/OWNERS + + The number of printers shown in the discovered printers dialog during + printer set up. Only recorded on Chrome OS. + + + + + + + bmgordon@chromium.org + src/chromeos/printing/OWNERS + + The success or error code for the setup of a CUPS printer. Recorded when + setup is attempted through the settings dialogs. Only recorded on Chrome OS. + Printer setup results go into either this histogram or the + Printing.CUPS.ZeroconfPrinterSetupResult histogram - not both. + + + + + bmgordon@chromium.org + cros-printing-dev@chromium.org + + The success or error code for the setup of a CUPS printer. Recorded when + setup is attempted from the print preview dialog. Only recorded on Chrome + OS. Printer setup results go into either this histogram or the + Printing.CUPS.ZeroconfPrinterSetupResult.PrintPreview histogram - not both. + + + + + gavinwill@chromium.org + bmgordon@chromium.org + src/chromeos/printing/OWNERS + + The success or error code for the setup of printers classified as + "Discovered". Recorded when the user clicks the Setup button in OS + Printer Settings when attempting to save a printer. Only recorded on Chrome + OS. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the success outcome of a printer status query to a local printer. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the status reasons returned by a local printer from a printer status + query. Each returned printer status request can contain multiple status + reasons so summing these buckets will overcount the total # of status + queries. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the success outcome for a retried printer status query to an + unreachable local printer. Only recorded for the retry attempt. The result + for the first attempt is recorded by Printing.CUPS.PrinterStatusQueryResult. + + + + + bmgordon@chromium.org + cros-printing-dev@chromium.org + + Records the protocol for a selected printer in Chrome OS. Used to track + usage of the various printer protocols. Since a selection occurs when print + preview is opened, this will count at least one every time that happens if a + CUPS printer was selected. + + + + + bmgordon@chromium.org + project-bolton@google.com + + The total number of detected network printers. Recorded when the user + navigates to the OS Settings Printing page to set up printers. Only recorded + on Chrome OS. + + + + + dhoss@chromium.org + thestig@chromium.org + + Records instances in which print preview encounters an unknown PPD color + model. Recorded after print settings are received from print preview. Note + that this this histogram expired on 2021-02-01 and was extended on + 2021-03-30. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the source from which a USB printer was configured in Chrome OS. + Used to track relative usage of the various printer setup routes. Only emits + after a successful printer setup. + + + + + + + kdlee@chromium.org + cros-printing-dev@chromium.org + + The success or error code for the setup of a Zeroconf printer. Recorded when + setup is attempted through the settings dialogs. Only recorded on Chrome OS. + Printer setup results go into either this histogram or the + Printing.CUPS.PrinterSetupResult histogram - not both. + + + + + bmgordon@chromium.org + cros-printing-dev@chromium.org + + The success or error code for the setup of a Zeroconf printer. Recorded when + setup is attempted from the print preview dialog. Only recorded on Chrome + OS. Printer setup results go into either this histogram or the + Printing.CUPS.PrinterSetupResult.PrintPreview histogram - not both. + + + + + awscreen@chromium.org + thestig@chromium.org + + Records the final result of a print job where the interactions with the + system printing APIs are performed out-of-process in the PrintBackend + service. + + This covers printing initiated from Print Preview as well as from a system + print dialog for platforms which provide that. + + Recorded upon completion of each print job by PrintJobWorkerOop. + + + + + awscreen@chromium.org + thestig@chromium.org + + Records if any printer driver operations were found to fail because of + access-denied errors when used in a sandboxed utility process. This can + occur from queries for setting up print preview as well as when printing a + document to a destination. + + + + + pawliczek@chromium.org + bmgordon@chromium.org + + Records the number of print servers that must be queried according to + policies. Only non-zero values are recorded. The histogram is emitted when + ExternalPrintServers* policies are loaded and processed. It happens when a + profile is opened or when one of the policies is modified. + + + + + + diff --git a/histograms/metadata/privacy/OWNERS b/histograms/metadata/privacy/OWNERS new file mode 100644 index 000000000000..dc5050811e58 --- /dev/null +++ b/histograms/metadata/privacy/OWNERS @@ -0,0 +1,16 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. + +# For Privacy.* +andzaytsev@google.com +dullweber@chromium.org +harrisonsean@chromium.org + +# For Privacy.DIPS.* +wanderview@chromium.org + +# For PrivacySandbox.AggregationService.* +csharrison@chromium.org +johnidel@chromium.org diff --git a/histograms/metadata/privacy/histograms.xml b/histograms/metadata/privacy/histograms.xml new file mode 100644 index 000000000000..b44bba2653a1 --- /dev/null +++ b/histograms/metadata/privacy/histograms.xml @@ -0,0 +1,771 @@ + + + + + + + + + + dullweber@chromium.org + olesiamarukhno@chromium.org + + Whether AboutThisSite had a valid proto. Recorded when optimization hints + are available on pageload. + + + + + msramek@chromium.org + sauski@google.com + + The number of unique cookie domains for which accesses has been recorded for + in the Access Context Audit database. Logged on initialization of the Access + Context Audit DB on 1% of starts. + + + + + msramek@chromium.org + sauski@google.com + + Size of the Access Context Audit database file in KiB. Determined by + directly inspecting the database file. Logged on initialization of the + Access Context Audit DB on 1% of starts. + + + + + msramek@chromium.org + sauski@google.com + + The total number of access records stored in the Access Context Audit + database. Logged on initialization of the Acceess Context Audit DB on 1% of + starts. + + + + + msramek@chromium.org + sauski@google.com + + The number of unique origins associated with origin keyed storage APIs + recorded in the Access Context Audit database. Logged on initialization of + the Access Context Audit DB on 1% of starts. + + + + + msramek@chromium.org + sauski@google.com + + The number of unique top frame origins for which access to storage APIs has + been recorded in the Access Context Audit database. Logged on initialization + of the Acceess Context Audit DB on 1% of starts. + + + + + + Deprecated as of 12/2022. + + dullweber@chromium.org + eokoyomon@chromium.org + + The interaction performed on the accuracy tip UI. Recorded when UI is + closed. + + + + + + Deprecated as of 12/2022. + + dullweber@chromium.org + eokoyomon@chromium.org + + The amount of time the accuracy tip UI was shown. Recorded when UI is + closed. + + + + + + Deprecated as of 12/2022. + + dullweber@chromium.org + eokoyomon@chromium.org + + The number of accuracy tip dialogs that have been shown to the user. + Recorded when UI is closed. + + + + + + Deprecated as of 12/2022. + + dullweber@chromium.org + eokoyomon@chromium.org + The accuracy status of a page. Recorded on each page load. + + + + + + arabm@chromium.org + dullweber@chromium.org + + Horizontal metric to show CBD usage across various surfaces. Recorded when + the user deletes browsing data from one of these surfaces or when the + browser automatically deletes cookies because the user enabled + "ClearOnExit". + + + + + sauski@google.com + chrome-friendly-settings@google.com + + Interactions between sync and the cookies clear on exit setting. Only + recorded when the user has cookies clear on exit enabled. + + Recorded on all profiles, including for profiles such as guest profiles that + do not allow modification of this setting. (This value logged on those cases + is the default value for the setting.) + + + + + markusheintz@google.com + msramek@google.com + + Logged each time the user grants a consent for a feature integrated with the + consent auditor. The value indicates which feature. + + + + + markusheintz@google.com + msramek@google.com + + Logged each time the user denies or revokes a consent for a feature + integrated with the consent auditor. The value indicates which feature. + + + + + + + dullweber@chromium.org + huanzhong@chromium.org + + Whether third-party cookies are blocked in incognito mode or completely. + Recorded at the Profile startup. In case that "Block all cookies" + is selected in settings, this metric records BlockThirdParty. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + alimariam@google.com + olesiamarukhno@google.com + sauski@google.com + + Logging actions done by the user while interacting with the "Cookies in + use" dialog. + + + + + rtarpine@chromium.org + src/chrome/browser/dips/OWNERS + + Whether a {DIPSRedirectType} redirect accessed cookies and whether its + origin previously had user engagement. Recorded when redirecting between + different sites, {DIPSCookieMode}. + + In M-109, the DIPS Service was updated to explicitly not collect metrics for + non-user profiles, such as system profiles and ChromeOS Signin, LockScreen, + and LockScreenApp profiles. + + + + + + + wanderview@chromium.org + src/chrome/browser/dips/OWNERS + + The number of sites that may have had their storage cleared by DIPS. + + If DIPS deletion is on, this is the number of sites that have had storage + cleared by DIPS. Otherwise, this number is the sites that would've had their + storage cleared if the DIPS deletion feature was on. + + This is recorded every time the DIPS timer is fired, which is determined by + the `timer_delay` parameter of the DIPS feature. + + This is only logged for site-data clearing that occurs as a result of DIPS. + If a site contributes to this count then it has performed a potential + tracking action (e.g. writing to storage, bouncing the user, or both) + without the user interacting with that site before, or soon after, the + action. + + + + + + wanderview@chromium.org + src/chrome/browser/dips/OWNERS + + Number of entries present in the user's DIPS database (where there is 1 + entry per eTLD+1). For each user profile, reported at profile open (which + usually happens at startup). Also reported approximately once every 24 hours + thereafter, while the profile remains open and active. If the database is + new and therefore empty at startup, such as when a Guest or other OTR + profile is opened, a count of 0 will be reported. + + + + + wanderview@chromium.org + src/chrome/browser/dips/OWNERS + + Errors reported by SQLite while initializing or using the DIPS database. + + + + + wanderview@chromium.org + src/chrome/browser/dips/OWNERS + + The time taken to gather DIPS database health metrics. For each user + profile, these metrics are reported at profile open (which usually happens + at startup). They are also reported approximately once every 24 hours + thereafter, while the profile remains open and active. Note that Guest and + other OTR profiles (e.g. Incognito) will always startup with empty + databases, so that may explain why some databases collect health metrics so + quickly. + + + + + wanderview@chromium.org + src/chrome/browser/dips/OWNERS + + Logs how many attempts it took to initialize the DIPS database. Logs a value + of 0 if all attempts failed. + + + + + wanderview@chromium.org + src/chrome/browser/dips/OWNERS + + The size of the DIPS database file. For each user profile, reported at + profile open (which usually happens at startup). Also reported approximately + once every 24 hours thereafter, while the profile remains open and active. + Note that Guest and other OTR profiles (e.g. Incognito) will always startup + with empty databases, so that may explain why some database files are very + small. + + + + + wanderview@chromium.org + src/chrome/browser/dips/OWNERS + + The amount of time it takes to complete the DIPS deletion process. + + This is recorded each time after the DIPS timer fires and triggers deletion + of DIPS-eligible sites. This metric will be the result of |time when DIPS + deletion completed - time when DIPS deletion begins|. + + + + + wanderview@chromium.org + src/chrome/browser/dips/OWNERS + + Tracks certain errors that DIPS may encounter when running on a client. + + This is currently recorded when expected invariants are violated, such as + there being an open-ended time range in the database. See `DIPSErrorCode` + for all possible codes this histogram can output. + + Since these error codes can be recorded several times by a client, using + per-client aggregation when analyzing this metric is recommended. + + + + + jdh@chromium.org + rtarpine@chromium.org + src/chrome/browser/dips/OWNERS + + The amount of time after a user interacts with a site until the site + persists state (e.g. cookies), {DIPSCookieMode} (where site = eTLD+1). Not + recorded if state is written before interaction takes place (see analogous + histogram below). + + In M-109, the DIPS Service was updated to explicitly not collect metrics for + non-user profiles, such as system profiles and ChromeOS Signin, LockScreen, + and LockScreenApp profiles. + + + + + + jdh@chromium.org + rtarpine@chromium.org + src/chrome/browser/dips/OWNERS + + The amount of time after a navigation to a site commits until a renderer + initiated navigation (without user activation) is started to a different + site. Not recorded if the redirecting site does not access state (e.g. + cookies) or takes longer than 10 seconds to initiate the redirect (bounce). + + In M-109, the DIPS Service was updated to explicitly not collect metrics for + non-user profiles, such as system profiles and ChromeOS Signin, LockScreen, + and LockScreenApp profiles. + + + + + jdh@chromium.org + rtarpine@chromium.org + src/chrome/browser/dips/OWNERS + + The amount of time after a site persists state (e.g. cookies) until the user + interacts with the site, {DIPSCookieMode} (where site = eTLD+1). Not + recorded if interaction takes place before state is written (see analogous + histogram above). + + In M-109, the DIPS Service was updated to explicitly not collect metrics for + non-user profiles, such as system profiles and ChromeOS Signin, LockScreen, + and LockScreenApp profiles. + + + + + + + Logged on profile open, including for profiles such as guest profiles that + do not allow modification of this setting. (This value logged on those cases + is the default value for the setting.) Replaced in M-110 with the histogram + Privacy.DoNotTrackSetting2, which is similar but only emitted on regular + profiles. + + + + mkwst@chromium.org + msramek@chromium.org + + Whether the Do Not Track setting is enabled. Recorded at the profile open. + + + + + + + mkwst@chromium.org + msramek@chromium.org + + Whether the Do Not Track setting is enabled. Recorded at the profile open, + only for regular profiles (not Incognito, Guest, etc.). + + + + + roagarwal@chromium.org + eokoyomon@chromium.org + fsenra@google.com + + Tracks interactions with the Quick Delete feature, including the entry + points and the dialog. + + + + + + Removed in M96. Replaced by + Navigation.MainFrame.ThirdPartyCookieBlockingEnabled. + + dullweber@chromium.org + huanzhong@chromium.org + + Records whether third party cookie blocking was enabled for a site on page + load. Only recorded for users who enabled the cookie controls ui. + + + + + + + mkwst@chromium.org + msramek@chromium.org + dullweber@chromium.org + + Whether the third party cookie blocking setting is enabled. Recorded at the + Profile startup. + + Previously recorded as the "ThirdPartyCookieBlockingEnabled" and + "ThirdPartyCookieBlockingDisabled" actions. + + This histogram is only recorded {RegularProfileFiltered}. + + + + + Deprecated in M109. Used to include data from both regular and irregular + profiles, such as incognito profiles. Consult the new histograms with + the RegularProfile tag instead. + + + + + + + + alexmt@chromium.org + linnan@chromium.org + + Error info for fetching public keys from the processing server. Recorded for + each fetch request. The HTTP response code is recorded if there is no net + error code for the request. + + + + + + Replaced with PrivacySandbox.AggregationService.KeyFetcher.Status2, 06/2022. + + alexmt@chromium.org + linnan@chromium.org + + Records the high level status of each key network fetch request. + + + + + alexmt@chromium.org + linnan@chromium.org + + Records the high level status of each key network fetch request. + + + + + alexmt@chromium.org + linnan@chromium.org + + Records the high level status of each aggregatable report assembly request. + Recorded for reports requested from any API (e.g. Attribution Reporting + API). + + + + + alexmt@chromium.org + linnan@chromium.org + + Error info for sending an aggregatable report to a reporting endpoint, + recorded for every aggregatable report sent. The HTTP response code is + recorded if there is no net error code for the request. + + + + + alexmt@chromium.org + linnan@chromium.org + + Records the high level request status for each aggregatable report being + sent to a reporting endpoint. Recorded for reports requested from any API + (e.g. Attribution Reporting API). + + Recorded for every aggregatable report sent. It might retry in case of + failure but only the final status will be counted for each report. + + + + + + Replaced with PrivacySandbox.AggregationService.ReportSender.Status, + 02/2022. + + alexmt@chromium.org + linnan@chromium.org + + Records the high level request status of each aggregatable report. These + reports are requested by APIs that rely on private, secure aggregation (e.g. + Attribution Reporting API). + + Recorded for every aggregatable report sent. It might retry in case of + failure but only the final status will be counted for each report. + + + + + alexmt@chromium.org + linnan@chromium.org + + Among scheduled report requests that succeeded (eventually), records the + number of retries needed, i.e. how many send attempts failed. For example, 2 + if the attempts were: fail, fail, success. + + + + + alexmt@chromium.org + linnan@chromium.org + + Records the final status of a scheduled report request, i.e. whether it + succeeded eventually, including after retries (if any). In case of failure, + records the type of failure in the final retry attempt. + + + + + + PrivacySandbox.AggregationService.Storage.Sql.CreationTime2 which only + records when Threadticks is supported, 10/2022. + + alexmt@chromium.org + linnan@chromium.org + + Records the time it took to initialize a new aggregation service database + from scratch. Recorded when the aggregation service database finishes + initialization. Note that 0 is recorded if `ThreadTicks` is not supported. + + + + + alexmt@chromium.org + linnan@chromium.org + + Records the time it took to initialize a new aggregation service database + from scratch. Recorded when the aggregation service database finishes + initialization. Note that no event is recorded if `ThreadTicks` is not + supported. + + + + + alexmt@chromium.org + linnan@chromium.org + + Records initialization statuses of AggregationServiceStorageSql. Note: + currently AggregationServiceStorageSql is initialized lazily. + + + + + alexmt@chromium.org + linnan@chromium.org + + Records whether there was sufficient capacity to store the request, i.e. + that the per-reporting origin limit had not been reached. Recorded for each + StoreRequest attempt. + + + + + alexmt@chromium.org + linnan@chromium.org + + Records the final status of an *unscheduled* report request, i.e. whether it + was successfully sent and, if not, the type of failure. These are typically + debug reports. + + + + + anthonygarant@chromium.org + alexmt@chromium.org + measurement-api-dev+metrics@google.com + + Records the validity of budget entries read from disk. Recorded once every + time that budget is attempted to be consumed to reflect the state of stored + budget data for the requested origin and API. If multiple errors are found, + only the first encountered/detected is reported. As a result, reported + errors will be skewed in favor of checks performed first, but we expect + multiple instances of corruption for budget entries on disk to be rare. + + + + + alexmt@chromium.org + linnan@chromium.org + + Records the result of a request to consume budget for the Private + Aggregation API. Recorded for each individual aggregatable report request + (but not each individual histogram contribution). + + + + + alexmt@chromium.org + linnan@chromium.org + + Records the initialization statuses of PrivateAggregationBudgetStorage, + indicating whether it was successful and, if not, why it failed. Recorded + when the initialization reply callback is run on the main sequence. + + + + + alexmt@chromium.org + linnan@chromium.org + + Records whether PrivateAggregationBudgetStorage has already been shut down + when the initialization finishes (i.e. the reply callback is run on the main + sequence). Recorded when that callback is run. + + + + + alexmt@chromium.org + linnan@chromium.org + + Records whether a call to PrivateAggregationHost::SendHistogramReport() + successfully resulted in the report request being forwarded to the manager + and, if not, the reason for failure. Further, breaks out the case of too + many contributions, where the request is forwarded but is truncated. Note + that, even if successfully forwarded, the report may still be rejected by + the budgeter or in the aggregation_service layer. Recorded for every call. + + + + + linnan@chromium.org + johnidel@chromium.org + sauski@chromium.org + + Whether or not the {ApiType} operation was allowed by Privacy Sandbox + settings and why. Recorded at the time settings are checked when performing + the operation. + + + + + + + + + + + + + + + + + diff --git a/histograms/metadata/privacy_budget/OWNERS b/histograms/metadata/privacy_budget/OWNERS new file mode 100644 index 000000000000..e67e70807b59 --- /dev/null +++ b/histograms/metadata/privacy_budget/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. + +antoniosartori@chromium.org diff --git a/histograms/metadata/privacy_budget/histograms.xml b/histograms/metadata/privacy_budget/histograms.xml new file mode 100644 index 000000000000..cafad10949cd --- /dev/null +++ b/histograms/metadata/privacy_budget/histograms.xml @@ -0,0 +1,112 @@ + + + + + + + + + + antoniosartori@chromium.org + areimers@chromium.org + + Records the variance of the latencies of clock skew samples used for the + computation of the clock drift. Only recorded for background fetches, which + are enabled only via a feature parameter (and disabled by default), and only + recorded if clock drift is enabled via its feature parameter. + + + + + antoniosartori@chromium.org + areimers@chromium.org + + Records the absolute value of the computed clock drift (time derivative of + clock skew), when negative. Only recorded for background fetches, which are + enabled only via a feature parameter (and disabled by default), and only + recorded if clock drift is enabled via its feature parameter. + + + + + antoniosartori@chromium.org + areimers@chromium.org + + Records the absolute value of the computed clock drift (time derivative of + clock skew), when positive. Only recorded for background fetches, which are + enabled only via a feature parameter (and disabled by default), and only + recorded if clock drift is enabled via its feature parameter. + + + + + antoniosartori@chromium.org + areimers@chromium.org + + Records the duration of the network round-trip performed to fetch the time + from the network server. Only recorded for background fetches, which are + enabled only via a feature parameter (and disabled by default). + + + + + antoniosartori@chromium.org + areimers@chromium.org + + Records the standard deviation of the last three fetch latencies (i.e. the + durations of the last three network round-trip performed to fetch the time + from the network server). Only recorded for background fetches, which are + enabled only via a feature parameter (and disabled by default). + + + + + antoniosartori@chromium.org + areimers@chromium.org + + Records the absolute value of the computed clock skew (local clock - remote + clock), when negative. Only recorded for background fetches, which are + enabled only via a feature parameter (and disabled by default). + + + + + antoniosartori@chromium.org + areimers@chromium.org + + Records the computed clock skew (local clock - remote clock), when positive. + Only recorded for background fetches, which are enabled only via a feature + parameter (and disabled by default). + + + + + antoniosartori@chromium.org + mkwst@chromium.org + + Indicates whether the Finch configuration for the privacy budget + identifiability study was validated successfully. + + + + + + diff --git a/histograms/metadata/profile/OWNERS b/histograms/metadata/profile/OWNERS new file mode 100644 index 000000000000..1ae15479a23d --- /dev/null +++ b/histograms/metadata/profile/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +alexilin@chromium.org diff --git a/histograms/metadata/profile/histograms.xml b/histograms/metadata/profile/histograms.xml new file mode 100644 index 000000000000..f96e51cd94e4 --- /dev/null +++ b/histograms/metadata/profile/histograms.xml @@ -0,0 +1,980 @@ + + + + + + + + + + rogerta@chromium.org + The frequency of ways that new user profiles are added. + + + + droger@chromium.org + chrome-signin-team@google.com + + Records the outcome of signed-in profile creation whenever it's started (by + user choosing to sign-in in the first screen of the profile creation flow). + + + + + droger@chromium.org + chrome-signin-team@google.com + + Classification of what gaia names appear or appeared in this profile since + the last time gaia cookies got deleted. Thus, this also includes signed-out + accounts. In order to protect privacy, only reports whether multiple + distinct gaia names appeared in this profile and if so, whether sync is + enabled for one of them. Furthermore, this metric uses a low-entropy hash to + detect distinct names. In case of a rare hash collision (less than 0.1% of + cases), multiple names get recorded as a single name. Recorded on every + activation of a Chrome window (for the respective profile). + + + + + bsazonov@chromium.org + chrome-signin-team@google.com + + Track user interactions that can be performed in the Android account + management menu. + + + + + etienneb@chromium.org + gab@chromium.org + The number of installed apps when a profile is opened. + + + + droger@chromium.org + chrome-signin-team@google.com + The frequency of selection of each avatar. + + + + etienneb@chromium.org + gab@chromium.org + Size of the bookmarks database. + + + + msarda@chromium.org + tangltom@chromium.org + + Recorded every time a browser window becomes active. Each profile on a + client is assigned a unique bucket, i.e. whenever a browser window of + profile x becomes active, an entry is recorded in bucket x. + + Example: A user has 2 profiles and opens 1 browser window for each of them. + When the user switches back and forth between the windows, multiple entries + will be recorded in bucket 1 and 2, corresponding to the profiles. + + Note: The guest profile has bucket 0. Regular profiles start at bucket 1. + Incognito browser windows count towards the original profile. + + + + + etienneb@chromium.org + gab@chromium.org + Size of the cookies database. + + + + + + msarda@chromium.org + droger@chromium.org + anthonyvd@chromium.org + + This histogram tracks which UI screen was used to initiate and confirm the + deletion of a profile. This does not track when the profile is actually + deleted, which is an asynchronous process that happens later. Not all + buckets in the histogram correspond to profile deletion so the sum is not + the count of deleted profiles. + + + + + alexilin@chromium.org + droger@chromium.org + msalama@chromium.org + + This histogram tracks the context of profile deletion whenever a profile is + scheduled for deletion (from user action in the UI). Only recorded if the + profile has a valid entry in ProfileAttributesStorage. + + + + + rhalavati@chromium.org + chrome-privacy-core@google.com + + Track if the off-the-record profile was immidiately destroyed when asked to + be destroyed, or was scheduled for a delayed destruction, and possibly was + not destroyed properly after the delay and was crashed. + + + + + msarda@chromium.org + tangltom@chromium.org + + This histogram tracks whether the accounts cached in the GAIA cookie service + manager are stale when presenting the user menu when DICE is enabled. + + + + + nicolaso@chromium.org + cbe-eng@google.com + + Whether any profile reached a refcount of 0 at any point, prior to exiting + Chrome. Recorded during teardown. + + + + + etienneb@chromium.org + gab@chromium.org + Size of the extension cookies database. + + + + etienneb@chromium.org + gab@chromium.org + Size of the favicons database. + + + + rhalavati@chromium.org + chrome-incognito@google.com + + Records if a Guest session is started by user's request or is forced by a + policy. This is recorded when a Guest profile is created. + + + + + rhalavati@chromium.org + chrome-incognito@google.com + + This histogram records the lifetime duration of an off-the-record Guest + profile. It is recorded once the profile for the Guest session is closed. + + + + + dgn@chromium.org + chrome-signin-team@google.com + + Records the type of Guest profile created, either a parent guest or the + first child (off-the-record) guest profile for the active parent guest + profile. It is recorded during the guest profile creation. + + + + + etienneb@chromium.org + gab@chromium.org + Size of the history database. + + + + rhalavati@chromium.org + chrome-incognito@google.com + + This histogram records the lifetime duration of incognito profiles. It is + recorded once an off the record profile for an incognito session is closed. + From M91, this metric is not recorded for ChromeOS non user-triggered + Incognito profiles. + + + + + rhalavati@chromium.org + chrome-incognito@google.com + + This histogram records the number of mainframe navigations that have been + done during one Incognito session. It is recorded once an off the record + profile for an incognito session is closed. From M91, this metric is not + recorded for ChromeOS non user-triggered Incognito profiles. + + + + + rhalavati@chromium.org + chrome-incognito@google.com + + This histogram records the duration of an Incognito session on Android, when + it goes to background or is closed by the user. The session duration is + considered from when the Incognito profile is created. + + + + + rhalavati@chromium.org + chrome-incognito@google.com + + When Chrome comes back to foreground on Android and it already has an + Incognito session, this histogram records the last duration time reported by + 'Profile.Incognito.MovedToBackgroundAfterDuration' metric. The subtraction + of these two histograms can give a histogram of Incognito session duration. + + + + + nicolaso@chromium.org + cbe-eng@google.com + + Recorded during BrowserProcess teardown. Indicates that a Profile still has + ScopedProfileKeepAlive objects referencing it, of the given origin. This is + a sign of a bug, or incorrect usage of the ScopedProfileKeepAlive API. + + Only regular Profiles are considered for this metric (no Incognito, Guest, + or System Profiles). + + + + + droger@chromium.org + rsult@google.com + chrome-signin-team@google.com + + Records the number of KeyedServices active for the System {ProfileType} + Profile. This record is captured when the System {ProfileType} Profile is + destroyed. It is currently done only when Chrome exits. In the future, there + are plans to destroy System profiles as soon as the profile picker window is + closed. + + + + + This histogram considered a KeyedService as active even if NULL. This + was fixed in M-106 in commit 903912cd. Non-NULL KeyedServices were no + longer counted. However, that change forgot to revise the histogram + names. The meaning of values in his histogram changed. In order to avoid + having a histogram with a meaning that differs by Chrome version, this + histogram was renamed in M-107 to Original-M-107. Original-M-107 counts + only non-NULL KeyedServices. + + + + + + This histogram considered a KeyedService as active even if NULL. This + was fixed in M-106 in commit 903912cd. Non-NULL KeyedServices were no + longer counted. However, that change forgot to revise the histogram + names. The meaning of values in his histogram changed. In order to avoid + having a histogram with a meaning that differs by Chrome version, this + histogram was renamed in M-107 to OTR-M-107. OTR-M-107 counts only + non-NULL KeyedServices. + + + + + + + + dgn@chromium.org + chrome-signin-team@google.com + + Tracks how often we have to render Lacros FRE whose welcome pages don't have + a given name to display. We expect that it's very rare, if we have a + non-trivial number of these without a given name, we will have to redesign + the experience to nicely accomodate for it. + + + + + dgn@chromium.org + droger@chromium.org + + Records the entry point that triggered the lacros first run for the primary + profile being shown. This is recorded when the first run is shown. If the + FRE is skipped, this is never recorded. If the FRE is exited early and needs + to be shown again, or if the user re-triggers the FRE while it is already + shown, there would be more than one record for that install. + + + + + dgn@chromium.org + droger@chromium.org + + Records the outcome of the lacros first run for the primary profile (also in + the case it gets skipped silently). + + + + + nicolaso@chromium.org + cbe-eng@google.com + + Number of Profiles that are currently loaded in memory, with a non-zero + refcount. Recorded 30 minutes after startup, and every 30 minutes + afterwards. Only regular Profiles are considered for this metric (no + Incognito, Guest, or System Profiles). + + See also Profile.ZombieProfileCount, the number of Profiles with a refcount + of 0. + + + + + droger@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + Recorded when an actionable item(e.g. button, link) in the profile menu is + clicked. + + + + + rogerta@chromium.org + + Counts of users added and deleted. Percentages are not meaningful. Please + look at the ratio of the counts/percentages. + + + + + nicolaso@chromium.org + cbe-eng@google.com + + Recorded when a profile directory gets deleted from disk, e.g. because it + was an ephemeral profile, or the user requested its destruction. Indicates + whether the operation succeeded or failed. + + If the operation fails, it may be retried (up to 3 times). Each try is + tracked as a separate enum value. + + + + + msarda@chromium.org + droger@chromium.org + + Counts the number of Google-managed accounts linked to a profile. This may + be counted multiple times per profile. Please review with the "Show + user counts" option enabled on the dashboard. + + + + + droger@chromium.org + feuunk@chromium.org + + Counts the number of profiles on a user's machine every 24 hours while + Chrome is running. + + As opposed to Profile.NumberOfProfiles, this counts only profiles that have + been used in the last 28 days. + + + + + agawronska@chromium.org + michaelpg@chromium.org + cros-families-eng@google.com + + Counts the number of locally managed profiles on a user's machine every 24 + hours while Chrome is running, among cases with at least one profile. + + This counts only profiles that have been used in the last 28 days. + + Might have incomplete data between 2021-03-12 and 2021-05-26. + + + + + droger@chromium.org + chrome-signin-team@google.com + + Counts the number of profiles on a user's machine every 24 hours while + Chrome is running. + + This counts the total number of profiles on the user's device, regardless of + whether they've been used recently. + + + + + droger@chromium.org + chrome-signin-team@google.com + + Records the count of profiles for each profile switch (incl. switching + between concurrently open profiles by activating their browser windows). The + count excludes the Guest profile so records in bucket 1 denote switches + between the single profile and the Guest profile. + + + + + droger@chromium.org + chrome-signin-team@google.com + + Counts the number of signed-in (syncing) profiles on a user's machine every + 24 hours while Chrome is running. + + This counts only profiles that have been used in the last 28 days. + + + + + msarda@chromium.org + droger@chromium.org + + Counts the number of profiles unused within the past 28 days on a user's + machine. This is recorded every 24 hours while Chrome is running. + + + + + agawronska@chromium.org + michaelpg@chromium.org + cros-families-eng@google.com + + Tracks the percentage (0-100) of profiles that are locally managed, recorded + when Chrome starts up. + + + + + msarda@chromium.org + alexilin@chromium.org + + Browsing session duration in minutes, recorded per profile. Each profile on + a client is assigned a unique bucket. + + Recorded when the user switches profiles, after some time of + inactivity(usually 5 minutes) or at browser shutdown. + + Example: A user has 2 profiles. They open a browser window of profile 1 and + interact with the browser for 8 minutes. Then they open a browser window of + profile 2 and interact with the browser for 3 minutes. Then they do nothing + (=stay inactive) for while. The recorded values will be: (bucket 1: 8), + (bucket 2: 3). + + Note: The guest profile has bucket 0. Regular profiles start at bucket 1. + Incognito profiles count towards the original profile. + + + + + droger@chromium.org + chrome-signin-team@google.com + + The state of profile avatars as would be displayed to the user in the + profile picker. Recorded on startup of Chrome and whenever Chrome is used + after at least 30 minutes of inactivity. + + + + + droger@chromium.org + chrome-signin-team@google.com + + The number of days since a profile was last used. Recorded on startup of + Chrome and whenever Chrome is used after at least 30 minutes of inactivity. + + + + + droger@chromium.org + chrome-signin-team@google.com + + The state of profile name as would be displayed to the user in the profile + picker. Recorded on startup of Chrome and whenever Chrome is used after at + least 30 minutes of inactivity. + + + + + droger@chromium.org + chrome-signin-team@google.com + + The sync status of the profile. Recorded on startup of Chrome and whenever + Chrome is used after at least 30 minutes of inactivity. + + + + + droger@chromium.org + chrome-signin-team@google.com + + The type of profile's unconsented primary account. Recorded on startup of + Chrome and whenever Chrome is used after at least 30 minutes of inactivity. + + + + + Please list the metric's owners. Add more owner tags as needed. + + Counts of when users switch to using their GAIA photo instead of an avatar + icon or the opposite when they switch back to an avatar icon instead of + their GAIA photo. + + + + + msalama@chromium.org + chrome-signin-team@google.com + + Number of times and ways the user customized the sync options of their + profile. Percentages are not meaningful. To determine percentages, take the + count of a given action over the count of number of customizations. The + histogram has expired in '2018-08-30' and is resurrected in '2020-03-09'. + + + + + etienneb@chromium.org + gab@chromium.org + Size of the top sites database. + + + + etienneb@chromium.org + gab@chromium.org + Total size of all history databases. + + + + etienneb@chromium.org + gab@chromium.org + Total size of the profile data (excluding sub-folders). + + + + robertshield@chromium.org + + Indicates whether a profile had a reset trigger that caused it to launch a + reset flow. The presence of this trigger is recorded during profile + creation. + + + + + msarda@chromium.org + droger@chromium.org + + Recorded when a profile name and/or avatar was updated from the settings + page. + + + + + + + msarda@chromium.org + tangltom@chromium.org + + Helper histogram to track user actions per profile. Recorded when there is + an active profile browser instance and a UMA UserAction is recorded, i.e. if + there's an active profile, a recording of a UMA UserAction will result in a + recording of a sample in this histogram. + + Each profile on a client is assigned a unique bucket, i.e. whenever a user + action happens in a browser of profile x, an entry is recorded in bucket x. + + This histogram is used in the profile dashboard, see go/profile-metrics and + go/profile-metrics-dashboard. + + Example: A user has 2 profiles and opens a browser window for each of them. + When the user adds a new tab in each of the browsers, an entry is recorded + in bucket 1 and 2, corresponding to the profiles. (Adding a new tab is a + recorded user metrics action.) + + Note: The guest profile has bucket 0. Regular profiles start at bucket 1. + Incognito profiles count towards the original profile. + + + + + etienneb@chromium.org + gab@chromium.org + Size of the visited links database. + + + + etienneb@chromium.org + gab@chromium.org + Size of the web data database. + + + + nicolaso@chromium.org + cbe-eng@google.com + + Number of Profiles that are in a "zombie" state. Recorded 30 + minutes after startup, and every 30 minutes afterwards. Only regular + Profiles are considered for this metric (no Incognito, Guest, or System + Profiles). A "zombie" profile is one of 2 things, depending on the + DestroyProfileOnBrowserClose (DPoBC) variation: + + If DPoBC is false: the Profile has a refcount of 0, but is still loaded in + memory. + + If DPoBC is false: the Profile object was destroyed, and isn't loaded in + memory anymore. + + When a Profile is destroyed but gets loaded from disk again, it stops being + a zombie. + + See also Profile.LiveProfileCount, the number of profiles with a non-zero + refcount. + + + + + vasilii@chromium.org + ewald@chromium.org + + Whether any profile was shown in the list when the profile chooser was + opened. + + + + + msalama@chromium.org + chrome-signin-team@google.com + + Records the state of the "Ask on startup" user preference that + controls whether the profile picker should be shown on startup. Recorded on + startup of Chrome. + + + + + msalama@chromium.org + chrome-signin-team@google.com + + Records the state of the "Ask on startup" checkbox upon user + action to check/uncheck "Ask on startup" in the profile picker + main screen. + + + + + dgn@chromium.org + chrome-signin-team@google.com + + [Desktop] The reason for which profile picker startup profiling was deemed + complete. Logged once per session when the user opens a profile from the + profile picker shown on startup. + + Used to understand user behavior shifts when + ProfilePicker.FirstProfileTime.FirstWebContentsNonEmptyPaint regresses + + + + + dgn@chromium.org + chrome-signin-team@google.com + + Measure the elapsed time from when the user selects a profile on the startup + profile picker to the first non empty paint of the first web contents. This + is recorded when the user selects an existing profile from that profile + picker shown on startup. + + Together with ProfilePicker.StartupTime.FirstPaint.FromApplicationStart, + this metric is intended to capture the startup latency for a common case + where Startup.FirstWebContents.NonEmptyPaint3 is not recorded due to the + profile picker interrupting browser startup. + + + + + dgn@chromium.org + for-you-fre@google.com + + Records the entry point that triggered the first run experience. This is + recorded right before the first run is shown. If the FRE is skipped, this is + never recorded. If the FRE is exited early and needs to be shown again + (relevant only on Lacros where we support showing the FRE more than once), + or if the user re-triggers the FRE while it is already shown, there would be + more than one record for that install. + + Note: Profile.LacrosPrimaryProfileFirstRunEntryPoint on Lacros records the + same data. + + + + + dgn@chromium.org + for-you-fre@google.com + + Records the status when the first run experience is exited. Note that some + experiments can override the behaviour at the end of the first run, based on + the the status. This histogram is recorded before the override happens. + + + + + dgn@chromium.org + for-you-fre@google.com + + Records the reason why the first run experience was marked finished. This + aims at tracking how often policies or some pre-existing state suppresses + the first run experience. It is tracked by the first run service itself, + when the flow completes (or is suppressed). + + + + + dgn@chromium.org + jyammine@google.com + chrome-signin-team@google.com + + Records the time between the first run of Chrome on Desktop is loaded and + the organization name is available to be shown in the enterprise disclaimer. + This is only logged if the device is managed and the policy store is loaded + in the specified time delay. + + + + + dgn@chromium.org + jyammine@google.com + chrome-signin-team@google.com + + Records the loading state of the clould policy store when it is loaded or + after a specified time delay. This is recorded for the first run experience + on desktop for managed devices. This is needed to track if the managed + organization name has been properly displayed in the first run experience + managed disclaimer. + + + + + dgn@chromium.org + for-you-fre@google.com + + Records first run service creations in this current profile. true is + recorded if the service was successfully created, and false is recorded if + it was suppressed because the feature is disabled. If this is not the first + run or the profile is not able to display the first run experience, nothing + will be recorded. + + + + + msalama@chromium.org + chrome-signin-team@google.com + + Records the reason why the profile picker has been shown to the user. + Recorded every time the profile picker window is shown or reactivated. + + + + + droger@chromium.org + dgn@chromium.org + chrome-signin-team@google.com + + The startup mode, used to decide whether the profile picker is shown at + startup. Recorded during Chrome startup, at {StartupStep}. + + + + + + + + + + + droger@chromium.org + dgn@chromium.org + chrome-signin-team@google.com + + The reason for the startup mode, used to decide whether the profile picker + is shown at startup. Recorded during Chrome startup, at {StartupStep}. + + + + + + + + + alexilin@chromium.org + dgn@chromium.org + chrome-signin-team@google.com + + Records the time between Chrome startup and the call to + ProfilePickerView::Display(). Only recorded when the profile picker is shown + at startup. + + + + + alexilin@chromium.org + dgn@chromium.org + chrome-signin-team@google.com + + Records the time between web view creation and the first paint. Only + recorded when the profile picker is shown at startup. + + + + + alexilin@chromium.org + dgn@chromium.org + chrome-signin-team@google.com + + Records the time from the application start to the first non-empty paint of + proflie picker's web contents. Only recorded when the profile picker is + shown at startup. + + See Startup.FirstWebContents.NonEmptyPaint3 for a definition of application + start. + + + + + alexilin@chromium.org + dgn@chromium.org + chrome-signin-team@google.com + + Records the time between web view creation and main view being initialized + in javascript. Only recorded when the profile picker is shown at startup. + + + + + alexilin@chromium.org + dgn@chromium.org + chrome-signin-team@google.com + + Records the time between ProfilePickerView::Display() is called and the web + view creation. Only recorded when the profile picker is shown at startup. + + + + + msalama@chromium.org + chrome-signin-team@google.com + + Represents user navigation in the profile picker. Recorded every time a + different UI is visible in the profile picker. + + + + + msalama@chromium.org + chrome-signin-team@google.com + + Records the action performed by the user in the profile picker. + + + + + proberge@chromium.org + + Encodes from where the request for resetting the profile settings + originated. + + + + + + diff --git a/histograms/metadata/quick_answers/OWNERS b/histograms/metadata/quick_answers/OWNERS new file mode 100644 index 000000000000..8961bd822a3d --- /dev/null +++ b/histograms/metadata/quick_answers/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +xiaohuic@chromium.org diff --git a/histograms/metadata/quick_answers/histograms.xml b/histograms/metadata/quick_answers/histograms.xml new file mode 100644 index 000000000000..d8c165276456 --- /dev/null +++ b/histograms/metadata/quick_answers/histograms.xml @@ -0,0 +1,341 @@ + + + + + + + + + + + + + + + + + + + + + + + angelaxiao@chromium.org + yawano@google.com + llin@google.com + croissant-eng@chromium.org + + For quick answer impression that fulfills a user's intent, records the + result type. ChromeOS only. + + + + + angelaxiao@chromium.org + yawano@google.com + llin@google.com + croissant-eng@chromium.org + + For quick answer impression that fulfills a user's intent, records the + impression duration. ChromeOS only. {QuickAnswersClickResultType} + + + + + + + + angelaxiao@chromium.org + yawano@google.com + llin@google.com + croissant-eng@chromium.org + + For every quick answer click event, records the result type. ChromeOS only. + + + + + angelaxiao@chromium.org + yawano@google.com + llin@google.com + croissant-eng@chromium.org + + For every quick answer click event, records the duration between fetch + finish and user clicks. ChromeOS only. {QuickAnswersClickResultType} + + + + + + + + angelaxiao@chromium.org + yawano@google.com + croissant-eng@chromium.org + + Records whether or not the user interacted (via clicking) with a context + menu, whether or not that menu included any Quick Answers. Recorded when the + menu is closed. This metric can be used as a baseline for Quick Answers + engagement metrics, which record whether users click on context menus that + *do* include a Quick Answers card. Recorded on ChromeOS only. + + + + + angelaxiao@chromium.org + yawano@google.com + croissant-eng@chromium.org + + Records the amount of time the context menu was shown before close if the + user {InteractionType} (via clicking) with the context menu. Recorded on + ChromeOS only. + + + + + + + + + angelaxiao@chromium.org + yawano@google.com + croissant-eng@chromium.org + + For Quick answers fetch, records the query text language of dictionary + intent generated on device. ChromeOS only. + + + + + angelaxiao@chromium.org + yawano@google.com + croissant-eng@chromium.org + + For Quick answers fetch, records the source type of dictionary intent + generated on device. ChromeOS only. + + + + + angelaxiao@chromium.org + yawano@google.com + croissant-eng@chromium.org + + Record the Quick Answers exit point point when the Quick Answers UI is + dismissed. ChromeOS only. + + + + + angelaxiao@chromium.org + yawano@google.com + croissant-eng@chromium.org + + Record the Quick Answers feature enabled status when the first user session + starts. ChromeOS only. + + + + + angelaxiao@chromium.org + yawano@google.com + llin@google.com + croissant-eng@chromium.org + + For quick answer fetch, records the intent generated on-device. ChromeOS + only. + + + + + angelaxiao@chromium.org + yawano@google.com + llin@google.com + croissant-eng@chromium.org + + For every quick answers fetch, records the duration between fetch start and + fetch finish. ChromeOS only. + + + + + angelaxiao@chromium.org + yawano@google.com + llin@google.com + croissant-eng@chromium.org + + For every quick answers fetch, records the result status. ChromeOS only. + + + + + angelaxiao@chromium.org + yawano@google.com + croissant-eng@chromium.org + + Records the intent type when network error occurs during the quick answers + fetch. ChromeOS only. + + + + + angelaxiao@chromium.org + yawano@google.com + croissant-eng@chromium.org + + Records the Http response codes when network error occurs when fetching + {IntentType} results. ChromeOS only. + + + + + + + + + + angelaxiao@chromium.org + yawano@google.com + croissant-eng@chromium.org + + For every quick answer request, records the length of the selected text that + is being used for fetching {IntentType} results. ChromeOS only. + + + + + + + + + + angelaxiao@chromium.org + yawano@google.com + llin@google.com + croissant-eng@chromium.org + + For every quick answer result received event, records the result type. + ChromeOS only. + + + + + angelaxiao@chromium.org + yawano@google.com + llin@google.com + croissant-eng@chromium.org + + For every quick answer result received event, records the duration between + fetch start and fetch finish. ChromeOS only. {QuickAnswersClickResultType} + + + + + + + + angelaxiao@chromium.org + yawano@google.com + llin@google.com + croissant-eng@chromium.org + + For every quick answer request, records the length of the selected text that + is being considered for fetching quick answers. ChromeOS only. + + + + + angelaxiao@chromium.org + yawano@google.com + croissant-eng@chromium.org + + Reports the various TTS engine events received by the quick answers TTS + utterance event delegate. Records every time TTS audio is used in quick + answers results. ChromeOS only. + + + + + angelaxiao@chromium.org + yawano@google.com + croissant-eng@chromium.org + + For every quick answers consent impression, records how many times the user + has seen the consent. ChromeOS only. + + + + + angelaxiao@chromium.org + yawano@google.com + croissant-eng@chromium.org + + For every quick answers consent result event, records how long the user has + seen the consent before. ChromeOS only. {QuickAnswersV2ConsentResultType} + + + + + + angelaxiao@chromium.org + yawano@google.com + croissant-eng@chromium.org + + For every quick answers consent result event, records how many times the + user has seen the consent before. ChromeOS only. + {QuickAnswersV2ConsentResultType} + + + + + + + diff --git a/histograms/metadata/quickoffice/histograms.xml b/histograms/metadata/quickoffice/histograms.xml new file mode 100644 index 000000000000..0b6b9edff0a6 --- /dev/null +++ b/histograms/metadata/quickoffice/histograms.xml @@ -0,0 +1,234 @@ + + + + + + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the number of cells that contain formatting data in the default + worksheet when a comma separated value spreadsheet is opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the number of non-empty cells in the default worksheet when a comma + separated value spreadsheet is opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the number of worksheets when a comma separated value spreadsheet is + opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the page count when a compound binary format document is opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the paragraph count when a compound binary format document is + opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the section count when a compound binary format document is opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the page count when an OOXML format document is opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the paragraph count when an OOXML format document is opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the section count when an OOXML format document is opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the various different error types encountered when opening and + reading MS Office file formats in the Quickoffice viewer. These range from + Nacl crashes and uncaught javascript exceptions to document errors inside + Quickoffice Web Toolkit (eg QOWT). The errors are recorded against the file + format in which they occurred. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the various different file types supported by Quickoffice (like MS + Word, Excel, Powerpoint files) when they opened in the browser to measure + which file formats are most popular. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the number of slide masters when a compound binary format + presentation is opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the slide count when a compound binary format presentation is + opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the number of slide masters when an OOXML format presentation is + opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the slide count when an OOXML format presentation is opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the number of cells that contain formatting data in the default + worksheet when a compound binary format spreadsheet is opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the number of non-empty cells in the default worksheet when a + compound binary format spreadsheet is opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the number of worksheets when a compound binary format spreadsheet + is opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the number of cells that contain formatting data in the default + worksheet when an OOXML format spreadsheet is opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the number of non-empty cells when an OOXML format spreadsheet is + opened. + + + + + joelhockey@google.com + quickoffice-chrome-eng@google.com + + Records the number of worksheets when an OOXML format spreadsheet is opened. + + + + + + diff --git a/histograms/metadata/quota/OWNERS b/histograms/metadata/quota/OWNERS new file mode 100644 index 000000000000..52c4597a38b3 --- /dev/null +++ b/histograms/metadata/quota/OWNERS @@ -0,0 +1,10 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. + +# Primary +ayui@chromium.org + +# Secondary + diff --git a/histograms/metadata/quota/histograms.xml b/histograms/metadata/quota/histograms.xml new file mode 100644 index 000000000000..ce3db32d0e81 --- /dev/null +++ b/histograms/metadata/quota/histograms.xml @@ -0,0 +1,339 @@ + + + + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + How many kilobytes are how old. Similar to |AgeOfOrigin| except a sample is + added for each kilobyte of an origin's data. Logged hourly for all origins + with stored data. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + How many days it's been since an origin's temporary storage has been + accessed. Logged hourly for all origins with stored data. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Amount of free disk space for the storage directory. Logged at irregular + intervals. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Amount of free disk space for the storage directory. Logged when collecting + usage information. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records whether the database migration was successful. Recorded after + attempting to migrate the database. + + + + + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Difference between acceptable lower limit of diskspace and actual free + diskspace at beginning of an eviction round. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The number of times the evicted bucket was accessed. Logged when the bucket + is evicted. Replaces Quota.EvictedOriginAccessCount when eviction was per + origin. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The number of days since the evicted bucket was last accessed. Logged when + the bucket is evicted. Replaces Quota.EvictedOriginDaysSinceAccess when + eviction was per origin. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Number of evicted buckets in an hour. Replaces Quota.EvictedOriginPerHour + when eviction was per origin. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Amount of usage used by evicted buckets in an eviction round. Prior to M94, + evictions were based on per origin instead of per bucket. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Number of eviction rounds in an hour. Histogram expired between 2020/10 and + 2022/06. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The size of the global temporary storage pool. Logged at irregular + intervals. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + Global usage of temporary storage. + + + + ayui@chromium.org + chrome-owp-storage@google.com + Number of evicted buckets per round. + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Percentage of the storage device that is free. Logged at irregular + intervals. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Percentage of the storage device that is free. Logged when collecting usage + information. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Percentage of an origin's quota that is being used by the origin. Logged at + irregular intervals. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Percentage of the storage device that is being use for temporary storage. + Logged when collecting usage information. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + Errors reported by SQLite while using the quota database. + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records the reason the QuotaDatabase was reset to understand how frequently + and why this happens. This will inform us on how we should implement data + recovery for storage data when the QuotaDatabase is reset. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records whether the query to QuotaDatabase was successful. Recorded in + QuotaManager after a result is returned from every request to QuotaDatabase. + Added to ensure that the failure rate is within bounds of what we expect. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The quota value computed for an origin using temporary storage. Logged at + irregular intervals. (In the process of writing new data, storage systems + consult the quota system for "usage and quota" to determine if + there is sufficient space available for the new data. This value is logged + at the time of that consultation. The frequency is dependent on how + individual websites use the various storage apis.) + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Number of skipped eviction rounds in an hour. Histogram expired between + 2018/08 and 2022/06. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + While accumulating usage information, ClientUsageTracker is encountering + invalid origins. This enum histogram will capture the type of invalid + origins that are encountered. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Number of buckets in the QuotaDatabase buckets table with nonce in the + StorageKey to inform better eviction logic. Logged hourly. These will + typically be used by anonymous iframes, fenced frames, etc. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Time between two consecutive eviction rounds. Only recorded if at least one + origin has been evicted in each eviction round. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Time spent to an eviction round. Histogram expired between 2018/08 and + 2022/06. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Total number of entries in the QuotaDatabase buckets table for a profile. + Logged hourly. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Total disk space for the storage directory. Logged at irregular intervals. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Whether base::SysInfo::AmountOfTotalDiskSpace() returned zero or a negative + number to the quota system. Logged whenever something is pinging the system + for quota or device info. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Disk space (in MB) currently used by an origin. Logged hourly. + + + + + + diff --git a/histograms/metadata/renderer/OWNERS b/histograms/metadata/renderer/OWNERS new file mode 100644 index 000000000000..4c8b9e7c06de --- /dev/null +++ b/histograms/metadata/renderer/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +chrishtr@chromium.org +# Especially for Loading related metrics. +toyoshim@chromium.org diff --git a/histograms/metadata/renderer/histograms.xml b/histograms/metadata/renderer/histograms.xml new file mode 100644 index 000000000000..64c87980b27b --- /dev/null +++ b/histograms/metadata/renderer/histograms.xml @@ -0,0 +1,646 @@ + + + + + + + + + + + + + + + + + + + + + sky@chromium.org + jam@chromium.org + + Time (in milliseconds) between when browser launches renderer and renderer + message loop starts. + + + + + iclelland@chromium.org + speed-metrics-dev@chromium.org + + Records the number of 'swaps' performed when inserting a single new + Performance Entry into its respective buffer. Recorded each time a new + performance entry is inserted into a sorted PerformanceEntryVector. Note + that this does not include singleton entries such as NavigationTiming or + PaintTiming. + + + + + yoavweiss@chromium.org + speed-metrics-dev@chromium.org + + Time (in milliseconds) from timeOrigin until all the render blocking + resources were loaded in pages that have preloaded fonts. The metric will be + reported once per page load, once all the render blocking resources and + pending preloaded fonts have finished loading. + + + + + yoavweiss@chromium.org + speed-metrics-dev@chromium.org + + Time difference (in milliseconds) between `PreloadedFontLoadTime` and + `BlockingResourcesLoadTime`, when the preloaded fonts took longer to load + than the render blocking resources, and otherwise 0. This represents the + time preloaded fonts would block rendering, if we were to consider them as + critical. + + + + + yoavweiss@chromium.org + speed-metrics-dev@chromium.org + + Time (in milliseconds) from timeOrigin until all the preloaded fonts were + loaded. The metric will be reported once per page load, once all the render + blocking resources and pending preloaded fonts have finished loading. + + + + + jonross@chromium.org + sahir.vellani@microsoft.com + + The latency improvement provided by the delegated ink trail API, both with + and without prediction, in milliseconds. This latency improvement is the + difference between the timestamp of the pointerevent provided to the API, + and the final point of the trail that is drawn. Points are forwarded from + the browser to viz when this API is being used, so viz will have points + ahead of what the app provided the API, and they are used to draw the trail. + + + + + + + + + + + + jonross@chromium.org + sahir.vellani@microsoft.com + + The latency improvement provided by predicting extra delegated ink points + when using the delegated ink trail API with SkiaRenderer in milliseconds. + The improvement is the difference between the timestamp of the final real + point and the final predicted point. + + Part of a series of predicted point experimentation histograms. This + experiment predicts {Number} in the future. + + + + + + + + + + + jonross@chromium.org + sahir.vellani@microsoft.com + + Boolean that indicates whether the prediction is in the same direction as + the real trajectory at the same prediction time. True means the direction is + not the same (wrong direction). + + Temporarily not logged in favor of + Renderer.DelegatedInkTrail.PredictionExperiment*.WrongDirection since 02-26. + Will be reenabled in M95, after experimentation. + + + + + jonross@chromium.org + sahir.vellani@microsoft.com + + {Direction}shoot distance in pixels between a predicted point and the + corresponding interpolated real point that occurred at the prediction time. + + Temporarily not logged in favor of + Renderer.DelegatedInkTrail.PredictionExperiment*.{Direction}Prediction since + 02-26. Will be reenabled in M95, after experimentation. + + + + + + + + + jonross@chromium.org + sahir.vellani@microsoft.com + + Euclidean distance in pixels between two successive variations of delegated + ink trail deltas which are the difference beween a predicted delegated ink + point and its corresponding interpolated real position that occurred at + {Type} time. + + Temporarily not logged in favor of + Renderer.DelegatedInkTrail.PredictionExperiment*.{Type}Jitter since 02-26. + Will be reenabled in M95, after experimentation. + + + + + + + + + jonross@chromium.org + sahir.vellani@microsoft.com + + Distance in pixels between a predicted point and the corresponding + interpolated real point that occurred at the prediction time. + + The difference between {ScoreType} and Frame{ScoreType} is that the former + uses prediction time and the later uses frame time. + + Part of a series of predicted point experimentation histograms. This + experiment predicts {Number} in the future. + + + + + + + + + + + + + + + + jonross@chromium.org + sahir.vellani@microsoft.com + + Whether the prediction is in the same direction as the real trajectory at + the same prediction time. + + Part of a series of predicted point experimentation histograms. This + experiment predicts {Number} in the future. + + + + + + + + + + + jonross@chromium.org + sahir.vellani@microsoft.com + + Distance in pixels between a predicted point and the corresponding + interpolated real point that occurred at the prediction time. + + Part of a series of predicted point experimentation histograms. This + experiment predicts {Number} in the future. + + + + + + + + + + + + + + + + jonross@chromium.org + sahir.vellani@microsoft.com + + Euclidean distance in pixels between two successive variations of delegated + ink trail deltas which are the difference beween a predicted delegated ink + point and its corresponding interpolated real position that occurred at + {Type} time. + + Part of a series of predicted point experimentation histograms. This + experiment predicts {Number} in the future. + + + + + + + + + + + + + + + kojii@chromium.org + tkent@chromium.org + yosin@chromium.org + layout-dev@chromium.org + + The time spent acquiring the primary font consumed in the main tread before + DomContentLoaded. On Windows, this includes IPC roundtrip to browser process + and DirectWriteFontProxy and DirectWrite calls. + + + + + kojii@chromium.org + tkent@chromium.org + yosin@chromium.org + layout-dev@chromium.org + + The time spent acquiring the primary font consumed in style recalc, in the + main tread before DomContentLoaded. On Windows, this includes IPC roundtrip + to browser process and DirectWriteFontProxy and DirectWrite calls. + + + + + kojii@chromium.org + tkent@chromium.org + yosin@chromium.org + layout-dev@chromium.org + + The time spent acquiring the primary font consumed in the main tread before + FCP. On Windows, this includes IPC roundtrip to browser process and + DirectWriteFontProxy and DirectWrite calls. + + + + + kojii@chromium.org + tkent@chromium.org + yosin@chromium.org + layout-dev@chromium.org + + The time spent acquiring the primary font consumed in style recalc, in the + main tread before FCP. On Windows, this includes IPC roundtrip to browser + process and DirectWriteFontProxy and DirectWrite calls. + + + + + kojii@chromium.org + tkent@chromium.org + yosin@chromium.org + layout-dev@chromium.org + + The time spent finding the system fallback font consumed in the main tread + before DomContentLoaded. On Windows, this includes IPC roundtrip to browser + process and DirectWriteFontProxy and DirectWrite calls. + + + + + kojii@chromium.org + tkent@chromium.org + yosin@chromium.org + layout-dev@chromium.org + + The time spent finding the system fallback font consumed in the main tread + before FCP. On Windows, this includes IPC roundtrip to browser process and + DirectWriteFontProxy and DirectWrite calls. + + + + + yoavweiss@chromium.org + speed-metrics-dev@chromium.org + + Boolean indicating that OverfetchedCappedPixels was a positive integer. + Reported whenever an image is loaded and painted. + + + + + yoavweiss@chromium.org + speed-metrics-dev@chromium.org + + Boolean indicating that OverfetchedPixels was a positive integer. Reported + whenever an image is loaded and painted. + + + + + yoavweiss@chromium.org + speed-metrics-dev@chromium.org + + Boolean indicating that SizesAttributeMiss was a positive integer. Only set + when the sizes attribute is present. Reported whenever an image is loaded + and painted. + + + + + yoavweiss@chromium.org + speed-metrics-dev@chromium.org + + The amount of HTMLImageElement image pixels squared (width * height) that + were fetched by the renderer, but eventually weren't needed, as the layout + dimensions of the image corrected to the screen's device pixel ratio (up to + a predefined cap) were smaller than the image pixels fetched. Reported + whenever an image is loaded and painted. + + + + + yoavweiss@chromium.org + speed-metrics-dev@chromium.org + + The amount of HTMLImageElement image pixels squared (width * height) that + were fetched by the renderer, but eventually weren't needed, as the layout + dimensions of the image corrected to the screen's device pixel ratio were + smaller than the image pixels fetched. Reported whenever an image is loaded + and painted. + + + + + yoavweiss@chromium.org + speed-metrics-dev@chromium.org + + The amount of HTMLImageElement pixels by which the eventual layout width was + smaller than the width provided by the sizes attribute. + + + + + kojii@chromium.org + layout-dev@chromium.org + The time spent to balance lines of paragraphs. + + + + kojii@chromium.org + layout-dev@chromium.org + + The time spent to try balancing lines of paragraphs but failed to balance. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records the number of milliseconds spent blocking Blink's main thread while + capturing the main frame. Reported whenever an image is loaded and painted. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records a boolean indicating whether a capture for the main frame succeeded. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records the number of milliseconds spent blocking Blink's main thread while + capturing a subframe. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + chrome-fdt@google.com + + Records a boolean indicating whether a capture for a subframe succeeded. + + + + + yoavweiss@chromium.org + speed-metrics-dev@chromium.org + + Counts the number of unused preloads per ResourceType. + + Warning: an unexpected reorder happened in Apr 2021 + (https://crrev.com/c/2798954). Please do not trust older reports. + + + + + fdoray@chromium.org + olivierli@chromium.org + catan-team@chromium.org + + The time elapsed between the creation and destruction of a renderer. + Recorded for {RendererHostedContentType}. + + + + + + jam@chromium.org + sky@chromium.org + + The time it takes RenderThreadImpl::Init() to run, recorded for each + renderer process. + + + + + altimin@chromium.org + lpy@chromium.org + + This boolean keeps track the count of the visibility change of a frame. + Recorded every time when the visibility of a frame is changed. + + + + + szager@chromium.org + paint-dev@chromium.org + + Time between when a new task is added to a TaskQueue with priority + k{Priority}Priority, and when the task begins execution. For delayed (i.e. + timer-based) tasks, the initial timestamp is based on the ideal starting + time, rather than the time when the event loop notices that the timer has + expired. + + Note: Not recorded on ~5% of Windows machines with low-resolution clocks. + + + + + + + + + + + + + + + + + altimin@chromium.org + + Renderer main thread load (percentage of time spent in tasks), reported in + one second chunks. + + See http://bit.ly/chromium-renderer-main-thread-load-metric for details. + + This metric is emitted when the renderer main thread task is completed or + renderer is backgrounded or foregrounded, at most once per second per + renderer amortized. + + + + + altimin@chromium.org + + Total cpu time (reported in full seconds) of renderer tasks split by per + frame origin type (main frame vs same-origin frame vs cross-origin frame). + Note that partial seconds are rounded up/down so that they average to the + correct value when many reports are added. For more details, check + base::ScaledLinearHistogram. + + Note that this metric discards tasks longer than 30 seconds because they are + considered to be a result of measurement glitch. + + + + + sunyunjia@chromium.org + altimin@chromium.org + + The duration of every task queued in the _renderer_ scheduler to see the + distribution of the task duration. + + Note that this metric discards tasks longer than 30 seconds because they are + considered to be a result of measurement glitch. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + npm@chromium.org + speed-metrics-dev@chromium.org + + The count of same-document-navigations split by whether it is the + same-document backward/forward navigation, history API navigation, or other + fragment navigation. + + + + + ppi@chromium.org + + Roundtrip times for synchronous IPC calls from the renderer to browser. + + + + + + diff --git a/histograms/metadata/renderer4/OWNERS b/histograms/metadata/renderer4/OWNERS new file mode 100644 index 000000000000..c4e2a63a395d --- /dev/null +++ b/histograms/metadata/renderer4/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +chrishtr@chromium.org diff --git a/histograms/metadata/renderer4/histograms.xml b/histograms/metadata/renderer4/histograms.xml new file mode 100644 index 000000000000..40145ce2abb6 --- /dev/null +++ b/histograms/metadata/renderer4/histograms.xml @@ -0,0 +1,351 @@ + + + + + + + + + + andrescj@chromium.org + chromeos-gfx@google.com + + The wall time elapsed between creating a raster task in the client and being + ready to issue raster work to the driver in the GPU process. This includes + time decoding and uploading images. Note that this does not count raster + tasks that depend on at-raster image decodes. Since this metric is only + reported for Chrome OS clients, it has data only from high-resolution + clocks. + + + + + khushalsagar@chromium.org + chrome-gpu@google.com + + Time spent completing all work for a compositor rasterization task. This + includes the time in the renderer process for sending GL or paint commands + to the GPU process and the time for flushing these commands to the driver. + + WARNING: This metric is only reported for clients with high resolution + clocks, which means this will be biased to a portion of the population on + windows. + + + + + flackr@chromium.org + input-dev@chromium.org + + Whether the scroll from touch is executed on main thread. Recorded once for + each scroll. Contains incomplete data from M85 to M89 inclusively. + + + + + flackr@chromium.org + input-dev@chromium.org + + Whether the scroll from mouse wheel is executed on main thread. Recorded + once for each scroll. Contains incomplete data from M85 to M89 inclusively. + + + + + vmpstr@chromium.org + thiabaud@google.com + + Gpu image decode usage statistics. Images are decoded and locked prior to + upload; this indicates how that decode is used during tile management. + Warning: this histogram was expired from 2021-08-09 to 2022-05-20; data may + be missing. + + + + + sashamcintosh@chromium.org + vmpstr@chromium.org + thiabaud@google.com + + The current number of bytes locked by the GpuImageDecodeCache compared to + the maximum allowed number of bytes to lock. This value is recorded every + time the tile manager assigns GPU memory to tiles. Warning: this histogram + was expired from 2021-08-09 to 2022-05-20; data may be missing. + + + + + vmpstr@chromium.org + thiabaud@google.com + + Indication whether the first lock of an image decode was wasted (image was + not used). Images are decoded and locked prior to raster; this indicates + whether the decode was used or not during the first lock. Warning: this + histogram was expired from 2021-06-06 to 2022-05-20; data may be missing. + + + + + khushalsagar@chromium.org + vmpstr@chromium.org + thiabaud@google.com + + Gpu image upload usage statistics. Images are uploaded and locked prior to + use; this indicates how that upload is used during tile management. Warning: + this histogram was expired from 2021-06-06 to 2022-05-20; data may be + missing. + + + + + vmpstr@chromium.org + thiabaud@google.com + + Indication whether the first lock of an image upload was wasted (image was + not used). Images are uploaded and locked prior to raster; this indicates + whether the upload was used or not during the first lock. Warning: this + histogram was expired from M77 to 2022-05-20, and 2022-12-31 to 2023-01-09; + data may be missing. + + + + + jonross@chromium.org + graphics-dev@chromium.org + + Whether gpu rasterization is enabled (checked once after the page is painted + for the first time). + + + + + + + + + + + cblume@chromium.org + vmpstr@chromium.org + sashamcintosh@chromium.org + + This metric records the duration of an image decode for the raster path in + the compositor. It is recorded every time we decode an image. It is suffixed + by the type of rasterization we're in (either Gpu or Software). The + rasterization suffix is optionally prefixed by the image type (WebP, Jpeg, + etc.) or OutOfRaster. + + Warning: Before version M78 this metric may include reports from clients + with low-resolution clocks (i.e. on Windows, ref. + |TimeTicks::IsHighResolution()|). Such reports will cause this metric to + have an abnormal distribution. + + + + + + + sashamcintosh@chromium.org + chromeos-gfx@google.com + + This metric records the duration of an image upload for the raster path in + the compositor. It is recorded every time we upload an image. The metric is + optionally suffixed by the image type (WebP, Jpeg, etc.) or OutOfRaster. + + + + + wiltzius@chromium.org + + Number of rects inside of a PictureLayer's invalidation region per commit. + + + + + flackr@chromium.org + pdr@chromium.org + input-dev@chromium.org + + Ideally we'd always scroll on the impl thread, but there are a variety of + situations where we need to scroll on main. We should try to drive these + down. For every gesture, we record whether the scroll occurred on the impl + thread ("Not scrolling on main (no reason)"), or the main thread + ("Scrolling on main (any reason)") along with the reasons. There + can be multiple main-thread reasons for each scroll, so the percentage of a + reason shown in the UMA page is not the percentage of gesture scrolls with + the reason in all gesture scrolls. The actual percentage of gesture scrolls + with a reason would be count(the reason) / (count("Not scrolling on + main (no reason)" + count("Scrolling on main (any reason)")). + + + + + flackr@chromium.org + pdr@chromium.org + input-dev@chromium.org + + Ideally we'd always scroll on the impl thread, but there are a variety of + situations where we need to scroll on main. We should try to drive these + down. For every wheel tick, we record whether the scroll occurred on the + impl thread ("Not scrolling on main (no reason)"), or the main + thread ("Scrolling on main (any reason)") along with the reasons. + There can be multiple main-thread reasons for each wheel tick, so the + percentage of a reason shown in the UMA page is not the percentage of wheel + scrolls with the reason in all wheel scrolls. The actual percentage of wheel + scrolls with a reason would be count(the reason) / (count("Not + scrolling on main (no reason)" + count("Scrolling on main (any + reason)")). + + + + + ericrk@chromium.org + + The percentage of input events which are janks (not processed in the + expected frame) during each momentum scroll gesture. Computed by tracking + the number of extra coalesced momentum scroll events during a gesture. Extra + coalesced event indicates that the events were not handled in the target + frame. Logged once after a scroll with momentum events completes. + + + + + wiltzius@chromium.org + + Number of pixels that culling prevented being drawn to the screen, recorded + as 10 times the percentage of the viewport that these pixels cover. This is + collected once per frame while it is being drawn to the screen in the + compositor. + + + + + andrescj@chromium.org + chromeos-gfx@google.com + + The wall time elapsed between creating a raster task in the client and being + ready to issue raster work to the driver in the GPU process. This includes + time decoding and uploading images. Note that this does not count raster + tasks that depend on at-raster image decodes. Since this metric is only + reported for Chrome OS clients, it has data only from high-resolution + clocks. + + + + + khushalsagar@chromium.org + chrome-gpu@google.com + + Time spent completing all work for a compositor rasterization task. This + includes the time in the renderer process for sending GL or paint commands + to the GPU process and the time for flushing these commands to the driver. + + WARNING: This metric is only reported for clients with high resolution + clocks, which means this will be biased to a portion of the population on + windows. + + + + + enne@chromium.org + chrishtr@chromium.org + + The number of render passes (or render targets) in the renderer's frame. If + the value is more than one, then an intermediate rendering target must be + used during the rendering of the frame for each render pass greater than + one. + + + + + + + bokan@chromium.org + input-dev@chromium.org + + For each scroll gesture (i.e. at GestureScrollBegin), records whether the + scroll is: handled unblocked on the compositor thread, handled on the + compositor thread but blocked on main thread event listeners, or being + handled on the main thread. Broken down by scroll device. + + + + + vmpstr@chromium.org + thiabaud@google.com + + Software image decode usage statistics. Images are decoded and locked prior + to raster; this indicates how that decode is used during tile management. + Warning: this histogram was expired from 2021-06-08 to 2022-05-20, and + 2022-12-31 to 2023-01-09; data may be missing. + + + + + vmpstr@chromium.org + thiabaud@google.com + + Indication whether the first lock of an image decode was wasted (image was + not used). Images are decoded and locked prior to raster; this indicates + whether the decode was used or not during the first lock. Warning: this + histogram was expired from 2021-06-08 to 2022-05-20, and 2022-12-31 to + 2023-01-09; data may be missing. + + + + + reveman@chromium.org + + Time between the issue of a texture copy operation and detecting that it has + completed as measured by the GPU process. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + + diff --git a/histograms/metadata/safe_browsing/OWNERS b/histograms/metadata/safe_browsing/OWNERS new file mode 100644 index 000000000000..21c63f77637d --- /dev/null +++ b/histograms/metadata/safe_browsing/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +drubery@chromium.org +thefrog@chromium.org +xinghuilu@chromium.org diff --git a/histograms/metadata/safe_browsing/histograms.xml b/histograms/metadata/safe_browsing/histograms.xml new file mode 100644 index 000000000000..da966526d815 --- /dev/null +++ b/histograms/metadata/safe_browsing/histograms.xml @@ -0,0 +1,2910 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + meacer@chromium.org + trusty-transport@chromium.org + + Records whether the user has Advanced Protection enabled. Logged on startup + when the enabled status changes. Can be logged multiple times for a user. In + practice, this counts the number of Chrome startups with Advanced Protection + enabled/disabled, rather than the actual user count. + + + + + skrakowi@chromium.org + chrome-counter-abuse-alerts@google.com + + Measures whether the result returned using the new + RealTimeUrlChecksAllowlist method matches the result returned using the Safe + Browsing API. The value logged also tells us if the JNI env is initialized + or not when the SB API method returns NOMATCH and the + RealTimeUrlChecksAllowlist method returns MATCH, since this is one suspected + theory for the match rate difference. Logged on high confidence URL + allowlist checks, only when the kComponentUpdaterAndroidProtegoAllowlist + feature is enabled. This is a temporary histogram that we plan to remove + once we diagnose the match rate difference between the two methods. + + + + + skrakowi@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether LoadFromDisk is attempting to read an empty pb file path. + Logged whenever a component update or initial component load occurs for the + RealTimeUrlChecksAllowlist component. + + + + + skrakowi@chromium.org + chrome-counter-abuse-alerts@google.com + + Measures the result from performing an allowlist check when the + {AllowlistSource}. + + + + + + skrakowi@chromium.org + chrome-counter-abuse-alerts@google.com + + Measures the time it takes to perform a real time url allowlist check. + + + + + skrakowi@chromium.org + chrome-counter-abuse-alerts@google.com + + Measures the outcome of populating the allowlist, when the + {AllowlistSource}. + + + + + + skrakowi@chromium.org + chrome-counter-abuse-alerts@google.com + + Measures the number of entries in the allowlist when the {AllowlistSource}. + This metric is only recorded when populating the allowlist is successful. + + + + + + skrakowi@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the version of the allowlist when the {AllowlistSource}. This metric + is only recorded when populating the allowlist is successful. + + + + + + skrakowi@chromium.org + chrome-counter-abuse-alerts@google.com + + Measures the time it takes to initialize a real time url allowlist. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records if the telemetry ping sent for APK download contained a full + referrer chain, or if there was an error collecting the referrer chain. + Logged each time a user opted into extended reporting downloads an APK file + from a normal window on Android. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether the mime type of the download is apk. Logged each time an + apk download report is sent on Android. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether a telemetry ping for APK download was sent, or if not, then + why not. Logged each time a user downloads an APK file on Android. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the request destination that triggers the safe browsing blocking page. + Logged each time a safe browsing blocking page is created. This metric is + useful to show the priority of checking each request destination in real + time. Note that this metric may be bias towards kDocument, because the + default request destination is set to kDocument. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records how long the BrowserURLLoaderThrottle::CheckerOnIO object exists + for. Logged when the object destructs. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the request destination of the URL that is checked by browser URL + loader throttle. Logged each time the resource is fetched over the network + and it is faster than 2ms. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the scheme of the URL that is checked by browser URL loader throttle. + Logged each time the resource is fetched over the network and it is faster + than 2ms. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether the Safe Browsing check is completed when the URL loader starts + to process a response. If not, the URL loader will be deferred until the + Safe Browsing check is completed. Logs each time the URL loader dispatches + WillProcessResponse() and the Safe Browsing check doesn't block the URL. + + This metric is used to populate a dashboard on go/crsb-site. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the scheme of the new URL that is redirected from a chrome-extension:// + URL. Logged each time browser URL loader throttle receives a redirect + request and the scheme of the original URL is chrome-extension://. This + histogram can help us determine if it is safe to skip chrome-extension:// + URLs when the request starts. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the scheme of the original URL that is redirected. Logged each time + browser URL loader throttle receives a redirect request. This histogram can + help us determine what scheme is safe to skip when the request starts. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the latency between when the URL loader was deferred by Safe Browsing + check and when the check is completed. Logs each time the URL loader was + deferred by Safe Browsing check and the Safe Browsing check doesn't block + the URL. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the latency between when the browser URL loader was deferred by Safe + Browsing check and when the check is completed, for enterprise real time URL + check request with {AllowlistCheckStatus} during the check. This metric is + different from SafeBrowsing.BrowserThrottle.TotalDelay as it logs for each + request, recording zero delay when the request is not deferred. + + + + + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the latency between when the browser URL loader was deferred by Safe + Browsing check and when the check is completed, for {UserCategory} URL check + request. This metric is different from + SafeBrowsing.BrowserThrottle.TotalDelay as it logs for each request, + recording zero delay when the request is not deferred. + + + + + + + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the number of times that WillProcessResponse has been called for a + single BrowserUrlLoaderThrottle. Logged each time WillProcessResponse is + called. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether {RequestType} was called after WillProcessResponse. Logged + each time {RequestType} is called. + + + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether the Safe Browsing check via CheckBrowseUrl method matched any + local hash prefixes. Logged each time the Safe Browsing reputation of a URL + is checked using local blocklists. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Counts the number of times the Safe Browsing reputation lookup timeout + happens. Logged each time the Safe Browsing reputation of a URL is checked. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the scheme of the URL whose Safe Browsing reputation is about to be + checked. Logged before it has been determined whether or not the scheme is + valid for Safe Browsing. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Counts the length of the download_warning_actions field in a client Safe + Browsing report. Logged each time the field is populated before a report is + sent. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether a threat details job is running on the current tab before + sending client safe browsing report. The job can be already deleted if the + current tab is closed directly before the report is sent. Only log if the + report should be sent. + + + + + skrakowi@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether the token_value of the page load token in a client Safe + Browsing report is null. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the network result for a client safe browsing report request when + the request {IsAccessTokenIncluded}. + + + + + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the report type of client safe browsing reports. Logged each time a + report is about to be sent. It's not logged on failed cases (e.g. + serialization error or empty report). + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether a sent client safe browsing report request contains a + GAIA-tied OAuth2 token. This token is sent only for signed-in Enhanced Safe + Browsing users. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the result of checking a URL against the local client-side phishing + detection allowlist. This is triggered whenever the allowlist is checked, + which applies both to client-side detection checks and password protection + requests. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the total number of bypass events in the last 28 days. Recorded for all + non-Incognito profiles that are under {UserState} every 24 hours and at + startup if the last recording was more than 24 hours ago. + + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the total number of security sensitive events in the last 28 days. + Recorded for all non-Incognito profiles that are under {UserState} every 24 + hours and at startup if the last recording was more than 24 hours ago. + + + + + + + Removed in M103 as this histogram is no longer needed. + + meacer@chromium.org + chrome-counter-abuse-alerts@google.com + + Records when a user in the Delayed Warnings experiment group visits a page + with a delayed SafeBrowsing phishing warning, triggers the delayed warning + (via keypress), or leaves the page without interacting. Only recorded when + user has not disabled URL elision via "Always Show Full URLs" + context menu item, or by installing the Suspicious Site Reporter extension. + + + + + meacer@chromium.org + estark@chromium.org + chrome-counter-abuse-alerts@google.com + + Records how long a user in the Delayed Warnings experiment group spends on a + page with a delayed SafeBrowsing phishing warning. The time is recorded from + when the page loads to when the warning is shown or the user leaves the + page, whichever comes first. Only recorded when user has not disabled URL + elision via "Always Show Full URLs" context menu item, or by + installing the Suspicious Site Reporter extension. + + + + + meacer@chromium.org + estark@chromium.org + chrome-counter-abuse-alerts@google.com + + Same as SafeBrowsing.DelayedWarnings.TimeOnPage but only recorded when user + has disabled URL elision via "Always Show Full URLs" context menu + item, or by installing the Suspicious Site Reporter extension. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the last bypass event type before a user disables Enhanced Safe + Browsing. Logged each time a user disables Enhanced Safe Browsing. Logged at + most three times a week. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the time interval between the last time Enhanced Safe Browsing was + enabled and the current disabling event. Logged each time a user disables + Enhanced Safe Browsing. Logged at most three times a week. If Enhanced Safe + Browsing was enabled more than 30 days go, no metric is logged. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the last security sensitive event type before a user disables + Enhanced Safe Browsing. Logged each time a user disables Enhanced Safe + Browsing. Logged at most three times a week. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the number of times Enhanced Safe Browsing was disabled the last 28 + days. Logged each time a user disables ESB. The length of the interval that + ESB was enabled is summarized by {EnabledDuration}. The maximum number of + times ESB is disabled is tracked is 30, so anything above that is not + logged. + + + + + + awado@google.com + chrome-safebrowsing-alerts@google.com + + Records the amount of times the In-Product-Help (IPH) bubble is triggered on + the Chrome security settings page from one of the three Enhanced Safe + Browsing referral/promotion methods. + + + + + psarouthakis@chromium.org + chrome-counter-abuse-alerts@google.com + + Records if a persisted file is older than 3 days. Every file that is found + on disk will have its age checked. + + + + + psarouthakis@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the number of persisted files on disk when the telemetry persister + is first initiated. The cache size is only checked when the persister init + function is run. + + + + + psarouthakis@chromium.org + chrome-counter-abuse-alerts@google.com + + The size of a persisted file in bytes. This is recorded for any file found + on disk, regardless of if it was successfully read. + + + + + psarouthakis@chromium.org + chrome-counter-abuse-alerts@google.com + + Whether the read request succeeded or not. This is recorded once for every + time the persister attempts to read from a file. Read requests happen when + the telemetry service successfully uploads a file. If the persister attempts + to read from an empty filepath, it will be marked as a failure. + + + + + psarouthakis@chromium.org + chrome-counter-abuse-alerts@google.com + + Whether the write request succeeded or not. This is recorded once for every + file written. Write requests happen on Chrome shutdown and when an extension + telemetry upload is not successful. + + + + + richche@chromium.org + chrome-counter-abuse-alerts@google.com + + Extension telemetry includes file data such as file hashes for off-store + extension files. This histogram measures how long it takes to collect file + data for all the offstore extensions installed. It is emitted after each + pass of the collection process completes which occurs periodically (every 2 + hours by default). The histogram is not emitted if there are no off-store + extensions installed or if the collection process is interrupted due to the + browser session ending or disabling Enhanced Safe Browsing for the profile. + + + + + richche@chromium.org + chrome-counter-abuse-alerts@google.com + + Extension telemetry includes file data such as file hashes for off-store + extension files. This histogram records the largest file size observed while + collecting files to process (regardless of whether it exceeds the file size + limit). Logged by the FileProcessor at periodic intervals (default: once per + day) for each off-store extension installed. + + + + + richche@chromium.org + chrome-counter-abuse-alerts@google.com + + Extension telemetry includes file data such as file hashes for off-store + extension files. This histogram records the number of applicable files found + in an extension's directories. An applicable file must be non-empty, within + the max size limit, and among the applicable types (eg. JS, HTML, CSS). The + manifest.json file is also included. Logged by the FileProcessor at periodic + intervals (default: once per day) for each off-store extension installed. + + + + + richche@chromium.org + chrome-counter-abuse-alerts@google.com + + Extension telemetry includes file data such as file hashes for off-store + extension files. This histogram records the number of files not processed + because they exceeded the max files to process per extension limit. Logged + by the FileProcessor at periodic intervals (default: once per day) for each + off-store extension installed. + + + + + richche@chromium.org + chrome-counter-abuse-alerts@google.com + + Extension telemetry includes file data such as file hashes for off-store + extension files. This histogram records the number of files not processed + because they exceeded the size limit for processing. Logged by the + FileProcessor at periodic intervals (default: once per day) for each + off-store extension installed (if applicable). + + + + + richche@chromium.org + chrome-counter-abuse-alerts@google.com + + Extension telemetry includes file data such as file hashes for off-store + extension files. This histogram records the number of successfully processed + files, including the manifest.json file. Logged by the FileProcessor at + periodic intervals (default: once per day) for each off-store extension + installed. + + + + + richche@chromium.org + chrome-counter-abuse-alerts@google.com + + Extension telemetry includes file data such as file hashes for off-store + extension files. This histogram records the number of off-store extensions + installed in a user profile. It is emitted at the start of each pass of the + collection process which occurs periodically (every 2 hours by default). The + histogram is emitted even if there are no off-store extensions installed. + + + + + richche@chromium.org + chrome-counter-abuse-alerts@google.com + + Extension telemetry includes file data such as file hashes for off-store + extension files. This histogram records the size of a successfully processed + file. Logged by the FileProcessor at periodic intervals (default: once per + day) for each off-store extension installed. + + + + + richche@chromium.org + chrome-counter-abuse-alerts@google.com + + Extension telemetry includes file data such as file hashes for off-store + extension files. This histogram records true for a valid extension, and + false if the extension root directory or manifest.json file is invalid. + Logged by the FileProcessor at periodic intervals (default: once per day) + for each off-store extension installed. + + + + + psarouthakis@chromium.org + chrome-counter-abuse-alerts@google.com + + Records if the extension telemetry service is persisting a report at a write + interval. True represents a persist event during a write interval, false + represents a persist event during Chrome shutdown. Recorded when the + extension telemetry service persists a telemetry report to disk. + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + The HTTP response code or net error from each upload attempt. This is + recorded once for each network request made as part of an upload, i.e. if an + upload fails the first time, but a retry succeeds, this metric is recorded + twice. Upload attempts occur periodically (default period is 1 hour) and + there are multiple retries attempted (if necessary) after every upload + interval. + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + Counts how many retries were needed to successfully complete the upload + request. This is emitted only for a successful upload. Upload attempts occur + periodically (default period is 1 hour) and there are multiple retries + attempted (if necessary) after every upload interval. + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + Records discarded extension telemetry signals by type. Logged each time a + signal is discarded because it contains invalid data (e.g., invalid + extension id). The signal type recorded here only corresponds to a a raw + signal that is created externally and passed to extension service. The count + for a combined signal (that is created internally and derived from other raw + signals) should always be 0 since the internally generated signal data + should always be valid. + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the extension telemetry signal type. Logged each time a signal is + triggered (eg. a tabs.executeScript API call is invoked). The signal can be + a raw signal that is created externally and passed to extension service or a + combined signal that is created internally and derived from other raw + signals. + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + The size of the upload request body. This is recorded once for each upload, + regardless of whether it was successful. Upload attempts occur periodically + (default period is 1 hour). + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + Whether the overall upload request succeeded or not. This is recorded once + for an upload request, regardless of how many retries were needed to + complete the upload. Upload attempts occur periodically (default period is 1 + hour) and there are multiple retries attempted (if necessary) after every + upload interval. + + + + + anunoy@chromium.org + chrome-counter-abuse-alerts@google.com + + Measures the total duration (including delay due to retries) of a {Result} + upload request. This is recorded after the last retry on every {Result} + upload. Upload attempts occur periodically (default period is 1 hour) and + there are multiple retries attempted (if necessary) after every upload + interval. + + + + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The result of reading/parsing/accepting a new proto for the FileTypePolices + repo of file extensions and their meta data. + + This is for the file types loaded from the component-update system. This + includes both those loaded from disk shortly after startup, and those + received over the network when the component version changes + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Integer version number citing which version of the proto data chrome just + loaded. Latest version is in download_file_types.asciipb. + + This is for the file types loaded from the component-update system. This + includes both those loaded from disk shortly after startup, and those + received over the network when the component version changes + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The result of reading/parsing/accepting a new proto for the FileTypePolices + repo of file extensions and their meta data. + + This is for the file types loaded from the resource bundle packaged with + Chrome, which is always loaded at startup. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Integer version number citing which version of the proto data chrome just + loaded. Latest version is in download_file_types.asciipb. + + This is for the file types loaded from the resource bundle packaged with + Chrome, which is always loaded at startup. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether the size of the high confidence allowlist is too small. It can + happen if it is misconfigured on the server-side, or the local file is + corrupted on the disk. If too small, the allowlist is considered as + unavailable. Logged each time a top frame URL navigation happens for users + who have hash-prefix real-time lookups enabled. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether the local Safe Browsing stores are available. If not, all URLs + are marked as safe during the lookup. Logged each time a top frame URL + navigation happens for users who have hash-prefix real-time lookups enabled. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs if the hash-prefix real-time lookup service is currently in backoff + state due to previous errors. Logs whenever a hash-prefix real-time request + is about to be attempted, which will not go through if the service is in + backoff mode. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the number of full hashes in the local hash-prefix real-time lookup + cache for this profile. Logged each time cleanup of expired entries is + performed on the cache, which happens every 30 minutes. The value represents + the count before cleanup and includes expired entries. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the number of hash prefixes in the local hash-prefix real-time + lookup cache for this profile. Logged each time cleanup of expired entries + is performed on the cache, which happens every 30 minutes. The value + represents the count before cleanup and includes expired entries. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether there was a cache hit when a hash prefix was searched for in + the local cache for hash-prefix real-time lookups. A cache hit means the + prefix was found in the cache (whether or not it has associated full + hashes), which allows for that prefix not to be re-requested. This histogram + is false in the case of a cache miss for the hash prefix. This is logged for + each hash prefix in a lookup when the cache is searched. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether all hash prefixes were found in the hash-prefix real-time + lookups local cache. It indicates that as a result of the cache, there was + no need to send a request to Safe Browsing servers. This is logged each time + a lookup occurs, when the cache is searched. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether all hash prefixes would be found in the hash-prefix + real-time lookups local cache if the URL were to have its query parameters + removed. It indicates that as a result of the cache, there would be no need + to send a request to Safe Browsing servers. This is logged each time a + lookup occurs, after the cache is searched. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether the response from the hash-prefix real-time lookup contained + any full hashes that did not match the requested hash prefixes. This is + logged after the network request for the lookup returns. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the latency between the start of getting a result from the cache and + when the cached item is actually obtained for hash-prefix real-time lookups. + This is an indicator of the efficiency of retrieving from the cache. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether hash realtime service can obtain a non empty key from OHTTP key + service. The lookup will fail if there is no key. Logged each time a top + frame URL navigation happens for users who have hash-prefix real-time + lookups enabled. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether the hash-prefix real-time lookup service is found when a hash- + prefix real-time check is needed. The lookup service is available if it is + not nullptr. Logged when the hash-prefix real-time check is enabled and the + URL doesn't match the allowlist. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the result of checking the URL against the local Safe Browsing high + confidence allowlist. Logged each time a top frame URL navigation happens + for users who have hash-prefix real-time lookups enabled. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Response or error codes from SafeBrowsing hash-prefix real-time lookups. + Logged on each resource check for which a lookup request is sent to the + server. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the roundtrip time it took to perform a Safe Browsing hash-prefix + real-time lookup. Logged on each resource check for which a lookup request + is sent to the server. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs if the OHTTP key service is currently in backoff state due to previous + errors. Logs whenever a key fetch request is about to be attempted (either + triggered by hash prefix lookup, asynchronous workflow or server hint), + which will not go through if the service is in backoff mode. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether OHTTP key service has a valid key cached in memory. Logged each + time a key is requested through the get OHTTP key API. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Response or error codes from OHTTP key hosting endpoint. Logged on each key + fetch request that is sent to the server. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the roundtrip time it took to fetch a new OHTTP key. Logged on each key + fetch request that is sent to the server. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the return status for hash-prefix real-time lookups. This is logged + after network request for the lookup returns. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + The number of prefixes included in a hash-prefix real-time lookup request + sent to the Google Safe Browsing servers. This excludes any prefixes found + in the local cache. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the number of unsafe threat type verdicts received in the check + response (including cached results) that are relevant to hash-prefix + real-time checks. Logged each time a lookup request completes without errors + or when the request does not need to be sent because all the results are in + the local cache. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + When there are redirects in an HPRT experiment and not all of them are + ineligible for the experiment, this logs true if all of them are eligible. + (It logs false if some are ineligible.) Eligible is defined as: if a lookup + was unsafe, it would display a warning. Ineligibility can happen for this + log if WebContents disappears partway through the experiment, or if some but + not all of the redirects have already shown a warning on the WebContents and + have been bypassed by the user. This is logged when the HPRT experiment is + about to conclude, once all lookup mechanisms have completed or timed out, + BrowserUrlLoaderThrottle has reached WillProcessResponse or has destructed + CheckerOnIO before that occurred, and the eligibility of each check has been + determined. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records which mechanisms delayed the page response. Logged when the HPRT + experiment concludes, which is once all lookup mechanisms have completed or + timed out, BrowserUrlLoaderThrottle has reached WillProcessResponse or has + destructed CheckerOnIO before that occurred, and the eligibility of each + check has been determined and at least one is eligible. Eligible is defined + as: if a lookup was unsafe, it would display a warning. {MaybeRedirects} + + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records which mechanisms timed out. Logged when the HPRT experiment + concludes, which is once all lookup mechanisms have completed or timed out, + BrowserUrlLoaderThrottle has reached WillProcessResponse or has destructed + CheckerOnIO before that occurred, and the eligibility of each check has been + determined and at least one is eligible. Eligible is defined as: if a lookup + was unsafe, it would display a warning. {MaybeRedirects} + + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records which mechanisms resulted in a warning. Logged when the HPRT + experiment concludes, which is once all lookup mechanisms have completed or + timed out, BrowserUrlLoaderThrottle has reached WillProcessResponse or has + destructed CheckerOnIO before that occurred, and the eligibility of each + check has been determined and at least one is eligible. Eligible is defined + as: if a lookup was unsafe, it would display a warning. {MaybeRedirects} + + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records by how much {Mechanism1} was faster than {Mechanism2}. Logged when + the HPRT experiment concludes, which is once all lookup mechanisms have + completed or timed out, BrowserUrlLoaderThrottle has reached + WillProcessResponse or has destructed CheckerOnIO before that occurred, and + the eligibility of each check has been determined and at least one is + eligible. Eligible is defined as: if a lookup was unsafe, it would display a + warning. {MaybeRedirects} + + + + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether {Mechanism} delayed the page response. Logged when the HPRT + experiment concludes, which is once all lookup mechanisms have completed or + timed out, BrowserUrlLoaderThrottle has reached WillProcessResponse or has + destructed CheckerOnIO before that occurred, and the eligibility of each + check has been determined and at least one is eligible. Eligible is defined + as: if a lookup was unsafe, it would display a warning. {MaybeRedirects} + + + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records by how much {Mechanism} delayed the page response. Logged when all + lookup mechanisms in the HPRT experiment have completed or timed out, + BrowserUrlLoaderThrottle has reached WillProcessResponse, and the + eligibility of each check has been determined and at least one is eligible. + If BrowserUrlLoaderThrottle destructs CheckerOnIO before WillProcessResponse + is called, there is no log. Eligible is defined as: if a lookup was unsafe, + it would display a warning. {MaybeRedirects} + + + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether {Mechanism} timed out. Logged when the HPRT experiment + concludes, which is once all lookup mechanisms have completed or timed out, + BrowserUrlLoaderThrottle has reached WillProcessResponse or has destructed + CheckerOnIO before that occurred, and the eligibility of each check has been + determined and at least one is eligible. Eligible is defined as: if a lookup + was unsafe, it would display a warning. {MaybeRedirects} + + + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Records by how long {Mechanism} took. Logged when the HPRT experiment + concludes, which is once all lookup mechanisms have completed or timed out, + BrowserUrlLoaderThrottle has reached WillProcessResponse or has destructed + CheckerOnIO before that occurred, and the eligibility of each check has been + determined and at least one is eligible. Eligible is defined as: if a lookup + was unsafe, it would display a warning. {MaybeRedirects} + + + + + + + rogerta@chromium.org + chrome-counter-abuse-alerts@google.com + + This records whether local DLP scanning succeeded or not. It is logged once + for each binary upload with DLP scanning enabled (file download or upload + with the appropriate enterprise policies enabled). + + + + + rogerta@chromium.org + chrome-counter-abuse-alerts@google.com + + This records the duration of each binary upload request. It is logged once + for each binary upload (file download or upload with the appropriate + enterprise policies enabled). + + + + + rogerta@chromium.org + chrome-counter-abuse-alerts@google.com + + This records whether DLP scanning succeeded or not. It is logged once for + each binary upload with DLP scanning enabled (file download or upload with + the appropriate enterprise policies enabled). + + + + + + Removed 05-2022. This metric was historically stable and not being used. + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the size (in KB) of a download if it is a PDF or Office document + before Safe Browsing client side checks are started. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the number of events in the metrics collector at cleanup time. This is + logged at the beginning of cleanup, which occurs once every 24 hours. + + + + + vollick@chromium.org + chrome-counter-abuse-alerts@google.com + Logs the number of times we have a missing initiator RFH. + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Count of how many NavigationEvents are recorded prior to appending recent + navigations to the referrer chain. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the reason that page load tokens are cleared. Logged each time + tokens are cleared. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the duration between a token is created and a token is retrieved. + Logged each time GetPageLoadToken is called and the token is found in the + token map. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether a page load token has expired when it is retrieved. Logged + each time GetPageLoadToken is called and the token is found in the token + map. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether a page load token is found before password protection + request is sent. Logged only when real time URL check is enabled. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether a page load token is found before real time URL check + request is sent. Logged only when the check is on a subframe URL. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the number of page load tokens stored in verdict cache manager. + Logged each time after a periodic clean up on expired tokens is performed. + + + + + drubery@chromium.org + rsesek@chromium.org + chrome-counter-abuse-alerts@google.com + + Reports whether the {PakFile} file's SHA-256 hash matches the digest + produced at build-time. This detects on-disk corruption of the .pak file. + Recorded at startup on ChromeOS, Linux, Mac, and Windows. + + + + + + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Whether the Safe Browsing extended reporting service is currently enabled. + Recorded for all non-Incognito profiles every 24 hours and at startup, if + the last recording was more than 24 hours ago. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Whether the Safe Browsing mode is managed by the user's admin. Recorded for + all non-Incognito profiles every 24 hours and at startup if the last + recording was more than 24 hours ago. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + The current Safe Browsing state of the profile. Recorded for all + non-Incognito profiles every 24 hours and at startup, if the last recording + was more than 24 hours ago. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Whether the Safe Browsing enhanced protection service is currently enabled. + Recorded for all non-Incognito profiles on profile startup. + + This metric is used to populate a dashboard on go/crsb-site. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Whether the Safe Browsing extended reporting service is currently enabled. + Recorded for all non-Incognito profiles on profile startup. + + This metric is used to populate a dashboard on go/crsb-site. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Whether the Safe Browsing service is currently enabled. Recorded for all + non-Incognito profiles on profile startup. + + This metric is used to populate a dashboard on go/crsb-site. + + + + + jeffcyr@google.com + chrome-counter-abuse-alerts@google.com + + The current Safe Browsing state of the main profile. Recorded for all uma + log at upload time by the SafeBrowsingMetricsProvider for the main profile + only. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The result of referrer attribution, including different types of success or + failure. This is incremented each time a safe browsing ping or download ping + is generated. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The length of referrer URL chain we get from referrer attribution. This is + logged each time a safe browsing ping or download ping is generated. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether the Safe Browsing check is completed when the renderer URL + loader starts to process a response. If not, the renderer URL loader will be + deferred until the Safe Browsing check is completed. Logs each time the + renderer URL loader dispatches WillProcessResponse() and the Safe Browsing + check doesn't block the URL. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the latency between when the renderer URL loader was deferred by Safe + Browsing check and when the check is completed. Logs each time the renderer + URL loader was deferred by Safe Browsing check and the Safe Browsing check + doesn't block the URL. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the latency between when the renderer URL loader was deferred by Safe + Browsing check and when the check is completed. This metric is different + from SafeBrowsing.RendererThrottle.TotalDelay as it logs for each request, + recording zero delay when the request is not deferred. This metric is + different from SafeBrowsing.RendererThrottle.TotalDelay2 as it logs zero + delay when the check is skipped. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether the size of the high confidence allowlist is too small. It can + happen if it is misconfigured on the server-side, or the local file is + corrupted on the disk. If too small, the allowlist is considered as + unavailable. Logged each time a top frame URL navigation happens for users + who have the real time URL lookups enabled. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether the local Safe Browsing stores are available. If not, all URLs + are marked as safe during real time URL lookup. Logged each time a top frame + URL navigation happens for users who have the real time URL lookups enabled. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs if the real time URL lookup service is currently in backoff state due + to previous errors. Logged each time a top frame URL navigation happens in + non-incognito mode for users who have real time URL lookups enabled. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the time it takes to run a cleanup task in cache manager. Logged each + time a cleanup task is run. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the number of real time URL verdicts stored for this profile. Logged + each time a new real time url verdict is cached. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether Safe Browsing database can be checked in Safe Browsing URL + checker. Logged each time a URL is checked by Safe Browsing URL checker. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether the URL cannot be checked because it is not valid. Logged each + time a URL is checked by Safe Browsing URL checker if real-time lookups are + enabled and eligible for the request destination. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the reason why a consumer version is preferred over the enterprise + version for the RealTime URL Lookup service. Logged on all platforms with + RealTime URL Lookup service, and logged whenever a URL is checked by Safe + Browsing URL checker. May even be logged multiple times per URL check, + depending on how many times the function is called. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the threat type of cached verdicts. If the threat type is not safe, it + means the cache is a false positive. False positive verdicts are safe + verdicts in cache manager but turns out to be dangerous in the Safe Browsing + database. Logged each time a URL is checked by real time lookup and the + response is safe from the cache manager. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the latency between the start of getting a result from the cache and + when the cache is actually obtained. The time includes bouncing between IO + and UI threads. This is an indicator of the efficiency of loading the cache. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the result of real time URL cache lookup. If the result is + VERDICT_TYPE_UNSPECIFIED, that means cache miss and a ping will be sent + afterwards. Otherwise, ping won't be sent. This is an indicator of cache hit + rate. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + If the real-time URL cache lookup had a cache hit, logs whether the cache + entry was defined in a previous browser session rather than the current one. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the latency between the start of a token request and when the token is + actually obtained. Logged each time a user performs a real-time Safe + Browsing check with token. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether a token received from the token fetcher is nonempty. Logged + each time a response is received from the token fetcher. It shows the + validity of the tokens received from the token fetcher. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether a token is attached when a URL lookup request is sent. Logged + each time a URL lookup request is sent. It shows the percentage of URL + lookup requests that are attached with tokens. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether the real time lookup service is available when a real time URL + check is needed. The real time lookup service is available if it is not + nullptr and it is not in backoff mode. Logged when real time URL check is + enabled and the URL doesn't match the allowlist. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether the response of the real time URL lookup is successful. Logged + on each resource check for which a lookup request is sent to the server. A + failure can be either a network error or a parsing error. + + + + + zackhan@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs whether the response of the real time URL lookup is successful when the + report type is {ReportType}. Logged on each resource check for which a + lookup request is sent to the server. A failure can be either a network + error or a parsing error. + + + + + + + + + + Removed 09-2022. This histogram was added as part of a short-lived + investigation, which is no longer being prioritized. + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether the user population field is from the enabled populations + (MBB and ESB) or not. Logged on every real time lookup. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the result of checking the URL against the local Safe Browsing high + confidence allowlist. Logged each time a top frame URL navigation happens + for users who have the real time URL lookups enabled. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the result of checking the {IsMainframe} URL against the local Safe + Browsing high confidence allowlist for {UserCategory} real time URL check + request. Logged each time a top frame URL navigation happens for users who + have the real time URL lookups enabled. It can also be logged for + non-mainframe URL hits for EnhancedProtection users. + + + + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Response or error codes from SafeBrowsing real time URL lookups. Logged on + each resource check for which a lookup request is sent to the server. + Starting M92, the ERR_HTTP_RESPONSE_CODE_FAILURE net error is matched to the + actual HTTP response code. + + + + + zackhan@chromium.org + chrome-counter-abuse-alerts@google.com + + Response or error codes from SafeBrowsing real time URL lookups when the + report type is {ReportType}. Logged on each resource check for which a + lookup request is sent to the server. + + + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the roundtrip time it took to perform a Safe Browsing real time URL + lookup. Logged on each resource check for which a lookup request is sent to + the server. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the length of the referrer chain in a {UserCategory} real time URL + check request. Logged on each resource check for which a lookup request is + sent to the server. + + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + The size of a real time URL check request in bytes. Logged on each resource + check for which a lookup request is sent to the server. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the user population that was checked by Safe Browsing real time URL + lookup. Logged on each resource check for which a lookup request is sent to + the server. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the request destination that was checked by Safe Browsing real time URL + lookup. Logged on each resource check that is eligible for real time checks. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the request destination that was requested to be checked by Safe + Browsing real time URL lookup. Logged on each resource check. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the verdict type of the response from real time URL check. Logged each + time a response is received and the threat info size is greater than 0. + + + + + zackhan@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the verdict type of the response from real time URL check from an + {UserPopulation} user. This histogram tells us whether EnhancedProtection + users are more likely to get dangerous verdicts as well as the average + number of Protego pings for EnhancedProtection users and + non-EnhancedProtection users. + + + + + + + + + zackhan@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the type of the real time URL check requests. It could be a sampled + report request that only happens 1% of the time when URLs match the Protego + allowlist, or a full report request otherwise when an real time URL request + is sent. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the number of verdicts received in the real time URL check response. + Logged on each resource check for which a lookup request is sent to the + server. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the user action performed on the Safe Browsing settings page. Depending + on the enum value, logged when the page is showned to the user or when the + user performs an action on the page. + + + + + jacastro@chromium.org + chrome-safebrowsing-alerts@google.com + + Records the result of displaying the Chrome enhanced protection + opt-in/disabled dialog to sync users. It is logged once each time Chrome is + informed that the account level enhanced protection bit has been disabled. + + + + + jacastro@chromium.org + chrome-safebrowsing-alerts@google.com + + Records the result of displaying the Chrome enhanced protection + opt-in/enabled dialog to sync users. It is logged once each time Chrome is + informed that the account level enhanced protection bit has been enabled. + + + + + awado@chromium.org + chrome-safebrowsing-alerts@google.com + + Records whether the observer-based retry mechanism for the + ChromeTailoredSecurityService has been triggered or not which is logged on + every update to the synced account ESB timestamp. + + + + + + This metric was useful until 2022-07-29, when the experiment for + TailoredSecurityDesktopNotice began and values for NoBrowserAvailable and + NoWebContentsAvailable could also contain results from showing the disabled + modal (due to crbug/1348654). + + jacastro@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the result of trying to show the Chrome enhanced protection + opt-in/enabled notification to sync users. It is logged once each time + Chrome is informed that the account level enhanced protection bit has been + enabled. + + + + + jacastro@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the result of trying to show the Chrome enhanced protection + opt-in/enabled notification to sync users. It is logged once each time + Chrome is informed that the account level enhanced protection bit has been + enabled. + + + + + jacastro@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the outcome of displaying the {PromptType} when a signed-in, syncing + user changes their account tailored security setting to {Status}. + + Notification prompts were removed in M113 along with the corresponding UX. + + + + + + + + + + + + jacastro@chromium.org + chrome-counter-abuse-alerts@google.com + + Safe Browsing needs a token in order to make a request to get the tailored + security service bit. This histogram tracks whether getting a token is + successful or not. + + + + + jacastro@chromium.org + chrome-counter-abuse-alerts@google.com + + Safe Browsing needs a token in order to make a request to get the tailored + security service bit. This histogram tracks the HTTP code when getting a + token is not successful. + + + + + jacastro@chromium.org + chrome-counter-abuse-alerts@google.com + + HTTP Response code returned by the server when trying to fetch the OAuth + token for a tailored security service query. + + + + + jacastro@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the specific reason a message was dismissed when a signed-in, + non-syncing user changes their account tailored security setting and + dismisses the corresponding message. + + + + + jacastro@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the outcome of displaying a modal dialog on Desktop when a signed-in, + non-syncing user changes their account tailored security setting in the flow + of consenting. + + + + + jacastro@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the outcome of displaying a notification on desktop when a signed-in, + non-syncing user changes their account tailored security setting not in the + flow of consenting. + + + + + jacastro@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the outcome of displaying the message on Android when a signed-in, + non-syncing user changes their account tailored security setting and is + {Flow} of consenting. + + + + + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the error type from the token fetcher. Logs each time safe browsing + gets a response from the token fetcher. When the error type is none, it + means the token is obtained successfully. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Tracks the actions taken by the Ad Sampling trigger whenever it is executed. + Warning: this histogram was expired from 2021-07-01 to 2021-10-25; data may + be missing. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Tracks the events occurring in the Suspicious Site trigger whenever it is + executed. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + The size of the SafeBrowsing database or file on disk in kilobytes, after + reading it from disk on startup and after a database update has occurred. + + + + + kristianm@chromium.org + chrome-counter-abuse-alerts@google.com + + The size of {ThreatTypeKB} SafeBrowsing database or file on disk in 100 KB, + after reading it from disk on startup and after a database update has + occurred. Linear version of V4Database.Size histogram. + + + + + + + + + richche@chromium.org + chrome-counter-abuse-alerts@google.com + + The size of {ThreatType} SafeBrowsing database or file on disk in megabytes, + after reading it from disk on startup and after a database update has + occurred. Linear version of V4Database.Size histogram. + + + + + + + + + skrakowi@chromium.org + chrome-counter-abuse-alerts@google.com + + The latency of updating the SafeBrowsing database. This measures the time + difference between calls to update the SafeBrowsing V4 database. This gets + logged after every call for an update to the database, except for the first + one. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + The time it takes to parse and load the SafeBrowsing database from disk, in + milliseconds. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + Track whether a V4 request was able to be skipped because all parts of it + were found in the local cache. Logged after the V4 local cache is checked. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + Track cache hits for V4 full hashes. + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + Track get hash response hits for V4 full hash requests. + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + The number of prefixes included in a full hash request sent to the Google + Safe Browsing servers. This is recorded each time there's a match found in + the local database and requires sending a full hash request. + + + + + thefrog@chromium.org + chrome-counter-abuse-alerts@google.com + + HTTP response code from the SafeBrowsing Pver4 service when the net error is + {NetError}. Logged after a GetHash request with that net error finishes. + + + + + + + + + vakh@google.com + kcarattini@google.com + chrome-counter-abuse-alerts@google.com + + Response or error codes from the SafeBrowsing Pver4 service. Logged after a + GetHash or request finishes to capture the response code or error code for + that call. Warning: this histogram was expired from M86 to M91. Data may be + missing. Starting M92, the ERR_HTTP_RESPONSE_CODE_FAILURE net error is + matched to the actual HTTP response code. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + The time that it took to receive a response from the Google SafeBrowsing + servers for a full hash request. + + + + + + + vakh@chromium.org + kcarattini@chromium.org + chrome-counter-abuse-alerts@google.com + + Track the parsing results of a status 200 GetV4Hash request. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Track return status from V4 GetHash attempts. The buckets of this histogram + overlap, so the counts cannot be used as percentages. + + + + + skrakowi@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the number of GetHash attempts skipped (due to being in backoff) + within the same backoff time window. Logged if there are any backoff errors + at the time of backoff window expiry. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the number of verdicts received in the full hash check. Logged each + time a full hash check response is received. + + + + + ajuma@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the time since the last network response was received for a request + to udpate the Safe Browsing local database. This will be logged whenever the + database is queried, but only if at least one such network response has been + received since the browser was launched. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the number of additions hashes in a SafeBrowsing list full update. + This was added in M92 to accomodate a larger maximum size. + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Track the result of applying a full update for a store received from PVer4 + SafeBrowsing service. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records how long it took to perform a full update of a V4 store. This is + recorded in thread time, to avoid recording any disk operations. + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Track the result of decoding the Rice-encoded list of additions of 4-byte + hash prefixes. This is logged once per store, per update containing + Rice-encoded additions. This histogram is specific to processing full + updates received from the server. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the number of removals hashes in a SafeBrowsing list full update. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the number of additions hashes in a SafeBrowsing list partial + update. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Track the result of applying a partial update for a store received from + PVer4 SafeBrowsing service. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records how long it took to perform a partial update of a V4 store. This is + recorded in thread time, to avoid recording any disk operations. + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Track the result of decoding the Rice-encoded list of additions of 4-byte + hash prefixes. This is logged once per store, per update containing + Rice-encoded additions. This histogram is specific to processing partial + updates received from the server. + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Track the result of decoding the Rice-encoded list of indexes of hash + prefixes to remove since the last update. This is logged once per store, per + update containing Rice-encoded removals. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the number of removals hashes in a SafeBrowsing list partial update. + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Track the result of applying an ListUpdateResponse read from disk after + parsing it successfully as a protobuf. + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Track the result of decoding the Rice-encoded list of additions of 4-byte + hash prefixes. This is logged once per store, per Chrome launch. It is + specific to processing V4StoreFileFormat proto read from disk. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records how long it took to verify the checksum of a V4 store. This is + recorded in thread time, to avoid recording any disk operations. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether a store has valid data, when it is queried. This is logged + once for every 256 times (a heuristic applied starting M104 for making + recording more efficient) a store is checked (a few times for each download, + and once when a potentially dangerous subresource is loaded). + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Track the parsing results of reading the SafeBrowsing V4 store file from + disk. Recorded every time a store is read from disk. + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Track the results of writing the SafeBrowsing V4 store file to disk. + Recorded every time a store is written to disk. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Response or error codes when fetching updates from the SafeBrowsing PVer4 + service. Starting M92, the ERR_HTTP_RESPONSE_CODE_FAILURE net error is + matched to the actual HTTP response code. + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Track the parsing results of a status 200 GetV4Update request. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + The size of the response sent by the SafeBrowsing PVer4 service, in KB. + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + Track return status from V4 update attempts. The buckets of this histogram + overlap, so the counts cannot be used as percentages. + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + + Records whether the application has explicitly opted in or out of Safe + Browsing by manifest tag, or if they're relying on the default behavior. + This is recorded once during startup. + + + + + rogerta@chromium.org + webprotect-team@google.com + + This records the bytes/sec from the size of a {CloudOrLocal} {Connector} + request divided by the duration of a successful deep scanning upload + request. It is logged once for each successful binary upload. + + + + + + + domfc@chromium.org + drubery@chromium.org + rogerta@chromium.org + sseckler@chromium.org + webprotect-team@google.com + + This records the {CloudOrLocal} deep scanning duration of a user {Connector} + request with {Result} result. It is logged once for each binary upload with + that result. + + + + + + + + + + + + + + + + + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the interval between when the {Process} URL loader starts a request and + when the {Process} URL loader is ready to process the response + {ResponseType}. Logs each time the URL loader is ready to process the + response and the start request function is previously called. During this + interval, Safe Browsing checks are performed in parallel. + + + + + + + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the request destination of the URL that is checked by the {Process} URL + loader throttle. Logged each time WillStartRequest is called. + + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Logs the latency between when the {Process} URL loader was deferred by Safe + Browsing check and when the check is completed, for URL loaded + {ResponseType}. This metric is different from + SafeBrowsing.{Process}Throttle.TotalDelay as it logs for each request, + recording zero delay when the request is not deferred. + + + + + + + + + + domfc@chromium.org + chrome-counter-abuse-alerts@google.com + + This records whether DLP scanning succeeded or not. It is logged once for + each binary upload with DLP scanning enabled (file download or upload with + the appropriate enterprise policies enabled). + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + This records the duration of each binary upload request. It is logged once + for each binary upload (file download or upload with the appropriate + enterprise policies enabled). + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + This records whether the malware deep scanning succeeded or not. It is + logged once for each binary upload with malware scanning enabled (file + download or upload with the appropriate enterprise policies enabled). + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + This records the outcome of each binary upload request. It is logged once + for each binary upload (file download or upload with the appropriate + enterprise policies enabled). + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + This record how long it took for the request to get the FCM token. It is + logged every time a deep scanning request successfully gets a token. + + + + + + diff --git a/histograms/metadata/sb_client/OWNERS b/histograms/metadata/sb_client/OWNERS new file mode 100644 index 000000000000..21c63f77637d --- /dev/null +++ b/histograms/metadata/sb_client/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +drubery@chromium.org +thefrog@chromium.org +xinghuilu@chromium.org diff --git a/histograms/metadata/sb_client/histograms.xml b/histograms/metadata/sb_client/histograms.xml new file mode 100644 index 000000000000..36fab168e25a --- /dev/null +++ b/histograms/metadata/sb_client/histograms.xml @@ -0,0 +1,900 @@ + + + + + + + + + + + + + + + + + + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + mattm@chromium.org + + Records the reason why downloads are marked as being malicious or clean by + the improved SafeBrowsing binary download protection. Note that + UNSUPPORTED_URL_SCHEME was split out of the INVALID_URL bucket in M41. The + NOT_BINARY_FILE check was moved before the UNSUPPORTED_URL_SCHEME check in + M42. The ALLOWLISTED_URL check was moved to before NOT_BINARY_FILE in M62. + This is logged after download scanned by Safe Browsing. + + This metric is used to populate a dashboard on go/crsb-site. + + + + + drubery@chromium.org + chrome-safebrowsing-alerts@google.com + + Records the reason why EXE downloads are marked as being malicious or clean + by the improved SafeBrowsing binary download protection. This is logged + after every EXE download scanned by Safe Browsing. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records events related to user interaction with deep scanning prompts. This + is recorded a few times during the process of each prompt for deep scanning: + - Once when the prompt is shown. - Once when the prompt is + accepted/bypassed. - Once when the scan is completed, either through + cancelation or completion. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the reason each file was uploaded to Safe Browsing for deep + scanning. This is logged on every deep scan. + + + + + domfc@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the type of scan each time a download item starts a deep scan. This + is logged on every deep scan. + + + + + + Replaced with SBClientDownload.DmgArchiveAnalysisResult in 04-2022 + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + For each DMG download on Mac, records whether or not analysis of the DMG + timed out. + + + + + + Removed 08-2022. SBClientDownload.DmgArchiveAnalysisResult provides strictly + more detail about our ability to unpack DMGs. + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + For each DMG download on Mac, records whether or not we were able to iterate + through the partitions of the DMG. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the reason why document downloads are marked as being malicious or + clean by the Safe Browsing download protection. This is logged after + downloads are scanned by Safe Browsing. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether or not a downloaded document contains macros. This is logged + on each document download. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + mattm@chromium.org + + Records a histogram of how often users download a file with a file extension + that is possibly dangerous (e.g., exe, class). + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + + A Mac-only metric that records whether a given download file is a + cryptographically signed DMG archive. This metric is logged before Chrome + sends SafeBrowsing download pings. + + + + + vakh@chromium.org + chrome-counter-abuse-alerts@google.com + mattm@chromium.org + + Records the total time it takes for the SafeBrowsing download service to + check whether the content of a download is malicious or not, including file + feature extraction, allowlist checking, and server ping. This histogram only + includes checks that sent a ping to the SafeBrowsing server. It does not + include requests that were cancelled, but does include requests that + received a bad response. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the total time it takes for the SafeBrowsing download service to + check whether the content of a download which underwent {Analysis} analysis + is malicious or not, including file feature extraction, allowlist checking, + and server ping. This histogram only includes checks that sent a ping to the + SafeBrowsing server. It does not include requests that were cancelled, but + does include requests that received a bad response. + + + + + + + + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the total time it takes for the SafeBrowsing download service to + check whether the content of a download is malicious or not, including file + feature extraction, allowlist checking, and server ping. This histogram only + includes checks that sent a ping to the SafeBrowsing server. It does not + include requests that were cancelled, but does include requests that + received a bad response. + + This histogram is a "medium" version of + SBClientDownload.DownloadRequestDuration. It has a maximum of 3 minutes to + help investigate long-tail downloads. + + + + + + + + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + mattm@chromium.org + + The net error code for all CheckClientDownloadRequest URLFetchers. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the time it takes for the SafeBrowsing download service ping. It is + not recorded for requests that were cancelled. + + Warning: this histogram was expired from 2021-05-06 to 2021-12-02; data may + be missing. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the results of SafeBrowsing binary download checks which caused a + server ping. + + Warning: this histogram was expired from 2021-05-06 to 2021-12-02; data may + be missing. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + mattm@chromium.org + + For CheckClientDownloadRequest URLFetchers with successful status, the HTTP + response code that was received. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether a downloaded ZIP contains any AES-encryped content. This is + logged once for every downloaded ZIP containing any encrypted content. + + + + + + Replaced with SBClientDownload.FileAnalysisDuration.Document in 06-2022. + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the time it takes for the SafeBrowsing download service to extract + info from an Office document. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the time it takes for the SafeBrowsing download service to check the + safety of the contents of a download which underwent analysis for + {Analysis}. This only includes file feature extraction. Also see + SBClientDownload.DownloadRequestDuration. + + + + + + + + + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records how long it takes to extract features from a downloaded file. This + is aggregated over all file types. It is recorded once per download. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records how long it takes to get tab redirects when populating a + ClientDownloadRequest. This is aggregated over all file types. It is + recorded once per download. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the size of the image debug entry that is extracted from a + downloaded executable. This is recorded on executable downloads on Windows. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the result of a malware deep scan, split by the reason the file was + uploaded for scanning. This is logged only for succesful scans. The overall + rate of successful scans is logged in + SafeBrowsingBinaryUploadRequest.MalwareResult. + + Warning: this histogram was expired from 2021-04-29 to 2021-05-19; data may + be missing. + + + + + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records how long it takes to load the download as a memory-mapped file for + the purpose of extracting executable features. This is aggregated over all + file types that are checked as executables. It is recorded once per + download. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the latency between when a safe download is completed and when the + user {ShowAction}. Users can open the download either from the download + shelf or from the downloads page. Note that if the user opens the same + download for several times, this metric is recorded each time. Excludes + downloads that were auto opened. + + + + + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the latency between when a safe {DownloadContent} download is + completed and when the user opens the download either from the download + shelf or from the downloads page. Note that if the user opens the same + download for several times, this metric is recorded each time. Also, this + metrics excludes downloads that were auto opened. + + + + + + + + + + + + + + + + + + + + + + + + + + domfc@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the number of files corresponding to a single save package being + scanned. This is logged on every save package deep scan. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records how often users in a population consented to deep scanning are + actually prompted for deep scanning. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the result of unpacking a single entry from a 7z archive. The result + includes either success or a coarse-grained error. This is logged for each + entry of each download of a 7z archive. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether Chrome can find a valid email to be added in the tailored + warning string. Logged each time Safe Browsing asks Chrome to show the + account info in the warining. Ideally invalid email should be rare, because + Safe Browsing should take the user's signed-in status into account when + generating tailored verdicts. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the attributes of a download that is allowed on user gesture. Logged + each time a download happens and the danger level is ALLOW_ON_USER_GESTURE. + To get the percentage of a specific attribute, divide the number of record + of that attribute by the number of record of TOTAL_TYPE_CHECKED. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the interval between the current download and the last download + bypass. Logged each time a download happens, the danger level is + ALLOW_ON_USER_GESTURE and the last download bypass exists. + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether the download was triggered by user gesture when a download + warning for {DangerType} is {Action}. The bypassed metrics are recorded when + the warning is either bypassed from the download shelf or from the downloads + page. By combining the shown and bypassed metrics for a specific danger + type, we can calculate whether the bypass rate is different between + user-initiated and automatically triggered downloads. + + This metric is used to populate a dashboard on go/crca-site. + + + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether the download URL is HTTPS when a download warning for + {DangerType} is {Action}. The bypassed metrics are recorded when the warning + is either bypassed from the download shelf or from the downloads page. By + combining the shown and bypassed metrics for a specific danger type, we can + calculate whether the bypass rate is different between HTTPS downloads and + non-HTTPS downloads. + + This metric is used to populate a dashboard on go/crca-site. + + + + + + + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the type of the file when a download warning for {DangerType} is + {Action}. The bypassed metrics are recorded when the warning is either + bypassed from the download shelf or from the downloads page. By combining + the shown and bypassed metrics for a specific danger type, we can calculate + the bypass rate of different file types. + + This metric is used to populate a dashboard on go/crca-site. + + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records a more granular reason why we failed to unpack a {ArchiveType} file. + This is recorded on every download of an {ArchiveType} file. + + + + + + + + + + + andysjlim@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the duration of running the TfLite classification, which is one step + in applying the TfLite model for phishing detection. This model is applied + roughly once per navigation. + + + + + andysjlim@chromium.org + chrome-counter-abuse-alerts@google.com + + When a renderer-side classification returns the error + "CLASSIFIER_NOT_READY", this histogram is logged with whether or + not the browser process had a valid model. This can help to identify + problems distributing the model from browser process to the renderers. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The counts for various reasons why an in-progress phishing classification + was canceled. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The number of pages that we could have possibly classified (essentially the + number of top page navigations by users with SBClientPhishing enabled). The + name is slightly misleading as it is recorded before + "Preclassification" happens. + + This metric is used to populate a dashboard on go/crsb-site. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records events in the phishing classifier including reasons that prevents + phishing detection to complete on the renderer side. + + + + + andysjlim@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the result of classification in visual TfLite model thresholds + comparison on the browser side + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The number of phishing classifications that were aborted because DOM feature + extraction took too long. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether the shared memory region created to hold the flatbuffer was + created successfully on not. This is logged on dynamic model update (which + is rare), or on each startup. + + + + + andysjlim@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the status when we create a FlatBuffer scorer object for the + client-side phishing detection classifier. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether the local phishing detection model detects phishing. This + histogram is logged each time the model is run (roughly on every navigation + to a non-allowlisted site) + + This metric is used to populate a dashboard on go/crsb-site. + + + + + + Removed 04-2022 since the logic for how PhishingDetectors are managed + changed. + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether we have a mojo::Remote for the main frame's + PhishingDetector. This is recorded on every classification (a large fraction + of navigations). + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether a dynamic update is successful or not. This is logged when a + new model is pushed (rare), or on each startup. + + + + + andysjlim@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the the duration of a network request due to a client side phishing + ping. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the net error or HTTP response code after sending a network request + due to a client side phishing ping. + + + + + andysjlim@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the duration of model fetch time after the OptimizationGuide Model + Observer for CSD-Phishing is registered on user session start. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the duration it takes for client side phishing detection to finish. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The result enum received from the renderer-side classifier. This is recorded + after every renderer classification (roughly every page load not on the + allowlist). + + This metric is used to populate a dashboard on go/crsb-site. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records the result of phishing pre-classification checks. This is recorded + on every classification attempt (roughly every page load). + + Starting in M95, the PRIVATE_IP bucket was split to include LOCAL_RESOURCE + and CHROME_UI_PAGE. + + + + + + Removed 06-2022 + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The number of times that a cached phishing classification result was used, + rather than pinging the server. + + + + + andysjlim@chromium.org + chrome-counter-abuse-alerts@google.com + + Records if the RTUrlLookupResponse contains FORCE_REQUEST in + client_side_detection_type, which forces the Client Side Detection - + Phishing ping to be sent to the server if the user also has Enhanced Safe + Browsing or Safe Browsing Extended Reporting opt-in. This histogram is + logged once on every successful classification. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records whether the server-side phishing detection model detects phishing. + This histogram is logged each time we contact Safe Browsing to evaluate + whether a site is phishing. + + This metric is used to populate a dashboard on go/crsb-site. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The time that an individual chunk of term feature extraction work took. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The number of iterations that the term feature extractor took to finish. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The number of phishing classification that were aborted because term feature + extraction took too long. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The time that the term feature extarctor took to finish, summed across all + chunks of work. + + + + + + Removed 03-2023 since the value was consistently small, and we don't expect + it to change over time. + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records how long it takes the {Scorer} to load the TfLite model file from + the memory mapped file into a string. This blocks the main thread, so we + need to ensure it is small. + + + + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The time taken to extract URL features for the phishing classifier. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Records how long it took to extract visual features on the main thread. Work + performed off-thread is not recorded in this histogram. This is recorded on + every phishing classification. + + + + + + diff --git a/histograms/metadata/scanning/OWNERS b/histograms/metadata/scanning/OWNERS new file mode 100644 index 000000000000..fd7cc19706a3 --- /dev/null +++ b/histograms/metadata/scanning/OWNERS @@ -0,0 +1,9 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +# Primary reviewers +jimmyxgong@chromium.org +gavinwill@chromium.org +# Secondary reviewers +zentaro@chromium.org diff --git a/histograms/metadata/scanning/histograms.xml b/histograms/metadata/scanning/histograms.xml new file mode 100644 index 000000000000..d6f61ea27fca --- /dev/null +++ b/histograms/metadata/scanning/histograms.xml @@ -0,0 +1,246 @@ + + + + + + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the total size of the scanned images stored in memory right before + they are converted into the final PDF. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + During a multi-page scan session, records the total size of the scanned + images stored in memory at the moment the user clicks save to convert them + into the final PDF. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the number of pages scanned in a saved multi-page scan session. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the success status of each page scan in a multi-page scan session. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the amount of time it takes from the user clicking save on their + multi-page scan session to the PDF file being generated and saved. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the time between a user starting the first scan in a multi-page scan + session to the time the user clicks save to end the session. This does not + record when a multi-page scan session ends prematurely without the PDF being + saved. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records when a user clicks an action on the action toolbar in a multi-page + scan session. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the number of completed scans in a single session of the Scan app + being open. This value gets recorded whenever the Scan app is closed or + refreshed. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the number of detected scanners. Recorded each time detected + scanners are received. + + + + + gavinwill@chromium.org + masonwilde@google.com + cros-peripherals@google.com + + Records the number of detected scanners. Recorded after a 5 minute delay + after login when the CupsPrintersManager is created. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + Records the number of files created in a successful scan. + + + + gavinwill@chromium.org + cros-peripherals@google.com + Records the number of pages scanned in a successful scan. + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the number of scan setting changes before a scan is initiated. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the amount of time it takes from the final document in a scan job + being scanned to the PDF file being generated and saved. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the time between sending a request for scanners and receiving + capabilities for the selected scanner, which is essentially the time between + the user launching the Scan app and being able to interact with it to select + a scanner, change scan settings, or start a scan. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the action taken by a user after a successful scan job on Chrome OS. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + Records the reason a scan job failed. + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the selected Color Mode setting for a submitted scan job. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the selected File Type setting for a submitted scan job. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the selected Page Size setting for a submitted scan job. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the selected Resolution setting for a submitted scan job. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records the selected Source setting for a submitted scan job. + + + + + gavinwill@chromium.org + cros-peripherals@google.com + + Records true if the attempted scan job completed successfully and false if + the scan job failed for any reason. This metric will not include canceled + scan jobs. + + + + + + diff --git a/histograms/metadata/scheduler/OWNERS b/histograms/metadata/scheduler/OWNERS new file mode 100644 index 000000000000..6818a761a41a --- /dev/null +++ b/histograms/metadata/scheduler/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +altimin@chromium.org diff --git a/histograms/metadata/scheduler/histograms.xml b/histograms/metadata/scheduler/histograms.xml new file mode 100644 index 000000000000..20639ae6b6a4 --- /dev/null +++ b/histograms/metadata/scheduler/histograms.xml @@ -0,0 +1,195 @@ + + + + + + + + + + yafroze@google.com + pmonette@chromium.org + catan-team@chromium.org + + The size of the |delayed_incoming_queue|. + + This is emitted pseudorandomly when a delayed task is enqueued on the + SequenceManager's main thread. + + Note: This metric merges from all named threads. + + + + + yafroze@google.com + pmonette@chromium.org + catan-team@chromium.org + + The delay time for the delayed tasks posted to the sequence manager. + + This is emitted pseudorandomly when a delayed task is enqueued on the + SequenceManager's main thread. + + Note: This metric merges from all named threads. + + + + + stanisc@chromium.org + + The time from v-sync to when the main side actually starts the + BeginImplFrame. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + gab@chromium.org + fdoray@chromium.org + + Records the number of milliseconds spent in each phase of pumping tasks on + {NamedThread}. Each enum value can be analyzed for its total time or as a + percentage relative to other phases. + + + + + + + + + weiliangc@chromium.org + chrome-gpu-metrics@chromium.org + + The type of deadline mode the Renderer's cc::Scheduler is in when the + scheduler enters the BeginImplFrame deadline. This emits immediately as the + scheduler enters the deadline. + + + + + + + vmiura@chromium.org + speed-metrics-dev@chromium.org + chrome-analysis-team@google.com + + The time delta between the draw times of back-to-back BeginImplFrames, + regardless of whether or not they result in a swap. + + The interval is only recorded when every BeginImplFrame wants to draw. + + Do not modify this metric in any way without contacting + speed-metrics-dev@chromium.org AND chrome-analysis-team@google.com. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for + the solution. + + + + + xidachen@chromium.org + animations-dev@chromium.org + + The time delta between the draw times of back-to-back BeginImplFrames, + regardless of whether or not they result in a swap, when there is at least + one custom property animation. + + The interval is only recorded when every BeginImplFrame wants to draw. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + jonross@chromium.org + chrome-gpu-metrics@chromium.org + + Measures the difference in time allotted to the Renderer, by the Scheduler, + for frame production, from the time elapsed when the compositor frame is + submitted. This value would show the time used after the anticipated + deadline. + + This metric uses UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES so only users with + high resolution clocks will report this metric. + + + + + jonross@chromium.org + chrome-gpu-metrics@chromium.org + + Measures the difference in time allotted to the Renderer, by the Scheduler, + for frame production, from the time elapsed when the compositor frame is + submitted. This value would show the time remaining after submit before the + anticipated deadline. + + This metric uses UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES so only users with + high resolution clocks will report this metric. + + + + + fdoray@chromium.org + gab@chromium.org + robliao@chromium.org + + Number of tasks executed by a SchedulerWorker before it detached. Recorded + when a SchedulerWorker detaches. + + + + + spvw@chromium.org + gab@chromium.org + + Records a hit when a thread pool worker thread woke up unnecessarily (when + the first GetWork called by a WorkerThread post-wakeup doesn't return a + task). This count can be compared between experiments aiming to reduce + wakeups. Or, it could be used to derive wakeups/{foo} by using UMA formulas + against other time-or-event-based metrics. + + + + + + diff --git a/histograms/metadata/search/OWNERS b/histograms/metadata/search/OWNERS new file mode 100644 index 000000000000..f3014b87361a --- /dev/null +++ b/histograms/metadata/search/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +ender@google.com diff --git a/histograms/metadata/search/histograms.xml b/histograms/metadata/search/histograms.xml new file mode 100644 index 000000000000..8c08808c6019 --- /dev/null +++ b/histograms/metadata/search/histograms.xml @@ -0,0 +1,1819 @@ + + + + + + + + + + juanmojica@google.com + schechter@google.com + stanfield@google.com + lens-chrome-eng@google.com + + Records ambient search queries enumerated by the entry point used to make + the query. This is recorded every time the user makes a query regardless of + whether the query succeeds. + + + + + + + + + donnd@chromium.org + twellington@chromium.org + chrome-analysis-team@google.com + + Records whether the user opened the panel when it was shown. Recorded for + all gestures for all users when the UX is hidden. Implemented for Android. + + The user action Search.ContextualSearch.All.ResultsSeen.true is also logged + in the case that true is logged to this histogram. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + + donnd@chromium.org + contextual-search-eng@google.com + related-searches-vteam@google.com + + Records that a Search Result page was shown in a bottom sheet for either + Contextual Search or Related Searches. Each entry corresponds to exactly one + search of the indicated kind. Related Searches are recorded when the SERP is + shown to the user, and Contextual Searches are recorded when the panel is + closed. Implemented for Android. + + + + + + + donnd@chromium.org + twellington@chromium.org + + The type of card returned in the Search Term Resolution Response from the + server when a search is resolved in response to a Tap gesture that uses + surrounding text to determine the best search. This characterises what we'll + show in the Bar. Recorded when the panel is closed. Implemented for Android. + + + + + + + donnd@chromium.org + twellington@chromium.org + + The type of card shown in the Bar when the panel has been opened. Recorded + when the panel is closed. Implemented for Android. + + + + + donnd@chromium.org + contextual-search-eng@google.com + + Records that a Search was done and whether the search was unintelligent or + intelligent, and whether it was likely counted by Rasta. Recorded for all + users when the panel is closed after being opened. Implemented for Android. + + + + + + + donnd@chromium.org + contextual-search-eng@google.com + + Records that a Contextual Search was initiated by the user, and whether that + search should be counted as a real user-viewed search or not. + + The true bucket is designed to match what Rasta counts in its queries(event) + metric as a real user search. + + The false bucket includes all the other cases where the Contextual Search + was started but not counted by Rasta because the user has not been able to + view the Search Result Page. Usually this is because the user did not expand + the panel beyond the peeking state, but occasionally because it did not + render. Recorded when the panel is closed for all users. Implemented for + Android. + + + + + donnd@chromium.org + basiaz@google.com + + Network status codes recorded for each Contextual Search request after the + url loader calls the completion callback. Recorded value is the absolute + value of the received net::Error value. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + Records the duration of persisted outcomes between the time they were stored + and the time that they were sent back to the server. Recorded when persisted + data is sent to the server. Implemented for Android. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + Logs that the UX has entered a state where features are available to be + recorded to Ranker. A value of true indicates that the available features + include outcomes, false if they are just features at inference-time. Use to + correlate with what actually gets recorded in the Search. + ContextualSearch.Ranker.Recorded histogram. Recorded when a tap gesture is + recognized that might trigger our UX (for pure features), and when the UX is + actually shown (for outcomes). Implemented for Android. + + + + + donnd@chromium.org + charleszhao@chromium.org + Tracks the outcome of attempts to download a Ranker Model. + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + Records whether the user opened the panel when a tap was not suppressed by + Ranker. Recorded when the UX is hidden. Implemented for Android. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + Logs that features were recorded to Ranker and whether it was an outcome or + not. Recorded when the UX is shown or hidden. Implemented for Android. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + Logs that features were recorded to Ranker from native code and whether it + was an outcome or not. Recorded when the UX is shown or hidden. Implemented + for Android. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + Records Ranker's prediction about whether a tap should be suppressed or not. + Recorded when the UX is hidden. Implemented for Android. + + + + + charleszhao@chromium.org + donnd@chromium.org + + Time taken for the Ranker Model Loader to download its model from the + configured URL, in ms. + + + + + charleszhao@chromium.org + donnd@chromium.org + + Time taken for the Ranker Model Loader to parse its model, in ms. + + + + + charleszhao@chromium.org + donnd@chromium.org + + Time taken for the Ranker Model Loader to read its model from local storage + (cache), in ms. + + + + + charleszhao@chromium.org + donnd@chromium.org + + Time taken for the Ranker Model Loader to write its model to local storage, + in ms. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + Records whether Ranker was able to make a prediction about tap suppression. + Recorded when the UX is triggered by tap. Implemented for Android. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + Records whether the user opened the panel when a tap would be suppressed by + Ranker if suppression was enforced. Recorded when the UX is hidden. + Implemented for Android. + + + + + donnd@chromium.org + twellington@chromium.org + + Records that a resolve response was received from the server, and whether + that was due to a Tap gesture or not (vs longpress). Recorded when the user + triggers the feature and the server responds. Implemented for Android. + + + + + donnd@chromium.org + twellington@chromium.org + + Records that a resolve request was sent to the server, and whether that was + due to a Tap or not (vs longpress). Recorded when the user triggers the + feature. Implemented for Android. + + + + + donnd@chromium.org + twellington@chromium.org + + Records that a resolve request from the server caused the selection to be + expanded, and whether that original selection was due to a Tap or not (vs + longpress). Recorded when the qualifying server response is received. + Implemented for Android. + + + + + donnd@chromium.org + gangwu@chromium.org + contextual-search-eng@google.com + + Records whether triggering the Touch To Search feature was suppressed due to + the base page view being too small. This may happen in landscape mode, on + very small phones, when a Partial Height Custom Tab is being displayed, or + when muliwindow is in use with a small window. The intent is to capture in + the log how many searches we lose when the gating Feature is enabled. + Recorded when a gesture that would normally trigger TTS suppresses the + bottom sheet from showing. Android only. + + + + + donnd@chromium.org + twellington@chromium.org + + Records whether the user opened the panel when it was shown in response to a + tap gesture, for all users. Recorded when the UX is hidden. Implemented for + Android. + + + + + donnd@chromium.org + twellington@chromium.org + + Records whether the user opened the panel when it was shown for sync-enabled + users only (this is an approximation for the population that logs to UKM). + Recorded for all gestures for users with sync enabled when the UX is hidden. + Implemented for Android. + + + + + + Removed 08/2022 + + donnd@chromium.org + contextual-search-eng@google.com + + Records that a translation is needed for the current Contextual Search, and + whether the selection was originally created by a Tap gesture. This is + recorded regardless of whether the user will actually be shown a translation + or not. Recorded any time a selection is established or changed with the + Contextual Search Translations feature enabled. Implemented for Android. + + + + + + Removed 01/2022 + + donnd@chromium.org + contextual-search-eng@google.com + + Records whether an IPH promoting the Opt-in for the Translations experiment + has ever been shown for the current user. Recorded when the Overlay Panel is + closed. Implemented for Android. + + + + + + Removed 01/2022 + + donnd@chromium.org + contextual-search-eng@google.com + + Records whether the user actually did Opt-in right after seeing the IPH for + the Translations experiment. Recorded when the Overlay Panel is closed. + Implemented for Android. + + + + + donnd@chromium.org + twellington@chromium.org + + Records the previous state of the user's enabled preference to indicate + whether they were decided or undecided about fully enabling this feature. + Recorded during the rollout of Unified Consent when the Contextual Search + preference is changed. Implemented for Android. + + + + + donnd@chromium.org + twellington@chromium.org + + Records whether throttling for Unified Consent was done for all requests. + Recorded when the user taps on text and the system would like the server to + suggest what to search for using page context, regardless of feature-enabled + state. Recorded multiple times for each request. Supports the rollout of + Unified Consent for Contextual Search. Implemented for Android. + + + + + donnd@chromium.org + twellington@chromium.org + + Records whether this user had a request throttled or not when needed. + Recorded when the user taps on text and the system would like the server to + suggest what to search for using page context, and throttling is in effect + for this user. Supports the rollout of Unified Consent for Contextual + Search. Implemented for Android. + + + + + + + donnd@chromium.org + twellington@chromium.org + + Whether Contextual Cards data was shown in the Contextual Search Bar. + Contextual Cards data is included with the search term resolution response. + Implemented for Android. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The duration between the panel being triggered and the panel being dismissed + due to a scroll when search results were not seen. Implemented for Android. + Prior to M57 this was recorded on tap and longpress; on M57+ it is only + recorded on tap. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The duration between the panel being triggered and the panel being dismissed + due to a scroll when search results were seen. Implemented for Android. + Prior to M57 this was recorded on tap and longpress; on M57+ it is only + recorded on tap. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The time from initiating to ending a contextual search, when results were + seen as part of the search. Implemented for Android. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The time from initiating to ending a contextual search, when results were + not seen as part of the search and the search did not end with the beginning + of another contextual search. Implemented for Android. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The time from initiating to ending a contextual search, when results were + not seen as part of the search and the search ended with the beginning of + another contextual search. Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + The details (previous state and reason) of the first entry into the closed + panel state within a contextual search. Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + The details (previous state and reason) of the first entry into the expanded + panel state within a contextual search. Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + The details (previous state and reason) of the first entry into the + maximized panel state within a contextual search. Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + The details (previous state and reason) of the first entry into the peeked + panel state within a contextual search. Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + Whether search results were seen as part of a Contextual Search when a tap + was on a word that we think is an entity. Recorded when Contextual Search is + dismissed. Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + The details (destination state and reason) of the first exit out of the + closed panel state within a contextual search. Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + The details (destination state and reason) of the first exit out of the + expanded panel state within a contextual search. Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + The details (destination state and reason) of the first exit out of the + maximized panel state within a contextual search. Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + The details (destination state and reason) of the first exit out of the + peeked panel state within a contextual search. Implemented for Android. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The status of the Contextual Search fallback Search request. Implemented for + Android. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + Whether the first run flow's panel was seen as part of a contextual search. + Only logged when the user triggered the first run flow yet exited the search + still in the undecided preference state. Implemented for Android. + + + + + donnd@chromium.org + mahmoudi@chromium.org + twellington@chromium.org + + The number of times the Contextual Search panel is opened, categorized by + whether In-Product Help for Contextual Search was shown before. Logged when + the panel is opened. Implemented for Android. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The time from starting a literal search until the results in the SERP start + to become viewable. Applies only to prefetched requests. Implemented for + Android. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The status of the Contextual Search low priority Search request. Implemented + for Android. + + + + + + Removed 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The status of the Contextual Search normal priority Search request. + Implemented for Android. + + + + + + Removed 08/2022 + + donnd@chromium.org + contextual-search-eng@google.com + + The time from opening the panel beyond peek until the panel is closed. + Implemented for Android. + + + + + donnd@chromium.org + mahmoudi@chromium.org + twellington@chromium.org + + The number of times the Contextual Search panel is opened, categorized by + whether In-Product Help for opening the panel was shown before. Logged when + the panel is opened. Implemented for Android. + + + + + + + donnd@chromium.org + twellington@chromium.org + + The state of the Contextual Search Preference. Can be logged multiple times. + Used to determine the population size (user view). Logged whenever the + Chrome application is paused. Implemented for Android. + + + + + + + donnd@chromium.org + twellington@chromium.org + + The Contextual Search preference state after a modification from the + preference menu. Implemented for Android. + + + + + donnd@chromium.org + contextual-search-eng@google.com + + The Contextual Search privacy opt-in preference state after a modification + from the preference menu. Recorded when the opt-in switch in Settings page + is toggled. Implemented for Android. + + + + + donnd@chromium.org + contextual-search-eng@google.com + + The user's choice in the Contextual Search promo card. Recorded when the 'No + thanks' or 'Turn on' button on the Contextual Search Promo Card is chosen. + Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + The total count of times that the bar with the promo has been opened. Once + the user decides, this counter is no longer updated. + + + + + gangwu@chromium.org + contextual-search-eng@chromium.org + + The total count of times that the revised promo has been shown. Once the + user decides, this counter is no longer updated. Logged for each show of the + promo card. Implemented for Android. + + + + + + Removed as of 08/2022 + + donnd@chromium.org + twellington@chromium.org + + Whether the promo was seen, broken down by original triggering gesture. + Logged each time the promo was activated. Implemented for Android. + + + + + + Removed as of 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The historic number of taps that showed a peeking bar with the opt-out promo + before the first time the user opened the panel. + + + + + + Removed as of 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The historic number of taps that showed a peeking bar with the opt-out promo + for users who have never opened the panel. This count may be limited by the + Finch config param promo_on_limited_taps. + + + + + + Removed as of 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The number of remaining taps that can trigger the promo for this user. + Implemented for Android. + + + + + donnd@chromium.org + twellington@chromium.org + + The category of quick actions shown in the Contextual Search bar. Recorded + when the quick action is set. Implemented for Android. + + + + + + + donnd@chromium.org + twellington@chromium.org + + Whether a quick action in the Contextual Search bar was clicked, which + activates the associated intent. Recorded when Contextual Search is + dismissed due to a click on a QuickAction in the Bar. Implemented for + Android. + + + + + donnd@chromium.org + twellington@chromium.org + + Whether a Contextual Search quick action intent resolved to zero, one, or + many apps. Recorded when the quick action intent URI is resolved. + Implemented for Android. + + + + + donnd@chromium.org + twellington@chromium.org + + Whether search results were seen as part of a Contextual Search when a quick + action was shown. Recorded when Contextual Search is dismissed. Implemented + for Android. + + + + + + Removed as of 06/2022 + + donnd@chromium.org + twellington@chromium.org + + Whether a quick action was shown in the Contextual Search bar. Recorded when + the quick action is set. Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + Whether a Quick Answer was activated, considered an answer, and seen. + Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + Whether showing the Tap to Search UX in response to a Tap was suppressed by + a recent scroll. Implemented for Android. + + + + + + Removed as of 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The time from starting a resolving search until the Search Term Resolves. + Implemented for Android. + + + + + + Removed as of 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The time from starting a resolving search until the results in the SERP + start to become viewable. Applies only to prefetched requests. Implemented + for Android. + + + + + + + donnd@chromium.org + twellington@chromium.org + + Whether search results were seen as part of a contextual search. Implemented + for Android. + + + + + + + donnd@chromium.org + twellington@chromium.org + + Whether search results were seen, broken down by original triggering + gesture. Only includes users that have enabled. Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + Whether Taps near the top of the screen was suppressed. Implemented for + Android. + + + + + + Removed as of 01/2022 + + donnd@chromium.org + twellington@chromium.org + + Whether results were seen for a second tap that was allowed to override ML + Tap Suppression. Recorded when the UX is hidden. Implemented for Android. + + + + + + Removed as of 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The length of the triggering selection when search results were not seen. + Only logged when contextual search is triggered due to a tap. Implemented + for Android. + + + + + + Removed as of 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The length of the triggering selection when search results were seen. Only + logged when contextual search is triggered due to a tap. Implemented for + Android. + + + + + + Removed as of 06/2022 + + donnd@chromium.org + twellington@chromium.org + + Whether a Tap was suppressed because the selection length was less than the + minimum selection length. Implemented for Android. + + + + + + Removed as of 06/2022 + + donnd@chromium.org + twellington@chromium.org + + Whether a Contextual Search selection was valid. Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + The duration of a tap that triggered a Contextual Search when the user does + not open the panel. Implemented for Android. Logged when the panel closes + after being triggered by a tap. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + The duration of a tap that triggered a Contextual Search when the user does + open the panel. Implemented for Android. Logged when the panel closes after + being triggered by a tap and subsequently opened. + + + + + donnd@chromium.org + mahmoudi@chromium.org + twellington@chromium.org + + The number of times the Contextual Search is triggered by tapping, + categorized by whether In-Product Help for tapping was shown before. Logged + when Contextual Search is triggered by tapping. Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + Whether results were seen for a Tap that was of long duration. Recorded when + the UX is hidden. Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + Whether results were seen for a Tap that was of short duration. Recorded + when the UX is hidden. Implemented for Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + The count of taps that showed a peeking bar without the opt-out promo since + this user has last opened the panel. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + The count of taps that showed a peeking bar with the opt-out promo since + this user has last opened the panel. + + + + + + Removed as of 06/2022 + + donnd@chromium.org + twellington@chromium.org + + Whether results were seen for a Tap and whether any suppression heuristic + was satisifed. Recorded when the UX is still shown (suppression not enabled, + only logged). Implemented for Android. + + + + + + Removed as of 06/2022 + + donnd@chromium.org + twellington@chromium.org + + The time between tapping on a word and performing a search. Implemented for + Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + The DPs count histogram for Taps that were not seen. Implemented for + Android. + + + + + + Removed as of 05/2022 + + donnd@chromium.org + twellington@chromium.org + + The DPs count histogram for Taps that were seen. Implemented for Android. + + + + + donnd@chromium.org + twellington@chromium.org + + For each contextual search that is triggered by tap, records whether the + translation conditions are met. Implemented for Android. + + + + + + Logged on profile open, including for profiles that do not allow the user to + search such as "system" profiles. When logged in such cases, + reported the default value. Replaced in M-108 with the histogram + Search.DefaultSearchProviderType2, which is similar but not emitted on for + some of those unusual/inappropriate profiles. + + mpearson@chromium.org + csharp@chromium.org + + The type of the default search engine that is loaded when a profile is + opened or after a profile reset. Due to an error, there was a period from + roughly May 9 2014 to May 23 2014 during which this was not being logged. + + + + + mpearson@chromium.org + csharp@chromium.org + + The type of the default search engine that is loaded when a regular, guest, + or ChromeOS sign-in screen profile is opened or after a profile reset. (A + profile reset can only happen to a regular profile.) Not logged when an + Incognito profile is opened because that inherits the settings from its + parent profile. As such, it's not necessary to log the Incognito profile's + settings. + + The fact that this is logged when the ChromeOS sign-on screen profile is + opened means this is recorded when the ChromeOS sign-in screen is initially + shown. The value recorded is the default value for the ChromeOS install; the + default search engine used in this profile cannot be changed. Also note that + people cannot search / browse the web using this profile. As such, the + default search engine setting for this profile does not have any practical + meaning. + + + + + lizeb@chromium.org + + On Android, when GSA tells Chrome about an account change, what is the + notification mechanism used, which is either the service connection, or a + broadcast. Recorded once per account change. + + + + + lizeb@chromium.org + + On Android, whether GSA tells Chrome about account changes through the + service or through a broadcast. This is reported at most once per Chrome + startup. + + + + + wychen@chromium.org + yusufo@chromium.org + + The number of entries in the usage report level DB for Icing. This is + measured on cold start. + + + + + donnd@chromium.org + + Records the reason why a context report to Icing failed, every time Chrome + attemps to record the current context (tab switching, navigations, etc). + Also records reasons why context reporting might be disabled. Recorded on + Android only. + + + + + juanmojica@google.com + schechter@google.com + stanfield@google.com + lens-chrome-eng@google.com + + Records all intents fired to open the Lens viewfinder enumerated by entry + point, regardless of whether the intent was successful. + + + + + juanmojica@google.com + schechter@google.com + stanfield@google.com + hujasonx@google.com + lens-chrome-eng@google.com + + Records camera results such as successful image capture, user exited, etc. + This is recorded every time the user opens the Lens viewfinder camera. + + + + + sczs@chromium.org + gambard@chromium.org + + When an iOS user changes the default search engine in chrome Settings, + records the search engine's type. + + + + + hujasonx@google.com + lens-chrome-eng@google.com + + When the user performs a Lens search on Desktop, records the time elapsed + from when a Lens Ping was sent and the response was received. Recorded if + enable-lens-ping and ping-lens-sequentially are both true. If the ping was + never received, or was an unexpected type, such as a non 204 response code, + this event will not be logged. + + + + + yusufo@chromium.org + + The entry point used for all searches performed under partnership after the + Android search engine promo dialog was shown. This is a dialog prompting the + user to pick a default search engine. This metric is collected for every + search query performed. + + + + + + + shaktisahu@chromium.org + chrome-upboarding-eng@google.com + + Indicates whether or not a bitmap could be shown for a tile. + + + + + + + shaktisahu@chromium.org + chrome-upboarding-eng@google.com + + Records the time taken to fetch a bitmap for a tile when a bitmap could be + found. It includes the time starting from the UI layer requesting the + backend till the backend returns the associated bitmap. + + + + + qinmin@chromium.org + chrome-upboarding-eng@google.com + + Records duration from time when first task scheduled to time the fetch task + completed. + + + + + qinmin@chromium.org + chrome-upboarding-eng@google.com + Records the hour (0-23) when the TileFetcher task starts. + + + + qinmin@chromium.org + chrome-upboarding-eng@google.com + Records the HTTP response code get from TileFetcher. + + + + qinmin@chromium.org + chrome-upboarding-eng@google.com + Records the net error code get from TileFetcher. + + + + qinmin@chromium.org + chrome-upboarding-eng@google.com + + Records the reasons caused the tile group pruned in TileManager. + + + + + qinmin@chromium.org + chrome-upboarding-eng@google.com + + Records the TileManager status after initialized and loaded completed. + + + + + qinmin@chromium.org + chrome-upboarding-eng@google.com + + Records the image preloading events when the query tile images are fetched + from the background task. + + + + + + + shaktisahu@chromium.org + chrome-upboarding-eng@google.com + + Records the time taken by the bitmap request for a tile when no bitmap could + be found. It includes the time starting from the UI layer requesting the + backend till the backend returns the associated bitmap. + + + + + qinmin@chromium.org + chrome-upboarding-eng@google.com + + Records the TileFetcher status after request send to server and response + received. + + + + + haileywang@chromium.org + ssid@chromium.org + + Records the result from segmentation platform that determines whether or not + to show Query Tiles on NTP. When segmentation model is finch enabled, this + is recorded every time the user navigates to NTP and the current Query Tiles + decision is inexistant or expired. For cases where segmentation model is not + finch enabled see ShowQueryTilesSegmentationResultComparison. + + + + + haileywang@chromium.org + ssid@chromium.org + + Records the comparison of result from segmentation model and code logic for + when to show Query Tiles on NTP. When segmentation model is not finch + enabled, this is recorded every time the user navigates to NTP and the + current Query Tiles decision is inexistant or expired. For cases where + segmentation model is finch enabled see ShowQueryTilesSegmentationResult. + + + + + + + shaktisahu@chromium.org + chrome-upboarding-eng@google.com + + Records the index of the tile that was clicked. The index refers to the + position of the tile in the carousel. + + + + + + + shaktisahu@chromium.org + chrome-upboarding-eng@google.com + Indicates whether the tile clicked was a top level tile. + + + + + + shaktisahu@chromium.org + chrome-upboarding-eng@google.com + + Indicates the number of tiles displayed in the UI after the backend was + loaded. + + + + + qinmin@chromium.org + chrome-upboarding-eng@google.com + + Records events related to trending tiles, including display, removal and + click, after the events occur. + + + + + juanmojica@google.com + benwgold@google.com + stanfield@google.com + lens-chrome-eng@google.com + + Records an enum representing the aspect ratio of the region selected after + using the Lens Region Search feature. + + + + + juanmojica@google.com + benwgold@google.com + stanfield@google.com + lens-chrome-eng@google.com + + Records a percentage to represent the proportion of the selected region to + the screen after selecting a region with the Lens Region Search feature. + + + + + juanmojica@google.com + benwgold@google.com + stanfield@google.com + lens-chrome-eng@google.com + + Records an enum representing the result of the capture of the region for + Lens Region Search feature. + + + + + donnd@chromium.org + related-searches-vteam@google.com + + Enumerates all users by the permissions needed in order to use the Related + Searches feature. This tells us the potential user pool if we were to remove + one of the current requirements (which are sending page content and sending + the URL to Google). Logged whenever the Chrome application is paused. NOTE: + Use the Count unique clients option to count users since multiple events are + logged for each user. Implemented for Android. + + + + + donnd@chromium.org + gangwu@chromium.org + related-searches-vteam@google.com + + The last visible position index for a chip in the carousel. the index is 0 + based. Ex. There are 10 chips, and only 2 chips are shown completely, and 1 + chip is shown half, in this case, 2 will be reported. Recorded every time + the carousel is shown, or the carousel content is updated. Implemented for + Android. + + + + + donnd@chromium.org + gangwu@chromium.org + related-searches-vteam@google.com + + Records whether and how the user interacted with the carousel. Recorded when + the presentation UI is dismissed while the carousel is shown. Implemented + for Android. + + + + + donnd@chromium.org + gangwu@chromium.org + related-searches-vteam@google.com + + Records whether the user scrolled the carousel when it was shown, this can + help us to find users who discover carousel scroll gesture. Recorded when + the presentation UI is dismissed while the carousel is shown. Implemented + for Android. + + + + + donnd@chromium.org + related-searches-vteam@google.com + + Records the click through rate for Related Searches. This is the rate that + at least one suggestion was chosen by the user when any were shown. Records + false whenever Related Searches suggestions were shown to the user but none + were selected, and true whenever the user has clicked on any suggestion to + view the suggested query. Only records one entry per botton-sheet session. + Recorded when the presentation UI is dismissed. Implemented for Android. + + + + + donnd@chromium.org + related-searches-vteam@google.com + + The number of suggestions that were chosen by the user in a bottom-sheet + session when the user chose any Related Searches. Written when the + suggestions UI is closed. Implemented for Android. + + + + + donnd@chromium.org + related-searches-vteam@google.com + + Records true for every user that is qualified for the Related Searches + experiment regardless of whether that feature is enabled or not. Never logs + false. Used to validate that population sizes are relatively equal (since + only a subset is actually qualified). Logged whenever a user triggers + Contextual Search in way that could activate Related Searches (i.e. sends + context). NOTE: Use the Count unique clients option to count users since + multiple events are logged for each user. Implemented for Android. + + + + + donnd@chromium.org + related-searches-vteam@google.com + + The display position index for a chip in the carousel when it was selected + by the user. Written when a Related Searches suggestion chip is clicked. + Implemented for Android. + + + + + donnd@chromium.org + related-searches-vteam@google.com + + The display position index for a suggestion when it was selected by the + user. The suggestion at location 0 is always the default selection search, + which may not be a possible position in some implementations. All indecies + from 1 on are true Related Searches suggestions. Written when a Related + Searches suggestion in the UI is selected. Implemented for Android. + + + + + + + yusufo@chromium.org + + The search engines listed in the options for search engine promo. This is an + Android specific dialog prompting the user to pick a default search engine. + The dialog was shown on a device that had Chrome before it was first + introduced. + + + + + yusufo@chromium.org + + The search engine selected by the user from the search engine promo. This is + an Android specific dialog prompting the user to pick a default search + engine. The dialog was shown on a device that had Chrome before it was first + introduced. + + + + + yusufo@chromium.org + + The current state for search widget use and whether the device is a + partnership device related with the Android Search Widget. Collected on + every cold start. + + + + + tommycli@chromium.org + chrome-omnibox-team@google.com + + Records when TemplateURL encounters specific events, particularly during + Sync or startup. There's a bunch of edge cases being handled by complicated + code within TemplateURLService, and we'd like to learn how often they + actually occur in the wild. + + + + + mmourgos@chromium.org + newcomer@chromium.org + Time between showing and hiding the answer card. + + + + newcomer@chromium.org + + Time between sending an answer server request and the end of loading of the + answer card. Failed requests and requests not returning an answer are not + counted. + + + + + newcomer@chromium.org + + Time between sending an answer server request and successful finish of + navigation. Failed requests and requests not returning an answer are not + counted. + + + + + newcomer@chromium.org + Result of a answer server request. + + + + newcomer@chromium.org + + Time between successfully loading an answer card request and updating its + preferred size. There might be no or more than one size update per card + load. Size updates that happen before the card finishes loading are ignored + since they are not visible. + + + + + + diff --git a/histograms/metadata/security/OWNERS b/histograms/metadata/security/OWNERS new file mode 100644 index 000000000000..2feec3357e5f --- /dev/null +++ b/histograms/metadata/security/OWNERS @@ -0,0 +1,8 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +cthomp@chromium.org + +# For Security.PageInfo.AboutThisSite*: +dullweber@chromium.org diff --git a/histograms/metadata/security/histograms.xml b/histograms/metadata/security/histograms.xml new file mode 100644 index 000000000000..32438f8bc877 --- /dev/null +++ b/histograms/metadata/security/histograms.xml @@ -0,0 +1,1113 @@ + + + + + + + + + + jdeblasio@chromium.org + + When TLS client authentication is requested by the server, Chrome must + choose whether to return a certificate or to abort the handshake. This + histogram records how this determination was made, either as a result of + user action, or as chosen automatically due to content settings. It only + records when a fresh certificate selection would be attempted (and thus + ignores cache hits). This histogram is recorded in SSLClientAuthObserver for + user-selected outcomes and in ChromeContentBrowserClient for policy + outcomes. This histogram does not cover mobile, as certificate handling is + not handled by Chrome on Android nor iOS. + + + + + lukasza@chromium.org + rsesek@chromium.org + + Logged once for every invocation of `data_decoder::DecodeImage` and/or + `data_decoder::DecodeImageIsolated`. Logs the time that has elapsed while + decoding the image (typically this happens in the Utility process). The time + is recorded in all the cases (including empty input which don't require + actual image decoding). + + + + + lukasza@chromium.org + rsesek@chromium.org + + Logged once for every invocation of `data_decoder::DecodeImageIsolated`. + Logs the time that has elapsed between 1) invocation of DecodeImageIsolated + and 2) calling the completion callback (both of these events happen in the + Browser process). The elapsed time covers A) spawning the utility process, + B) decoding the image, C) IPC overhead. + + Note that there are 2 sets of similar metrics: + Security.DataDecoder.Image.Isolated. and + Security.DataDecoder.Image.Reusable. In the Isolated case a Utility process + is spawned for each image decoding operation and the ...End2End and + ...ProcessOverhead metrics always include process spawning overhead. In the + Reusable case a Utility process may get reused when decoding a batch of + images, and the ...End2End and ...ProcessOverhead metrics may or may not + include process spawning overhead (the process will only need to be spawned + for the first image in a batch + after the process has been shut down due to + inactivity). + + + + + lukasza@chromium.org + rsesek@chromium.org + + Logged once for every invocation of `data_decoder::DecodeImageIsolated`. + Logs the overhead of using a separate process for decoding the images by + calculating the difference between ...Image.Isolated.EndToEndTime and the + ...Image.DecodingTime metrics. + + Note that there are 2 sets of similar metrics: + Security.DataDecoder.Image.Isolated. and + Security.DataDecoder.Image.Reusable. In the Isolated case a Utility process + is spawned for each image decoding operation and the ...End2End and + ...ProcessOverhead metrics always include process spawning overhead. In the + Reusable case a Utility process may get reused when decoding a batch of + images, and the ...End2End and ...ProcessOverhead metrics may or may not + include process spawning overhead (the process will only need to be spawned + for the first image in a batch + after the process has been shut down due to + inactivity). + + + + + lukasza@chromium.org + rsesek@chromium.org + + Logged once for every invocation of `data_decoder::DecodeImage`. Logs the + time that has elapsed between 1) invocation of DecodeImage and 2) calling + the completion callback (both of these events happen in the Browser + process). The elapsed time covers A) spawning the utility process (if + needed), B) decoding the image, C) IPC overhead. + + Note that there are 2 sets of similar metrics: + Security.DataDecoder.Image.Isolated. and + Security.DataDecoder.Image.Reusable. In the Isolated case a Utility process + is spawned for each image decoding operation and the ...End2End and + ...ProcessOverhead metrics always include process spawning overhead. In the + Reusable case a Utility process may get reused when decoding a batch of + images, and the ...End2End and ...ProcessOverhead metrics may or may not + include process spawning overhead (the process will only need to be spawned + for the first image in a batch + after the process has been shut down due to + inactivity). + + + + + lukasza@chromium.org + rsesek@chromium.org + + Logged once for every invocation of `data_decoder::DecodeImage`. Logs the + overhead of using a separate process for decoding the images by calculating + the difference between ...Image.Reusable.EndToEndTime and the + ...Image.DecodingTime metrics. + + Note that there are 2 sets of similar metrics: + Security.DataDecoder.Image.Isolated. and + Security.DataDecoder.Image.Reusable. In the Isolated case a Utility process + is spawned for each image decoding operation and the ...End2End and + ...ProcessOverhead metrics always include process spawning overhead. In the + Reusable case a Utility process may get reused when decoding a batch of + images, and the ...End2End and ...ProcessOverhead metrics may or may not + include process spawning overhead (the process will only need to be spawned + for the first image in a batch + after the process has been shut down due to + inactivity). + + + + + glazunov@google.com + mpdenton@chromium.org + chrome-memory-tok@google.com + + Reports the GWP-ASan crash analysis result. That can either be a + determination that the crash was related to GWP-ASan, not related to + GWP-ASan, or an error making that determination. Recorded with every crash. + + + + + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Events for navigations that are upgraded from HTTP to HTTPS by HTTPS-First + Mode. Recorded for eligible navigations (HTTP main frame navigations that + are not allowlisted), if the profile is opted in to HTTPS-First Mode. + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Records the HTTPS-First Mode preference state when it changes for a profile. + Recorded for regular profiles only (not for Incognito, Guest, or Sign-in + profiles). + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Records whether the HTTPS-First Mode preference is enabled at profile + startup. Recorded for regular profiles only (not for Incognito, Guest, or + Sign-in profiles). + + + + + meacer@chromium.org + trusty-transport@chromium.org + + Records the accumulated number of host that have HFM enabled at some point + due to the site engagement heuristic. Includes hosts that have HTTP allowed. + Recorded at the time of navigation when HFM upgrades trigger. + + + + + meacer@chromium.org + trusty-transport@chromium.org + + Records the duration a host has HFM enabled due to the site engagement + heuristic. Only recorded for hosts removed from the HFM list. Recorded at + the time of navigation when HFM upgrades trigger. + + + + + meacer@chromium.org + trusty-transport@chromium.org + + Records the current number of host that have HFM enabled due to the site + engagement heuristic. Includes hosts that have HTTP allowed. Recorded at the + time of navigation when HFM upgrades trigger. + + + + + meacer@chromium.org + cthomp@chromium.org + trusty-transport@chromium.org + + Same as Security.HttpsFirstMode.NavigationEvent but only recorded iff HFM is + disabled by the UI setting and enabled by the Site Engagement Heuristic + because the site's HTTPS score is high and HTTP score is low. + + + + + meacer@chromium.org + trusty-transport@chromium.org + + Records whether the HTTPS-First Mode got enabled or disabled on a site due + to its HTTP and HTTPS site engagement scores. Only recorded if the enabled + state changes. Recorded even for sites allowlisted to load over HTTP. + + + + + rsesek@chromium.org + chrome-platform-security@google.com + + Records the usage of the base::JSONParser's non-RFC-8259-conforming + extensions when parsing JSON documents. This histogram is emitted each time + an instance of non-conforming syntax is detected in a document. + + + + + jdeblasio@chromium.org + trusty-transport@chromium.org + + Records the security level (e.g. secure, not secure, etc.) of each HTTP + request, recording one histogram per fetch (i.e. including redirects). + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Records the reason the page visit ended (e.g., reload, tab closed, new + navigation, etc.) for page loads that committed. + + + + + dullweber@chromium.org + olesiamarukhno@chromium.org + + Tracks interactions with the AboutThisSite feature. Recorded when PageInfo + is opened and when the user interacts with the AboutThisSite row. + + + + + dullweber@chromium.org + olesiamarukhno@chromium.org + + Tracks whether AboutThisSite is available for the user's application locale. + Recorded every time PageInfo is opened. + + + + + dullweber@chromium.org + olesiamarukhno@chromium.org + + Tracks status of AboutThisSite queries. Recorded every time PageInfo is + opened and information about a site is requested. + + + + + dullweber@chromium.org + sauski@google.com + + Tracks whether the Ads Personalization section was shown. Recorded every + time PageInfo is opened. + + + + + tommasin@chromium.org + sauski@google.com + olesiamarukhno@google.com + + Tracks whether the FPS section was shown in the Cookies subpage. Recorded + every time Cookie subpage from PageInfo is opened. + + + + + cthomp@chromium.org + security-enamel@chromium.org + + Records the amount of time the Page Info bubble is open before the user + closes it or takes an action which closes it. + + + + + cthomp@chromium.org + security-enamel@chromium.org + + Records the amount of time the Page Info bubble is open before the user + closes it, for cases where the user has performed an action inside it. + + + + + cthomp@chromium.org + security-enamel@chromium.org + + Records the amount of time the Page Info bubble is open before the user + closes it, for cases where the user performed no action inside it. + + + + + titouan@chromium.org + clamy@chromium.org + mkwst@chromium.org + + Same as `Security.PrivateNetworkAccess.CheckResult`, but only recorded when + the resource is loaded from the HTTP cache. + + + + + titouan@chromium.org + clamy@chromium.org + mkwst@chromium.org + + Result of the Private Network Access Check on a new connection. Recorded + once per call to network::URLLoader::OnConnected(), which may be more than + once per URL request. + + + + + titouan@chromium.org + clamy@chromium.org + mkwst@chromium.org + + Recorded once per network::URLLoader instantiation. True if the request + connected multiple times to different transports (e.g. for a + partially-cached range request) and not all the computed IP address spaces + were the same. + + + + + titouan@chromium.org + lyf@chromium.org + clamy@chromium.org + + Records whether a failed PNA check could have been avoided by inferring the + request's target IP address space by recognizing that the request URL's host + is a literal private IP address. Recorded at most once per URL request. + + + + + titouan@chromium.org + lyf@chromium.org + clamy@chromium.org + + Records whether a request to a literal private IP address resolved to that + private IP address. Recorded at most once per call to + `network::URLLoader::OnConnected()`, which may be more than once per URL + request. + + + + + jdeblasio@chromium.org + estark@chromium.org + blundell@chromium.org + + Records the time duration that a check for the reputation status of a site + spent in getting the domain info of the site on the main thread, or 0 if the + domain info was obtained off of the main thread. Recorded on every check. + + + + + jdeblasio@chromium.org + estark@chromium.org + blundell@chromium.org + + Records the time duration of a check for the reputation status of a site on + the main thread. Recorded on every check. + + + + + jdeblasio@chromium.org + estark@chromium.org + + Records a user's interaction with a Safety Tip. Recorded every time a user + uses one of the Safety Tip's buttons or dismisses it explicitly. Can be + normalized against Security.SafetyTips.SafetyTipShown, filtered to users + with the feature enabled to show the UI. + + + + + jdeblasio@chromium.org + src/chrome/browser/lookalikes/OWNERS + + Records the Safety Tip status of a page after navigation commit for a page + where the Safety Tip has previously been ignored. + + Note: This histogram was expired from 2021-12-26 until 2023-01-19. + + + + + jdeblasio@chromium.org + trusty-transport@chromium.org + + Records the Safety Tip status of a page after navigation commit or page + visibility change. + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Records the number of persisted SCT auditing reports that were loaded and + deserialized from disk, if SCT auditing is enabled. Invalid persisted + reports are not counted. Recorded once shortly after browser startup (or + when the network service restarts). + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Records the high-water-mark of the number of entries in the SCT auditing + dedupe cache. Recorded on a timer hourly, if SCT auditing is enabled. + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Records the final status of an SCT auditing report, when it has been + successfully received or it has run out of retries. + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Records whether a report was deduplicated (i.e., the SCTs were already in + the cache) or not. Recorded on each new report seen by the SCT auditing + cache (i.e., on each connection using certificate transparency). + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Records the high-water-mark of the number of pending reporters in the SCT + auditing cache. Recorded on a timer hourly, if SCT auditing is enabled. + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Records whether a report was sampled to be sent to Safe Browsing. Recorded + for each new report seen by the SCT auditing cache that was not + deduplicated. + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Records the size of an SCT auditing report that will be sent to Safe + Browsing (i.e., was not deduplicated and was sampled). + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Records whether sending an SCT auditing report succeeded or not. This is + recorded after we receive the headers from the server (or we stop due to a + connection error). + + + + + cthomp@chromium.org + trusty-transport@chromium.org + + Records whether a hashdance report was dropped due to not finding the log + metadata for the selected SCT. Recorded once when creating a new auditing + report, but before the report is sampled or deduplicated. + + + + + cthomp@chromium.org + nsatragno@chromium.org + trusty-transport@chromium.org + + Records the result of a hashdance lookup query. Recorded once per query + regardless of whether the query succeeded, failed, or is a retry. + + + + + cthomp@chromium.org + nsatragno@chromium.org + trusty-transport@chromium.org + + Records whether an SCT selected for a hashdance lookup query was skipped + because it was found on the Popular SCTs list. Recorded once when creating a + new auditing report, but before the report is sampled or deduplicated. + + + + + cthomp@chromium.org + jdeblasio@chromium.org + + Records how many full SCT auditing reports the client has sent (i.e., after + a successful hashdance lookup query resulting in kSCTSuffixNotFound). This + count is tracked per-client in a pref to limit how many full reports a + client can send. This metric is emitted every time this count is checked by + the SCT auditing code, after sampling is performed, and only once per report + (including across browser restarts). This metric is only emitted for SCT + auditing hashdance users. + + + + + cthomp@chromium.org + security-enamel@chromium.org + + Records the security level of the page that initiated a download (rather + than the security state of the connection to the download URL itself). The + recorded security level is the level of the page the download was initiated + from, not that of the download URL. This histogram is not recorded for + downloads that are initiated in a new tab or window, as the security level + of the initiating page cannot be tracked. + + + + + carlosil@chromium.org + cthomp@chromium.org + + Records the security level of a page when submitting a form. This histogram + is recorded whenever a form submission navigation begins. The recorded + security level is the level of the page the form was submitted from, not the + one that the form targets. + + + + + estark@chromium.org + carlosil@chromium.org + + Records the security level of a page when submitting a form on a top-frame + navigation with a non-cryptographic scheme. This histogram is recorded + whenever a form submission navigation begins. The recorded security level is + the level of the page the form was submitted from, not the one that the form + targets. + + + + + cthomp@chromium.org + security-enamel@chromium.org + + Records the security level of a page at the time the navigation commits. + Note that the security level of a page can change after commit time, so this + histogram should often be compared against + Security.SecurityLevel.OnComplete. + + + + + cthomp@chromium.org + security-enamel@chromium.org + + Records the security level of a page at the end of the page visit (i.e., + navigating away from the page, reloading the page, clicking a link, closing + the tab, etc.). Note that this security level can be different than the + initial security level of the page, so this histogram should often be + compared against Security.SecuritLevel.OnCommit. + + + + + cthomp@chromium.org + security-enamel@chromium.org + + The final Site Engagement score (0 to 100) of a URL during a visit to a + page. Recorded when the user closes the page or initiates a new navigation. + + + + + cthomp@chromium.org + security-enamel@chromium.org + + Records the time spent on the page (the time that the page was in the + foreground from the start of the navigation to the page visit completing due + to a new navigation or the tab being closed). This aggregates all foreground + time over the entire visit (multiple times in the foreground are added + together). + + + + + wjmaclean@chromium.org + creis@chromium.org + + The maximum number of BrowsingInstances seen in a RenderProcessHost over its + lifetime. Recorded once when + ChildProcessImpl::SecurityState::~SecurityState() is invoked. + + + + + alexmos@chromium.org + creis@chromium.org + + The count of all current BrowsingInstances. Recorded once per UMA ping. + + + + + krstnmnlsn@chromium.org + creis@chromium.org + + The blocking decision CORB would have made on the response, if the request + was cross-origin. Reported if the response looked sensitive under the cache + heuristic (i.e. had Cache-Control: Private and Vary: Origin response + headers). + + + + + + + krstnmnlsn@chromium.org + creis@chromium.org + + True if the response has an Accept-Ranges header, which indicates the server + supports range requests on the resource and could be used to bypass CORB. + Only reported if the resource looked sensitive under the Cache heuristic and + was a protected MIME type. + + + + + krstnmnlsn@chromium.org + creis@chromium.org + + The blocking decision CORB would have made on the response, if the request + was cross-origin. Reported if the response looked sensitive under the CORS + heuristic (i.e. had the Access-Control-Allow-Origin header with a value + other than * or null). + + + + + + + krstnmnlsn@chromium.org + creis@chromium.org + + True if the response has an Accept-Ranges header, which indicates the server + supports range requests on the resource and could be used to bypass CORB. + Only reported if the resource looked sensitive under the CORS heuristic and + was a protected MIME type. + + + + + krstnmnlsn@chromium.org + creis@chromium.org + + True if the response has a nosniff header. If the nosniff header is not + present, then CORB must have decided to block without sniffing due to a + partial response, or because the MIME type was a never sniff type. Only + reported on resources CORB would have blocked/protected without sniffing + that have a protected MIME type. + + + + + krstnmnlsn@chromium.org + creis@chromium.org + + True if the resource was found to be sensitive by either the CORS or Cache + heuristics. Recorded for every resource CORB sees. + + + + + krstnmnlsn@chromium.org + creis@chromium.org + + True if the response has an Accept-Ranges header, which indicates the server + supports range requests on the resource. Only reported if the response + looked sensitive under the cache or CORS heuristics. + + + + + wjmaclean@chromium.org + alexmos@chromium.org + creis@chromium.org + + The number of sandboxed iframes that (i) are same-site (and therefore not + already process-isolated) and (ii) eligible to be process isolated if + SiteIsolationPolicy::AreIsolatedSandboxedIframesEnabled() is true. A + sandboxed iframe is eligible for process-isolation so long as it doesn't + have `allow-same-origin` among its sandbox permissions, and it isn't an + about:blank url. This metric measures the upper bound on the process + overhead of isolating sandboxed iframes, namely the case where every + sandboxed iframe is placed in its own process. Note that the computation of + this metric is independent of the current process model. Recorded once per + UMA ping. + + + + + wjmaclean@chromium.org + alexmos@chromium.org + creis@chromium.org + + The number of unique origins among the sandboxed iframes reported in + SiteIsolation.IsolatableSandboxedIframes. Used to estimate the potential + process overhead if a per-origin process model is used for isolating the + sandboxed iframes instead of the (current) per-site process model. Note that + the computation of this metric is independent of the current process model. + Recorded once per UMA ping. + + + + + wjmaclean@chromium.org + alexmos@chromium.org + creis@chromium.org + + The number of unique sites among the sandboxed iframes reported in + SiteIsolation.IsolatableSandboxedIframes. Note that the computation of this + metric is independent of the current process model. Recorded once per UMA + ping. + + + + + alexmos@chromium.org + lukasza@chromium.org + + Logs whether or not a password form was submitted from a site-isolated + process that's dedicated to a single site. Recorded when a password form is + submitted. + + + + + creis@chromium.org + lukasza@chromium.org + vogelheim@chromium.org + + Logs why ORB has reached a blocking decision. + + Logged for each response processed by OpaqueResponseBlockingAnalyzer. + + + + + creis@chromium.org + lukasza@chromium.org + vogelheim@chromium.org + + Logs whether ORB and CORB would take the same allow-vs-block decision. This + should help assess the backcompatibility risk of shipping ORB. + + Logged at the end of lifetime of the ResponseAnalyzer (i.e. after processing + each response that is subject to CORB - most NetworkService responses, but + also CORB-covered web bundles). + + + + + creis@chromium.org + lukasza@chromium.org + vogelheim@chromium.org + + Logs why ORB has reached a blocking decision. + + Logged when it turned out that CORB wouldn't have blocked the response, but + ORB blocked the response. + + + + + + Removed in Feb 2022 / M100. + + Old results are preserved in + https://docs.google.com/document/d/1LkF7a-_RXg0uQQdk86FQHq7CMW5pKozPDmmbnJJRhY8/edit#heading=h.6labqs212jfn + + creis@chromium.org + lukasza@chromium.org + + The approximation of a route that Opaque Response Blocking (ORB) algorithm + would have taken to decide whether to block the response or not. The logged + value is based on heuristics that only look at the HTTP response headers, + and attempt to approximate if the full ORB algorithm would need to parse the + response body as Javascript (vs also reaching a decision purely based on the + HTTP response headers). + + Note that only partial ORB algorithm is used for logging the UMA (e.g. no + multimedia sniffing and/or 206-response processing is done). This means that + the results overestimate how many responses need Javascript parsing. + + Logged for each final HTTP/HTTPS response processed by the NetworkService. + + + + + + Removed in Feb 2022 / M100. + + Old results are preserved in + https://docs.google.com/document/d/1LkF7a-_RXg0uQQdk86FQHq7CMW5pKozPDmmbnJJRhY8/edit#heading=h.6labqs212jfn + + creis@chromium.org + lukasza@chromium.org + + The request destination (e.g. script vs image) of a response that Opaque + Response Blocking (ORB) algorithm processed {OrbDecision}. + + Note that only partial ORB algorithm is used for logging the UMA (e.g. no + multimedia sniffing and/or 206-response processing is done). This means that + the results overestimate how many responses need Javascript parsing. + + Logged for each final HTTP/HTTPS response processed by the NetworkService. + + + + + + + + + alexmos@chromium.org + creis@chromium.org + lukasza@chromium.org + nasko@chromium.org + + The count of all out-of-process iframes. Recorded once per UMA ping. + + + + + alexmos@chromium.org + creis@chromium.org + lukasza@chromium.org + nasko@chromium.org + + The count of all out-of-process inner frame trees. Recorded once per UMA + ping. + + + + + alexmos@chromium.org + creis@chromium.org + lukasza@chromium.org + + The count of all RenderFrameProxyHosts. Recorded once per UMA ping. + + + + + alexmos@chromium.org + creis@chromium.org + lukasza@chromium.org + + The count of RenderFrameProxyHosts in each BrowsingInstance. Recorded each + UMA ping, once per BrowsingInstance. + + + + + clamy@chromium.org + + Whether SiteInstances with a ProcessReusePolicy of + REUSE_PENDING_OR_COMMITTED_SITE could reuse an existing RenderProcessHost or + they had to create a new one. True when they reused an existing process, + false when they created a new one. + + (Was expired between M77 and M105 before moving on to V2.) + + + + + jessemckenna@google.com + olivierli@chromium.org + + Recorded on navigations with a ProcessReusePolicy of + REUSE_PENDING_OR_COMMITTED_SITE (mostly subframe navigations). Measures the + time since a RenderProcessHost hosting the destination URL was last + destroyed, up to 10 seconds. If no host matching the destination was + recently destroyed, a sentinel value of 20 seconds is used. + + + + + alexmos@chromium.org + creis@chromium.org + lukasza@chromium.org + + The number of currently saved sites that had been isolated due to OAuth. + This is only used by Site Isolation on Android. Recorded once on browser + startup. + + + + + alexmos@chromium.org + creis@chromium.org + lukasza@chromium.org + + The number of currently saved user-triggered isolated sites. This includes + sites where the user has entered a password while using Site Isolation for + password sites (which is a currently active site isolation mode on Android). + Recorded once on browser startup. + + + + + alexmos@chromium.org + creis@chromium.org + lukasza@chromium.org + + The number of currently saved web-triggered isolated sites. This includes + sites that were isolated due to Cross-Origin-Opener-Policy headers, which is + a heuristic used for site isolation on Android. Recorded once on browser + startup. + + + + + alexmos@chromium.org + creis@chromium.org + lukasza@chromium.org + nasko@chromium.org + + The count of SiteInstances in a single BrowsingInstance. Recorded each UMA + ping, once per BrowsingInstance. + + + + + creis@chromium.org + lukasza@chromium.org + + Various actions related to cross-site document blocking in the browser + process, indicating whether the response was blocked from the renderer. + Recorded as the response is processed in the network stack. + + + + + creis@chromium.org + lukasza@chromium.org + + The total count of responses that were blocked by the cross-site document + blocking logic in the browser process. Recorded with a canonical MIME type + when the response is blocked. + + + + + + diff --git a/histograms/metadata/segmentation_platform/OWNERS b/histograms/metadata/segmentation_platform/OWNERS new file mode 100644 index 000000000000..f14c1c42e16d --- /dev/null +++ b/histograms/metadata/segmentation_platform/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +nyquist@chromium.org +shaktisahu@chromium.org diff --git a/histograms/metadata/segmentation_platform/histograms.xml b/histograms/metadata/segmentation_platform/histograms.xml new file mode 100644 index 000000000000..9c86e192407e --- /dev/null +++ b/histograms/metadata/segmentation_platform/histograms.xml @@ -0,0 +1,788 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deprecated as of 2022-10-24. + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the segmentation platform model evaluation score for the given + {SegmentID}. Recorded whenever the model evaluation is completed + successfully. + + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the selected segment to be shown for the adaptive toolbar button. + Recorded on chrome startup. + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the result of segment selection. Recorded whenever the segment + selection is updated. + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the segment selection switch from an old value to a new segment + after a model evaluation completes. Recorded only if the selected segment + switches to a new value. + + + + + ritikagup@google.com + chrome-segmentation-platform@google.com + + Records the total duration for Classification API call for the given + {SegmentationKey} including the time required for feature processing and + model execution as well. + + Starts recording every time the GetClassificationAPI is called for + {SegmentationKey}. Records the duration when ClassificationResult is + returned. + + + + + + junzou@chromium.org + ssid@chromium.org + chrome-segmentation-team@google.com + + The number of active syncing devices of type {OsType} known to any profile. + Each device is identified by one unique guid. No deduping is applied. May be + 0 when there are no signed in/syncing profiles open. Recorded once on + browser startup iff DeviceInfo sync is enabled. Note that the threshold on + the number of days for determining active statuses may change based on the + config of the kSegmentationDeviceCountByOsType feature. + + + + + + + + + + + + + + + + ssid@chromium.org + chrome-segmentation-platform@google.com + + The time taken from the time user enabled sync consent to the time result is + available for device switcher user segment. This includes the network delay + for downloading the device info data. The metric is recorded once for each + user at the time when the user enables sync on the device. + + + + + ssid@chromium.org + chrome-segmentation-platform@google.com + + The time taken from the startup to the time result is available for the + device switcher user segment. The metric is recorded once for each user the + first time the device switcher segmentation is enabled, only if the user + already had sync enabled. + + + + + haileywang@chromium.org + chrome-segmentation-platform@google.com + + Records the feature processing error of segmentation models. Recorded + whenever an error is encountered during the feature processing stage of the + {SegmentationModel} model. Used to distinguish between multiple types of + processing errors. + + + + + + ssid@chromium.org + chrome-segmentation-platform@google.com + + Time taken from the platform getting created till the platform finishes + initialization. Recorded when initialization is done. + + + + + haileywang@chromium.org + chrome-segmentation-platform@google.com + + Time difference in days between when a new version of the model from + optimization guide is available and when the model is initialized in the + client for a given {SegmentID}. Recorded at startup for each model to + identify low values for new users. + + + + + + ssid@chromium.org + chrome-segmentation-platform@google.com + + Time taken from process creation till the time segmentation platform was + created. Recorded once when the platform is created. + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the number of signals that were successfully cleaned up during a + maintenance cycle. + + Recorded every time maintenance is performed. + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records whether an individual {SignalType} signal was successfully + compacted. + + Recorded for each signal we attempt to clean up for every maintenance cycle. + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the number of unique signal identifiers that were found to be used + when cleaning up and compacting signals. + + Recorded every time maintenance is performed. + + + + + ssid@chromium.org + chrome-segmentation-platform@google.com + + Records the availability of the segmentation models. Since there is no good + way to check if a model is available, this histogram records an entry when + model is requested and one when model is available. The difference should + show how often a model is not returned. + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records whether an updated {SegmentationModel} segmentation model has + metadata attached. + + Recorded every time the {SegmentationModel} model is updated, which can + happen at any time, but usually happens at least once during startup. + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records how many tensor features an updated {SegmentationModel} segmentation + model requires in its metadata. + + Recorded every time the {SegmentationModel} model is updated, which can + happen at any time, but usually happens at least once during startup. + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the result of metadata validation {ValidationPhase} the metadata has + been merged with the existing metadata for {SegmentationModel}. + + Recorded every time the {SegmentationModel} model is updated, which can + happen at any time, but usually happens at least once during startup. + + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records what type of model has been received. + + Recorded every time a model is updated, which can happen at any time, but + usually happens at least once during startup. + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records whether an updated {SegmentationModel} segmentation model was + successfully saved. + + Recorded every time the {SegmentationModel} model is updated, which can + happen at any time, but usually happens at least once during startup. + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records whether an updated {SegmentationModel} segmentation model type + matches what was stored for that type. + + Recorded every time the {SegmentationModel} model is updated, which can + happen at any time, but usually happens at least once during startup. + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the execution status after executing the {SegmentationModel} + segmentation model with default provider. Recorded every time a default + provider for {SegmentationModel} is executed. + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the duration it takes to process an individual tensor feature. + + Recorded for each feature every time a {SegmentationModel} segmentation + model is executed. + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the duration for executing the {SegmentationModel} segmentation ML + model when the tensor has already been constructed and filled in. + + Recorded every time a {SegmentationModel} segmentation model is executed + with {ModelExecutionStatus} as the result. + + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the duration for executing the {SegmentationModel} segmentation + model from the time the request is received, all data has been loaded from + the database and processed, the tensor has been filled in, and the ML model + itself has been executed. + + Recorded every time a {SegmentationModel} segmentation model is executed + with {ModelExecutionStatus} as the result. + + + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the value at index {Index} of the output tensor when executing the + {SegmentationModel} segmentation model. + + Recorded every time a {SegmentationModel} segmentation model is successfully + executed. + + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the result when executing the {SegmentationModel} segmentation + model. + + Recorded every time a {SegmentationModel} segmentation model is successfully + executed. + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records whether the result from executing the {SegmentationModel} + segmentation model was successfully saved. + + Recorded every time a {SegmentationModel} segmentation model is successfully + executed. + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the execution status after executing the {SegmentationModel} + segmentation model. + + Recorded every time a {SegmentationModel} segmentation model is executed. + + Before M100: The ExecutionError could mean either model not available or + execution failed. + + In M100 in addition to ExecutionError, + OptimizationGuide.ModelExecutor.ExecutionStatus will also record + FileNotValid when model is not available. + + M101: SkippedModelNotReady was added which counts execution attempts before + model was ready, and ExecutionError means the model failed after it was + ready. Also other cases when execution was skipped are added to this + histogram ("Skipped*"). + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the percent of features in a tensor that are equal to 0 when the + {SegmentationModel} segmentation model is executed. + + Recorded every time a {SegmentationModel} segmentation model is executed. + + + + + + + Deprecated as of 2022-10-24. + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the segmentation platform model evaluation score for the given + {SegmentID}. Recorded whenever the model evaluation is completed + successfully. + + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the duration for running on-demand segment selection for + {SegmentationKey} which includes feature process and model execution of all + the models associated with {SegmentationKey}. + + Starts recording every time the on-demand segment selection method is called + for {SegmentationKey}. Records the duration when a {SelectedSegment} is + returned as the result. + + + + + + + + + + ssid@chromium.org + chrome-segmentation-platform@google.com + + Records the reason why the segmentation platform was unable to return a + segment selection to any client, or a result was available. Recorded when + failure is hit when trying to compute selection. + + + + + ssid@chromium.org + chrome-segmentation-platform@google.com + + Records the reason why the segmentation platform was unable to return a + segment selection for {SegmentationKey}, or if a result was available. It + supports multi output segments and records the reason why segmentation + platform failed or was successful to return a result both when segments are + executed at chrome startup and from GetClassificationAPI for both on demand + and non-ondemand cases. Recorded when failure/success is hit when trying to + compute selection, or when reading the selected segment from prefs, or when + result for segment is updated in prefs. + + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the number of segmentation signal database entries that were + successfully retrieved from the database. Since each database entry can + contain multiple samples, this is different from + SegmentationPlatform.SignalDatabase.GetSamples.SampleCount. + + Recorded whenever samples are retrieved from the sample database. + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records whether segmentation signal samples were successfully retrieved from + the database. + + Recorded whenever samples are retrieved from the sample database. + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the number of segmentation signal samples that were successfully + retrieved from the database. Since each database entry can contain multiple + samples, this is different from + SegmentationPlatform.SignalDatabase.GetSamples.DatabaseEntryCount. + + Recorded whenever samples are retrieved from the sample database. + + + + + nyquist@chromium.org + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records then number of {SignalType} signals the segmentation platform + currently listens to. Recorded whenever we update the set of {SignalType} + signals that the segmentation platform is currently listening to. + + + + + + qinmin@chromium.org + chrome-segmentation-platform@google.com + + Records the number of input tensors that are causing structured metrics to + fail to upload due to input size. Recorded immediately after the failure + when an ML model is reporting structured metrics. + + + + + ssid@chromium.org + qinmin@chromium.org + chrome-segmentation-platform@google.com + + Records training data collection events for segmentation platform. Recorded + when the training data collection flow starts, completes or encountering an + error. + + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the segment selection switch from an old value to a new segment + after a model evaluation completes. Recorded only if the selected segment + switches to a new value. + + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the post processed result for multi-output models. The value + recorded is the index of the top label as defined in the list of labels in + metadata. Recorded whenever a result is computed by executing model or + getting valid score from database. + + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records change in the the post processed result from an old label to a new + label after a model evaluation completes. Recorded only if the prefs for the + segment is expired and switches to a new value. Recorded only for the top + label in the result. + + + + + + shaktisahu@chromium.org + chrome-segmentation-platform@google.com + + Records the result of segment selection. Recorded whenever the segment + selection is updated. + + + + + + + diff --git a/histograms/metadata/service/OWNERS b/histograms/metadata/service/OWNERS new file mode 100644 index 000000000000..4e3c32b1a313 --- /dev/null +++ b/histograms/metadata/service/OWNERS @@ -0,0 +1,16 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. + +# Primary +wanderview@chromium.org + +# Secondary +ayui@chromium.org + +# Apprentice +yyanagisawa@chromium.org + +# Especially for Loading related metrics. +toyoshim@chromium.org diff --git a/histograms/metadata/service/histograms.xml b/histograms/metadata/service/histograms.xml new file mode 100644 index 000000000000..b82ced5757f2 --- /dev/null +++ b/histograms/metadata/service/histograms.xml @@ -0,0 +1,1708 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rouslan@chromium.org + web-payments-team@google.com + jinho.bang@samsung.com + + The time taken between dispatching an AbortPaymentEvent to a Service Worker + and receiving a message that it finished handling the event. Includes the + time for the waitUntil() promise to settle. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + Execution time of ServiceWorkerGlobalScope.onactivate. Includes the time for + waitUntil() promise to settle. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The result of dispatching the activate event to the worker. This is recorded + to both ServiceWorker.ActivateEventStatus and whichever of + ServiceWorker.ActivateEventStatus_InShutdown + ServiceWorker.ActivateEventStatus_NotInShutdown is appropriate. (InShutdown + means the context was null or ServiceWorkerProcessManger::Shutdown was + called.) + + + + + nator@chromium.org + peter@chromium.org + rayankans@chromium.org + + The time taken between dispatching a BackgroundFetchAbortEvent to a Service + Worker and receiving a message that it finished handling the event. Includes + the time for the waitUntil() promise to settle. + + + + + nator@chromium.org + peter@chromium.org + rayankans@chromium.org + + The time taken between dispatching a BackgroundFetchClickEvent to a Service + Worker and receiving a message that it finished handling the event. Includes + the time for the waitUntil() promise to settle. + + + + + nator@chromium.org + peter@chromium.org + rayankans@chromium.org + + The time taken between dispatching a BackgroundFetchFailEvent to a Service + Worker and receiving a message that it finished handling the event. Includes + the time for the waitUntil() promise to settle. + + + + + nator@chromium.org + peter@chromium.org + rayankans@chromium.org + + The time taken between dispatching a BackgroundFetchSuccessEvent to a + Service Worker and receiving a message that it finished handling the event. + Includes the time for the waitUntil() promise to settle. This event is sent + when the background fetch succeeds. + + + + + nator@chromium.org + rayankans@chromium.org + + The time taken between dispatching a SyncEvent to a Service Worker and + receiving a message that it finished handling the event. Includes the time + for the waitUntil() promise to settle. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The length of cached metadata of scripts which are stored to the + CacheStorage by the installing service worker. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The total length of cached metadata of scripts which are stored to the + CacheStorage by the installing service worker. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The counts of scripts which are stored to the CacheStorage by the installing + service worker. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The length of scripts which are stored to the CacheStorage by the installing + service worker. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The total length of scripts which are stored to the CacheStorage by the + installing service worker. + + + + + rouslan@chromium.org + web-payments-team@google.com + jinho.bang@samsung.com + + The time taken between dispatching an CanMakePaymentEvent to a Service + Worker and receiving a message that it finished handling the event. Includes + the time for the waitUntil() promise to settle. + + + + + yyanagisawa@google.com + chrome-worker@google.com + + Records result of destroy database operations in ServiceWorkerDatabase. + + + + + + + yyanagisawa@google.com + chrome-worker@google.com + + Records result of opening a database for ServiceWorkerDatabase. + + + + + yyanagisawa@google.com + chrome-worker@google.com + Records result of read operations in ServiceWorkerDatabase. + + + + yyanagisawa@google.com + chrome-worker@google.com + + Records result of write operations in ServiceWorkerDatabase. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + Records result of opening a disk cache for ServiceWorkerDiskCache. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + Records result of reading response from ServiceWorkerDiskCache. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + Records result of writing response into ServiceWorkerDiskCache. This is not + recorded when response has no body. Note that this is recorded on every + write operation, and can there can be multiple write operations for the same + response if it is large enough. + + + + + panicker@chromium.org + + Records when StartWorker is received on the renderer. This is used to + surface discrepancy between StartWorker being sent on the browser side and + not getting received by renderer. + EmbeddedWorkerInstance.Start.TimeToSendStartWorker should be used as a + baseline. TODO(panicker): This should be removed after investigation of + crbug/790903, potentially in M68. + + + + + chikamune@chromium.org + chrome-worker@google.com + + Execution time of the service worker's top level script. The metric is + recorded for each startup of service workers. Recorded only when the + evaluation was {ResultStatus}. + + + + + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time taken between dispatching an ExtendableMessageEvent to a Service + Worker and receiving a message that it finished handling the event. Includes + the time for the waitUntil() promise to settle. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time taken between dispatching a FetchEvent to a Service Worker and + receiving a fallback-to-network reply. + + This histogram was expired between roughly 2021-08-01 and 2021-09-30. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time taken between dispatching a FetchEvent to a Service Worker and + receiving a response. Includes the time for the respondWith() promise to + settle. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The result of dispatching a fetch event to a Service Worker for a main + resource request (i.e., a request for a navigation or a shared worker). + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time that a fetch event was queued. The start time is when the event is + created on the service worker thread and added to the + ServiceWorkerEventQueue. The end time is when the event is dequeued and the + event handler starts to execute. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The result of dispatching a fetch event to a Service Worker for a + subresource request (i.e., not a navigation or a shared worker request). + + + + + sisidovski@chromium.org + chrome-worker@google.com + + The result of the RaceNetworkRequest. RaceNetworkRequest runs a race between + the network request which bypasses ServiceWorker, and the other request + which goes through the fetch handler. This metric is recorded for + {Resource}. + + + + + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The reason why the service worker fetch handler has been skipped. If the + fetch handler has not been skipped for any reasons, it is just recorded as + not skipped instead. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The type of the fetch handler recorded just before dispatching the fetch + handler. This represent the fetch handler type, and does not represent if + the fetch handler is skipped or not. + + + + + chikamune@chromium.org + chrome-worker@google.com + + Whether FindRegistrationForClientUrl() is called for navigation or not. This + is recorded when FindRegistrationForClientUrl() function is called. + + + + + chikamune@chromium.org + chrome-worker@google.com + + Whether FindRegistrationForClientUrl() could skip calling mojo API by using + scope cache. This is recorded only when FindRegistrationForClientUrl() is + used for navigation. + + + + + chikamune@chromium.org + chrome-worker@google.com + + Execution time of FindRegistrationForClientUrl until continuation is called. + The metric is not recorded during startup. + + + + + chikamune@chromium.org + chrome-worker@google.com + + Whether ServiceWorkerControlleeRequestHandler::MaybeCreateLoader found a + service worker registration after looking up the registration by using + FindRegistrationForClientUrl. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The number of network fetches performed by the install event handler. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The result of dispatching the install event to the worker. This histogram + includes data for {type}. + + + + + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time taken between dispatching an InstallEvent to a Service Worker and + receiving a message that it finished handling the event. Includes the time + for the waitUntil() promise to settle. This histogram includes data for + {type}. + + + + + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time taken from (a) renderer process sends an IPC message to notify that + a resource loading request needs to be fall back to network, to (b) browser + process received the IPC. Recorded when no fetch event handler provided a + response to the request. + + Recorded for each navigation request (including redirects) where there is a + fetch event handler and the fetch event was successfully dispatched to the + service worker. + + {EmbeddedWorkerInitialStatus} + + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The time taken from (a) renderer process sends an IPC message to notify that + a promise of respondWith() is settled, to (b) browser process received the + IPC message. Recorded when a fetch event handler handled the request and + provided a response to the request. + + Recorded for each navigation request (including redirects) where there is a + fetch event handler and the fetch event was successfully dispatched to the + service worker. + + {EmbeddedWorkerInitialStatus} + + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The time taken from (a) a fetch event is dispatched, to (b) respondWith() is + settled for the fetch event, or fetch event dispatch is finished without + respondWith() being called. + + Recorded for each navigation request (including redirects) where there is a + fetch event handler and the fetch event was successfully dispatched to the + service worker. + + The records are breakdown by FetchEventResult. + + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The time taken from (a) a fetch event is dispatched, to (b) respondWith() is + settled for the fetch event, or fetch event dispatch is finished without + respondWith() being called. + + Recorded for each navigation request (including redirects) where there is a + fetch event handler and the fetch event was successfully dispatched to the + service worker. + + {EmbeddedWorkerInitialStatus} + + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The time taken from (a) a resource loading request is routed to service + worker path, to (b) a service worker is ready to handle the request. + + Recorded for each navigation request (including redirects) where there is a + fetch event handler and the fetch event was successfully dispatched to the + service worker. + + {EmbeddedWorkerInitialStatus}{NavigationType} + + + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time taken from (a) response headers from service worker are received, + to (b) reading response body is completed. Recorded when a fetch event + handler handled the request. + + Recorded for each navigation request (including redirects) where there is a + fetch event handler and the fetch event was successfully dispatched to the + service worker. + + {ServiceWorkerResponseSource} {EmbeddedWorkerInitialStatus} + + + + + + + chikamune@chromium.org + chrome-worker@google.com + + The time taken from (a) the start of a navigation request, to (b) reading + response body is completed. Recorded when a fetch event handler handled the + request. + + Recorded for each navigation request (including redirects) where there is a + fetch event handler and the fetch event was successfully dispatched to the + service worker. + + {EmbeddedWorkerInitialStatus} + + + + + + chikamune@chromium.org + chrome-worker@google.com + + The time taken from (a) the start of a navigation request, to (b) browser + process received the IPC. Recorded when no fetch event handler provided a + response to the request. + + Recorded for each navigation request (including redirects) where there is a + fetch event handler and the fetch event was successfully dispatched to the + service worker. + + {EmbeddedWorkerInitialStatus} + + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time taken from (a) the start of a navigation request, to (b) the + request is forwarded to a service worker code path. This includes looking up + a service worker registration and throttling. + + Recorded for each navigation request (including redirects) where there is a + fetch event handler and the fetch event was successfully dispatched to the + service worker. + + {EmbeddedWorkerInitialStatus} + + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time taken from (a) browser process sends an IPC message to dispatch a + fetch event, to (b) a renderer process received the IPC message and is about + to dispatch a fetch event. + + Recorded for each navigation request (including redirects) where there is a + fetch event handler and the fetch event was successfully dispatched to the + service worker. + + {EmbeddedWorkerInitialStatus} + + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time taken from (a) service worker sends a mojo message to notify that a + resource loading request needs to be fall back to network, to (b) the mojo + message is received on the other side of mojo endpoint (a background thread + executing subresource loading). Recorded when no fetch event handler + provided a response to the request. + + Recorded for each subresource request where there is a fetch event handler + and the fetch event was successfully dispatched to the service worker. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time taken from (a) service worker sends a mojo message to notify that a + promise of respondWith() is settled, to (b) the mojo message is received on + the other side of mojo endpoint (a background thread executing subresource + loading). Recorded when a fetch event handler handled the request and + provided a response to the request. + + Recorded for each subresource request where there is a fetch event handler + and the fetch event was successfully dispatched to the service worker. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time taken from (a) a subresource request is routed to the URLLoader (on + a background thread) for service worker controlled loads starts handling a + subresource request, to (b) a service worker is ready to handle the request. + + Recorded for each subresource request where there is a fetch event handler + and the fetch event was successfully dispatched to the service worker. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time taken from (a) response headers from service worker are received, + to (b) reading response body is completed. Only recorded when a fetch event + handler handled the request. + + Recorded for each subresource request where there is a fetch event handler + and the fetch event was successfully dispatched to the service worker. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time taken from (a) a fetch event is dispatched, to (b) respondWith() is + settled for the fetch event, or fetch event dispatch is finished without + respondWith() being called. + + Recorded for each subresource request where there is a fetch event handler + and the fetch event was successfully dispatched to the service worker. + + + + + chikamune@chromium.org + chrome-worker@google.com + + Loading time of the service worker's top level script. The metric is + recorded for each startup of service workers. Recorded only when the loading + was {ResultStatus}, and the service worker scripts were + {WhetherAlreadyInstalledOrNot}. + + + + + + + + + + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + Records the fetch result after the fetch handler has been dispatched. This + is recorded after dispatching the fetch event handler to a service worker, + and it executed the handler without error (i.e. abort or timeout). + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + Records the purpose for potentially starting a service worker. This is + recorded every time a running worker is required whether it needs to be + started or not in the ServiceWorkerVersion::RunAfterStartWorker() method. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + Record the current status of a service worker when we need it to be running + for some purpose. If the status is STOPPED or STOPPING then the service + worker will be started. This is recorded from + ServiceWorkerVersion::RunAfterStartWorker(). + + See also ServiceWorker.MaybeStartWorker.RunningStatusByPurpose_* for the + breakdown by event type. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + Record the current status of a service worker when we need it to be running + broken down by the purpose for needing a worker. If the status is STOPPED or + STOPPING then the service worker will be started. This is recorded from + ServiceWorkerVersion::RunAfterStartWorker(). (see + ServiceWorker.MaybeStartWorker.RunningStatus for all attempts). + + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The number of fetch handlers registered in a service worker script. This + metrics is recorded every time a service worker starts and only includes + fetch event handlers registered at script evaluation time. + + + + + chikamune@chromium.org + chrome-worker@google.com + + Execution time of FindRegistrationForClientUrl until continuation is called. + It is recorded only once on browser startup. + + + + + chikamune@chromium.org + chrome-worker@google.com + + Whether the first navigation requires checking the existence of service + worker registration in DB. It is recorded only once on browser startup. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The type of the fetch handler type to be stored in the database for update. + + During the start of ServiceWorker, the fetch handler type is decided, and + sent via OnStarted. If the fetch handler type is different from the fetch + handler type already recognized and stored before, it will eventually be + updated when it is read from the database next time. + + This metrics records the name of the new fetch handler detected. + ServiceWorker.OnStarted.UpdatedFetchHandlerTypeBySourceType_* for the + breakdown by the source fetch handler type. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The type of the fetch handler type to be stored in the database for update + per the source fetch handler type {SourceType} (See + ServiceWorker.OnStarted.UpdatedFetchHandlerType for all attenpts). + + During the start of ServiceWorker, the fetch handler type is decided, and + sent via OnStarted. If the fetch handler type is different from the fetch + handler type already recognized and stored before, it will eventually be + updated when it is read from the database next time. + + This metrics records the name of the new fetch handler detected. + + + + + + + + + + rouslan@chromium.org + web-payments-team@google.com + jinho.bang@samsung.com + + The time taken between dispatching an PaymentRequestEvent to a Service + Worker and receiving a message that it finished handling the event. Includes + the time for the waitUntil() promise to settle. + + + + + nator@chromium.org + platform-capabilities@chromium.org + + The time taken between dispatching a PeriodicSyncEvent to a Service Worker + and receiving a message that it finished handling the event. Includes the + time for the waitUntil() promise to settle. + + + + + peter@chromium.org + knollr@chromium.org + + The time taken between dispatching a PushEvent to a Service Worker and + receiving a message that it finished handling the event. Includes the time + for the waitUntil() promise to settle. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The number of StorageKeys that have a service worker registration. Recorded + near browser startup, when the service worker storage system is initialized. + + + + + sisidovski@chromium.org + chrome-worker@google.com + + The result of the checksum update operation. Each ServiceWorker resource + should have a sha256 cehcksum hash string in the database, and that will be + updated when there is a change in ServiceWorker scripts, or the field is + empty. + + + + + chikamune@chromium.org + chrome-worker@google.com + + Whether the navigation requires checking the existence of service worker + registration by using FindRegistrationForClientUrl(). This metric is not + recorded during startup. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time taken to start a Service Worker that has not yet installed, from + process allocation to ACK of started from the renderer (which occurs after + script execution). This may include script download time. The metric is not + recorded if DevTools was ever attached to the Service Worker during startup. + See also ServiceWorker.StartWorker.Time for installed workers. + + This histogram was expired between approximately Feb through Sep 2021. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + Recorded on each successful service worker startup. + ServiceWorker.StartTiming.* uses timing data from both the renderer process + and browser process. This histogram describes whether the clocks are known + to be accurate and consistent accross processes, and whether the actual + timing data for this worker startup was consistent, i.e., TimeTicks did not + go backwards. + + If the clocks and timing were inconsistent, ServiceWorker.StartTiming.* + metrics (other than this one) are not recorded. + + This histogram was expired between roughly 2021-07-30 and 2021-09-31. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The time taken to start a service worker that is already installed, from + start of the start sequence (finding a renderer) to ACK of started from the + renderer (which occurs after script execution). The metric is not recorded + if DevTools was ever attached to the Service Worker during startup. It does + not include time, if any, waiting for the service worker to finish stopping + before asking it to start, if that occurred. + + This histogram was expired between roughly 2021-07-30 and 2021-09-31. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The time taken from (a) the renderer receiving the start worker IPC message, + to (b) initial JavaScript evaluation starting on the worker thread. Recorded + when ServiceWorker.StartTiming.Duration is recorded. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The time taken from (a) initial JavaScript evaluation finishing on the + worker thread, to (b) the browser receiving the worker started IPC message + (the final step of worker startup). Recorded when + ServiceWorker.StartTiming.Duration is recorded. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The time taken from (a) initial JavaScript evaluation starting on the worker + thread, to (b) initial JavaScript evaluation finishing on the worker thread. + Recorded when ServiceWorker.StartTiming.Duration is recorded. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The time taken from (a) the browser sending the start worker IPC message, to + (b) the renderer receiving the start worker IPC message. Recorded when + ServiceWorker.StartTiming.Duration is recorded. + + + + + chikamune@chromium.org + chrome-worker@google.com + + The time taken from (a) the start of service worker startup, to (b) the + renderer receiving the start worker IPC message. Recorded when + ServiceWorker.StartTiming.Duration is recorded. + + This histogram was expired between roughly 2021-07-30 and 2021-09-31. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The time taken from (a) the start of service worker startup, to (b) initial + JavaScript evaluation finishing on the worker thread. Recorded when + ServiceWorker.StartTiming.Duration is recorded. + + This histogram was expired between roughly 2021-07-30 and 2021-09-31. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The time taken from (a) the start of service worker startup, to (b) initial + JavaScript evaluation starting on the worker thread. Recorded when + ServiceWorker.StartTiming.Duration is recorded. + + This histogram was expired between roughly 2021-07-30 and 2021-09-31. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The time taken from (a) the start of service worker startup, to (b) the + browser sending the start worker IPC message. Recorded when + ServiceWorker.StartTiming.Duration is recorded. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The purpose for starting up a service worker. Recorded only for installed + workers. + + This histogram was expired between approximately Feb through Sep 2021. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The result of trying to start a Service Worker that is already installed. + See also ServiceWorker.StartNewWorker.Status for new workers. See also + ServiceWorker.StartWorker.StatusByPurpose_* for the breakdown by event type. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The result of trying to start a service worker for the event type + {ServiceWorkerEventType} (see ServiceWorker.StartWorker.Status for all start + attempts). Only recorded for installed workers. + + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + The time taken to start a Service Worker that is already installed, from + process allocation to ACK of started from the renderer (which occurs after + script execution). The metric is not recorded if DevTools was ever attached + to the Service Worker during startup. See also + ServiceWorker.StartNewWorker.Time for new workers. + + + + + chikamune@chromium.org + chrome-worker@google.com + + Records the start purpose for a service worker that timed out while starting + up. Recorded only for installed workers. + + This histogram was expired between approximately Feb through Sep 2021. + + + + + chikamune@chromium.org + chrome-worker@google.com + + The phase the ServiceWorker was in when ServiceWorker startup timed out. + + This histogram was expired between approximately Feb through Sep 2021. + + + + + yyanagisawa@chromium.org + chikamune@chromium.org + chrome-worker@google.com + + Records result of storage recovery operations in ServiceWorkerStorage. + + + + + chikamune@chromium.org + chrome-worker@google.com + + The scope count for a given StorageKey. This is recorded when + ServiceWorkerStorage::FindForClientUrlInDB() function is called. + + + + + chikamune@chromium.org + chrome-worker@google.com + + Execution time of ServiceWorkerStorage::FindForClientUrlInDB which is used + by FindRegistrationForClientUrl. + + + + + chikamune@chromium.org + chrome-worker@google.com + + Records successes and failures of purging a stale resource in + ServiceWorkerStorage. + + + + + chikamune@chromium.org + chrome-worker@google.com + + Execution time of ServiceWorkerStorage::ReadInitialDataFromDB which reads + RegisteredStorageKey from a database. + + + + + chikamune@chromium.org + chrome-worker@google.com + + The cache creation time of service worker registration key on UI thread. + Includes asynchronous call, thread hopping and the time of + ServiceWorker.Storage.ReadInitialDataFromDB.Time. + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + The counts of retries to recover after a Storage Service crash. Logged after + a recovery, or the maximum number of retries is exceeded. See + ServiceWorkerRegistry::OnRemoteStorageDisconnected() for the maximum number + of retries. + + + + + joenotcharles@google.com + chrome-worker@google.com + + The number of queued tasks that are waiting to be re-posted after recovering + from a Storage Service crash. Logged at the same time as + ServiceWorker.Storage.RetryCountForRecovery. + + + + + yyanagisawa@google.com + chrome-worker@google.com + + Type of subresources that is controlled with a service worker, but did not + handled by a service worker (i.e. did not get replied via respondWith). This + metric is taken every time a subresource load finishes. + + See ServiceWorker.Subresource.Handled.Type for handled cases. + + + + + yyanagisawa@google.com + chrome-worker@google.com + + Type of subresources that is controlled with a service worker, and handled + by a service worker (i.e. get replied via respondWith). This metric is taken + every time a subresource load finishes. + + See ServiceWorker.Subresource.Fallbacked.Type for fallbacked cases. + + + + + yyanagisawa@google.com + chrome-worker@google.com + + True if the workaround for crbug.com/1342408 has been applied. Otherwise, + false. The workaround is applied when the response stream call back is + called. + + This information is used to understand if we need to continue this + workaround or not. + + + + + cduvall@chromium.org + chrome-worker@google.com + + The time taken to query the content settings in the browser process for the + {operation} operation. This is recorded each time a sync call is made. + + + + + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time to perform a 'match' operation on a given Cache when that cache is + known to be fully initialized. This includes measurements for hits, misses, + and errors. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time to perform a 'match' operation on a given Cache when the operation + was initiated from a service worker currently processing a FetchEvent with a + matching request URL. This includes measurements for hits, misses, and + errors. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time to perform 'match' operations of type {MatchType} on the Cache + object in the ServiceWorker Cache API. This histogram was temporarily + disabled from M96 through early 12/2021. + + + + + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time to perform the {ProcessOps} operation on the Cache object in the + ServiceWorker Cache API. This histogram was temporarily disabled from M96 + through early 12/2021. + + + + + + + + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time to perform the {ProcessOps} operations on the CacheStorage object + in the ServiceWorker Cache API. This histogram was temporarily disabled from + M96 through early 12/2021. + + + + + + + + + + + + + + jkarlin@chromium.org + + Whether a new ServiceWorkerCacheStorage and its directory were successfully + created on disk. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records where the generic kErrorStorage value is triggered within the + cache_storage code. This histogram was temporarily disabled from late + 10/2021 to early 12/2021. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The result from parsing and validating the index protobuf while calculating + the list of cache_storage origins. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time in ms from when an operation is started until it completes. This + histogram differs from the old OperationDuration in that it uses a different + bucket size to measure longer values. + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time in ms from when an operation is started until it completes. This + histogram differs from the old OperationDuration in that it uses a different + bucket size to measure longer values. + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The number of operations in the scheduling queue just before enqueuing a new + operation. + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time in ms from when an operation is started until it completes for the + {ServiceWorkerCacheSchedulerOpClientType} instance. + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time in ms from when an operation is started until it completes for the + {ServiceWorkerCacheSchedulerOpClientType} instance. + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The number of operations in the scheduling queue just before enqueuing a new + operation for the {ServiceWorkerCacheSchedulerOpClientType} instance. + + + + + + + + diff --git a/histograms/metadata/session/OWNERS b/histograms/metadata/session/OWNERS new file mode 100644 index 000000000000..3374cea4706d --- /dev/null +++ b/histograms/metadata/session/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. + +alexilin@chromium.org +dullweber@chromium.org diff --git a/histograms/metadata/session/histograms.xml b/histograms/metadata/session/histograms.xml new file mode 100644 index 000000000000..94d83f2bdadc --- /dev/null +++ b/histograms/metadata/session/histograms.xml @@ -0,0 +1,1139 @@ + + + + + + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Sum of this metric yields the total time Chrome was running in the + background. A single session may be represented by multiple values, so that + this histogram is always present in an uploaded log that represents + background activity. + + Android-only. + + + + + rogerm@chromium.org + src/base/metrics/OWNERS + + Was a browsing session active when the UMA record was captured? This metric + is recorded with every UMA log upload when the session tracker is running + (which, in principle, should always be the case). This metric is NOT + recorded in logs that reflect information from a previous session (i.e., + "stability logs" or "persistent UMA" data related to the + previous session but not uploaded during the previous session). + + Recorded on Android, iOS, Windows, Mac, and Linux. + + For information on what's considered "active", see the histogram + description for Session.TotalDuration. + + + + + rohitrao@chromium.org + marq@chromium.org + + The number of times the user changed the active tab (this can happen when + manually selecting a new tab, when a pre-rendered tab is made active, when + closing the current tab and the next one is selected) during the current + session (launch/foregrounding to backgrounding). + + This histogram is only logged on iOS when the application is backgrounded. + + + + + yiningwang@google.com + chrome-desktop-ui-sea@google.com + + Time spent in focus mode browser. This is recorded when the focus mode + window closes. This metric is only recorded on Win/Mac/Linux/ChromeOS. + + + + + + + asvitkine@chromium.org + chrisha@chromium.org + chrome-analysis-team@google.com + + The length of a session (launch/foregrounding to quitting/backgrounding) in + milliseconds, recorded at the end of the session. See + Session.TotalDurationMax1Day for the same histogram with a higher maximum + value. (The one's maximum is 1 hour.) + + Windows/Mac/Linux: A session ends (i) when the user puts another app in the + foreground, unless audio is playing. (The Chrome windows can still be shown. + What matters is that a different app has focus.) (ii) when Chrome quits. + (iii) when the screensaver turns on (again, unless audio is playing). (iv) + when the user is inactive for five minutes (again, unless audio is playing). + In this case (starting in M-55), that five minutes is not included in the + sesson length. (v) when audio stops playing, if the user has been inactive + for five minutes or Chrome is not in the foreground. Also, until M69, there + was a bug that caused double-counting of some sessions. + + ChromeOS: not implemented. The ChromeOS histogram Platform.DailyUseTime is + somewhat similar. + + Android: Session boundaries are wonky. Thus, only look at total duration for + a client over a day; don't look at individual durations. A session ends (i) + when the Chrome app leaves the foreground. This sounds obvious yet there are + many subtle though common edge cases here. Going to the Android Home screen + via the Home button is an obvious case. Yet, merely pressing the Recents + button, even if the user reselects the Chrome app (i.e., doesn't leave the + app) also ends a session. Another set of cases is the screen time-out + (blanking the screen) or the lock screen. Either will cause Chrome to be + considered to leave the foreground, ending the session. (ii) some in-app + actions. Yes, some in-app events trigger the end of a session. + + Android continued: These in-app actions that trigger the end of a session + can mostly be considered bugs. Cases: (a) switching to viewing Bookmarks, + History, Downloads, or Settings causes the session to end. Note that + switching out of those modes does not cause the end of a session, only + switching in. Oddly, though the interface looks similar, switching to Recent + Tabs does not trigger the end of a session. Nor does going into the tab + switcher view. (b) modal pop-ups. JavaScript dialogs and other things that + take focus away from the Chrome activity can cause this metric to record a + session end prematurely. See: crbug.com/678276. (c) switching Chrome from as + a single app in the foreground into multi-window mode. (d) switching Chrome + from being one of a set of multi-window apps that are displayed to be the + only app displayed. + + iOS: A session starts when Chrome is launched to the foreground and ends + when Chrome leaves the screen. This is generally straightforward. Chrome + leaves the screen when the screen goes blank or shows the lock screen, when + Chrome clicks a link that opens in another app, or when the user switches to + another app in the app switcher. Note that, unlike on desktop, even if + Chrome is playing media in the background or in picture-in-picture mode, the + session is still terminated when Chrome leaves the screen. Also note that if + Chrome starts in Safe Mode, the session will only start when the user quits + Safe Mode. When multiple windows are used, the session is considered ongoing + as long as there is at least one foreground Chrome window. This was revised + in M-89 to support multiple windows. In M-87 and M-88, nothing was logged + due to a bug. Before M-86, a similar metric was recorded, with some + differences in edge cases. See the old histogram description for more + details. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + + bsazonov@chromium.org + droger@chromium.org + msarda@chromium.org + treib@chromium.org + tschumann@chromium.org + chrome-signin-team@google.com + chrome-analysis-team@google.com + + This histogram is in the process of being replaced with the equivalent + histogram Session.TotalDurationMax1Day.NotOptedInToSyncWithAccount; the only + difference is the histogram bucket ranges. + + The amount of active browsing time that was spent with sync disabled while + having a valid refresh token for the primary account. This corresponds to + the case when the user did not opt in to sync, or sync is disabled due to + another reason, e.g. enterprise policy. Note that auth errors are not + counted here, but rather in + Session.TotalDuration.OptedInToSyncWithoutAccount. + + This time is measured from when the user starts interacting with the browser + until either they stopped interacting with the browser or their signin or + sync status changes. These end-points are when the metric is emitted. For + details on how "stopped interacting with the browser" is decided, + see the description of Session.TotalDuration. + + Because a duration can end either because the user became inactive or + because their status changed, the distribution of individual durations + measured are unlikely to be helpful. Instead, please compare total + durations. + + This metric is recorded on Win/Mac/Linux/iOS/Android. + + One caveat with this metric is that if the user has multiple profiles open + at the same time, their session activity will be logged from all the + profiles, instead of only from the profile that the user is using at that + moment. + + This histogram is of special interest to the chrome-analysis-team@ and + chrome-signin-team@. Do not change its semantics or retire it without + talking to them first. + + + + + + + bsazonov@chromium.org + droger@chromium.org + msarda@chromium.org + treib@chromium.org + tschumann@chromium.org + chrome-signin-team@google.com + chrome-analysis-team@google.com + + This histogram is in the process of being replaced with the equivalent + histogram Session.TotalDurationMax1Day.NotOptedInToSyncWithoutAccount; the + only difference is the histogram bucket ranges. + + The amount of active browsing time that was spent with sync disabled and + signed out of Chrome (no primary account or invalid token for the primary + account). + + This time is measured from when the user starts interacting with the browser + until either they stopped interacting with the browser or their signin or + sync status changes. These end-points are when the metric is emitted. For + details on how "stopped interacting with the browser" is decided, + see the description of Session.TotalDuration. + + Because a duration can end either because the user became inactive or + because their status changed, the distribution of individual durations + measured are unlikely to be helpful. Instead, please compare total + durations. + + This metric is recorded on Win/Mac/Linux/iOS/Android. + + One caveat with this metric is that if the user has multiple profiles open + at the same time, their session activity will be logged from all the + profiles, instead of only from the profile that the user is using at that + moment. + + Note: As part of crbug/1223007, we discovered this histogram was recorded + for Guest and System profiles which wasn't intentional. This was fixed in + M93. + + After launching background logging in the late February 2021 on Android, + this metric started recording for instances that were running in the + background, even if Chrome had never come to foreground. The bug was fixed + in M92, and after that the metric is recorded only after an instance becomes + foregrounded at least once. Hence a glitch is visible in the Feb-Aug 2021 + data for Android. + + This histogram is of special interest to the chrome-analysis-team@ and + chrome-signin-team@. Do not change its semantics or retire it without + talking to them first. + + + + + + + bsazonov@chromium.org + droger@chromium.org + msarda@chromium.org + treib@chromium.org + tschumann@chromium.org + chrome-signin-team@google.com + chrome-analysis-team@google.com + + This histogram is in the process of being replaced with the equivalent + histogram Session.TotalDurationMax1Day.OptedInToSyncWithAccount; the only + difference is the histogram bucket ranges. + + The total session duration (see Session.TotalDuration) that was spent with + sync enabled and signed in to Chrome (valid token for the primary account). + + This time is measured from when the user starts interacting with the browser + until either they stopped interacting with the browser or their signin or + sync status changes. These end-points are when the metric is emitted. For + details on how "stopped interacting with the browser" is decided, + see the description of Session.TotalDuration. + + Because a duration can end either because the user became inactive or + because their status changed, the distribution of individual durations + measured are unlikely to be helpful. Instead, please compare total + durations. + + This metric is recorded on Win/Mac/Linux/iOS/Android. + + One caveat with this metric is that if the user has multiple profiles open + at the same time, their session activity will be logged from all the + profiles, instead of only from the profile that the user is using at that + moment. + + This histogram is of special interest to the chrome-analysis-team@ and + chrome-signin-team@. Do not change its semantics or retire it without + talking to them first. + + + + + + + bsazonov@chromium.org + droger@chromium.org + msarda@chromium.org + treib@chromium.org + tschumann@chromium.org + chrome-signin-team@google.com + chrome-analysis-team@google.com + + This histogram is in the process of being replaced with the equivalent + histogram Session.TotalDurationMax1Day.OptedInToSyncWithoutAccount; the only + difference is the histogram bucket ranges. + + The total session duration (see Session.TotalDuration) that was being spent + with sync inactive due to an invalid refresh token for the primary account + (a.k.a. sync in an auth error state). Note that in this state, the user has + already opted in to sync previously. This corresponds to the so-called + "Sync paused" state. + + This can for example be the case when a user, that previously opted in to + sync, signed out of the web on desktop, changed their password, or otherwise + invalidated their signin. + + This time is measured from when the user starts interacting with the browser + until either they stopped interacting with the browser or their signin or + sync status changes. These end-points are when the metric is emitted. For + details on how "stopped interacting with the browser" is decided, + see the description of Session.TotalDuration. + + Because a duration can end either because the user became inactive or + because their status changed, the distribution of individual durations + measured are unlikely to be helpful. Instead, please compare total + durations. + + This metric is recorded on Win/Mac/Linux/iOS/Android. + + One caveat with this metric is that if the user has multiple profiles open + at the same time, their session activity will be logged from all the + profiles, instead of only from the profile that the user is using at that + moment. + + After launching background logging in the late February 2021 on Android, + this metric started recording for instances that were running in the + background, even if Chrome had never come to foreground. The bug was fixed + in M92, and after that the metric is recorded only after an instance becomes + foregrounded at least once. Hence a glitch is visible in the Feb-Aug 2021 + data for Android. + + This histogram is of special interest to the chrome-analysis-team@ and + chrome-signin-team@. Do not change its semantics or retire it without + talking to them first. + + + + + collinbaker@chromium.org + chrome-desktop-ui-sea@google.com + + Time spent in touch mode in each session (as defined by + DesktopSessionDurationTracker). Samples correspond one-to-one with + Session.TotalDuration samples. + + This histogram should be analyzed with Session.TotalDuration. For example, + the sum of this histogram divided by the sum of Session.TotalDuration is the + total proportion of active browsing time spent in touch mode. + + + + + + + bsazonov@chromium.org + droger@chromium.org + msarda@chromium.org + treib@chromium.org + tschumann@chromium.org + chrome-signin-team@google.com + + This histogram is in the process of being replaced with the equivalent + histogram Session.TotalDurationMax1Day.WithAccount; the only difference is + the histogram bucket ranges. + + The total session duration (see Session.TotalDuration) that was spent with a + Google account signed into the content area. + + The difference between the With(out)Account measurements and the + Opted(In/Out)ToSyncWith(out)Account measurements is that these metrics are + derived from the user's cookies, not their refresh tokens. + + This time is measured from when the user starts interacting with the browser + until either they stopped interacting with the browser or their signin + status changes. These end-points are when the metric is emitted. For details + on how "stopped interacting with the browser" is decided, see the + description of Session.TotalDuration. + + Because a duration can end either because the user became inactive or + because their status changed, the distribution of individual durations + measured are unlikely to be helpful. Instead, please compare total + durations. + + This metric is recorded on Win/Mac/Linux/iOS/Android. + + One caveat with this metric is that if the user has multiple profiles open + at the same time, their session activity will be logged from all the + profiles, instead of only from the profile that the user is using at that + moment. + + This histogram is of special interest to the chrome-signin-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + + bsazonov@chromium.org + droger@chromium.org + msarda@chromium.org + treib@chromium.org + tschumann@chromium.org + chrome-signin-team@google.com + + This histogram is in the process of being replaced with the equivalent + histogram Session.TotalDurationMax1Day.WithoutAccount; the only difference + is the histogram bucket ranges. + + The total session duration (see Session.TotalDuration) that was spent + without a Google account signed into the content area. + + The difference between the With(out)Account measurements and the + Opted(In/Out)ToSyncWith(out)Account measurements is that these metrics are + derived from the user's cookies, not their refresh tokens. + + This time is measured from when the user starts interacting with the browser + until either they stopped interacting with the browser or their signin + status changes. These end-points are when the metric is emitted. For details + on how "stopped interacting with the browser" is decided, see the + description of Session.TotalDuration. + + Because a duration can end either because the user became inactive or + because their status changed, the distribution of individual durations + measured are unlikely to be helpful. Instead, please compare total + durations. + + This metric is recorded on Win/Mac/Linux/iOS/Android. + + One caveat with this metric is that if the user has multiple profiles open + at the same time, their session activity will be logged from all the + profiles, instead of only from the profile that the user is using at that + moment. + + Note: As part of crbug/1223007, we discovered this histogram was recorded + for Guest and System profiles which wasn't intentional. This was fixed in + M93. + + This histogram is of special interest to the chrome-signin-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + + asvitkine@chromium.org + chrisha@chromium.org + chrome-analysis-team@google.com + + The length of a session (launch/foregrounding to quitting/backgrounding) in + milliseconds, recorded at the end of the session. See Session.TotalDuration + for details on how the end of a session is decided. The histogram + Session.TotalDuration records exactly the same values as this histogram, + just with a smaller maximum value. (That one's maximum is 1 hour.) + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + + bsazonov@chromium.org + droger@chromium.org + msarda@chromium.org + treib@chromium.org + tschumann@chromium.org + chrome-signin-team@google.com + chrome-analysis-team@google.com + + The amount of active browsing time that was spent with sync disabled while + having a valid refresh token for the primary account. This corresponds to + the case when the user did not opt in to sync, or sync is disabled due to + another reason, e.g. enterprise policy. Note that auth errors are not + counted here, but rather in + Session.TotalDurationMax1Day.OptedInToSyncWithoutAccount. + + This time is measured from when the user starts interacting with the browser + until either they stopped interacting with the browser or their signin or + sync status changes. These end-points are when the metric is emitted. For + details on how "stopped interacting with the browser" is decided, + see the description of Session.TotalDuration. + + Because a duration can end either because the user became inactive or + because their status changed, the distribution of individual durations + measured are unlikely to be helpful. Instead, please compare total + durations. + + This metric is recorded on Win/Mac/Linux/iOS/Android. + + One caveat with this metric is that if the user has multiple profiles open + at the same time, their session activity will be logged from all the + profiles, instead of only from the profile that the user is using at that + moment. + + This histogram is of special interest to the chrome-analysis-team@ and + chrome-signin-team@. Do not change its semantics or retire it without + talking to them first. + + + + + + + bsazonov@chromium.org + droger@chromium.org + msarda@chromium.org + treib@chromium.org + tschumann@chromium.org + chrome-signin-team@google.com + chrome-analysis-team@google.com + + The amount of active browsing time that was spent with sync disabled and + signed out of Chrome (no primary account or invalid token for the primary + account). + + This time is measured from when the user starts interacting with the browser + until either they stopped interacting with the browser or their signin or + sync status changes. These end-points are when the metric is emitted. For + details on how "stopped interacting with the browser" is decided, + see the description of Session.TotalDuration. + + Because a duration can end either because the user became inactive or + because their status changed, the distribution of individual durations + measured are unlikely to be helpful. Instead, please compare total + durations. + + This metric is recorded on Win/Mac/Linux/iOS/Android. + + One caveat with this metric is that if the user has multiple profiles open + at the same time, their session activity will be logged from all the + profiles, instead of only from the profile that the user is using at that + moment. + + Note: As part of crbug/1223007, we discovered this histogram was recorded + for Guest and System profiles which wasn't intentional. This was fixed in + M93. + + After launching background logging in the late February 2021 on Android, + this metric started recording for instances that were running in the + background, even if Chrome had never come to foreground. The bug was fixed + in M92, and after that the metric is recorded only after an instance becomes + foregrounded at least once. Hence a glitch is visible in the Feb-Aug 2021 + data for Android. + + This histogram is of special interest to the chrome-analysis-team@ and + chrome-signin-team@. Do not change its semantics or retire it without + talking to them first. + + + + + + + bsazonov@chromium.org + droger@chromium.org + msarda@chromium.org + treib@chromium.org + tschumann@chromium.org + chrome-signin-team@google.com + chrome-analysis-team@google.com + + The total session duration (see Session.TotalDuration) that was spent with + sync enabled and signed in to Chrome (valid token for the primary account). + + This time is measured from when the user starts interacting with the browser + until either they stopped interacting with the browser or their signin or + sync status changes. These end-points are when the metric is emitted. For + details on how "stopped interacting with the browser" is decided, + see the description of Session.TotalDuration. + + Because a duration can end either because the user became inactive or + because their status changed, the distribution of individual durations + measured are unlikely to be helpful. Instead, please compare total + durations. + + This metric is recorded on Win/Mac/Linux/iOS/Android. + + One caveat with this metric is that if the user has multiple profiles open + at the same time, their session activity will be logged from all the + profiles, instead of only from the profile that the user is using at that + moment. + + This histogram is of special interest to the chrome-analysis-team@ and + chrome-signin-team@. Do not change its semantics or retire it without + talking to them first. + + + + + + + bsazonov@chromium.org + droger@chromium.org + msarda@chromium.org + treib@chromium.org + tschumann@chromium.org + chrome-signin-team@google.com + chrome-analysis-team@google.com + + The total session duration (see Session.TotalDuration) that was being spent + with sync inactive due to an invalid refresh token for the primary account + (a.k.a. sync in an auth error state). Note that in this state, the user has + already opted in to sync previously. This corresponds to the so-called + "Sync paused" state. + + This can for example be the case when a user, that previously opted in to + sync, signed out of the web on desktop, changed their password, or otherwise + invalidated their signin. + + This time is measured from when the user starts interacting with the browser + until either they stopped interacting with the browser or their signin or + sync status changes. These end-points are when the metric is emitted. For + details on how "stopped interacting with the browser" is decided, + see the description of Session.TotalDuration. + + Because a duration can end either because the user became inactive or + because their status changed, the distribution of individual durations + measured are unlikely to be helpful. Instead, please compare total + durations. + + This metric is recorded on Win/Mac/Linux/iOS/Android. + + One caveat with this metric is that if the user has multiple profiles open + at the same time, their session activity will be logged from all the + profiles, instead of only from the profile that the user is using at that + moment. + + After launching background logging in the late February 2021 on Android, + this metric started recording for instances that were running in the + background, even if Chrome had never come to foreground. The bug was fixed + in M92, and after that the metric is recorded only after an instance becomes + foregrounded at least once. Hence a glitch is visible in the Feb-Aug 2021 + data for Android. + + This histogram is of special interest to the chrome-analysis-team@ and + chrome-signin-team@. Do not change its semantics or retire it without + talking to them first. + + + + + + + bsazonov@chromium.org + droger@chromium.org + msarda@chromium.org + treib@chromium.org + tschumann@chromium.org + chrome-signin-team@google.com + + The total session duration (see Session.TotalDuration) that was spent with a + Google account signed into the content area. + + The difference between the With(out)Account measurements and the + Opted(In/Out)ToSyncWith(out)Account measurements is that these metrics are + derived from the user's cookies, not their refresh tokens. + + This time is measured from when the user starts interacting with the browser + until either they stopped interacting with the browser or their signin + status changes. These end-points are when the metric is emitted. For details + on how "stopped interacting with the browser" is decided, see the + description of Session.TotalDuration. + + Because a duration can end either because the user became inactive or + because their status changed, the distribution of individual durations + measured are unlikely to be helpful. Instead, please compare total + durations. + + This metric is recorded on Win/Mac/Linux/iOS/Android. + + One caveat with this metric is that if the user has multiple profiles open + at the same time, their session activity will be logged from all the + profiles, instead of only from the profile that the user is using at that + moment. + + This histogram is of special interest to the chrome-signin-team@. Do not + change its semantics or retire it without talking to them first. + + + + + + + bsazonov@chromium.org + droger@chromium.org + msarda@chromium.org + treib@chromium.org + tschumann@chromium.org + chrome-signin-team@google.com + + The total session duration (see Session.TotalDuration) that was spent + without a Google account signed into the content area. + + The difference between the With(out)Account measurements and the + Opted(In/Out)ToSyncWith(out)Account measurements is that these metrics are + derived from the user's cookies, not their refresh tokens. + + This time is measured from when the user starts interacting with the browser + until either they stopped interacting with the browser or their signin + status changes. These end-points are when the metric is emitted. For details + on how "stopped interacting with the browser" is decided, see the + description of Session.TotalDuration. + + Because a duration can end either because the user became inactive or + because their status changed, the distribution of individual durations + measured are unlikely to be helpful. Instead, please compare total + durations. + + This metric is recorded on Win/Mac/Linux/iOS/Android. + + One caveat with this metric is that if the user has multiple profiles open + at the same time, their session activity will be logged from all the + profiles, instead of only from the profile that the user is using at that + moment. + + Note: As part of crbug/1223007, we discovered this histogram was recorded + for Guest and System profiles which wasn't intentional. This was fixed in + M93. + + This histogram is of special interest to the chrome-signin-team@. Do not + change its semantics or retire it without talking to them first. + + + + + justincohen@chromium.org + ajuma@chromium.org + + The size of the data used to persist each WKWebView's serialized session + history. It's recorded every time the WKWebView is serialized, which happens + on page loads, tab changes and app backgrounding. + + + + + ajuma@chromium.org + justincohen@chromium.org + + The size of all cert policy caches for all open tabs. Recorded when + SessionServiceIOS encodes the data, which happens on page loads, tab changes + and app backgrounding. + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + The time needed to convert iOS session webState data into something that can + be written to a file. It's recorded every time the file is written to + storage, which happens on page loads, tab changes and app backgrounding. The + time does not include the file writing. + + + + + fedegermi@chromium.org + sdefresne@chromium.org + + The time spent on the main thread to restore a session as a continuous task. + It's recorded every time a session is loaded (which happens on application + startup or when the user re-open a recently closed windows on iPad). This + includes loading the data from disk as this happens on the main thread. + + Large values for this histogram is indicative of jank for the user as the + main thread is blocked for the duration reported in the histogram in one + giant operation. + + + + + justincohen@chromium.org + ajuma@chromium.org + + Records whether generic WKWebView native session restore succeeded in + creating navigation items. Recorded each time a generic native session + restore is attempted. + + + + + justincohen@chromium.org + ajuma@chromium.org + + Records whether WKWebView native session restore from cached data succeeded + in creating navigation items. Recorded each time a cached native session + restore is attempted. + + + + + djean@chromium.org + sdefresne@chromium.org + + Recorded when CRWNavigationItemStorage encodes the data, which happens on + page loads, tab changes and app backgrounding. Estimated size, the actual + size can be larger than recorded number. + + + + + justincohen@chromium.org + rohitrao@chromium.org + + The time needed to read iOS session webState data from a file. It's recorded + every time a webState is restored, typically on app startup. + + + + + fedegermi@chromium.org + sdefresne@chromium.org + + The time spend on the main thread to save a session as a continuous task. + It's recorded every time a session is saved (which is scheduled on page + loads, tab changes and app backgrounding, but repeating events may be + collapsed). This does not include the time spent writing the file on disk + (since it is done on a background sequence). + + Large values for this histogram is indicative of jank for the user as the + main thread is blocked for the duration reported in the histogram in one + giant operation. + + + + + ajuma@chromium.org + justincohen@chromium.org + + The size of a single cert policy cache for one tab. Recorded when + CRWNavigationItemStorage encodes the data, which happens on page loads, tab + changes and app backgrounding. + + + + + justincohen@chromium.org + rohitrao@chromium.org + + The size of the file used to persist iOS session history. It's recorded + every time the file is written to storage, which happens on page loads, tab + changes and app backgrounding. + + + + + justincohen@chromium.org + rohitrao@chromium.org + + The time needed to write iOS session webState data to a file. It's recorded + every time the file is written to storage, which happens on page loads, tab + changes and app backgrounding. + + + + + yiyaoliu@chromium.org + How did the user interact with the SessionCrashed Bubble? + + + + chrisha@chromium.org + + The number of tabs involved in a single session restore that were observed + to have historically made use of background communication mechanisms + (favicon and tab title changes, notifications, etc). + + + + + chrisha@chromium.org + + The number of tabs involved in a single session restore that were observed + to have historically made use of background communication mechanisms + (favicon and tab title changes, notifications, etc) and that were actually + loaded. + + + + + chrisha@chromium.org + catan-team@chromium.org + + + The time from SessionRestore start until a restored tab's first paint. + Recorded when a restored tab stays visible from the beginning of session + restore until its first paint, and no non-restored tab is painted during + that time. See SessionRestore.ForegroundTabFirstPaint4.FinishReason for when + this is not recorded. + + Warning: this histogram was expired from 2022-10-23 to 2023-02-22; data may + be missing. + + + + + chrisha@chromium.org + catan-team@chromium.org + + The reason for which attempt to record + SessionRestore.ForegroundTabFirstPaint4 was deemed complete. Logged once per + session restore. + + + + + sky@chromium.org + davidbienvenu@chromium.org + + Recorded when SessionService is shutdown (which generally corresponds to + when chrome is shutdown). The count is the number of times a write error + happened at a time when it could not immediately be handled. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Total size of the HTML5 SessionStorage browser-side cache purged in KB when + memory pressure signal was triggered or cache size hit the limits. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Total size of the HTML5 SessionStorage databases in KB in the browser-side + cache. Recorded each time a new database is opened in memory. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The result of an attempt to commit SessionStorage data to the database. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The result of a failed attempt to open a LevelDB database for + SessionStorage. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The result of a failed attempt to open a LevelDB database for SessionStorage + on disk. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The result of a failed attempt to open a LevelDB database for SessionStorage + in memory. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The result of attempting to delete the SessionStorage database. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The reason opening a directory for the LevelDB database that backs + LocalStorage failed. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + dullweber@chromium.org + ayui@chromium.org + chrome-owp-storage@google.com + + Recorded when the database connection is closed unexpectedly. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The reason opening the LevelDB database that backs SessionStorage failed. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The result of opening the LevelDB database that backs SessionStorage. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The reason reading the namespaces metadata of the SessionStorage database + failed. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The reason reading the next data map id metadata of the SessionStorage + database failed. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The reason reading the schema version of the SessionStorage database failed. + + Warning: Histogram expired between M95-M110. Data may be missing. + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The result (success, failure, or database recreated) of trying to open the + LevelDB database for sessionStorage. + + + + + + diff --git a/histograms/metadata/settings/OWNERS b/histograms/metadata/settings/OWNERS new file mode 100644 index 000000000000..1ce8e6b9976f --- /dev/null +++ b/histograms/metadata/settings/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +harrisonsean@chromium.org +khorimoto@chromium.org diff --git a/histograms/metadata/settings/histograms.xml b/histograms/metadata/settings/histograms.xml new file mode 100644 index 000000000000..0bed0dbfb410 --- /dev/null +++ b/histograms/metadata/settings/histograms.xml @@ -0,0 +1,955 @@ + + + + + + + + + + + Logged on profile open, including for profiles such as guest profiles that + do not allow modification of this setting. (This value logged on those cases + is the default value for the setting.) Replaced in M-110 with the histogram + Settings.AdvancedSpellcheck.OnStartup2, which is similar but only emitted on + regular profiles. + + harrisonsean@chromium.org + chrome-friendly-settings@google.com + + The state of the advanced spellcheck setting, recorded on profile open. + + + + + harrisonsean@chromium.org + chrome-friendly-settings@google.com + + The state of the advanced spellcheck setting, recorded on profile open for + regular profiles (not Incognito, Guest, etc.). + + + + + sauski@google.com + chrome-friendly-settings@google.com + + Whether or not navigations to the All Sites page occured because the user + was redirected from the deprecated Site Data page. + + + + + + Logged on profile open, including for profiles such as guest profiles that + do not allow modification of this setting. (This value logged on those cases + is the default value for the setting.) Replaced in M-110 with the histogram + Settings.AutocompleteSearches.OnStartup2, which is similar but only emitted + on regular profiles. + + harrisonsean@chromium.org + chrome-friendly-settings@google.com + + The state of the autocomplete searches setting, recorded on profile open. + + + + + harrisonsean@chromium.org + chrome-friendly-settings@google.com + + The state of the autocomplete searches setting, recorded on profile open, + only for regular profiles (not Incognito, Guest, etc.). + + + + + andzaytsev@google.com + chrome-friendly-settings@google.com + + Records which MyActivity URLs the user clicked in Clear Browsing Data. + + + + + djean@google.com + olivierrobin@google.com + + The source surface that requested displaying the default browser system + settings. Logged when the user actually opens the iOS system settings (IOS + only). + + + + + alimariam@google.com + olesiamarukhno@google.com + sauski@google.com + + Records either the state of first party sets (FPS) or not relevant, + depending on the user's cookie settings. This is logged on startup. + + + + + + Logged on profile open, including for profiles that do not use this setting + (such as "system" profiles) and for profiles that do not allow the + profile-owner to configure this setting (such as "guest" + profiles). When logged in such cases, reported the default value. Replaced + in M-114 with the histogram + Settings.GivenShowHomeButton_HomePageIsNewTabPage2, which is similar only + emitted for regular profiles. + + mpearson@chromium.org + twellington@chromium.org + + Whether or not the home page user preference is set to the default NTP value + when a profile is loaded. This is only logged if the home button is shown. + + + + + mpearson@chromium.org + twellington@chromium.org + + Whether or not the home page user preference is set to the default NTP value + when a regular profile is loaded. This is only logged if the home button is + shown. + + To be explicit: not logged when an Incognito profile is opened because that + inherits the settings from its parent profile. As such, it's not necessary + to log the Incognito profile's settings. + + + + + csharp@chromium.org + gab@chromium.org + + Logged on profile load. Indicates whether the hashes dictionary for this + profile is trusted. + + + + + bttk@chromium.org + twellington@chromium.org + wenyufu@chromium.org + + The location type for the homepage if the homepage is enabled. Recorded on + deferred startup iff the homepage is enabled. Android only. + + + + + + Logged on profile open, including for profiles that do not use this setting + (such as "system" profiles) and for profiles that do not allow the + profile-owner to configure this setting (such as "guest" + profiles). When logged in such cases, reported the default value. Replaced + in M-114 with the histogram Settings.HomePageEngineType2, which is similar + only emitted for regular profiles. + + mpearson@chromium.org + csharp@chromium.org + + Tries to pretend the home page URL is a search URL, and records the search + engine type of that URL by comparing the TLD+1 of the home page URL with + those of the different known search engines. Recorded when a profile is + opened, if a home page URL has been set. Note that at least one profile is + opened on startup. + + + + + mpearson@chromium.org + csharp@chromium.org + + Tries to pretend the home page URL is a search URL, and records the search + engine type of that URL by comparing the TLD+1 of the home page URL with + those of the different known search engines. Recorded when a regular profile + is opened, if a home page URL has been set. Note that at least one profile + is opened on startup. + + To be explicit: not logged when an Incognito profile is opened because that + inherits the settings from its parent profile. As such, it's not necessary + to log the Incognito profile's settings. + + + + + roagarwal@chromium.org + chrome-incognito@google.com + + Records the profile type for opening the Settings page from menu. + + + + + anastasiian@chromium.org + teresachow@google.com + cros-lurs@google.com + + The users progress through the pin unlock setup wizard. Each type + corresponds to the user completing a different stage of the setup wizard. + + + + + + Logged on profile open, including for profiles such as guest profiles that + do not allow modification of this setting. (This value logged on those cases + is the default value for the setting.) Replaced in M-110 with the histogram + Settings.PreloadStatus.OnStartup2, which is similar but only emitted on + regular profiles. + + harrisonsean@chromium.org + chrome-friendly-settings@google.com + + The status of the preload setting, recorded on profile open. Not recorded + for iOS where the setting does not exist. + + + + + + Replaced in M-110 with the histogram Settings.PreloadStatus.OnStartup3, + which records the full state of the setting (disabled, standard, and + extended). + + harrisonsean@chromium.org + chrome-friendly-settings@google.com + + The status of the preload setting, recorded on regular profile open (not + Incognito, Guest, etc.). Not recorded for iOS where the setting does not + exist. + + + + + rainhard@chromium.org + msramek@chromium.org + chrome-friendly-settings@google.com + + The status of the preload setting, recorded on regular profile open (not + Incognito, Guest, etc.). Not recorded for iOS where the setting does not + exist. + + + + + harrisonsean@chromium.org + msramek@chromium.org + sauski@chromium.org + + Which privacy related settings elements a user interacted with. Recorded + every time a user interacts with an element of interest. + + + + + msramek@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + Recorded when we attempt to show a Privacy Guide NTP promotion as instructed + by the server. True if the conditions to do so are met. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + How the users navigated into the Privacy guide as well as links out of the + privacy guide. + + + + + rainhard@chromium.org + aisulu@chromium.org + chrome-friendly-settings@google.com + + The number of settings steps that can be shown in the Privacy Guide flow. + This number varies based on the users' setting states. Recorded when the + user clicks 'Next' in the Privacy Guide welcome card. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + The step in the Privacy guide from which a user clicked the 'next' button. + + + + + harrisonsean@chromium.org + rainhard@chromium.org + chrome-friendly-settings@google.com + + Records whether or not the user kept the same settings or changed it, and + the corresponding value, on every |Next| or |Back| button click inside of + Privacy guide. + + + + + rainhard@chromium.org + aisulu@chromium.org + chrome-friendly-settings@google.com + + Records which steps were set to be eligible to be shown when user clicks + 'Next' button in the Welcome step. Records which steps were reached when + user reaches the individual step in the flow. + + + + + sauski@google.com + olesiamarukhno@chromium.org + msramek@chromium.org + kartoffel-core-eng@google.com + + Records the startup state of the ad measurement API for Privacy Sandbox GA + M1. This is recorded during the profile start up. + + + + + olesiamarukhno@google.com + sauski@google.com + kartoffel-core-eng@google.com + + Whether or not navigations to the Privacy sandbox settings page occured + because the user was redirected from the old version of the page. It occurs + once per navigation to the privacy sandbox settings page. + + + + + sauski@google.com + chrome-friendly-settings@google.com + + Records the host portion of the URL of the tab that the Privacy Sandbox + dialog was displayed over. As the Privacy Sandbox dialog is only shown over + chrome:// URLs (or about:blank), and we only record the host portion, this + will never include the user's browsing information (which may be present in + query parameters of chrome:// urls). + + + + + olesiamarukhno@google.com + sauski@google.com + chrome-friendly-settings@google.com + + Records the load time of the Privacy Sandbox Dialog. The load time is the + time between the dialog view created and HTML loaded (DOMContentLoaded). + + + + + olesiamarukhno@google.com + sauski@google.com + kartoffel-core-eng@google.com + + Records whether the window size was too small to fit the Privacy Sandbox + dialog. If the window is too small, the dialog isn't shown. It is recorded + after all other conditions to show the dialog were satisfied. + + + + + harrisonsean@chromium.org + msramek@chromium.org + chrome-friendly-settings@google.com + + Whether or not privacy sandbox apis are enabled, including the current state + of cookie settings, and if it is disabled by policy. Recorded on profile + startup. Values 8, 9, and 10 were added with M92. + + + + + sauski@google.com + olesiamarukhno@chromium.org + msramek@chromium.org + kartoffel-core-eng@google.com + + Records the startup state of the fledge API for Privacy Sandbox GA M1. This + is recorded during the profile start up. + + + + + sauski@google.com + chrome-friendly-settings@google.com + + Records the Topic ID which was provided for attempted localization, but + failed because the ID was outside the supported range. + + Any entry in this histogram is unexpected, and indicates that the model + generating Topic IDs is generating IDs which cannot be handled by Chrome UI. + + + + + andzaytsev@google.com + harrisonsean@chromium.org + msramek@chromium.org + chrome-friendly-settings@google.com + + Referrer of a navigation to the Privacy Sandbox UI Settings view. Recorded + when the user enters the view. + + Warning: This histogram was expired after M95 and restored M99. Data may be + missing M96-98. + + + + + sauski@google.com + olesiamarukhno@chromium.org + msramek@chromium.org + kartoffel-core-eng@google.com + + Records the startup state of the privacy sandbox prompt for Privacy Sandbox + GA M1. This is recorded during the profile start up. + + + + + sauski@google.com + harrisonsean@chromium.org + msramek@chromium.org + chrome-friendly-settings@google.com + + Records the startup state of user prefs controlling Privacy Sandbox. + + + + + sauski@google.com + olesiamarukhno@chromium.org + msramek@chromium.org + kartoffel-core-eng@google.com + + Records the startup state of the topics API for Privacy Sandbox GA M1. This + is recorded during the profile start up. + + + + + rainhard@chromium.org + msramek@chromium.org + + Resulting state of the safety check Chrome cleaner check. Recorded when a + safety check is run by the user. Value 4-9 got added with M88. + + + + + andzaytsev@google.com + msramek@chromium.org + Resulting state of the safety check extensions check. + + + + rainhard@chromium.org + msramek@chromium.org + anaudrey@chromium.org + + Which user actions were taken in safety check. Recorded every time a user + does an interaction in safety check. Value 5 and 6 got added with M86, 7-9 + with M87, 10 with M88, and 11 with M89. + + + + + sideyilmaz@chromium.org + msramek@chromium.org + hkamila@chromium.org + + The number of suggestions of notification permissions to revoke, recorded + when the notification permission list is initialized for the SafetyCheck + notifications module. + + + + + sideyilmaz@chromium.org + msramek@chromium.org + hkamila@chromium.org + + Captures whether the entry point for the notification module of Safety Check + is shown to the user, i.e. whether it is enabled and at least one + notification permission met the criteria for review. Recorded whenever the + user visits the Safety Check page in Chrome Settings. + + + + + sideyilmaz@chromium.org + msramek@chromium.org + hkamila@chromium.org + + The user actions taken on the notifications module in safety check in Chrome + settings. Recorded every time the user interacts with the respective UI + element. + + + + + andzaytsev@google.com + msramek@chromium.org + Resulting state of the safety check password check. + + + + andzaytsev@google.com + msramek@chromium.org + Resulting state of the safety check Safe Browsing check. + + + + sideyilmaz@chromium.org + msramek@chromium.org + + The number of days between the revocation of the permissions for an unused + site and when the user reverts this revocation through the unused site + permissions module of safety check in Chrome settings. Emitted when the user + clicks regrants permissions through the permissions review interface in + Chrome settings. + + + + + sideyilmaz@chromium.org + msramek@chromium.org + + The number of suggestions of unused site permissions to revoke, recorded + when the list of sites with revoked permissions is initialized when the user + opens the SafetyCheck unused site permissions module. + + + + + sideyilmaz@chromium.org + msramek@chromium.org + hkamila@chromium.org + + Captures whether the entry point for the unused site permissions module of + Safety Check is shown to the user, i.e. whether it is enabled and at least + one site permission has been revoked. Recorded whenever the user visits the + Safety Check page in Chrome Settings. + + + + + sideyilmaz@chromium.org + msramek@chromium.org + + The user actions taken on the unused site permissions module in safety check + in Chrome settings. Recorded every time the user interacts with the + respective UI element. + + + + + andzaytsev@google.com + msramek@chromium.org + Resulting state of the safety check updates check. + + + + yoangela@chromium.org + chrome-omnibox-team@google.com + + Which Search Engines settings page elements a user interacted with. Recorded + every time a user interacts with an element of interest. + + + + + dschuyler@chromium.org + + The number of characters typed in the chrome://settings page search box. + Intended to determine if we are making the user type too much to find what + they are looking for (the search is incremental). + + + + + dschuyler@chromium.org + + If no matches are found when searching within the chrome://settings page, + record the length of the search text. + + + + + dschuyler@chromium.org + + The number of search page hits within the chrome://settings page. This is + especially important when the count is zero (i.e. we returned no hits for a + given search in settings). A search is considered complete via timeout since + there is no concrete way to define the end of a search (the search is + incremental). + + + + + dschuyler@chromium.org + + If there is no further activity in the search box for 1 second, this records + one tick each time a settings section is shown as a result of searching + withing the chrome://settings page. If multiple matches are found within the + same section, the section match is only recorded once. + + + + + dschuyler@chromium.org + + The number of search subpage hits within the chrome://settings page. This is + different from Settings.SearchPageMatchCount in that it is tracking hits in + subpages rather than top level pages. See also + Settings.SearchPageMatchCount. + + + + + + Logged on profile open, including for profiles that do not use this setting + (such as "system" profiles) and for profiles that do not allow the + profile-owner to configure this setting (such as "guest" + profiles). When logged in such cases, reported the default value. Replaced + in M-114 with the histogram Settings.ShowHomeButton2, which is similar only + emitted for regular profiles. + + mpearson@chromium.org + twellington@chromium.org + + Whether or not the home button is enabled in user preferences when a profile + is loaded. + + + + + mpearson@chromium.org + twellington@chromium.org + + Whether or not the home button is enabled in user preferences when a regular + profile is loaded. + + To be explicit: not logged when an Incognito profile is opened because that + inherits the settings from its parent profile. As such, it's not necessary + to log the Incognito profile's settings. + + + + + pmonette@chromium.org + robliao@chromium.org + + The user clicked "Make Google Chrome the default browser" on the + settings page. + + + + + + Logged on profile open, including for profiles that do not use this setting + (such as "system" profiles) and for profiles that do not allow the + profile-owner to configure this setting (such as "guest" + profiles). When logged in such cases, reported the default value. Replaced + in M-114 with the histogram Settings.StartupPageEngineTypes2, which is + similar only emitted for regular profiles. + + mpearson@chromium.org + csharp@chromium.org + + Tries to pretend the startup page URLs are search URLs, and records the + search engine types of those URLs by comparing the TLD+1s of the URLs with + those of the different known search engines. Recorded when a profile is + opened, if startup page URLs have been set. Note that at least one profile + is opened on startup. + + + + + mpearson@chromium.org + csharp@chromium.org + + Tries to pretend the startup page URLs are search URLs, and records the + search engine types of those URLs by comparing the TLD+1s of the URLs with + those of the different known search engines. Recorded when a regular profile + is opened, if startup page URLs have been set. Note that at least one + profile is opened on startup. + + To be explicit: not logged when an Incognito profile is opened because that + inherits the settings from its parent profile. As such, it's not necessary + to log the Incognito profile's settings. + + + + + + Logged on profile open, including for profiles that do not use this setting + (such as "system" profiles) and for profiles that do not allow the + profile-owner to configure this setting (such as "guest" + profiles). When logged in such cases, reported the default value. Replaced + in M-114 with the histogram Settings.StartupPageLoadSettings2, which is + similar only emitted for regular profiles. + + mpearson@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + The startup page settings when a profile is loaded. + + + + mpearson@chromium.org + tiborg@chromium.org + chrome-desktop-ntp@google.com + + The startup page settings when a regular profile is loaded. + + To be explicit: not logged when an Incognito profile is opened because that + inherits the settings from its parent profile. As such, it's not necessary + to log the Incognito profile's settings. + + + + + dschuyler@chromium.org + + The time between when the chrome://settings page is opened to the first time + a search is done within that page. This is intended to evaluate how long a + user looks for a setting before giving up and searching for it. + + + + + dbeam@chromium.org + dpapad@chromium.org + + The time until the settings Web UI is loaded, rendered, and interactive for + users (as in they can change a setting). Automatically logged each time the + settings page is opened (if not closed before interactive). + + + + + proberge@chromium.org + junhao.huang@microsoft.com + + The id of a tracked preference whose value has been changed since the last + time Chrome set it. Without a suffix, this histogram stands for preference + validation using MACs in the JSON pref files. + + + + + proberge@chromium.org + junhao.huang@microsoft.com + + The id of a tracked preference whose value has been cleared since the last + time Chrome set it. Without a suffix, this histogram stands for preference + validation using MACs in the JSON pref files. + + + + + proberge@chromium.org + junhao.huang@microsoft.com + + The id of a tracked preference whose last value isn't known. We may be just + starting to track the preference, or local state may have been changed + outside of Chrome. This should only happen once per pref per profile. + Without a suffix, this histogram stands for preference validation using MACs + in the JSON pref files. + + + + + proberge@chromium.org + junhao.huang@microsoft.com + + The id of a tracked preference whose value has not changed since the last + time Chrome set it, but which was last set using a legacy device ID. Each + user should report this at most once per preference id and immediately be + migrated to the latest hashing model. Without a suffix, this histogram + stands for preference validation using MACs in the JSON pref files. + + + + + proberge@chromium.org + junhao.huang@microsoft.com + + The id of a tracked preference which was initialized despite the absence of + a MAC as its value was NULL. Without a suffix, this histogram stands for + preference validation using MACs in the JSON pref files. + + + + + proberge@chromium.org + junhao.huang@microsoft.com + The id of a tracked preference which was reset by Chrome. + + + + gab@chromium.org + + Whether settings enforcement was cancelled for a machine joined to a domain. + Reported once per session on browser startup (note: this histogram was + disabled for part of M40). + + + + + proberge@chromium.org + junhao.huang@microsoft.com + + The id of a tracked preference which was initialized despite the absence of + a MAC as the current MACs are trusted, inferring that this is a newly + tracked pref. Without a suffix, this histogram stands for preference + validation using MACs in the JSON pref files. + + + + + proberge@chromium.org + junhao.huang@microsoft.com + + The id of a tracked preference whose value has not changed since the last + time Chrome set it. Without a suffix, this histogram stands for preference + validation using MACs in the JSON pref files. + + + + + proberge@chromium.org + junhao.huang@microsoft.com + + The id of a tracked preference which Chrome would have reset had the config + allowed it. + + + + + mad@chromium.org + + Counts the number of times the user clicked on the No Thanks button of the + settings reset bubble before clicking on the Reset button in the same Chrome + session. + + + + + + diff --git a/histograms/metadata/sharing/OWNERS b/histograms/metadata/sharing/OWNERS new file mode 100644 index 000000000000..54d57240cd55 --- /dev/null +++ b/histograms/metadata/sharing/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +ellyjones@chromium.org +knollr@chromium.org diff --git a/histograms/metadata/sharing/histograms.xml b/histograms/metadata/sharing/histograms.xml new file mode 100644 index 000000000000..4526b25ffec1 --- /dev/null +++ b/histograms/metadata/sharing/histograms.xml @@ -0,0 +1,665 @@ + + + + + + + + + + ellyjones@chromium.org + sophey@chromium.org + src/chrome/browser/share/OWNERS + + + The UI surface that started any share attempt. Android only. + + This is a vital metric for the sharing team; please do not remove it or + change its behavior without consulting the metric owners. + + + + + kristipark@chromium.org + src/chrome/browser/share/OWNERS + + + The UI surface that started any share attempt. Desktop only. + + This is a vital metric for the sharing team; please do not remove it or + change its behavior without consulting the metric owners. + + + + + + + mvanouwerkerk@chromium.org + peter@chromium.org + + The number of available devices that are about to be shown in a UI for + picking a device to start a phone call on. Desktop only. + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + Logged when we try to fire a dial intent in click to call. Distinguishes + between if the user has an app that can handle dial intent or not. Android + only. + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + Logged whenever a dialog is shown for the Click to Call feature. Desktop + only. + + + + + knollr@chromium.org + peter@chromium.org + + Records if a received phone number is valid. Invalid numbers might suggest + that the remote device tried to send malicious data. Logged when handling a + Click to Call message on Android received from a Chrome desktop instance. + + + + + + + mvanouwerkerk@chromium.org + peter@chromium.org + + The index of the app selected by the user for Click to Call. Zero based. + Desktop only. + + + + + + + mvanouwerkerk@chromium.org + peter@chromium.org + + The index of the device selected by the user for Click to Call. Zero based. + Desktop only. + + + + + sophey@chromium.org + src/chrome/browser/share/OWNERS + + Records the origin of the share that opened the default sharesheet. Recorded + when the sharesheeet is opened. + + + + + knollr@chromium.org + peter@chromium.org + + Result of Sharing device registration. Logged after Sharing registration is + attempted. + + + + + knollr@chromium.org + peter@chromium.org + + Result of Sharing device un-registration. Logged after Sharing + un-registration is attempted. + + + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + The time from sending a FCM message from the Sharing service until an ack + message is received for it. + + + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + The time from receiving a SharingMessage in SharingFCMHandler until an ack + is sent back. Recorded when SendAckMessage callback is run in + SharingMessageHandler. + + + + + mvanouwerkerk@chromium.org + peter@chromium.org + + The type of SharingMessage (aka the PayloadCase). This is logged when a + message is received through FCM by the handler in the Sharing service. All + platforms. + + + + + wenyufu@chromium.org + src/chrome/browser/share/OWNERS + + The time to download the favicon as the image preview for sharing an link + using Android share sheet. Recorded when sharing a link with Android share + sheet only. + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + The time to decode an image for Remote Copy. Desktop only. + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + The result of handling a Remote Copy message. Logged once per message, when + the handler for the Remote Copy FCM message is finished handling it. Desktop + only. + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + Result code from loading an image for Remote Copy. Logs net::Error if it's + not net::OK. Logs net::OK if response header is not present. Otherwise, logs + HTTP status code. Desktop only. + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + The time to load an image for Remote Copy. Desktop only. + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + The size of the image loaded from the image URL specified in a Remote Copy + message received from FCM, after decoding. Desktop only. + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + The size of the image loaded from the image URL specified in a Remote Copy + message received from FCM, before decoding. Desktop only. + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + The size of the text in a Remote Copy message received from FCM. Desktop + only. + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + The time to detect a clipboard image write for Remote Copy. Logged after + writing the image. Desktop only. + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + The time to write an image to the clipboard for Remote Copy. Logged after + writing the image. Desktop only. + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + The time to detect a clipboard text write for Remote Copy. Logged after + writing the text. Desktop only. + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + The time to write text to the clipboard for Remote Copy. Logged after + writing the text. Desktop only. + + + + + jeffreycohen@chromium.org + src/chrome/browser/share/OWNERS + + Logged when actions are taken in the sharing screenshot image editing + feature. + + + + + jeffreycohen@chromium.org + src/chrome/browser/share/OWNERS + + Logged when actions are taken in the sharing screenshot fallback feature. + + + + + jeffreycohen@chromium.org + kristipark@chromium.org + src/chrome/browser/share/OWNERS + Whether the editor was dismissed during editor recreation. + + + + ckitagawa@chromium.org + src/components/paint_preview/OWNERS + + Records the status of the Bitmap Generator when capturing scroll capture + long screenshot. Recorded after the page capture request is sent to the + paint_preview capture service and compositor, when the service is no longer + busy. This metric is only emitted on Android S+. + + + + + ckitagawa@chromium.org + src/components/paint_preview/OWNERS + + Records the total time spent capturing a long screenshot of a page using + scroll capture. It is recorded when a scroll capture request successfully + finishes. This metric is only emitted on Android S+. + + + + + + + peter@chromium.org + knollr@chromium.org + + Result of sending an ack for a SharingMessage by the Sharing service. Logged + in the callback for sending the message to FCM. All platforms. + + + + + + + peter@chromium.org + knollr@chromium.org + + Result of sending a SharingMessage by the Sharing service. Logged after the + send message callback is run. Not logged for sending ack messages. All + platforms. + + + + + ellyjones@chromium.org + src/chrome/browser/share/OWNERS + + Status of STTS notifications. Recorded whenever a target device is chosen, a + recieved notification is shown, or an action is taken on the notification. + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + The number of available devices that are about to be shown in a UI for + picking a device to share the clipboard with. On desktop, it gets recorded + when the user right clicks on selected text. On Android, it gest recorded + when the user does long press, share and "Send text to Your + Devices". + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + Logged whenever a dialog is shown for the Shared Clipboard feature. + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + The index of the device selected by the user for Shared Clipboard gets + recorded when the user chooses the destination device for sharing text. Zero + based. + + + + + mvanouwerkerk@chromium.org + knollr@chromium.org + + The size of the selected text in Shared Clipboard gets recorded when the + user shares selected text. + + + + + jeffreycohen@chromium.org + kristipark@chromium.org + src/chrome/browser/share/OWNERS + + The result of reading/parsing/accepting a new proto for the third party + Share Targets. + + This is for the file types loaded from the component-update system. This + includes both those loaded from disk shortly after startup, and those + received over the network when the component version changes. + + + + + jeffreycohen@chromium.org + kristipark@chromium.org + src/chrome/browser/share/OWNERS + + The result of reading/parsing/accepting a new proto for the third party + Share Targets. + + This is for the file types loaded from the resource bundle packaged with + Chrome, which is always loaded at startup. + + + + + sophey@chromium.org + src/chrome/browser/share/OWNERS + + Records the origin of the share that opened the sharing hub. Recorded when + the sharing hub is opened. + + + + + sophey@chromium.org + src/chrome/browser/share/OWNERS + + Records the index of the third party app selected from the bottom row of the + sharing hub. + + + + + + No longer gathered for several milestones as of M111. Not sure precisely + when gathering of this metric stopped. + + skare@chromium.org + src/chrome/browser/share/OWNERS + + Records the amount of time taken to save the output bitmap from the image + editor to temporary storage and generate a URI. Recorded when the followup + share actions panel is displayed. + + + + + sophey@chromium.org + src/chrome/browser/share/OWNERS + + Records the amount of time taken for the user to select a share target after + initiating a share. + + + + + sophey@chromium.org + src/chrome/browser/share/OWNERS + + Records the amount of time taken for the custom share sheet to open after a + share was initiated. + + + + + sophey@chromium.org + src/chrome/browser/share/OWNERS + + Records what the link toggle state is when a share of a + {DetailedContentType} is {ShareStatus}. + + + + + + + + + + + + + + + + + + kristipark@chromium.org + src/chrome/browser/share/OWNERS + + Records whether the user selects a share target after opening the Chrome OS + sharesheet. + + + + + + Never actually logged in production, removed in M111. + + ellyjones@chromium.org + src/chrome/browser/share/OWNERS + + Records the elapsed time (in milliseconds) between the sharing hub becoming + visible on screen and the favicon image (if there is one) replacing the + default image. Only logged for cases where the favicon is both present and + is delivered to the sharing hub asynchronously, so this metric tracks how + slow async favicon fetching is. + + + + + + Never actually logged in production, removed in M111. + + ellyjones@chromium.org + src/chrome/browser/share/OWNERS + + Records the elapsed time (in milliseconds) between the sharing hub becoming + visible on screen and the high-quality image (if there is one) replacing the + default image. Only logged for cases where such a replacement eventually + happens - pages with no high-quality image do not produce an entry. This + metric essentially tracks how slow asynchronous HQ image fetching is. + + + + + ellyjones@chromium.org + src/chrome/browser/share/OWNERS + + Records the elapsed time (in milliseconds) between the user gesture that + should summon the sharing hub and the sharing hub actually becoming visible + on screen. + + + + + yigu@chromium.org + src/content/browser/sms/OWNERS + + The number of available devices when making a request on desktop which is + triggered by calling the WebOTP API. This is logged once per API call. + Desktop only. + + + + + yigu@chromium.org + src/content/browser/sms/OWNERS + + Records whether the remote client name is empty. This could happen on early + version of Chrome. This is logged once per notification when asking for user + permission to submit the one-time-passwords on the remote device. + + + + + yigu@chromium.org + src/content/browser/sms/OWNERS + + Records whether the phone is on and unlocked when we show the notification + to users. False if either the phone is locked or the phone does not have a + screen lock but the screen is off. This is logged once per notification. + + + + + yigu@chromium.org + src/content/browser/sms/OWNERS + + Records whether a user taps/dismisses the notification after Chrome is + destroyed. This could happen if the user manually swipes away Chrome from + the task switcher or the OS decides to destroy Chrome due to lack of memory + etc. This is logged once per user action on the notification. + + + + + peter@chromium.org + knollr@chromium.org + + Number of ice servers fetched by network traversal API call. Logged after + receiving response of API call. + + + + + wenyufu@chromium.org + src/chrome/browser/share/OWNERS + + The content type being shared when using a share sheet. Recorded when share + is sent to share sheet for {ShareSurface}. Android only. + + + + + + + + + + diff --git a/histograms/metadata/side_search/histograms.xml b/histograms/metadata/side_search/histograms.xml new file mode 100644 index 000000000000..462320f8d961 --- /dev/null +++ b/histograms/metadata/side_search/histograms.xml @@ -0,0 +1,200 @@ + + + + + + + + + + yuhengh@chromium.org + tluk@chromium.org + + Number of navigations committed within the side search panel a given side + search journey started from an autotriggered side panel. Emitted when the + current search journey ends (i.e. the side panel was explicitly closed by + the user). + + + + + yuhengh@chromium.org + tluk@chromium.org + + Number of navigations redirected to the tab from the side panel for side + search journeys started from an autotriggered side panel. Emitted when the + current search journey ends (i.e. the side panel was explicitly closed by + the user). + + + + + yuhengh@chromium.org + tluk@chromium.org + romanarora@chromium.org + + Denotes Side Search's availability. Recorded when side search becomes + available or unavailable, more specifically when the side search button + becomes visible or becomes invisible. + + + + + yuhengh@chromium.org + tluk@chromium.org + romanarora@chromium.org + + The amount of time between the RenderFrameHost StartProvisionalLoad event + and the RenderFrameHost DocumentOnLoadCompleted event for the Side Search + Result Page. Recorded when DocumentOnLoadCompleted event triggered. + + + + + yuhengh@chromium.org + tluk@chromium.org + romanarora@chromium.org + + The amount of time between the RenderFrameHost StartProvisionalLoad and + DidFinishDocumentLoad events for the Side Search Result Page. Recorded when + DidFinishDocumentLoad events triggered. + + + + + yuhengh@chromium.org + tluk@chromium.org + romanarora@chromium.org + + The type of navigation of Side Search. Recorded when user clicks on a link + from side search panel. It either navigates the link within the side search + panel or redirects to the tab. + + + + + + Removed in M107 + + yuhengh@chromium.org + tluk@chromium.org + romanarora@chromium.org + + Number of navigations committed within the side search panel in the same + side panel web contents for a given search journey. Recorded when the + current search journey ends. + + + + + yuhengh@chromium.org + tluk@chromium.org + romanarora@chromium.org + + The number of navigations committed within the side search panel for a given + search journey. The search journey corresponds to the life of the side panel + web contents. Emitted when the side panel WebContents is destroyed. + + + + + pengchaocai@chromium.org + yuhengh@chromium.org + tluk@chromium.org + + The number of navigations committed within the side search panel for a given + search journey, if the side panel web contents is created from menu entry + point. The search journey corresponds to the life of the side panel web + contents. Emitted when the side panel WebContents is destroyed. + + + + + yuhengh@chromium.org + tluk@chromium.org + + This metric tracks whether the SideSearchIconView's label is visible when + the page action is toggled. The label is considered visible if it is fully + expanded as well as if it is animating in and out. + + + + + yuhengh@chromium.org + tluk@chromium.org + romanarora@chromium.org + + Number of navigations redirected to the tab from the side panel for a given + side search journeys. Emitted when the current search journey ends (i.e. the + side panel was explicitly closed by the user). + + + + + pengchaocai@chromium.org + yuhengh@chromium.org + tluk@chromium.org + + Number of navigations redirected to the tab from the side panel for a given + side search journeys, if the side panel web contents is created from menu + entry point. Emitted when the current search journey ends (i.e. the side + panel was explicitly closed by the user). + + + + + yuhengh@chromium.org + tluk@chromium.org + + The time interval between when the side panel is made available to when it + is first opened for a given tab. Emitted for the active tab when the side + panel is toggled open. + + + + + yuhengh@chromium.org + tluk@chromium.org + + The number of times the user navigated back to the same search results page + in a given tab's history. Emitted after the count is reset when the user + navigates to a new search results page in a given tab. + + + + + + diff --git a/histograms/metadata/signin/OWNERS b/histograms/metadata/signin/OWNERS new file mode 100644 index 000000000000..1ae15479a23d --- /dev/null +++ b/histograms/metadata/signin/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +alexilin@chromium.org diff --git a/histograms/metadata/signin/histograms.xml b/histograms/metadata/signin/histograms.xml new file mode 100644 index 000000000000..671ae95b17bc --- /dev/null +++ b/histograms/metadata/signin/histograms.xml @@ -0,0 +1,1615 @@ + + + + + + + + + + mlerman@chromium.org + + Tracks user interactions as they sign in through a flow. The suffix of the + histogram indicates what UI widget or application flow triggered the signin + flow. + + + + + alexilin@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + This histogram records the fetch duration every time Chrome {Result} account + capabilities from network. This is recorded only on Desktop platforms where + Chrome implements its own account capabilities fetcher. + + + + + + + + + alexilin@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + This histogram records the outcome of the account capabilities fetch + operation. This is recorded only on Desktop platforms where Chrome + implements its own account capabilities fetcher. + + + + + fernandex@chromium.org + msarda@chromium.org + triploblastic@chromium.org + chrome-signin-team@google.com + + This histogram records the time it takes to fetch account capabilities from + the system library {Caller}. + + + + + + + + + fernandex@chromium.org + msarda@chromium.org + triploblastic@chromium.org + chrome-signin-team@google.com + + This histogram records the outcome of the account capabilities fetch + operation. This is recorded only on Android and iOS where Chrome fetches the + account capabilities from the system library. + + + + + bsazonov@chromium.org + chrome-signin-team@google.com + + This histogram records the action taken by user after receiving the header + from Gaia in the web sign-in flow. Currently only recorded on Android. + + + + + bsazonov@chromium.org + chrome-signin-team@google.com + + Records the action taken by user after receiving the header from Gaia in the + web sign-in flow. This histogram is another version of + |Signin.AccountConsistencyPromoAction|, where the original one logs the + promo events directly, and this histogram creates a variant for every promo + event, and logs its access points instead. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + triploblastic@chromium.org + chrome-signin-team@google.com + + The time it takes to fetch the account avatar for one account in + AccountFetcherService. This is recorded every time a User Avatar fetch + request from AccountFetcherService succeeds. + + This histogram, along with Signin.AccountFetcher.AccountUserInfoFetchTime, + will be used to decide whether to use OneGoogle library. + + + + + triploblastic@chromium.org + chrome-signin-team@google.com + + The time it takes to fetch the account information (except avatar) for one + account in AccountFetcherService. This is recorded every time a User Info + fetch request from AccountFetcherService succeeds. + + This histogram, along with Signin.AccountFetcher.AccountAvatarFetchTime, + will be used to decide whether to use OneGoogle library. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Records the state of the account reconcilor when GAIA returns a specific + response. The data in the "Inactive" bucket might be incorrect + prior to M111. + + + + + + + msarda@chromium.org + sdefresne@chromium.org + + Number of accounts loaded from preferences by the AccountTracker. Invalid + accounts are not counted. + + This is recorded on each profile load. + + + + + msarda@chromium.org + sdefresne@chromium.org + + This histogram records the AccountTracker account ID migration status from + email to GAIA ID after the data is loaded from disk. It is more general than + OAuth2Login.AccountRevoked.MigrationState that only record the event in case + of errors and only on Android. + + This histogram will be used to check whether the migration has completed for + all active installs on a given platform or not (and whether the code can be + removed). + + This is recorded on each profile load. + + + + + sinhak@chromium.org + chrome-signin-team@google.com + + Indicates if the account being tracked by AccountTracker has an empty + account id. This is recorded whenever AccountTracker starts tracking a new + account. + + This histogram will be used to decide the severity of AccountTracker + receiving malformed account ids. + + + + + jlebel@chromium.org + chrome-signin-team@chromium.org + + Records the sign-in consent by regular Gmail account or managed account. + Recorded when the user signs in (iOS only). + + + + + jlebel@chromium.org + chrome-signin-team@chromium.org + + Records the sync consent done by regular Gmail account or managed account. + Recorded when the user signs in (iOS only). + + + + + triploblastic@chromium.org + chrome-signin-team@google.com + + This histogram records states in the add account process launched from + Chrome on Android. + + + + + samarchehade@chromium.org + chrome-signin-team@google.com + + The time it takes to fetch the account information (user names, avatar) for + one account on Android. This is recorded when account information is + downloaded in FRE or when there is an accounts change event. + + + + + bsazonov@chromium.org + chrome-signin-team@google.com + + Number of Android accounts on device when entering the First Run Experience + sign-in screen. + + + + + alexilin@chromium.org + bsazonov@chromium.org + + The time it takes to retrieve Gaia ids for all accounts from GoogleAuthUtil. + + + + + alexilin@chromium.org + bsazonov@chromium.org + + The time it takes to retrieve the list of accounts from the system. + + + + + bsazonov@chromium.org + chrome-signin-team@google.com + + Whether the persisted name of the FREMobileIdentityConsistencyStudy is + consistent with the current value of low entropy source. Recorded on startup + when the trial is registered. + + + + + triploblastic@chromium.org + chrome-signin-team@google.com + + The number of Android accounts present on the device. Recorded on startup. + + + + + msarda@chromium.org + droger@chromium.org + + Log the type of GAIA authentication error that occur whenever the error + state changes. + + + + + + + + + droger@chromium.org + skym@chromium.org + + The relation between the account signed into chrome, and the account(s) in + the cookie jar. This metric is never recorded when not signed into chrome. + + + + + + + + + droger@chromium.org + skym@chromium.org + The number of signed in accounts in the cookie jar. + + + + msarda@chromium.org + droger@chromium.org + chrome-signin-team@google.com + + + + The number of signed in accounts in the cookie jar for users that have a + (possibly unconsented) primary account. Reported at most every 24 hours + (using a persistent timer). Reporting is split based on the type of the + primary account. + + + + + + + + + droger@chromium.org + skym@chromium.org + The number of signed out accounts in the cookie jar. + + + + + + + + droger@chromium.org + skym@chromium.org + The amount of time since the cookie jar last changed. + + + + + + + + droger@chromium.org + skym@chromium.org + The total number of accounts in the cookie jar. + + + + + + droger@chromium.org + msarda@chromium.org + + Recorded when a Dice signin response is received and indicates whether the + authorization code was present or not. + + + + + + + droger@chromium.org + msarda@chromium.org + Records Dice responses (signin and signout). + + + + + + droger@chromium.org + msarda@chromium.org + Outcome of the token fetch in Dice signin. + + + + pastarmovj@chromium.org + ydago@chromium.org + + Whether the user chose to create a new work profile after a signin while + profile separation is enforced by policy. This is recorded after the user + accepts or refuses to create a new profile when shown the enterprise profile + confirmation dialog and enterprise profile separation is enforced by policy. + + + + + pastarmovj@chromium.org + ydago@chromium.org + + Whether the user chose to create a new work profile after a signin while + profile separation is not enforced by policy. This is recorded after the + user accepts or refuses to create a new profile when shown the enterprise + profile confirmation dialog and enterprise profile separation is not + enforced by policy. + + + + + alexilin@chromium.org + droger@chromium.org + + Result of the browser remote consent flow, which is a part of the + chrome.identity.getAuthToken() extension API call. Desktop only. + + + + + droger@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + Records whether an interactive UI is allowed, when + `chrome.identity.getAuthToken` is in interactive mode and attempts to show a + "{UiType}" UI. If multiple UIs are shown by the same call, only + the first one is recorded. + + + + + + + + + droger@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + Records the Chrome idle time, when `chrome.identity.getAuthToken` is in + interactive mode, has no user gesture, and attempts to show a + "{UiType}" UI. If multiple UIs are shown by the same call, only + the first one is recorded. + + + + + + + + + + + alexilin@chromium.org + droger@chromium.org + chrome-signin-team@google.com + + Result of the chrome.identity.getAuthToken() extension API call. Recorded + right before returning the result to an extension. Desktop only. + + + + + alexilin@chromium.org + rsult@google.com + chrome-signin-team@google.com + + Result of the chrome.identity.launchWebAuthFlow() extension API call. + Recorded right before returning the result to an extension. Desktop only. + + + + + + + droger@chromium.org + msarda@chromium.org + + The number of requests initiated by the browser to log the user out from + Google web. The Chrome account reconcilor enforces account consistency for + Google accounts between the browser and web. In some cases it must force + logout the user from Google web and then it sends a request to the Gaia + logout endpoint. The expectation is that brower initiated logout is a rare + event and should only occur in the following cases: a) it to be triggered + when the browser fails to exchange an auth code for refresh tokens after a + web sign-in (events which is counted by histogram + Signin.DiceTokenFetchResult), b) when all refresh tokens are invalid (e.g + when they cannot be loaded from disk). + + + + + droger@chromium.org + msarda@chromium.org + + Reconds finished access token requests during Chrome reconcile, both + successful or not, and return the GoogleAuthError state NONE is a success, + other values are failures. + + + + + mastiz@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + Records whether sync was turned on/consented on a profile at least once + since the last time all profile data was wiped out (e.g. the user chose to + clear data upon signout). This histogram is recorded upon profile load, and + only for the case where the user is fully signed out. + + + + + mastiz@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + Records whether sync was turned on/consented on a profile at least once + since the last time all profile data was wiped out (e.g. the user chose to + clear data upon signout). This histogram is recorded upon profile load, and + only if sync is off (either the user is fully signed out, or the user is + signed in without turning sync on). + + + + + alexilin@chromium.org + droger@chromium.org + + Records the duration of the account info fetch after signin interception. + + + + + alexilin@chromium.org + chrome-signin-team@google.com + + Records various events that occur during the first run experience after the + sign-in interception. + + + + + droger@chromium.org + alexilin@chromium.org + + Records the outcome of the signin interception heuristic, which runs for + each signin interception. + + + + + alexilin@chromium.org + droger@chromium.org + + Records the duration of the signed-in profile creation after signin + interception. + + + + + alexilin@chromium.org + droger@chromium.org + + Records the duration of the signed-in profile switch after signin + interception. + + + + + + + alexilin@chromium.org + droger@chromium.org + + Records the outcome of the enterprise signin interception bubble. Recorded + when the bubble is dismissed. + + + + + + + droger@chromium.org + msarda@chromium.org + + Reason for invalid Gaia credentials. Recorded when Signin.AuthError records + invalid credentials. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Records the number of identities after iOS device restore. Recorded at cold + start when a device restore is detected, and only if the user was signed in + before the device backup. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Records the number of identities before iOS device restore. Recorded at cold + start when a device restore is detected, and only if the user was signed in + before the device backup. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Records errors when creating sentinel files at cold start. Those sentinel + files are used to detect a device restore. Histogram only for iOS. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Records if the path for a sentinel file (used to detect iOS restore) is + generated successfully. Recorded on cold start. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Records whether the user is signed in or signed out before and after a + device restore. Recorded at cold start when a device restore is detected. + + + + + jlebel@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + Records whether the Gaia cookie is present when a user signed in to Chrome + navigates to a Google-owned domain that is eligible for Mirror account + consistency. This metrics tracks the user journeys that interact with + authentication cookies and that could be disrupted if an external force + (e.g. Apple's ITP) were to remove these cookies. This logging is limited to + once every hour due to performance constraints. + + + + + jlebel@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + Tracks the combination of sign-in method and sync state for signed-in users + on iOS. If the user is signed in, this histogram is updated with the sign-in + method and the sync state each time the application goes to foregrond. + "Client Login" corresponds to users that have signed in via the + legacy client login flow (Chrome iOS M27 and before). "Shared + Authentication" corresponds to user that have signed in via the iOS + Shared Authentication library. "Sync off" corresponds to users + that have sync turned off. "Sync on" corresponds to users that + have sync turned on. + + + + + jlebel@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + Count of the number of SSO accounts present on the device. Note that this is + different to the number of accounts signed in in Chrome. The count is logged + in this histogram each time the application goes to foreground. + + + + + + + droger@chromium.org + skym@chromium.org + + Current best guess if this device is shared between multiple users. + + + + + + + msarda@chromium.org + droger@chromium.org + + Failure reason of ListAccounts call failure during account reconciliation, + Chrome OS login, or signin internals queries. + + + + + + + msarda@chromium.org + droger@chromium.org + + Retry reason of failed ListAccounts calls (these calls calls are used to + fetch the list of Google accounts present in the Gaia cookies). + + + + + tju@google.com + chrome-kids-eng@google.com + Tracks the latency of calls to the Kids Management API. + + + + tju@google.com + chrome-kids-eng@google.com + + The status of the net or http communication to the Kids Management API. This + is recorded for each request to the Kids Management API (ListFamilyMembers + rpc). + + + + + tju@google.com + chrome-kids-eng@google.com + The status of the fetch to the Kids Management API. + + + + tju@google.com + chrome-kids-eng@google.com + + Latency of the calls to the Kids Management API that resulted with + "{Status}" status. + + + + + + + + + + + + jlebel@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + Counts the number of identities loaded by SSO library using the keychain + API. The metric is recorded every time SSO updates the identity list (either + on the first run, or when the cache is staled). See: + https://crbug.com/897470. + + + + + jlebel@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + Tracks the time it takes to load identities by SSO library using the + keychain API. The metric is recorded every time SSO updates the identity + list (either on the first run, or when the cache is staled). See: + https://crbug.com/897470. + + + + + jlebel@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + Tracks the time it takes to load one identity in average by SSO library + using the keychain API. This value is the total time taken by the keychain + API to finish, divided by the number of identities returned. The metrics is + recorded every time SSO updates the identity list (either on the first run, + or when the cache is staled). See: crbug.com/897470. + + + + + + + droger@chromium.org + msarda@chromium.org + + Action taken for tokens being loaded from the token database, at Chrome + startup. Tokens can be either loaded into Chrome's token service or revoked. + + + + + + + droger@chromium.org + msarda@chromium.org + + Number of accounts in tokens sent to Gaia Multilogin. Recorded when Chrome + does a request to /oauth/multilogin. + + + + + alexilin@chromium.org + droger@chromium.org + + Result of the OAuth2MintToken API call. Recorded after the response is + processed. Desktop only. + + + + + + + msarda@chromium.org + droger@chromium.org + + Reason fetching an OAuth2 Token failed or none in case of success. Available + on all OSes. + + + + + + + msarda@chromium.org + droger@chromium.org + + Reason fetching an OAuth2 Token is being retried. Available on all OSes. + + + + + + + droger@chromium.org + msarda@chromium.org + Response status received from gaia Multilogin. + + + + + + msarda@chromium.org + droger@chromium.org + + Records whether all external connections have been successfully checked (a + value of "true") or not ("false") when the reconciler + attempts to perform MergeSession. + + + + + + + droger@chromium.org + msarda@chromium.org + + Records the execution time of the account reconciler using 100 buckets, up + to 3 minutes. + + + + + + + msarda@chromium.org + droger@chromium.org + + Records the time it took to successfully check all external connections + whenever the reconciler performs a reconciliation. + + + + + + + msarda@chromium.org + droger@chromium.org + + Records the time it took to check only a portion of external connections + whenever the reconciler performs a reconciliation. This means that either a + network error occured while checking some sites or the site did not respond + before the check timeout. + + + + + msarda@chromium.org + droger@chromium.org + + Records the operation executed by the reconcilor to reconcile the accounts + (or no-op if the accounts are already consistent). + + + + + droger@chromium.org + msarda@chromium.org + msalama@chromium.org + + Records the number of consecutive {RequestType} requests not allowed by the + account reconcilor throttler due to back off time required between + successive requests with the same paramaters. Recorded on the throttler + destruction, a reset upon a new different request or a no operation + reconciliation cycle or an allowed request upon a sufficient time to refill. + + + + + + + + + + droger@chromium.org + msarda@chromium.org + msalama@chromium.org + chrome-signin-team@google.com + + Recorded when the account reconcilor tries to change the cookie to match the + tokens and performs a {Operation} operation. Records the event which + triggered the reconcile. + + + + + + + + + + + + + droger@chromium.org + msarda@chromium.org + + Source for refresh token revocation. This is used to track the sources for + signing out of Google accounts and is required to validate that the browser + is not revoking tokens for large parts of the user population. + + + + + + + droger@chromium.org + msarda@chromium.org + + Source for refresh token updated to invalid tokens. The refresh token is + updated to an permanently invalid token when the user attempts to sign out + of the primary account without turning off sync. This histogram is used to + track the sources for invalidating the token of the primary account and is + required to validate that the browser is not invalidating the token of the + primary account for large parts of the user population. + + + + + + + droger@chromium.org + msarda@chromium.org + + Source for refresh token updated to valid tokens. This is used to track the + sources for adding Google accounts to the browser. + + + + + + + msarda@chromium.org + droger@chromium.org + + This histogram records the success of setting each cookie after Multilogin + response is received and parsed. + + + + + jlebel@chromium.org + msarda@chromium.org + chrome-signin-team@google.com + + Track the number of times the view that displays the accounts that are + signed is shown. This view only exists on iOS and is shown every time the + application enters forground iff the accounts changed while it was in + background. Only bucket "Shown" is being recorded (this histogram + is a counter). + + This histogram was added following crbug.com/1006717 (stable regression) + where the signed-in accounts view was repeatedly shown for a set of users. + It is used as a counter to monitor that there are no bumps in its timeline. + + + + + bsazonov@chromium.org + dgn@chromium.org + chrome-signin-team@google.com + + Records that the user signed in to Chrome, and logs the original access + point associated with this event. + + + + + bsazonov@chromium.org + dgn@chromium.org + chrome-signin-team@google.com + + Records that the option to sign in to Chrome was offered to the user, and + logs the original access point associated with this event. + + This histogram is still in development and has a limited coverage of the + Signin access points for now. + + + + + bsazonov@chromium.org + dgn@chromium.org + chrome-signin-team@google.com + + Records that the user started the flow to sign in to Chrome, and logs the + original access point associated with this event. + + Notes: + + - This histogram is still in development and has a limited coverage of the + Signin access points for now. See go/chrome-signin-metrics-revamp for more + context on the planned work. + + - For the First Run, we log it once for the whole first run flow, it does + not get recorded multiple times if the user steps back in the flow and + chooses again to sign in. + + + + + bsazonov@chromium.org + chrome-signin-team@google.com + + Logs the original access point of each aborted sign in. Only logged on + Android. + + + + + + + droger@chromium.org + msarda@chromium.org + tangltom@chromium.org + + Tracks the state of a user's signin-allowed preference. This is recorded at + every startup. + + + + + msarda@chromium.org + bsazonov@chromium.org + droger@chromium.org + chrome-signin-team@google.com + Logs the original access point of each completed sign in. + + + + birnie@google.com + bsazonov@chromium.org + chrome-signin-team@google.com + + This histogram records the signin access point which was used when the + signin disabled notification was shown. This is on Android only. + + + + + msarda@chromium.org + bsazonov@chromium.org + droger@chromium.org + chrome-signin-team@google.com + Logs the reason of each completed sign in. + + + + msarda@chromium.org + bsazonov@chromium.org + droger@chromium.org + chrome-signin-team@google.com + + Logs the original access point that displayed the signin or reauth Gaia + page, before the page is displayed. + + + + + bsazonov@chromium.org + dgn@chromium.org + chrome-signin-team@google.com + + Records that the user signed out of Chrome, and logs the original access + point associated with this event. Note that turning off Sync almost always + signs the user out, in which case both this histogram and + Signin.SyncTurnOff.Completed are recorded. + + + + + skym@chromium.org + + If the user chose to delete their profile or not when signing out of an + unmanaged account. When the user is not given a choice this metric is not + recorded. + + + + + + + msarda@chromium.org + droger@chromium.org + Track how a profile gets signed out. + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Tracks the error code by -[SSOService identitiesWithError:]. See: + https://crbug.com/981082. + + + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Tracks the SSO identity cache state before calling -[GCRSSOService + identitiesWithError:] or -[GCRSSOService identitiesForDisplay]. See: + https://crbug.com/897470. + + + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Tracks the time it takes to call -[GCRSSOService identitiesWithError:] or + -[GCRSSOService identitiesForDisplay]. See: https://crbug.com/897470. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Tracks the time between -[GCRSSOService fetchIdentitiesWithCallback:] and + the callback is invoked. See: https://crbug.com/897470. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Counts the number of cookies returned by -[WKHTTPCookieStore + getAllCookies:]. This histogram is to help to understand how many callbacks + from |getAllCookies:| can be missing. And if the number of cookies is + related in that iOS bug. See: crbug.com/880981. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Tracks the time it takes for -[WKHTTPCookieStore getAllCookies:] to finish + and call its callback. Note that nothing is logged is -[WKHTTPCookieStore + getAllCookies:] fails to calls its callback. This histogram is to help to + understand how many callbacks from |getAllCookies:| can be missing, related + to a bug from iOS. And if the number of cookies is related in that iOS bug. + See: crbug.com/880981. + + + + + jlebel@chromium.org + chrome-signin-team@google.com + + Counts the number of times -[WKHTTPCookieStore getAllCookies:] is called and + the number of times it calls its callback. This histogram is to help to + understand how many callbacks from |getAllCookies:| can be missing, related + to a bug from iOS. And if the number of cookies is related in that iOS bug. + See: crbug.com/880981. + + + + + arthurmilchior@chromium.org + triploblastic@chromium.org + chrome-signin-team@google.com + + This histogram records which sync data row was clicked by the user on the + tangible sync consent page on Android and iOS. + + + + + birnie@google.com + bsazonov@chromium.org + chrome-signin-team@google.com + + This histogram records the sync access point which was used when the sync + disabled notification was shown. This is on Android only. + + + + + triploblastic@chromium.org + bsazonov@chromium.org + + Records various UI and user action events related to the sync error message. + Android only. + + + + + + + + + + + + + + + triploblastic@chromium.org + bsazonov@chromium.org + Tracks where FirstSetupComplete bit is set from. + + + + bsazonov@chromium.org + dgn@chromium.org + chrome-signin-team@google.com + + Records that the sync opt-in was completed by the user, and logs the + original access point associated with this event. This is recorded when the + user chooses to opt-in, whether they chose to proceed with the default + settings or to open the sync settings first. + + + + + bsazonov@chromium.org + dgn@chromium.org + chrome-signin-team@google.com + + Records that the user chose to navigate to the sync settings page from the + sync confirmation screen. Logs this in the context of the access point + associated with this event. + + + + + bsazonov@chromium.org + dgn@chromium.org + chrome-signin-team@google.com + + Records that the sync confirmation screen was shown to the user, and logs + the access point associated with this event. Note that due to some product + quirks, this is recorded also when the "sync disabled" screen is + shown, matching what happens with the completion event. See + crbug.com/1398463 for more info. + + + + + triploblastic@chromium.org + chrome-signin-team@google.com + + This histogram records how many times sync promos have been shown (including + the current one) across all access points when {Action} the {AccessPoint} + sync promo (Android Only). + + + + + + + + + + + + + + + + bsazonov@chromium.org + dgn@chromium.org + chrome-signin-team@google.com + + Records that the user turned off sync, and logs the original access point + associated with this event. + + + + + + + msarda@chromium.org + + Counts how many times the SQL statements to get all tokens is valid. + + + + + + + msarda@chromium.org + + Counts the results of loading a refresh token from the token database. + + + + + + + alexilin@chromium.org + fhorschig@chromium.org + + Recorded whenever the user interacts with reauthentication to complete a + transaction (like interacting with the account store for passwords) and + whether the reauth challenge was cleared. + + + + + + + alexilin@chromium.org + droger@chromium.org + + Records user actions performed in the reauthentication dialog/tab. + + + + + + + msarda@chromium.org + droger@chromium.org + + Reason of failure to acquiring an ubertoken based on an already-minted + access token. Available on all OSes. + + + + + + + msarda@chromium.org + droger@chromium.org + + Retry reason of failure to acquire an ubertoken based on an already-minted + access token. Available on all OSes. + + + + + triploblastic@google.com + bsazonov@chromium.org + + User requested to wipe local device data on signout. This histogram is only + recorded when the user is given a choice of whether or not to wipe data (not + in cases where the data is either automatically wiped or automatically not + wiped). + + + + + + diff --git a/histograms/metadata/simple/OWNERS b/histograms/metadata/simple/OWNERS new file mode 100644 index 000000000000..f89d1edba1cf --- /dev/null +++ b/histograms/metadata/simple/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. + +# Primary +wanderview@chromium.org diff --git a/histograms/metadata/simple/histograms.xml b/histograms/metadata/simple/histograms.xml new file mode 100644 index 000000000000..cb6d72ae735c --- /dev/null +++ b/histograms/metadata/simple/histograms.xml @@ -0,0 +1,422 @@ + + + + + + + + + + jkarlin@chromium.org + shivanisha@chromium.org + + The size of the cache at the time that the index has finished initializing. + + + + + wanderview@chromium.org + morlovich@chromium.org + + Record the outcome of the simple DiskCache consistency check. The + consistency check is executed every time a simple DiskCache is initialized. + This check includes both inspecting the schema on disk and upgrading the + schema to the latest version if necessary. + + + + + wanderview@chromium.org + morlovich@chromium.org + + Record the final consistency check value after index files have been deleted + from an empty simple DiskCache. This histogram will tell us how often the + index deletion code results in a functioning cache. It will also tell us + what kind of consistency failures cannot be recovered due to index file + deletion. + + + + + morlovich@chromium.org + wanderview@chromium.org + + The time from the creation of the simple cache backend until the index has + been loaded from disk. + + + + + morlovich@chromium.org + wanderview@chromium.org + + The time from the creation of the simple cache backend until the index fails + to load. + + + + + wanderview@chromium.org + morlovich@chromium.org + + Record if any simple DiskCache index files were deleted from an otherwise + empty cache after the cache failed the initialization consistency check. + This histogram will tell us how often the deletion code is triggering and + modifying the disk. + + + + + morlovich@chromium.org + wanderview@chromium.org + + The time to close (write out footers and close the file) the cache entry on + disk. Includes only successful operations. + + + + + morlovich@chromium.org + wanderview@chromium.org + + The time to access (open for creation and write initial headers) the cache + entry on disk. Includes only successful operations. + + + + + morlovich@chromium.org + wanderview@chromium.org + + The time to remove the cache entry on disk. Includes only individually + doomed entries, not entries bulk-erased during eviction. + + + + + morlovich@chromium.org + wanderview@chromium.org + + The time to access (open and read headers from all files) the cache entry on + disk. Includes only successful operations. + + + + + morlovich@chromium.org + wanderview@chromium.org + + The time to write a chunk to the cache entry on disk. Includes only + successful operations. + + + + + morlovich@chromium.org + wanderview@chromium.org + + The time, in ms, spent creating a new entry on disk. This measures time from + when the method got removed from SimpleEntryImpl's operation queue till when + the callback is about to be invoked, and includes all Open and Create + operations, despite what the name may suggest. + + + + + morlovich@chromium.org + wanderview@chromium.org + The number of entries to be erased in an eviction. + + + + morlovich@chromium.org + wanderview@chromium.org + Time spent completing an eviction. + + + + morlovich@chromium.org + wanderview@chromium.org + Time spent selecting entries for eviction. + + + + morlovich@chromium.org + wanderview@chromium.org + + This even is emitted when SimpleCache is forced to either close some files + due to being over FD limit, or reopen files it had to close due to such + limit earlier. + + + + + morlovich@chromium.org + wanderview@chromium.org + + The size of the header stream of a Simple Cache entry, emitted every time + the headers are written or rewritten. + + + + + morlovich@chromium.org + wanderview@chromium.org + The number of entries in a newly created index file. + + + + morlovich@chromium.org + wanderview@chromium.org + + The state the index file is at when an attempt is made to load from it. + + + + + wanderview@chromium.org + morlovich@chromium.org + The method used to initialize the simple cache index. + + + + jkarlin@chromium.org + morlovich@chromium.org + + The number of entries in the index at the time that the index has finished + initializing. + + + + + morlovich@chromium.org + wanderview@chromium.org + + Time (as measured on the worker pool) spent restoring the index file by + iterating directory entries. + + + + + jkarlin@chromium.org + morlovich@chromium.org + + The maximum allowed size of the cache at the time that the index has + finished initializing. + + + + + morlovich@chromium.org + wanderview@chromium.org + + At the time that an entry is opened, the state of that entry in the index. + + + + + wanderview@chromium.org + morlovich@chromium.org + + Record the original consistency error produced by a simple DiskCache before + a retry was attempted and succeeded. This histogram will tell us what kind + consistency errors can be recovered from in practice. + + + + + wanderview@chromium.org + morlovich@chromium.org + + Record the outcome of the simple DiskCache consistency check after retrying + initialization on an empty cache directory. The retry may occur after + corrupt index files were deleted from an empty cache. The retry may also + occur if the original failed initialization left an empty directory without + any index files. This histogram will tell us how often the retry succeeds in + recovering caches and also which consistency checks cannot be recovered. + + + + + morlovich@chromium.org + wanderview@chromium.org + + Count of the number of entries recorded in the index, but not actually + present in the cache. Recorded each time a stale index is found and a + directory rescan is required. + + + + + morlovich@chromium.org + wanderview@chromium.org + + Count of the number of entries present in a cache, but not recorded in the + index. Recorded each time a stale index is found and a directory rescan is + required. + + + + + morlovich@chromium.org + wanderview@chromium.org + + The quality of a "stale" index compared to a full directory + rescan. Recorded immediately after every directory scan for stale indexes. + + + + + wanderview@chromium.org + morlovich@chromium.org + + The kind of prefetching performed, if any, when executing + SimpleSynchronousEntry::ReadAndValidateStream0AndMaybe1(). + + + + + + + alemate@chromium.org + michaelpg@chromium.org + Events in reqests processing of IP-based SimpleGeolocation. + + + + + + alemate@chromium.org + michaelpg@chromium.org + skylarc@chromium.org + + This boolean histogram counts SimpleGeolocationRequests carrying a nonzero + number of cell towers. + + + + + + + alemate@chromium.org + michaelpg@chromium.org + + This boolean histogram counts SimpleGeolocationRequests carrying nonzero + number of WiFi access points. + + + + + + + alemate@chromium.org + michaelpg@chromium.org + Http response codes in IP-based SimpleGeolocation. + + + + + + alemate@chromium.org + michaelpg@chromium.org + + The time elapsed between the sending of the first API request and the time + the final (failed) response was recorded. Includes all retries. + + + + + + + alemate@chromium.org + michaelpg@chromium.org + + The time elapsed between the sending of the first API request and the time + the final (successfull) response was recorded. Includes all retries. + + + + + + + alemate@chromium.org + michaelpg@chromium.org + Result of SimpleGeolocationRequest. + + + + + + alemate@chromium.org + michaelpg@chromium.org + Number of retries until the final response was recorded. + + + + + diff --git a/histograms/metadata/software/OWNERS b/histograms/metadata/software/OWNERS new file mode 100644 index 000000000000..21c63f77637d --- /dev/null +++ b/histograms/metadata/software/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +drubery@chromium.org +thefrog@chromium.org +xinghuilu@chromium.org diff --git a/histograms/metadata/software/histograms.xml b/histograms/metadata/software/histograms.xml new file mode 100644 index 000000000000..4cd1c486fae8 --- /dev/null +++ b/histograms/metadata/software/histograms.xml @@ -0,0 +1,361 @@ + + + + + + + + + + + + + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Keeps a tally of IPC related errors between chrome_cleaner and chrome. The + first two bytes of the bucket represent the error category and the two last + bytes represent the actual error code. Warning: this histogram was expired + in M91 and extended in M92; data may be missing in M91. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The time between sending the user's response to the Chrome Cleaner process + and the Cleaner process terminating. This histogram is logged only for + successfully completed runs of the cleaner. Warning: this histogram was + expired in M91 and extended in M92; data may be missing in M91. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The HTTP response or net error code when trying to download the Chrome + Cleanup Tool. Warning: this histogram was expired in M91 and extended in + M92; data may be missing in M91. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + How long it took to run the software reporter cleaner tool. Warning: this + histogram was expired in M91 and extended in M92; data may be missing in + M91. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The time between launching the Chrome Cleaner process and the cleaner having + scanned the user's machine and Chrome receiving an IPC call with the + results. Warning: this histogram was expired in M91 and extended in M92; + data may be missing in M91. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Expired in 2021-07-21 so there may be some missing data. The time between + the first attempt to download the Chrome Cleanup tool and a successful + download or the last unsuccessful attempt to download without retrying. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Whether the user accepted to upload logs from Chrome Cleanup Tool. This is + logged when the user accepts the Chrome prompt to start a cleanup either + from the prompt dialog or from the cleanup card in the Settings page. + Warning: this histogram was expired in M91 and extended in M92; data may be + missing in M91. + + + + + + Removed 03-2022 due to lack of use + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Indicates where the user started a cleanup from (e.g. from the prompt dialog + or the settings page). Warning: this histogram was expired in M91 and + extended in M92; data may be missing in M91. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Whether a configuration error prevented the experimental Software Reporter + from running. + + + + + + Removed 08-2022 since it only ever logged SUCCESS + + joenotcharles@google.com + chrome-counter-abuse-alerts@google.com + + The Windows error code from CreateJobObject, which is called just before + launching the Software Reporter using {Engine}. If this is not + ERROR_SUCCESS, the reporter process is not attached to a job and may outlive + the browser. Not logged on Windows 7, where CreateJobObject is not called + because nested job objects aren't supported. + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Whether there was an error reading the registry key containing UwS found by + the Software Removal Tool when using {Engine}. + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Indicates when the IPC with the Chrome Cleanup Tool process is disconnected + from Chrome. Success is logged when it's disconnected and no longer needed + (the user already responded to the prompt in Chrome or the cleaner process + terminated normally); failures are logged when the IPC is disconnected, but + communication between Chrome and the cleaner process is still required (e.g. + while Chrome is waiting for scanning results or when the cleaner is waiting + for the user's response from Chrome). Warning: this histogram was expired in + M91 and extended in M92; data may be missing in M91. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + The result of the most recent SRT log upload. + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + If logs uploads are enabled in the Software Reporter or the reason why it is + disabled. Recorded before each run of the Software Reporter using {Engine}. + Warning: this histogram was expired in M91 and extended in M92; data may be + missing in M91. + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Error encountered when reading the Software Reporter logs upload result from + the registry for. Recorded at the same time as + SoftwareReporter.LogsUploadResult after the SoftwareReporter finishes when + using {Engine}. Warning: this histogram was expired in M91 and extended in + M92; data may be missing in M91. + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The result of the most recent Software Reporter logs upload. Written by the + Software Reporter in the registry and sent by Chrome after the reporter + finishes when using {Engine}. Warning: this histogram was expired in M91 and + extended in M92; data may be missing in M91. + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + As SoftwareReporter.MinorVersion, but a double word combination of the other + components of the version of the software reporter. The high word is the + first component when there are more than one, and the low word is either the + second or third one, depending if there are at least 3, or 4 components. + Recorded after the reporter finishes when using {Engine}. + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The memory used by the software reporter tool as reported by the tool itself + via the registry. Logged just after the software reporter tool has finished + when using {Engine}. + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The last component of the version of the software reporter that was executed + so we can identify when users are not getting their component updated as + quickly as we expect it. Recorded after the reporter finishes when using + {Engine}. + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The reason why the user has not been prompted to run the Chrome Cleanup Tool + (e.g. no unwanted software found, user recently prompted). Warning: this + histogram was expired in M91 and extended in M92; data may be missing in + M91. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Whether an on-demand update of the Software Reporter component succeeded, + when needed for a user-initiated cleanup. Warning: this histogram was + expired in M91 and extended in M92; data may be missing in M91. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The number of profiles whose settings will be reset once a successful + cleanup completes. Warning: this histogram was expired in M91 and extended + in M92; data may be missing in M91. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The user response on the modal Chrome Cleanup Tool prompt dialog (e.g. + accepted, cancelled). Warning: this histogram was expired in M91 and + extended in M92; data may be missing in M91. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + Indicates the type of a reporter sequence run on the user system. Logged + when the sequence is scheduled to start. Warning: this histogram was expired + in M91 and extended in M92; data may be missing in M91. + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The amount of time from the Software Reporter process launch to the time it + exits, in milliseconds. This includes time the computer was asleep or + hibernating. SoftwareReporter.RunningTimeWithoutSleep2 excludes those + periods. This replaces SoftwareReporter.RunningTimeAccordingToChrome which + also included queuing time of tasks before and after launch. Recorded after + the reporter finishes when using {Engine}. + + + + + + drubery@chromium.org + chrome-counter-abuse-alerts@google.com + + The amount of time from the Software Reporter process launch to the time it + exits, in milliseconds. This does not include time the computer was asleep + or hibernating. SoftwareReporter.RunningTimeAccordingToChrome2 includes + those periods. This replaces SoftwareReporter.RunningTimeWithoutSleep which + also included queuing time of tasks before and after launch. Recorded after + the reporter finishes when using {Engine}. + + + + + + + diff --git a/histograms/metadata/stability/histograms.xml b/histograms/metadata/stability/histograms.xml new file mode 100644 index 000000000000..c7ee9cd2d149 --- /dev/null +++ b/histograms/metadata/stability/histograms.xml @@ -0,0 +1,596 @@ + + + + + + + + + + + + + + + + + + + + shaktisahu@chromium.org + src/components/minidump_uploader/OWNERS + + Records the time (uptimeMillis) taken by a minidump uploading task to + complete. Recorded when the task finished callback is invoked. + + + + + shaktisahu@chromium.org + src/components/minidump_uploader/OWNERS + + Records the time (uptimeMillis) taken by a minidump uploading task to + complete grouped by {StandbyBucket} state. Recorded when the task finished + callback is invoked. The {StandbyBucket} corresponds to the standby bucket + (UsageStatsManager.getAppStandbyBucket) chrome was placed into when metrics + was uploaded. + + + + + + + Removed in M111. + + boliu@chromium.org + ssid@chromium.org + + Records the reverse rank of a child process when it is killed by android if + applicable. Chrome on Android ranks some child processes and provides hints + to android that it should kill from lowest to highest ranked. The lowest + ranked process has reverse rank 0. This is a measure how good the hints to + android are; if hints were perfect, then all android kills should have + reverse rank 0. + + + + + + + boliu@chromium.org + ssid@chromium.org + wnwen@chromium.org + + Individual enum counts specific conditions of child process terminations. + There are too many individual states to enumerate into a single histogram, + so this effectively does the aggregration that normally happens on the + server side in the client instead. The benefit is this is easily extensible + in the future, and downside is that it does not allow additional server side + analysis. Note a single child process termination may fall into multiple + enums. + + + + + wnwen@chromium.org + src/components/minidump_uploader/OWNERS + + Records the number of non-simulated minidumps processed by Crashpad, split + by process type. This metric is similar to one that could be computed + server-side based on received crash uploads; but the client-side metric also + includes any minidumps that were not successfully uploaded. + + + + + wnwen@chromium.org + + Counts renderer crashes including OOMs. Android only. Mirrors old stability + proto renderer crashes. + + + + + boliu@chromium.org + ssid@chromium.org + wnwen@chromium.org + + Reason given by Android ActivityManager for the exit of the process, only + recorded in Android R+. Recorded on the next browser startup for browser + exits, or right after the process died for child processes. + + + + + + + vollick@chromium.org + battre@chromium.org + + Count of processes killed because they sent a bad IPC that couldn't be + properly handled. Categories are the reasons (code locations) for the kills. + + + + + + + creis@chromium.org + jamescook@chromium.org + + Count of processes killed by chrome/browser because they sent an IPC that + couldn't be properly handled. Categories are the reasons (code locations) + for the kills. + + + + + + + jam@chromium.org + jamescook@chromium.org + + Count of child processes killed because they sent an IPC that couldn't be + properly handled. Categories are the reasons (code locations) for the kills. + + + + + + + rdevlin.cronin@chromium.org + extensions-core@chromium.org + + Count of extension processes killed because they sent an IPC that couldn't + be properly handled. Categories are the reasons (code locations) for the + kills. + + + + + + + mcnee@chromium.org + wjmaclean@chromium.org + + Count of processes killed because they sent a bad IPC that couldn't be + properly handled. Categories are the reasons (code locations) for the kills. + + Warning: this histogram was expired from M85 to M97; data may be missing. + + + + + + + creis@chromium.org + jamescook@chromium.org + + Count of processes killed because they sent a NaCl IPC that couldn't be + properly handled. Categories are the reasons (code locations) for the kills. + + Warning: this histogram was expired from 2020-11-01 to 2021-12-07; data may + be missing. + + + + + + + creis@chromium.org + jamescook@chromium.org + + Count of processes killed because they sent a bad IPC that couldn't be + properly handled. Categories are the reasons (code locations) for the kills. + + Warning: this histogram was expired from M85 to M97; data may be missing. + + + + + + + siggi@chromium.org + chrome-stability-core@google.com + + Records the exit code of the browser process (on Windows) from the previous + launch. On crash, the exit code will indicate the exception code of the + crash. This is emitted in stability data with the first report on a + subsequent launch. Note: Due to https://crbug.com/805754, the enum labels + for RESULT_CODE_* are off by 1 for M56 and earlier. + + + + + alexmos@chromium.org + boliu@chromium.org + lukasza@chromium.org + + Logs the reason that a crashed subframe was shown. Logged at most once per + crash, and only if the subframe was hidden when it crashed and became + visible later. + + + + + alexmos@chromium.org + boliu@chromium.org + + Logs whether or not a tab is marked for reload when a cross-process subframe + crashes. Logged once per subframe process crash. + + + + + alexmos@chromium.org + boliu@chromium.org + + Logs the visibility of a subframe when a subframe process crashes and the + corresponding tab is marked for reload. This indicates whether the crashed + subframe was visible or scrolled out of view at the time of crash. + + + + + alexmos@chromium.org + boliu@chromium.org + lfg@chromium.org + lukasza@chromium.org + + Logged after detecting that a sad subframe is shown (logged at most once per + crash). + + + + + + + rkaplow@chromium.org + src/base/metrics/OWNERS + chrome-analysis-team@google.com + + + Collects various counters related to stability. The majority of them are + crash types. + + + + + nasko@chromium.org + altimin@chromium.org + + Logged at the time when a complex debugging scenario is encountered. The + enum value is the type of scenario encountered. This metric will give us two + benefits: 1. It will tell us the magnitute of the scenario being debugged + since crash reports are throttled client side and cannot presently expess + magnitude. 2. If the client is configured to report traces based on this + metric, it will upload Chrometto trace for analysis by developers. + + + + + + + dcheng@chromium.org + wfh@chromium.org + adkushwa@microsoft.com + + Keeps a count of number of times uploading the dump was throttled when + calling DumpWithoutCrashing. + + + + + fdoray@chromium.org + catan-team@chromium.org + + Counts "pageloads" by type. This is recorded when a page stops + loading, i.e. from WebContentsObserver::DidStopLoading. The sum of all + buckets of this histogram should be equal to the "Total pageloads" + shown on Stability dashboards and can be used to diagnose changes to this + value. + + + + + michaelbai@chromium.org + src/base/metrics/OWNERS + + The number of unsent files. Emitted when the stability is recorded. + + + + + michaelbai@chromium.org + src/base/metrics/OWNERS + + The total number of samples that will be lost if ASSOCIATE_INTERNAL_PROFILE + hasn't been enabled since the previous stability recorded. This is different + than the previous browser run because one file was just uploaded before the + stability is recorded. + + + + + + + davidbienvenu@chromium.org + jessemckenna@google.com + + Number of times a browser crash was detected, where the browser was last + known to be alive in a Windows system session that terminated abnormally. + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + Records whether Crashpad init was successful. Recorded on every app startup. + + + + + ajuma@chromium.org + olivierrobin@chromium.org + + Recorded when iOS app has started after a crash caused by system signal or + hang. Not recorded when app has started after UTE / XTE or started after + Chrome update. See go/bling-stability-101 for information about signal + crashes, hangs, UTEs and XTEs. This metric intends to complement + Stability.Counts. Stability.Counts does include UTEs / XTEs and thus is a + noisy metric which significantly overcounts user-visible crashes. + Stability.IOS.Experimental.Counts2 is not recorded on OOM crashes, so it + does not represent all user-visible crashes, but OOMs are so rare in Chrome + for iOS that Stability.IOS.Experimental.Counts2 is still a good proxy for + user-visible crashes. IOS.MetricKit.ForegroundExitData includes OOM crashes + (iOS 14 and higher) and can be used in conjunction with this metric. + + + + + justincohen@chromium.org + ajuma@chromium.org + + Recorded when the app is foregrounded. Records what action is taken after an + unclear shutdown (likely a crash). + + + + + ajuma@chromium.org + justincohen@chromium.org + + The number of tabs opened in the previous session when the app starts after + {Event}. Can be used to understand if there is a correlation between + increase of number of tabs and decline in stability. iOS Only. + + + + + + + + + + + + olivierrobin@chromium.org + ajuma@chromium.org + + Recorded on iOS when applicationWillTerminate callback is called when app is + in the foreground. When this happens the app will not write clean exit + beacon and shutdown will not be clean. + + + + + michaeldo@chromium.org + olivierrobin@chromium.org + + Number of kilobytes available for "important" data. When an iOS + device is critically low on space, actions generally assumed to succeed can + fail. In extreme cases, this could potentially include writing the + "unclean shutdown" bit to signal a clean shutdown. Logged on + application launch if the last session terminated in an unclean state. + + + + + michaeldo@chromium.org + olivierrobin@chromium.org + + The last known battery charge before a crash occurred. This will only be + logged for devices which were last known to be in the "unplugged" + state because the intention is to identify devices which may have died + leading to unexpected terminations. Logged on application launch if the last + session terminated in an unclean state. + + + + + michaeldo@chromium.org + olivierrobin@chromium.org + + The thermal state of the device when a crash occured. Logged on application + launch if the last session terminated in an unclean state. + + + + + michaeldo@chromium.org + olivierrobin@chromium.org + + Indicates whether or not one of the Stability.iOS.UTE.* metrics could + explain the cause of the UTE which terminated the previous session. Logged + on application launch if the last session terminated in an unclean state. + + + + + justincohen@chromium.org + olivierrobin@chromium.org + + Recorded when app starts after Unexplained Termination Event (UTE) or + Explained Termination Event (XTE). Values other than Active indicate that + prefs::kLastSessionExitedCleanly was not properly stored. + + + + + michaeldo@chromium.org + olivierrobin@chromium.org + + Recorded when app starts after Unexplained Termination Event (UTE) or + Explained Termination Event (XTE). UTEs/XTEs can happen when app did not + finish writing prefs. This histogram should help to understand if prefs did + not get written during normal app termination sequence when + ApplicationWillTerminate notification was called. + + + + + olivierrobin@chromium.org + sdefresne@chromium.org + + Recorded when app starts after Unexplained Termination Event (UTE) or + Explained Termination Event (XTE). UTEs/XTEs can be caused by large memory + allocations and this histogram provides information which memory heavy + operation has being performed before UTE/XTE. + + + + + olivierrobin@chromium.org + michaeldo@chromium.org + + true if OS was restarted after the previous session. Logged on application + launch if the last session terminated in an unclean state. If this is false + then UTE was not caused by OS restart or shutdown. + + + + + michaeldo@chromium.org + olivierrobin@chromium.org + + Logged on the session following a crash with the result of a comparison + between the OS version of the session which crashed and the current OS + version. Logged on application launch if the last session terminated in an + unclean state. + + + + + michaeldo@chromium.org + olivierrobin@chromium.org + + The estimated amount of time between when a crash occurred and when the user + relaunched the application. Logged on application launch if the last session + terminated in an unclean state. + + + + + michaeldo@chromium.org + olivierrobin@chromium.org + + Type of the shutdown. This histogram is recorded at startup and logs a + sample for the previous session. A clean shutdown is one where the app + enters the background before being killed. Other shutdowns are all some sort + of crash. The absence of a crash log indicates that the app was killed by + the OS, normally due to memory pressure. If memory pressure is extremely + high, the app may not have had a chance to response to a memory warning + before being killed. For first launch after upgrade, the crash reports may + be discarded before this histogram is written to so it's not possible to + determine if there's a valid crash log present or not. + + + + + justincohen@chromium.org + ajuma@chromium.org + + Type of the shutdown. This histogram is recorded after processing Crashpad + intermediate dumps, and is otherwise identical to + Stability.MobileSessionShutdownType, which is recorded at startup and before + Crashpad dumps are processed. Because this histogram is not recorded in time + for the initial stability log, the histogram will appear in a log that lists + the current Chrome version (and other browser metadata), not the Chrome + version at the time the crash occurred. The earlier histogram + Stability.MobileSessionShutdownType should be in the stability log, which + will list the Chrome version at the time of the crash. + + + + + + diff --git a/histograms/metadata/start_surface/OWNERS b/histograms/metadata/start_surface/OWNERS new file mode 100644 index 000000000000..4c3c66132d28 --- /dev/null +++ b/histograms/metadata/start_surface/OWNERS @@ -0,0 +1 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS \ No newline at end of file diff --git a/histograms/metadata/start_surface/histograms.xml b/histograms/metadata/start_surface/histograms.xml new file mode 100644 index 000000000000..da877f898f1d --- /dev/null +++ b/histograms/metadata/start_surface/histograms.xml @@ -0,0 +1,96 @@ + + + + + + + + + + hanxi@chromium.org + xinyiji@chromium.org + + Records whether the last active tab is a NewTabPage during tab restore in + cold startup when Start surface is showing. The histogram is logged in + deferred startup tasks. + + + + + hanxi@chromium.org + xinyiji@chromium.org + + Record the total count of clicks on different modules of the Start surface + page. For most visited tiles: is recorded when 1) user clicks on most + visited tiles; 2) long press on most visited tiles to open in a new tab or a + new incognito tab or to download the link. This is consistent with + MobileNTPMostVisited. For feeds: is recorded when 1) user clicks on feeds; + 2) long press on feeds to open in a new tab or open in a new incognito tab + or check about this source and topic; 3) click the learn more button on the + top of the feeds section. For omnibox: is recorded every time when user uses + Omnibox or voice search on Omnibox to navigate. This is consistent with + MobileOmniboxUse. For single tab card: is recorded every time when user + clicks on the single tab card. For tab switcher button: is recorded every + time when user clicks on the tab switcher button. For profile button: is + recorded when user clicks on the profile button. For menu button: is + recorded when user clicks on the menu button. The histogram is logged on + Start surface and is Android-only. + + + + + hanxi@chromium.org + xinyiji@chromium.org + + Records the StartSurfaceState when Start surface or Grid tab switcher is + showing due to ChromeTabbedActivity#showOverview() is called. It includes + showing at cold or warm startup, or when users bringing Chrome from + background to foreground, or via back operations from a Tab etc. The + histogram doesn't include the cases of showing overview page due to the + transition between Start surface and Tab switcher. + + + + + sreejakshetty@chromium.org + hanxi@chromium.org + + Records the time between showing the start surface and starting the spare + tab creation. It does not include the time spent creating the spare tab. + Every time a spare tab is created for the start surface, this is recorded. + + + + + hanxi@chromium.org + xinyiji@chromium.org + + The time spent on the start surface as measured from when it was loaded or + last brought to the foreground until it was navigated away from or hidden. + Only measured on Android. + + + + + + diff --git a/histograms/metadata/startup/OWNERS b/histograms/metadata/startup/OWNERS new file mode 100644 index 000000000000..4c3c66132d28 --- /dev/null +++ b/histograms/metadata/startup/OWNERS @@ -0,0 +1 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS \ No newline at end of file diff --git a/histograms/metadata/startup/histograms.xml b/histograms/metadata/startup/histograms.xml new file mode 100644 index 000000000000..66bd3894b7ce --- /dev/null +++ b/histograms/metadata/startup/histograms.xml @@ -0,0 +1,898 @@ + + + + + + + + + + michaeln@chromium.org + + The number of after-startup tasks that were queued prior to startup + completion and deferred until that time. + + + + + michaeln@chromium.org + + Time from the process creation until deferred after-startup tasks began + running. + + + + + hanxi@chromium.org + wychen@chromium.org + + Records whether or not the cached Feed visibility in the SharedPreferences + is consistent with the Feed visibility user preference on the disk. It's + recorded when overview mode is shown because of Return to Tab Switcher, and + only on cold start. By recording this histogram, the number of mismatches + between the criteria of whether the Feed placeholder of Instant Start + pre-native is shown and the criteria of whether Feed articles after native + initialization are shown is recorded. + + + + + blundell@chromium.org + yfriedman@chromium.org + + Records whether the first navigation commit after a cold start occurred + before UmaUtils.hasComeToForegroundWithNative() became true. Recorded only + for startups in which startup metrics were being tracked. + + + + + blundell@chromium.org + yfriedman@chromium.org + + Records whether the first paint of StartupPaintPreview after a cold start + occurred before UmaUtils.hasComeToForegroundWithNative() became true. + Recorded only for startups in which startup metrics were being tracked. + + + + + pasko@chromium.org + xinghuilu@chromium.org + chrome-counter-abuse-alerts@google.com + + The time it took GmsCore to respond to the first hash-based SafeBrowsing + request in the process lifetime. Recorded at the same time as + Startup.Android.Cold.TimeToFirstNavigationCommit.Tabbed. + + + + + pasko@chromium.org + alexilin@chromium.org + + Android: The time from the activity creation point to the first contentful + paint of the first loaded page. It's not recorded when the first loaded page + is non http(s) page like a chrome error page, a new tab page, a blank page. + It's also not recorded if the application wasn't in the foreground since the + start till the end of event. + + + + + pasko@chromium.org + alexilin@chromium.org + + Android: The time from the activity creation point to the moment the first + navigation is committed, i.e. when renderer gets the first byte of the + document. It's not recorded when the first loaded page is non http(s) page + like a chrome error page, a new tab page, a blank page. It's also not + recorded if the application wasn't in the foreground since the start till + the end of event. + + + + + pasko@chromium.org + agrieve@chromium.org + + Experimental. Same as + Startup.Android.Cold.TimeToFirstNavigationCommit.Tabbed with two + modifications. + + The first difference is to record navigation commits happening before + post-native initialization. The second modifications is not to record + samples when FRE is shown. + + + + + + + yfriedman@chromium.org + pasko@chromium.org + fredmello@chromium.org + chrome-analysis-team@google.com + + The time from Chrome tabbed activity creation to the moment the Chrome first + appears ready. + + This metric captures when the omnibox is painted and either a navigation has + committed or a Paint Preview is shown. The intent is to reflect Clank's + perceived cold start performance regardless of different launch paths, while + controlling for the factors that we have the most direct influence over and + minimizing external factors. Note that network connectivity is mostly but + not entirely omitted as it does impact the initial response time for a site + which impacts the omnibox UX and loading metric. + + This metric captures the value of the first emitted metric out of the + 'Startup.Android.Cold.TimeToFirstNavigationCommit.Tabbed' and + 'Browser.PaintPreview.TabbedPlayer.TimeToFirstBitmap' metrics and emits the + value. + + This metric is only recorded once per application lifetime during cold + startup i.e. when Chrome's native library is not loaded at first activity + creation. Specifically, it is recorded for the first foreground committed + http(s) URL in the primary frame if that first navigation is not: an error, + same-document navigation, or fragment navigation. + + This metric is expected be stable from milestone to milestone. Updating + Chrome or the Android system image on the device are expected to result in a + noticeable slowdown on the first cold startup after. The total counts + changes for this histogram are not of significant importance; however, a + non-trivial increase in total counts could signal more background kills, for + example. + + This metric is not recorded: + + - If another navigation occurs before the first navigation commit and the + Paint Preview show. + + - If the navigation is pre-warmed, is a background navigation, or fails to + be committed (e.g. cancelled, network error, or error due to lack of + connectivity). + + - If the activity was ever backgrounded between activity creation and this + metric reporting. + + - If the app opens to the Chrome Start page. + + - For WebApps, PWAs or WebApks. + + Bugs: + + - This metric does not get recorded when the first navigation commit happens + before post-native initialization. This behaviour is not intentional, see + crbug.com/1273097. TimeToFirstVisibleContent2 addresses this issue. + + This histogram is of special interest to the chrome-analysis-team@. Do not + change its semantics or retire it without talking to them first. + + + + + yfriedman@chromium.org + pasko@chromium.org + fredmello@chromium.org + + The time from Chrome tabbed activity creation to the moment the Chrome first + appears ready. + + Currently experimental. Has the same semantics as + Startup.Android.Cold.TimeToFirstVisibleContent, without the known bug. + + + + + pasko@chromium.org + mthiesse@chromium.org + + The time from activity creation till the point when UMA foreground session + starts. + + + + + ckitagawa@chromium.org + + Android: The time from the activity creation point to the moment the content + may first appear ready to a user. The intent is to capture readiness of + Chrome regardless of whether Chrome is launched into native UI or a web + page. The recorded value is the minimum of + 'Startup.Android.Cold.TimeToFirstContentfulPaint.Tabbed' and + 'Browser.PaintPreview.TabbedPlayer.TimeToFirstBitmap' metric values. + + Not to be mistaken with the Startup.Android.Cold.TimeToFirstVisibleContent + histogram, as this metric is intended for the use of the Paint Preview + owners and the other is intended to track Clank's perceived cold start + performance. + + + + + hanxi@chromium.org + + Android: The elapsed time from the last time when Chrome goes to background + till it becomes foreground again. The histogram is recorded when + onResumeWithNative() is called. + + + + + + + hanxi@chromium.org + wychen@chromium.org + + Records the time duration from a cold start till the Feeds articles are + first loaded on the StartSurface. This histogram is only recorded when + StartSurface is shown at launch due to "return to tab switcher" + feature. + + + + + hanxi@chromium.org + wychen@chromium.org + + Records the time duration from a cold start till the Feeds loading + placeholder is shown on the StartSurface. This placeholder is only shown + when the feature flag InstantStart is enabled and StartSurface is shown at + launch due to "return to tab switcher" feature. + + + + + + + hanxi@chromium.org + wychen@chromium.org + + Records the time duration from a cold start till the Feeds stream is created + on the StartSurface. This histogram is only recorded when StartSurface is + shown at launch due to "return to tab switcher" feature. + + + + + + + hanxi@chromium.org + wychen@chromium.org + + Records the time duration from a cold start till the first draw completes. + + + + + mthiesse@chromium.org + yfriedman@chromium.org + + Measures the amount of time startup has likely been delayed due to GURL + waiting on the native library to be initialized. + + + + + hanxi@chromium.org + xinyiji@chromium.org + + Records whether the HompagePolicyManager is initialized with native in + startup when the check of whether to show Start surface when there isn't any + Tab happens. The histogram is recorded only on startup when Chrome is + launched from app icon and there isn't any Tab to restore. + + + + + hanxi@chromium.org + xinyiji@chromium.org + + Android: Records whether the last time when Chrome went to background or + closed was logged. The histogram is recorded when onResumeWithNative() is + called. + + + + + hanxi@chromium.org + xinyiji@chromium.org + + Android: Records whether the last time when Chrome was showing in foreground + was logged. The histogram is recorded when onResumeWithNative() is called. + + + + + hanxi@chromium.org + fredmello@chromium.org + + Records whether or not the last visited tab is a search result page when + StartSurface is shown at launch. This histogram is only recorded when + StartSurface is shown at launch due to "return to tab switcher" + feature. + + + + + + + hanxi@chromium.org + wychen@chromium.org + + Records the time duration from a cold start till the title of the single Tab + is shown on the StartSurface. This histogram is only recorded when + StartSurface is shown at launch due to "return to tab switcher" + feature. + + + + + hanxi@chromium.org + wychen@chromium.org + + Records whether the Start surface homepage is showing at a cold startup when + the Start surface is enabled. This histogram is recorded in a deferred + startup task after Chrome is launched. + + + + + mark@chromium.org + crashpad-dev@chromium.org + + The amount of time that elapsed during in + crash_report::BlockUntilHandlerStarted(). + + + + + peter@chromium.org + + Records the cause, each time Chrome is brought to the foreground. Currently + only checks if a NotificationUIManager notification was shown in the last 5 + seconds (includes Web Notifications, but not media or Cast). + + + + + robliao@chromium.org + + The amount of time that elapsed during BrowserMainRunnerImpl::Initialize. + + + + + gab@chromium.org + etienneb@chromium.org + + Time from application start to the first time MainMessageLoopRun() reaches + idle. This is a new (Feb'2021) metric intended to capture UI jank caused by + the long queue of tasks post initialization. This is believed to capture + performance issues (startup responsiveness) none of the other Startup.* + metrics capture (crbug.com/1175074). Recording is dropped if blocking UI is + shown before first-idle is reached (as this blocks main loop progress on + unbounded user interaction). + + + + + + + etienneb@chromium.org + gab@chromium.org + + Time between Startup.BrowserMessageLoopStartTime and + Startup.FirstWebContents.NonEmptyPaint2. Recorded explicitly to allow easy + breakdown of Startup.FirstWebContents.NonEmptyPaint2 when diagnosing issues. + + + + + + + chrisha@chromium.org + fdoray@chromium.org + + The number of hard faults incurred in the browser process from startup to + start of the main thread's message loop, not including first runs of the + browser. + + + + + + + fdoray@chromium.org + gab@chromium.org + + Time from application start to the start of the main thread's message loop. + Not recorded for first run. + + April 8, 2020: Changed the reference from process creation to application + start. See Startup.FirstWebContents.NonEmptyPaint3 for a definition of + application start. + + + + + + + fdoray@chromium.org + gab@chromium.org + + Time from application start to the start of the main thread's message loop. + Recorded for a first run of the browser. + + April 8, 2020: Changed the reference from process creation to application + start. See Startup.FirstWebContents.NonEmptyPaint3 for a definition of + application start. + + + + + rkaplow@chromium.org + + The amount of time that elapsed during + BrowserProcessImpl::PreMainMessageLoopRun. + + + + + gab@chromium.org + mblsha@yandex-team.ru + + Time from application start to the time the first Browser window has + finished painting its children. + + April 8, 2020: Changed the reference from process creation to application + start. See Startup.FirstWebContents.NonEmptyPaint3 for a definition of + application start. + + + + + + + fdoray@chromium.org + gab@chromium.org + + Time from application start to the time the browser window initially becomes + visible. + + April 8, 2020: Changed the reference from process creation to application + start. See Startup.FirstWebContents.NonEmptyPaint3 for a definition of + application start. + + + + + + + djean@chromium.org + olivierrobin@chromium.org + chrome-analysis-team@google.com + + The duration of all initializations from process creation time to UI ready + to receive input. iOS specific, from M91+ + + The process can only be created in response to a user action, either tapping + the icon, tapping a link that opens in Chrome, or using the app switcher to + switch to Chrome after it has been background-killed by the OS. + + The metric is recorded at the point where the Chrome window starts receiving + input events like touches and keypresses. However, the Chrome splash screen + is showing at this point, so there aren't any UI elements for a user to + interact with. + + It includes code loading and static initializers. + + The total counts in this histogram can be compared with the number of emits + to the user action MobileWillEnterForeground. The former reports the number + of cold starts. The latter is only recorded when Chrome comes to the + foreground on non-cold starts. + + Do not modify this metric in any way without contacting + chrome-analysis-team@google.com. + + + + + olivierrobin@chromium.org + ajuma@chromium.org + + [IOS] The number of time [UIApplicationDelegate + application:didFinishLaynching] was called but no scene was activated. + Recorded when first scene is becomes active. + + + + + olivierrobin@chromium.org + ajuma@chromium.org + + [IOS] The number of time +load was called but no scene was activated. + Recorded when first scene is becomes active. + + + + + + + fdoray@chromium.org + gab@chromium.org + + How long it takes to load the original profile synchronously on the UI + thread. + + + + + gab@chromium.org + etienneb@chromium.org + + Records the time it took to complete upgrade_util::DoUpgradeTasks() when + {Status}. + + + + + + + + + + + + fdoray@chromium.org + gab@chromium.org + + [Desktop] The reason for which startup profiling was deemed complete. Logged + once per session on startup. + + + + + + + fdoray@chromium.org + gab@chromium.org + + [Desktop] Measure the elapsed time from application start to the moment when + the navigation is committed (first bytes received) in the first web + contents' main frame. + + April 8, 2020: Changed the reference from process creation to application + start. See Startup.FirstWebContents.NonEmptyPaint3 for a definition of + application start. + + + + + + + fdoray@chromium.org + gab@chromium.org + + [Desktop] Measure the elapsed time from application start to the beginning + of navigation in the first web contents' main frame. + + April 8, 2020: Changed the reference from process creation to application + start. See Startup.FirstWebContents.NonEmptyPaint3 for a definition of + application start. + + + + + + + etiennep@chromium.org + fdoray@chromium.org + gab@chromium.org + chrome-analysis-team@google.com + + + [Desktop] Measure the elapsed time from the application start to the first + non empty paint of the first web contents. Only comprised of cases where the + initial foreground tab gets to complete its rendering task unimpeded (an + improvement over Startup.FirstWebContents.NonEmptyPaint). + + Application start is a time recorded as early as possible in the startup + process. On Windows, application start is when chrome.exe:main starts, + before chrome.dll is loaded. On other platforms, it is when + ChromeMainDelegate is constructed. + + Do not modify this metric in any way without contacting + chrome-analysis-team@google.com. + + + + + arabm@google.com + chrome-incognito@google.com + + Records whether Incognito switch was present in commmand line switches and + if Incognito mode was enforced or denied. This is recorded during browser + startup when commandline is processed. + + + + + jlebel@chromium.org + chrome-signin-team@chromium.org + + Records session type for a cold start. It is recorded at cold start. + Histogram only for iOS. + + + + + + + fdoray@chromium.org + etiennep@chromium.org + gab@chromium.org + + Time from the application start to the C++ ChromeMain() function being + invoked. + + + + + + + fdoray@chromium.org + etiennep@chromium.org + gab@chromium.org + + Time from the process creation to application start, i.e. time recorded as + early as possible in the startup process. + + + + + thegreenfrog@chromium.org + olivierrobin@chromium.org + + The action requested on the application startup when called from another app + or the OS. + + + + + thegreenfrog@chromium.org + olivierrobin@chromium.org + The calling application (if any). + + + + erikchen@chromium.org + + The amount of time that elapsed between main entry and the invocation of + -[AppControllerMac awakeFromNib]. + + + + + erikchen@chromium.org + + The amount of time that elapsed between main entry and the invocation of + -[AppControllerMac didFinishLaunching:]. At that point, the dock icon will + finish its current animation and stop bouncing. + + + + + erikchen@chromium.org + + The amount of time that elapsed between main entry and the invocation of + ChromeBrowserMainPartsMac::PostMainMessageLoopStart. + + + + + erikchen@chromium.org + + The amount of time that elapsed between main entry and the invocation of + ChromeBrowserMainPartsMac::PostProfileInit. + + + + + erikchen@chromium.org + + The amount of time that elapsed between main entry and the invocation of + ChromeBrowserMainPartsMac::PreMainMessageLoopStart. + + + + + erikchen@chromium.org + + The amount of time that elapsed between main entry and the invocation of + ChromeBrowserMainPartsMac::PreProfileInit. + + + + + erikchen@chromium.org + + The amount of time that elapsed between main entry and the invocation of + -[AppControllerMac willFinishLaunching:]. + + + + + rkaplow@chromium.org + + The amount of time that elapsed during + ChromeBrowserMainParts::PreMainMessageLoopRunImpl. + + + + + djean@chromium.org + olivierrobin@chromium.org + + The external application requesting showing the default browser settings. + Logged when the command is received from the external application. Histogram + only for iOS. + + + + + rkaplow@chromium.org + + The amount of time that elapsed during StartupBrowserCreator::Start(). + + + + + blundell@chromium.org + jam@chromium.org + + Measures the amount of time that tasks added to StartupTaskRunner were + queued before running. Logged every time that a task is run asynchronously + with a valid queue time in StartupTaskRunner. + + + + + + + chrisha@chromium.org + fdoray@chromium.org + + Indicates whether or not the given startup was warm, cold or unable to be + determined. This is based off observing the number of hard faults that occur + during startup prior to Startup.BrowserMessageLoopStartTime. The threshold + for cold startup was updated Jan 2020, a bump in the metric is expected. + + + + + olivierrobin@chromium.org + ajuma@chromium.org + + [IOS] The duration between process spawn (returned by sysctl) and call to + [UIApplicationDelegate didFinishLaunching:]. Recorded when first scene is + becomes active. + + + + + olivierrobin@chromium.org + ajuma@chromium.org + + [IOS] The duration between process spawn (returned by sysctl) and library + load (logged on +load method). Recorded when first scene is becomes active. + + + + + olivierrobin@chromium.org + ajuma@chromium.org + + [IOS] The duration between process spawn (returned by sysctl) and call to + main. Recorded when first scene is becomes active. + + + + + olivierrobin@chromium.org + ajuma@chromium.org + + [IOS] The duration between process spawn (returned by sysctl) and call to + the first scene connection. Recorded when first scene is becomes active. + + + + + + diff --git a/histograms/metadata/storage/OWNERS b/histograms/metadata/storage/OWNERS new file mode 100644 index 000000000000..51e70147930a --- /dev/null +++ b/histograms/metadata/storage/OWNERS @@ -0,0 +1,10 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. + +# Primary +ayui@chromium.org + +# Secondary +wanderview@chromium.org diff --git a/histograms/metadata/storage/histograms.xml b/histograms/metadata/storage/histograms.xml new file mode 100644 index 000000000000..de96bad3e0d6 --- /dev/null +++ b/histograms/metadata/storage/histograms.xml @@ -0,0 +1,1249 @@ + + + + + + + + + + + Removed 2021/09. + + mkwst@chromium.org + brandm@microsoft.com + + Records if various requests to access storage are allowed or not and if the + Storage Access API unblocked the request or not. Recorded whenever a + decision to access storage like getting/setting cookies or opening an + indexeddb connection is made in CookieSettings. + + This histogram erroneously recorded ALLOW when cookies were globally + blocked. + + + + + mkwst@chromium.org + brandm@microsoft.com + + Records if various requests to access storage are allowed or not and if the + Storage Access API unblocked the request or not. Recorded whenever a + decision to access storage like getting/setting cookies or opening an + indexeddb connection is made in CookieSettings. + + Warning: this histogram was expired from 2022-03-27 to 08-12-2022; data may + be missing. + + + + + cfredric@chromium.org + johannhof@chromium.org + + Records whether or not a document inherited the `has_storage_access` bit + from the previous document. + + Recorded once at document commit, for every document. + + + + + cfredric@chromium.org + johannhof@chromium.org + + Records whether or not a document was loaded with the `has_storage_access` + bit set to true. + + Recorded once at document commit, for every document. + + + + + mkwst@chromium.org + brandm@microsoft.com + + Records if a generated grant was implicit or explicit at the time it was + created. + + Warning: this histogram was expired from 2020-11-27 to 08-12-2022; data may + be missing. + + + + + cfredric@chromium.org + brandm@microsoft.com + + Records the outcome of a particular Storage Access API permission request. + + Recorded at the time of the request, for every request. + + + + + mkwst@chromium.org + brandm@microsoft.com + + Records requests to use document.requestStorageAccess and reasons the + request may be approved or rejected. + + Warning: this histogram was expired from 2020-11-27 to 08-12-2022; data may + be missing. + + + + + + Metric collection is being separated from the standard Storage Access API. + See API.TopLevelStorageAccess.RequestStorageAccessForOrigin. Note that + future re-consolidation of these metrics may be possible. + + cfredric@chromium.org + mreichhoff@chromium.org + brandm@microsoft.com + + Records invocations of document.requestStorageAccessForOrigin and reasons + the request was approved or rejected. Recorded for every call to the + function, regardless of outcome. Note that + API.StorageAccess.RequestStorageAccess is similar, but for the other variant + of this API. + + + + + cfredric@chromium.org + mreichhoff@chromium.org + + Records the outcome of a particular Top-Level Storage Access API permission + request. + + Recorded at the time of the request, for every request. + + + + + cfredric@chromium.org + mreichhoff@chromium.org + + Records invocations of document.requestStorageAccessFor and reasons the + request was approved or rejected. Recorded for every call to the function, + regardless of outcome. Note that API.StorageAccess.RequestStorageAccess is + similar, but for the other variant of this API. + + + + + + The function was renamed. See + API.TopLevelStorageAccess.RequestStorageAccessFor. + + cfredric@chromium.org + mreichhoff@chromium.org + + Records invocations of document.requestStorageAccessForOrigin and reasons + the request was approved or rejected. Recorded for every call to the + function, regardless of outcome. Note that + API.StorageAccess.RequestStorageAccess is similar, but for the other variant + of this API. + + + + + + Removed February 2021 as enough data was collected. + + huangdarwin@chromium.org + src/third_party/blink/renderer/modules/clipboard/OWNERS + + For calls to document.execCommand('paste') by extensions via content + scripts, record the proportion of calls with user activation. + + + + + huangdarwin@chromium.org + src/ui/base/clipboard/OWNERS + + Counts how often each Clipboard format is read by the platform clipboard. + These reads generally imply that an application requested this format after + checking that the format is available, but there are some cases where Chrome + reads a format to check for existence (outside the + ui::Clipboard::ReadAvailableTypes() function). Please prefer interpreting + these numbers as relative use changes, as opposed to absolute user usage. + + + + + + Removed July 2021 as enough data was collected. + + huangdarwin@chromium.org + src/ui/base/clipboard/OWNERS + + Counts how often the Windows clipboard fails to register a format. Recorded + when RegisterClipbaordFormat fails (returns 0). Failure rates will inform + whether we implement error handling. https://crbug.com/1000919 + + + + + dcheng@chromium.org + src/ui/base/clipboard/OWNERS + + Records the time interval between when clipboard data was committed to the + clipboard and the same clipboard data was read from the clipboard. The same + clipboard data may be read multiple times. Emitted at the moment the + clipboard data was read. Currently only implemented for Chrome OS' in-memory + clipboard (`ui::ClipboardNonBacked`). + + + + + huangdarwin@chromium.org + src/ui/base/clipboard/OWNERS + + Counts how often each Clipboard format is written by the platform clipboard. + These writes all imply that an application had this format available, and + therefore wrote this format. + + + + + cmumford@chromium.org + chrome-owp-storage@google.com + + Tracks the success rate of deleting an unused leveldb table backup file. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + Methods where leveldb's Chromium environment has IO errors. + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Number of backup files found without corresponding ldb files. As measured by + GetChildren when used in LevelDB clients other than IndexedDB. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Delay between the browser process receiving changes and those changes being + written to the DB. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Methods where leveldb's Mojo environment has IO errors. This histogram has + expired between M87-106. + + + + + asully@chromium.org + src/content/browser/file_system_access/OWNERS + + The number of files a user picked using the file picker in the File System + Access API. Recorded as 0 if the user cancelled the picker. + + + + + + + + + + + costan@google.com + Error from sqlite3_backup_step() in sql::Recovery. + + + + ayui@chromium.org + chrome-owp-storage@google.com + + This is recorded for every site that the user blocklists when they when they + clear browsing data. It indicates which signals were used to show the given + site to the user that the user then chose to exclude from clearing. This + histogram has expired between M95-M106. + + + + + awillia@chromium.org + chrome-owp-storage@chromium.org + + Recorded when the PublicURLManager::RegisterURL method calls the per-process + BlobURLStore::Register mojo interface method. The value recorded is the time + taken for the call to complete. This histogram is only logged when the + SupportPartitionedBlobUrl feature is disabled. + + + + + awillia@chromium.org + chrome-owp-storage@chromium.org + + Recorded when the PublicURLManager::RegisterURL method calls the + BlobURLStore::Register mojo interface method. The value recorded is the time + taken for the call to complete. This variation of the histogram records + results from {Type}. This histogram is only logged when the + SupportPartitionedBlobUrl feature is enabled. + + + + + + + + + estade@chromium.org + chrome-owp-storage@google.com + + Counts the number of storage buckets in existence for a StorageKey when a + new one is created (including the new one). This is intended to give an idea + of the number of buckets individual apps use. Note: the count in histogram + bucket 1 correlates to the total number of sites that use the buckets API + (per Chrome client). The count in histogram bucket N, divided by the size of + the bucket, correlates to the number of sites for that Chrome client which + use at least that many buckets. + + + + + estade@chromium.org + chrome-owp-storage@google.com + The requested durability for a bucket when it is open()ed. + + + + estade@chromium.org + chrome-owp-storage@google.com + + The expiration time for a bucket, in minutes, if provided when it is + open()ed. If not provided, the underflow bucket is used. + + + + + estade@chromium.org + chrome-owp-storage@google.com + The requested persistence for a bucket when it is open()ed. + + + + estade@chromium.org + chrome-owp-storage@google.com + + The requested quota for a bucket, in kB, if provided. If not provided, the + underflow bucket is used. Logged when the bucket is open()ed. + + + + + estade@chromium.org + chrome-owp-storage@google.com + + A Clear-Site-Data response header was seen with the given values. + + + + + asully@chromium.org + src/content/browser/file_system_access/OWNERS + + Age of a persisted permission when attempting to auto-grant via this + permission. + + + + + + + + + asully@chromium.org + src/content/browser/file_system_access/OWNERS + + Number of paths with permissions being persisted via the File System Access + API. This is recorded shortly after instantiation of a new + ChromeFileSystemAccessPermissionContext, as well as sampled periodically via + a RepeatingTimer every 3 hours. See + ChromeFileSystemAccessPermissionContext::UpdatePersistedPermissions() and + its call sites for details. + + + + + asully@chromium.org + src/content/browser/file_system_access/OWNERS + + Time taken to sweep persisted permissions to automatically renew permissions + with active grants or revoke permissions which have expired. + + + + + + + + + asully@chromium.org + src/content/browser/file_system_access/OWNERS + + The result of an attempt to request permission to a file or directory via + the File System Access API. + + + + + + + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + When a user chooses to blocklist one or more sites when they clear browsing + data, this is recorded for every reason each chosen site was marked as + important. It indicates which signals were used to show the given site to + the user that the user then chose to exclude from clearing. This histogram + has expired between M95-M106. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + This records the number of reasons each important site had that the user + chose to blocklist when clearing browsing data. This histogram has expired + between M95-M106. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + When a user chooses to blocklist one or more sites when they clear browsing + data, this is recorded for every reason each unchosen site was marked as + important. It indicates which signals were used to show the given site to + the user, which the user then ignored and did not select to blocklist from + clearing data. This histogram has expired between M95-M106. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + This records the number of reasons each important site had that the user + chose to NOT blocklist when clearing browsing data. This histogram has + expired between M95-M106. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Recorded when we generate a list of important sites. This can happen when + the user opens the Clear Browsing Data dialog on Android, views the Storage + tab in Site Settings on Android, or launches 'Manage Storage' from Android + System Settings for Chrome. We record every reason each site was chosen in + this metric. This means that we can report this metric multiple times for a + single site. This histogram has expired between M95-M106. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + This records the number of reasons qualifying a site for being 'important'. + We record this for every site when we generate a list of important sites, + described in "Storage.ImportantSites.GeneratedReason". This + histogram has expired between M95-M106. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time it takes to generate the list of 'important' sites. This list is + generated when the user enters the 'Clear Browsing Dialog' or the 'Manage + Space' screens for Chrome, both of which are on Android. This histogram has + expired between M95-M106. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records the size of a blob used in an IndexedDB add/put operation. Recorded + for every put operation that contains a blob. This histogram has expired + between M95-M106. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records if a blob intended to be used in an IndexedDB add/put operation is a + valid blob. Recorded for every put operation that contains a blob. This + histogram has expired between M95-M106. + + + + + behamilton@google.com + pauljensen@chromium.org + + Records the number of database errors that occur when accessing interest + group storage. + + + + + behamilton@google.com + pauljensen@chromium.org + + Records the time spent performing database maintenance on the interest group + storage. Recorded when maintenance is run (approximately once an hour). + + Note that clients without high-resolution clocks will report 0 for very + short times. + + + + + behamilton@google.com + pauljensen@chromium.org + + Records the size of the InterestGroup database. Collected prior to database + maintenance. + + + + + behamilton@google.com + pauljensen@chromium.org + + Records the number of interest groups loaded for a single group owner when + running an ad auction. Recorded for each owner involved in a running ad + auction. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The renderer side cache hit rate metrics for new HTML5 SessionStorage DB + opened. This histogram has expired between M97-106. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Count of database entries queued to be sent to the async iterator. Recorded + in `SharedStorageIterator::DidReadEntries()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + For each of a set of benchmark percentages, we record that benchmark when + the async iterator first iterates through at least that percentage of queued + entries. Recorded in `SharedStorageIterator::NextHelper()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + For each of a set of benchmark percentages, we record that benchmark when + the async iterator first receives from the database at least that percentage + of queued entries. Recorded in `SharedStorageIterator::DidReadEntries()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Whether destruction was successful after a catastrophic error that occurred + in Shared Storage. Recorded by + SharedStorageDatabase::DatabaseErrorCallback() just after the SQLite + database called RazeAndClose() and then, if it was file-backed, + SharedStorageDatabase attempted to delete the file. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Errors that occur in Shared Storage. Recorded by + SharedStorageDatabase::DatabaseErrorCallback() just before the SQLite + database determines whether the error is catastrophic and handles it + accordingly. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + The size in gigabytes of the SQL database file backing + `SharedStorageDatabase`. Measured only for file-backed databases of size at + least one gigabyte. Recorded in `SharedStorageDatabase::InitImpl()` via + `LogInitHistograms()` when initialization is successful. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + The size in kilobytes of the SQL database file backing + `SharedStorageDatabase`. Measured for file-backed databases only. Recorded + in `SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when + initialization is successful. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Maximum origin length, according to the `per_origin_mapping` of + `SharedStorageDatabase`. Measured for file-backed databases only. Recorded + in `SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when + initialization is successful. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Median origin length, according to the `per_origin_mapping` of + `SharedStorageDatabase`. Measured for file-backed databases only. Recorded + in `SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when + initialization is successful. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Minimum origin length, according to the `per_origin_mapping` of + `SharedStorageDatabase`. Measured for file-backed databases only. Recorded + in `SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when + initialization is successful. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Lower quartile of the origin lengths, as listed in the `per_origin_mapping` + of `SharedStorageDatabase` (calculated through Method 1 from + https://en.wikipedia.org/wiki/Quartile). Measured for file-backed databases + only. Recorded in `SharedStorageDatabase::InitImpl()` via + `LogInitHistograms()` when initialization is successful. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Upper quartile of the origin lengths, as listed in the `per_origin_mapping` + of `SharedStorageDatabase` (calculated through Method 1 from + https://en.wikipedia.org/wiki/Quartile). Measured for file-backed databases + only. Recorded in `SharedStorageDatabase::InitImpl()` via + `LogInitHistograms()` when initialization is successful. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + The total count of entries in the `values_mapping` of + `SharedStorageDatabase`. Measured for file-backed databases only. Recorded + in `SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when + initialization is successful. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Number of origins in the `per_origin_mapping` of `SharedStorageDatabase`. + Measured for file-backed databases only. Recorded in + `SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when + initialization is successful. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Whether or not the database is file-backed. Recorded in + `SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when + initialization is successful. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from start of the call to + `blink::SharedStorageWorklet::AddModule()` to when the callback has + successfully completed. Does not measure the timing of calls that end in an + error. Recorded in the lambda function callback for + `blink::SharedStorageWorklet::AddModule()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from start of the call to `blink::SharedStorage::Append()` + to when the callback has successfully completed. Does not measure the timing + of calls that end in an error. Recorded in + `blink::SharedStorage::OnVoidOperationFinished()` via + `LogTimingHistogramForVoidOperation()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from start of the call to `blink::SharedStorage::Clear()` + to when the callback has successfully completed. Does not measure the timing + of calls that end in an error. Recorded in + `blink::SharedStorage::OnVoidOperationFinished()` via + `LogTimingHistogramForVoidOperation()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from start of the call to `blink::SharedStorage::Delete()` + to when the callback has successfully completed. Does not measure the timing + of calls that end in an error. Recorded in + `blink::SharedStorage::OnVoidOperationFinished()` via + `LogTimingHistogramForVoidOperation()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from start of the call to `blink::SharedStorage::Run()` to + when the callback has successfully completed. Does not measure the timing of + calls that end in an error. Recorded in + `blink::SharedStorage::OnVoidOperationFinished()` via + `LogTimingHistogramForVoidOperation()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from when the end of the call to + `SharedStorageWorkletHost::RunOperationOnWorklet()` to the end of + `SharedStorageWorkletHost::OnRunOperationOnWorkletFinished()`. Recorded in + `SharedStorageWorkletHost::OnRunOperationOnWorkletFinished()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from start of the call to + `blink::SharedStorage::SelectURL()` to when the callback has successfully + completed. Does not measure the timing of calls that end in an error. + Recorded in the lambda function callback for + `blink::SharedStorage::SelectURL()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from when the mojo callback runs in + `SharedStorageWorkletHost::RunURLSelectionOperationOnWorklet()` to the end + of + `SharedStorageWorkletHost::OnRunURLSelectionOperationOnWorkletFinished()`. + Only measured for calls where the mojo callback has run with a parameter + `success` equal to true. Recorded in + `SharedStorageWorkletHost::OnRunURLSelectionOperationOnWorkletFinished()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from start of the call to `blink::SharedStorage::Set()` to + when the callback has successfully completed. Does not measure the timing of + calls that end in an error. Recorded in + `blink::SharedStorage::OnVoidOperationFinished()` via + `LogTimingHistogramForVoidOperation()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Count of SQL errors that have occurred in Shared Storage. Recorded by + SharedStorageManager::RecordShutdownMetrics() when the StoragePartitionImpl + is destroyed. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Whether or not the SharedStorageManager tried to recover from + SharedStorageDatabase::InitStatus::kInitFailure. Recorded by + SharedStorageManager::RecordShutdownMetrics() when the StoragePartitionImpl + is destroyed. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Whether or not the SharedStorageManager tried to recover from + SharedStorageDatabase::InitStatus::kInitFailure on disk. Recorded by + SharedStorageManager::RecordShutdownMetrics() when the StoragePartitionImpl + is destroyed. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time for a URN to resolve during a navigation. Recorded for + every navigation to a URN that originates from sharedStorage.selectURL(). + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Records true if a given call to `sharedStorage.context()` returns a defined + string, false if the call to `sharedStorage.context()` returns undefined. + Recorded in the worklet service in the call to `SharedStorage::Context()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Whether or not the worklet entered keep-alive phase before destruction, and + if it did enter keep-alive, whether the keep-alive was terminated by + operations finishing or due to timeout. Recorded in the destructor of + `SharedStorageWokletHost`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Type of error encountered by the SharedStorageWorklet in either + `addModule()`, `run()`, or `selectURL()`. Recorded after an exception is + thrown, after a callback is run with `/*success=*/false`, after a call to + `ReportBadMessage()`, and/or just before the rejected promise is returned, + via the utility method `LogWorkletError()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the number of `SharedStorageWorkletHost`'s created by a given page. + Recorded in + `SharedStoragePageLoadMetricsObserver::RecordSessionEndHistogram()` when + metrics are flushed due to the pageload completing or the app entering the + background. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from start of the call to + `shared_storage_worklet::SharedStorage::Append()` to when the callback has + successfully completed. Does not measure the timing of calls that end in an + error. Recorded in + `shared_storage_worklet::SharedStorage::OnVoidOperationFinished()` via + `LogTimingHistogramForVoidOperation()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from start of the call to + `shared_storage_worklet::SharedStorage::Clear()` to when the callback has + successfully completed. Does not measure the timing of calls that end in an + error. Recorded in + `shared_storage_worklet::SharedStorage::OnVoidOperationFinished()` via + `LogTimingHistogramForVoidOperation()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from start of the call to + `shared_storage_worklet::SharedStorage::Delete()` to when the callback has + successfully completed. Does not measure the timing of calls that end in an + error. Recorded in + `shared_storage_worklet::SharedStorage::OnVoidOperationFinished()` via + `LogTimingHistogramForVoidOperation()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from the start of the call to + `shared_storage_worklet::SharedStorageiterator::Next()` to just before the + promise is returned, for the iterator in `Mode::kKeyValue`. Includes only + calls where `has_error_` is false. Recorded in + `shared_storage_worklet::SharedStorageIterator::NextHelper()` via + `LogElapsedTime()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from start of the call to + `shared_storage_worklet::SharedStorage::Get()` to when the callback has + successfully completed. Does not measure the timing of calls that end in an + error. Recorded in + `shared_storage_worklet::SharedStorage::OnStringRetrievalOperationFinished()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from entering keep alive until the start of the call to + `FinishKeepAlive()` for keep-alives that are terminated when operations end + (i.e. excludes worklets whose keep-alives are terminated via timeout). + Recorded in `SharedStorageWokletHost::FinishKeepAlive()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from the start of the call to + `shared_storage_worklet::SharedStorageiterator::Next()` to just before the + promise is returned, for the iterator in `Mode::kKey`. Includes only calls + where `has_error_` is false. Recorded in + `shared_storage_worklet::SharedStorageIterator::NextHelper()` via + `LogElapsedTime()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from start of the call to + `shared_storage_worklet::SharedStorage::Length()` to when the callback has + successfully completed. Does not measure the timing of calls that end in an + error. Recorded in + `shared_storage_worklet::SharedStorage::OnLengthOperationFinished()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from start of the call to + `shared_storage_worklet::SharedStorage::RemainingBudget()` to when the + callback has successfully completed. Does not measure the timing of calls + that end in an error. Recorded in + `shared_storage_worklet::SharedStorage::OnVoidOperationFinished()` via + `LogTimingHistogramForVoidOperation()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the time from start of the call to + `shared_storage_worklet::SharedStorage::Set()` to when the callback has + successfully completed. Does not measure the timing of calls that end in an + error. Recorded in + `shared_storage_worklet::SharedStorage::OnVoidOperationFinished()` via + `LogTimingHistogramForVoidOperation()`. + + + + + cammie@chromium.org + yaoxia@chromium.org + chrome-ads-histograms@google.com + + Measures the percentage of the time duration between a + `SharedStorageWorkletHost`'s creation and destruction that occurs before the + time of its last finished operation. For worklets that are destroyed before + completing their outstanding operations, we record 100. Recorded in the + destructor of `SharedStorageWorkletHost`. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + How did the user interact with the StoragePressure Bubble? Ignored means the + user did not click on the positive button before the bubble is closed + (either manually closed or when the browser closes). + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Counts the number of WebSQL databases opened for secure vs insecure origins. + + + + + + diff --git a/histograms/metadata/subresource/OWNERS b/histograms/metadata/subresource/OWNERS new file mode 100644 index 000000000000..0ee0a3fa0cf6 --- /dev/null +++ b/histograms/metadata/subresource/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +csharrison@chromium.org +johnidel@chromium.org +tbansal@chromium.org diff --git a/histograms/metadata/subresource/histograms.xml b/histograms/metadata/subresource/histograms.xml new file mode 100644 index 000000000000..dfd470db4fa5 --- /dev/null +++ b/histograms/metadata/subresource/histograms.xml @@ -0,0 +1,659 @@ + + + + + + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + Counts of various UI and user action events related to the + SubresourceFilter. This will be triggered when portions of the UI are shown + or interacted with. + + + + + cammie@chromium.org + chrome-ads-histograms@google.com + + Records whether or not a given NavigationRequest has a nonempty vector of + CNAME aliases. Only recorded if + features::kSendCnameAliasesToSubresourceFilterFromBrowser is enabled. + Recorded in a method called in the ChildFrameNavigationFilteringThrottle's + destructor. + + + + + cammie@chromium.org + chrome-ads-histograms@google.com + + Counts the number of invalid CNAME aliases seen for a NavigationRequest by + the ChildFrameNavigationFilteringThrottle. Only recorded if + features::kSendCnameAliasesToSubresourceFilterFromBrowser is enabled and the + request has a nonempty vector of CNAME aliases. Recorded in a method called + in the ChildFrameNavigationFilteringThrottle's destructor. + + + + + cammie@chromium.org + chrome-ads-histograms@google.com + + Records the lengths of each CNAME aliases vector passed to the + ChildFrameNavigationFilteringThrottle, not including empty alias vectors. + Only recorded if features::kSendCnameAliasesToSubresourceFilterFromBrowser + is enabled and the request has a nonempty vector of CNAME aliases. Recorded + in a method called in the ChildFrameNavigationFilteringThrottle's + destructor. + + + + + cammie@chromium.org + chrome-ads-histograms@google.com + + Counts the number of CNAME aliases seen by the + ChildFrameNavigationFilteringThrottle that match the host of the requested + URL. Only recorded if + features::kSendCnameAliasesToSubresourceFilterFromBrowser is enabled and the + request has a nonempty vector of CNAME aliases. Recorded in a method called + in the ChildFrameNavigationFilteringThrottle's destructor. + + + + + cammie@chromium.org + chrome-ads-histograms@google.com + + Counts the number of CNAME aliases seen for a given NavigationRequest for + which LoadPolicy::kWouldDisallow was returned due to an alias match. Only + recorded if features::kSendCnameAliasesToSubresourceFilterFromBrowser is + enabled and the request has a nonempty vector of CNAME aliases. Recorded in + a method called in the ChildFrameNavigationFilteringThrottle's destructor. + + + + + cammie@chromium.org + chrome-ads-histograms@google.com + + Counts the number of CNAME aliases seen for a given NavigationRequest for + which LoadPolicy::kDisallow was returned due to an alias match. Only + recorded if features::kSendCnameAliasesToSubresourceFilterFromBrowser is + enabled and the request has a nonempty vector of CNAME aliases. Recorded in + a method called in the ChildFrameNavigationFilteringThrottle's destructor. + + + + + cammie@chromium.org + chrome-ads-histograms@google.com + + Records whether or not a given ResourceLoader's ResourceRequest has a + nonempty vector of CNAME aliases. Only recorded if + features::kSendCnameAliasesToSubresourceFilterFromRenderer is enabled. + Recorded in a method called by + blink::ResourceLoader::DidReceiveResponseInternal. + + + + + cammie@chromium.org + chrome-ads-histograms@google.com + + Counts the number of invalid CNAME aliases encountered by the + ResourceLoader, as these are not sent to the SubResourceFilter. Only + recorded if features::kSendCnameAliasesToSubresourceFilterFromRenderer is + enabled and the request has a nonempty vector of CNAME aliases. Recorded in + a method called by blink::ResourceLoader::DidReceiveResponseInternal. + + + + + cammie@chromium.org + chrome-ads-histograms@google.com + + Records the length of the CNAME aliases vector passed to the ResourceLoader, + not including empty alias vectors. Only recorded if + features::kSendCnameAliasesToSubresourceFilterFromRenderer is enabled and + the request has a nonempty vector of CNAME aliases. Recorded in a method + called by blink::ResourceLoader::DidReceiveResponseInternal. + + + + + cammie@chromium.org + chrome-ads-histograms@google.com + + Counts the number of CNAME aliases encountered by the ResourceLoader that + match the host of the requested URL (as well as the number of any that the + match the host of the original URL in the case of redirects), as these + aliases are not sent to the SubResourceFilter. Only recorded if + features::kSendCnameAliasesToSubresourceFilterFromRenderer is enabled and + the request has a nonempty vector of CNAME aliases. Recorded in a method + called by blink::ResourceLoader::DidReceiveResponseInternal. + + + + + cammie@chromium.org + chrome-ads-histograms@google.com + + Records whether or not a given ResourceLoader's ResourceRequest has CNAME + alias for which the returned LoadPolicy was LoadPolicy::kWouldDisallow. Only + recorded if features::kSendCnameAliasesToSubresourceFilterFromRenderer is + enabled and the request has a nonempty vector of CNAME aliases. Recorded in + a method called by blink::ResourceLoader::DidReceiveResponseInternal. + + + + + cammie@chromium.org + chrome-ads-histograms@google.com + + Records whether or not a given ResourceLoader's ResourceRequest has CNAME + alias for which the returned LoadPolicy was LoadPolicy::kDisallow. Only + recorded if features::kSendCnameAliasesToSubresourceFilterFromRenderer is + enabled and the request has a nonempty vector of CNAME aliases. Recorded in + a method called by the destructor of blink::ResourceLoader. + + + + + pkalinnikov@chromium.org + + Records how much thread CPU time it takes to decide whether subresource + filtering should be activated for a main frame or subframe. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + pkalinnikov@chromium.org + + Records how long it takes to decide whether subresource filtering should be + activated for a main frame or subframe. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + engedy@chromium.org + + Whenever a document load is committed in any frame, records whether + subresource filtering should be activated for that load. + + + + + engedy@chromium.org + + Whenever a document load is committed in any frame and subresource filtering + should be activated, records whether the filtering rules are available. + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + Records the total time a child frame navigation was delayed while + calculating whether it should be disallowed or not. Logged for all + navigations that were allowed. + + This metric uses UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES to acccount for + clients with low-resolution clocks. + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + Records the total time a child frame navigation was delayed while + calculating whether it should be disallowed or not. Logged for all + navigations with the disallowed load policy. + + This metric uses UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES to acccount for + clients with low-resolution clocks. + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + Records the total time a child frame navigation was delayed while + calculating whether it should be disallowed or not. Logged for all + navigations with the would_disallow load policy. + + This metric uses UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES to acccount for + clients with low-resolution clocks. + + + + + alexmt@chromium.org + johnidel@chromium.org + chrome-ads-histograms@google.com + + For every navigation observed by the subresource filter that passes through + ReadyToCommitNavigation, whether the navigation results in a commit. + Recorded when the navigation finishes. + + Excludes top-level frame navigations, same-document navigations, navigations + that are not handled by the network stack (e.g. about: URLs), navigations + with no available RenderFrameHost, and navigations with a dead RenderFrame. + + + + + alexmt@chromium.org + johnidel@chromium.org + chrome-ads-histograms@google.com + + For every 'restricted' navigation observed by the subresource filter that + passes through ReadyToCommitNavigation and occurs in an ad frame, whether + the navigation results in a commit. Recorded when the navigation finishes. + + A restricted navigation is one that is either to a URL matching an allowlist + rule on the filter list, or is both to a URL that matches no filter list + rule and is same-origin with the top-level frame's URL. Note that, if there + is a sequence of restricted navigations, each will be counted individually. + + Excludes top-level frame navigations, same-document navigations, navigations + that are not handled by the network stack (e.g. about: URLs), navigations + with no available RenderFrameHost, and navigations with a dead RenderFrame. + + + + + pkalinnikov@chromium.org + + The total CPU time it took to parse and index all rules. Does not include + time when the indexing thread was not doing actual work, e.g. waiting for + I/O or being descheduled. Recorded every time the RulesetService kicks off a + ruleset indexing process. + + + + + jkarlin@chromium.org + chrome-ads-histograms@google.com + + The number of rules that could be not be successfully indexed and therefore + have been ignored. Recorded every time the RulesetService kicks off a + ruleset indexing process and it reaches the point where rules are getting + indexed. This is logged when a new ruleset is indexed for the first time on + Chrome start. + + Warning: This metric expired after M90 (around 05/2021) and was unexpired + 09/2021. Data may be missing. + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + The result of the IndexRulesetMatcher Verify method. Either pass if both the + checksum and verifier succeeded, or a value indicating which combination of + them failed. Note that a zero checksum indicates that the checksum has not + yet been stored during indexing (for rulesets indexed prior to the + checksumming code). This is logged when the indexed ruleset is loaded on + Chrome start. + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + The total time it took to verify the indexed ruleset in the browser process. + Logged every time verification occurs, which usually occurs when the first + page with activation is navigated to. This is logged when the indexed + ruleset is loaded on Chrome start. + + + + + jkarlin@chromium.org + chrome-ads-histograms@google.com + + The total time it took to read and index all rules. Includes I/O time for + reading the unindexed rules, but not for writing the indexed ruleset. + Recorded every time the RulesetService kicks off a ruleset indexing process. + + + + + alexmt@chromium.org + jkarlin@chromium.org + + Whenever a document load is committed in the root frame, records whether the + filtering rules are available. This is independent of whether or not + subresource filtering should be activated. + + + + + jkarlin@chromium.org + chrome-ads-histograms@google.com + + Records the policy decision to activate subresource filtering for a page + load. 'Activated' indicates that subresource filtering was activated. All + other reasons indicate that subresource filtering was not activated. + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + The ActivationList or NONE that the root frame's navigation matched with. + Recorded at WillProcessResponse time for an outermost main frame navigation. + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + Whenever a document load is committed in a root frame, records whether + subresource filtering should be activated for that load. Also records the + same for the initial document load, even if it was not committed. + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + Whenever a document load is committed in a root frame that inherits from its + same-origin opener, records whether subresource filtering should be + activated for that load. Also records the same for the initial document load + (if it inherits its activation) even if it was not committed. + + + + + yaoxia@google.com + chrome-ads-histograms@google.com + + Records that an ads violation has been triggered on a page load. Logged at + the time the ads violation is detected. + + + + + jkarlin@chromium.org + chrome-ads-histograms@google.com + + Whenever a page load is finished with subresource filtering activated, + records the total number of subresource loads that have been disallowed. + This only differs from `MatchedRules` when filtering is performed in dry-run + mode. + + + + + jkarlin@chromium.org + chrome-ads-histograms@google.com + + Whenever a page load is finished with subresource filtering activated, + records the total number of subresource loads that have been evaluated. This + only differs from 'Total' when some of subdocuments is subject to a + deactivating rule with DOCUMENT activation type. + + + + + jkarlin@chromium.org + chrome-ads-histograms@google.com + + Whenever a page load is finished with subresource filtering activated, + records the total number of subresource loads that have matched filtering + rules. This only differs from `Disallowed` when filtering is performed in + dry-run mode. + + + + + jkarlin@chromium.org + chrome-ads-histograms@google.com + + Whenever a page load is finished with subresource filtering activated, + records the total number of subresource loads that have gone through the + subresource filtering pipeline. + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + The navigation delay imposed by the subresource filter on a given navigation + due to Safe Browsing checks. + + This metric expired after M83 and was renewed in M88, so it has incomplete + data between M84 and M87 inclusively. + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + Whenever a page load is finished with subresource filtering activated, + records the total thread CPU time spent on evaluating subresource requests, + aggregated across all frames. + + Note: this histogram is emitted for all clients, both ones which have + high-resolution timer available and those which don't. + + Warning: This metric expired after 01/2020 and was unexpired 07/2021. Data + may be missing. + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + Whenever a page load is finished with subresource filtering activated, + records the total real time spent on evaluating subresource requests, + aggregated across all frames. This includes the time spent on waiting or + being descheduled. + + Note: this histogram is emitted for all clients, both ones which have + high-resolution timer available and those which don't. + + Warning: This metric expired after M78 and was unexpired 07/2021. Data may + be missing. + + + + + yaoxia@google.com + chrome-ads-histograms@google.com + + Records the time since the last ads intervention when loading a page that + has previously triggered an ads intervention. This is limited by the maximum + expiry time of intervention data, 7 days. Recorded at the time page + activation is computed during page load when a previous intervention was + previously recorded and has not expired from the intervention data. + + + + + yaoxia@chromium.org + + Records the ruleset verification status at some point in a browsing session. + If AdTagging is disabled, this happens when the user first visits a site + that is failing the Better Ads Standard, and gets ads blocked on that site; + if AdTagging is enabled, this happens immediately on startup. Note that this + is recorded only once per browsing session (the lifetime of the browser + process). + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + The time an individual Safe Browsing URL check took before finishing, + including posting tasks to and from the IO thread. Measured on the UI thread + on navigation. + + This metric expired after M83 and was renewed in M88, so it has incomplete + data between M84 and M87 inclusively. + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + Whenever a subresource of a document is evaluated against the ruleset, + records the thread CPU time spent on calculating whether it should be + allowed to load. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + Warning: This metric expired after 01/2020 and was unexpired 07/2021. Data + may be missing. + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + Whenever a subresource of a document is evaluated against the ruleset, + records how much time was spent on calculating whether it should be allowed + to load. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + Warning: This metric expired after M85 and was unexpired 07/2021. Data may + be missing + + + + + jkarlin@chromium.org + chrome-ads-histograms@google.com + + Records the exact error whenever writing a ruleset fails at the step where + the ruleset would be moved from the scratch directory to its final location. + Recorded every time the RulesetService kicks off a ruleset indexing process. + + + + + alexmt@chromium.org + chrome-ads-histograms@google.com + + Whether indexing a version of the ruleset and writing it to disk succeeded, + or failed at a particular step. Recorded every time the RulesetService kicks + off a ruleset indexing process. + + + + + + diff --git a/histograms/metadata/sync/DIR_METADATA b/histograms/metadata/sync/DIR_METADATA new file mode 100644 index 000000000000..5099a4e6fb16 --- /dev/null +++ b/histograms/metadata/sync/DIR_METADATA @@ -0,0 +1,11 @@ +# Metadata information for this directory. +# +# For more information on DIR_METADATA files, see: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md +# +# For the schema of this file, see Metadata message: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto + +monorail { + component: "Services>Sync" +} \ No newline at end of file diff --git a/histograms/metadata/sync/OWNERS b/histograms/metadata/sync/OWNERS new file mode 100644 index 000000000000..5b384e23c924 --- /dev/null +++ b/histograms/metadata/sync/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +rushans@google.com diff --git a/histograms/metadata/sync/histograms.xml b/histograms/metadata/sync/histograms.xml new file mode 100644 index 000000000000..747e3a21ac42 --- /dev/null +++ b/histograms/metadata/sync/histograms.xml @@ -0,0 +1,1866 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + melandory@chromium.org + treib@chromium.org + + For each subcription request to the FCM Per-User-Topic server, log the + response received from the server per topic. Note: This is only recorded + with a data type suffix. The base version is never recorded. + + + + + + + + victorvianna@google.com + src/components/sync/OWNERS + Services>Sync + + Logged when a data type is backed off. + + This histogram can help explain changes in + Sync.PostedClientToServerMessageError2::PARTIAL_FAILURE. + + + + + rushans@google.com + mastiz@chromium.org + Services>Sync + + Records if the entity is marked to be reuploaded. It is recorded on each + incoming bookmark update from the server during {UpdateType}. + + + + + + + + + rushans@google.com + mastiz@chromium.org + Services>Sync + + Records whether a GUID was found within BookmarkSpecifics, if an + originator_client_item_id of valid GUID format was used to replace it, or if + the field was left empty. Recorded when processing a remote bookmark update, + except for permanent nodes, which are created server-side and don't have an + originator client item ID. + + + + + rushans@google.com + mastiz@chromium.org + Services>Sync + + Records the number of valid and non-duplicate updates processed during + initial merge for bookmarks that are reachable when traversing the bookmark + tree, including permanent folders. Recorded during the initial merge + procedure after deduplication. + + + + + rushans@google.com + mastiz@chromium.org + Services>Sync + + Records the number of unsynced entities (bookmarks or folders) as a result + of the initial merge for bookmarks. This includes local creations (i.e. did + not match any entity in the server) as well as local modifications (e.g. + pending reupload). Recorded upon completion of the initial merge procedure. + + + + + rushans@google.com + mastiz@chromium.org + Services>Sync + + Records the number of received input updates considered valid during initial + merge for bookmarks, prior to deduplication, including permanent folders and + unreachable nodes (see Sync.BookmarkModelMerger.ReachableInputUpdates for a + more strict variant). Invalid updates contribute to metric + Sync.ProblematicServerSideBookmarksDuringMerge. Recorded during the initial + merge procedure. + + + + + rushans@google.com + mastiz@chromium.org + Services>Sync + + Measures the initial bookmark merge time broken down by different stages. + Recorded after every initial merge procedure {UpdatesCount}. + + + + + + + + + + + mastiz@chromium.org + rushans@google.com + Services>Sync + + Records different types of bookmark entities having the same GUIDs. It's + recorded on each found duplicate when processing remote bookmarks from the + sync server during the initial merge. + + + + + rushans@google.com + mastiz@chromium.org + Services>Sync + + The reason why the persisted metadata for a bookmark model is considered + corrupted. It either has corrupted data or doesn't match the bookmark model. + It's recorded at start up only if the initial sync has been performed + already. It's recorded after loading the metadata. + + + + + rushans@google.com + mastiz@chromium.org + Services>Sync + + Records if a remote sync update for a bookmark, excluding folders, contains + a favicon. It is recorded upon initial and incremental updates, when the + local state is about to be modified. + + + + + ankushkush@google.com + treib@chromium.org + Services>Sync + + Recorded when metadata is cleared upon ModelReadyToSync() in the case where + clearing of metadata was requested before ModelReadyToSync() while the data + type was not running. + + + + + ankushkush@google.com + treib@chromium.org + Services>Sync + + Recorded whenever clearing of metadata is requested while the data type is + not running and the metadata is cleared immediately. + + + + + treib@chromium.org + mastiz@chromium.org + Services>Sync + + Emitted when a Commit entity response is received for an unknown entity + (i.e. for a client tag hash that doesn't correspond to a tracked entity). + + + + + rushans@google.com + treib@chromium.org + Services>Sync + + Emitted per network Commit() request to the sync server and datatype. + Records the outcome of each commit attempt per data type (success or one of + various error codes). + + + + + + + + mastiz@chromium.org + treib@chromium.org + Services>Sync + + Whether the full Sync feature or only the Sync transport layer is being + configured. Recorded when configuring the data types for any reason: Most + commonly during browser startup, but also after initial setup, after a + reconfiguration by the user, or when switching between full feature mode and + transport mode. + + + + + mastiz@chromium.org + treib@chromium.org + Services>Sync + + Breakdown of sync data types being configured at first time signin, restart, + or user-initiated reconfiguration. This is different from Sync.CustomTypes + in that this captures all active devices, not just those that are choosing a + custom sync configuration. + + Note that not all platforms support all data types. As such, comparing + across platforms should only look at the common data types. + + + + + victorvianna@google.com + Services>Sync + + Time spent configuring data types for {ConfigurationType}. Recorded when + DataTypeManagerImpl finishes. + + + + + + + + + + + + + mmoskvitin@google.com + treib@chromium.org + Services>Sync + + Key derivation method used for sync custom passphrase on successful + decryption of pending keys, i.e. when a passphrase is requested and the user + types in the correct one. "Not set" will never be reported for + this metric, since we always have an explicit key derivation method on + successful decryption. + + + + + mmoskvitin@google.com + treib@chromium.org + Services>Sync + + State of the derivation method used for sync custom passphrase on startup. + Reported only when the passphrase type is CUSTOM_PASSPHRASE. + + + + + mmoskvitin@google.com + treib@chromium.org + Services>Sync + + Time taken to derive keys in Nigori using a given key derivation method. + This histogram is always recorded with one of the key derivation method + suffixes. + + + + + + + + + mastiz@chromium.org + treib@chromium.org + Services>Sync + + Breakdown of sync users whose cryptographer has pending keys. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Breakdown of sync users whose cryptographer is fully ready for encryption + and decryption (initialized and no pending keys). + + + + + mastiz@chromium.org + treib@chromium.org + Services>Sync + + Histogram that keeps track of how users encrypt their sync data. All users + start off with default encryption during initial setup, while a subset of + users go on to encrypt their sync data with a custom passphrase. + + + + + mmoskvitin@google.com + treib@chromium.org + Services>Sync + + For users who have *not* selected the "Sync Everything" option, + this records all the OS data types they have selected to sync. Samples are + taken every time the Sync data types are (re)configured, which typically + happens during startup and when the user changes any Sync settings. + + + + + treib@chromium.org + mastiz@chromium.org + Services>Sync + + For users who have *not* selected the "Sync Everything" option, + this records all the data types they have selected to sync. Samples are + taken every time the Sync data types are (re)configured, which typically + happens during startup and when the user changes any Sync settings. + + NOTE: this does NOT include OS datatypes. Use Sync.CustomOSSync for those. + + + + + rushans@google.com + mastiz@chromium.org + Services>Sync + + Histogram of the run failures for the different sync datatypes. These are + failures that occur after startup while the datatype is syncing. This is one + of the base sync health metrics. The Sync.ModelTypeStoreBackendError and + Sync.ModelTypeErrorSite histograms may help diagnosing the problem. + + + + + rushans@google.com + mastiz@chromium.org + Services>Sync + + Histogram of the startup failures for the different sync datatypes. These + are failures that occur during startup before the data type is fully loaded. + These errors are caused by failures in reading metadata (or data) from the + DB or by another failure in interaction with the model. The + Sync.ModelTypeStoreBackendError and Sync.ModelTypeErrorSite histograms may + help diagnosing the problem. + + + + + + + mastiz@chromium.org + rushans@google.com + chrome-metrics-team@google.com + Services>Sync + + The largest number of active and concurrently syncing devices known to any + profile. May be 0 when there are no signed in/syncing profiles open. Logged + with every UMA log. + + + + + ssid@chromium.org + mastiz@chromium.org + chrome-metrics-team@google.com + Services>Sync + + The largest number of active and concurrently syncing devices of type + {DeviceType} known to any profile. May be 0 when there are no signed + in/syncing profiles open. Logged with every UMA log. + + + + + + + + + + ankushkush@google.com + treib@chromium.org + Services>Sync + + Size of individual sync entities in bytes. Recorded right before an entity + is committed to the server. + + + + + + rushans@google.com + treib@chromium.org + Services>Sync + + Records status of each attempt to retrieve the instance id token. Replaces + FCMInvalidations.InitialTokenRetrievalStatus for Sync standalone + invalidations. + + + + + rushans@google.com + treib@chromium.org + Services>Sync + + Whether an incoming FCM message has been delivered to at least one listener. + Recorded on each incoming FCM message for standalone Sync invalidations. + + + + + treib@chromium.org + mastiz@chromium.org + Services>Sync + + Recorded when HistorySyncBridge encounters a database error. As a result, + the bridge stops operating (and tracking metadata) for the rest of the + runtime of Chrome. + + + + + treib@chromium.org + mastiz@chromium.org + Services>Sync + + Recorded when HistorySyncBridge encounters an incoming entity that is + invalid, i.e. that fails some validity check. Counts in this histogram + should be compared to counts in the "Remote" buckets of + Sync.ModelTypeEntityChange3.History. + + + + + rushans@google.com + treib@chromium.org + Services>Sync + + An outcome of handling incoming sync invalidations, recorded for each + incoming FCM message when sync engine is registered for invalidations. This + metric shows only the number of incoming messages regardless of the number + of invalidated data types. + + + + + + Replaced in M108 by Sync.InitialState2. + + treib@chromium.org + mastiz@chromium.org + Services>Sync + + NOTE: This histogram is also recorded (with value "No signed in + user") for profiles in which Sync will never be able to start, such as + the system profile (used for the profile picker). You probably want to look + at Sync.InitialState2 instead. + + An approximate state of sync at profile startup. Logs a few reasons sync + definitely wouldn't be able to start, or that it probably can start. A + dashboard stop and clear will fall under "turned off and setup not + completed". + + + + + treib@chromium.org + mastiz@chromium.org + Services>Sync + + An approximate state of sync at profile startup. Logs a few reasons sync + definitely wouldn't be able to start, or that it probably can start. A + dashboard stop and clear will fall under "turned off and setup not + completed". Only recorded for "regular" profiles, i.e. those + in which Sync might actually start. This excludes incognito profiles, guest + profiles, system profiles (used for the profile picker), lockscreen + profiles, etc. + + + + + + + mmoskvitin@google.com + treib@chromium.org + Services>Sync + + Histogram tracks the number of invalidations received per sync data type. + + + + + mastiz@chromium.org + rushans@google.com + Services>Sync + + Records different causes for BookmarkSpecifics to be deemed invalid. Issues + are recorded upon verifying validity of specifics received from the server. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + The reason for a failure decrypting the keystore Nigori. + + + + + Replaced in M108 by Sync.Local.Enabled2. + + igorruvinov@chromium.org + pastarmovj@chromium.org + Services>Sync + + NOTE: This histogram is also recorded for profiles in which Sync will never + be able to start, such as the system profile (used for the profile picker). + You probably want to look at Sync.Local.Enabled2 instead. + + Tracks the number of times the local sync backend was enabled by the user. + Recorded when the SyncService is created, i.e. during profile startup. + + + + + igorruvinov@chromium.org + pastarmovj@chromium.org + Services>Sync + + Tracks the number of times the local sync backend was enabled by the user. + Recorded when the SyncService is created, i.e. during profile startup. + + + + + igorruvinov@chromium.org + pastarmovj@chromium.org + Services>Sync + + Tracks the size of the local sync backend database file. Recorded every time + the roaming profile file is written by the client. + + + + + igorruvinov@chromium.org + pastarmovj@chromium.org + Services>Sync + + Error code describing failure to read persisted sync state from local file. + Recorded when an error is encountered during opening or reading of the local + sync state file. + + + + + + Replaced in M108 by Sync.Local.RoamingProfileUnavailable2. + + igorruvinov@chromium.org + pastarmovj@chromium.org + Services>Sync + + NOTE: This histogram is also recorded for profiles in which Sync will never + be able to start, such as the system profile (used for the profile picker). + You probably want to look at Sync.Local.RoamingProfileUnavailable2 instead. + + Tracks the number of times the Roaming profile cannot be retrieved. Recorded + when the SyncService is created, i.e. during profile startup. + + + + + igorruvinov@chromium.org + pastarmovj@chromium.org + Services>Sync + + Tracks the number of times the Roaming profile cannot be retrieved. Recorded + when the SyncService is created, i.e. during profile startup. + + + + + rushans@google.com + treib@chromium.org + Services>Sync + + Recorded after receiving an incoming deletion of local DeviceInfo during + incremental update. Counts whether the local DeviceInfo is marked to be + reuploaded. + + + + + ankushkush@google.com + treib@chromium.org + Services>Sync + + Records the time taken for all data types to finish loading, initiated from + ModelLoadManager::LoadModels(). + + + + + ankushkush@google.com + treib@chromium.org + Services>Sync + + Recorded whenever a data type fails to complete loading, called from + ModelLoadManager::LoadModels(), before the timeout. This type is ignored and + the rest of types which have loaded are marked ready for configuration. This + type would ultimately be stopped once gets out of MODEL_STARTING state. + + + + + victorvianna@google.com + mastiz@chromium.org + Services>Sync + + Recorded on every GetUpdatesResponse if the data type is blocked because due + to the existence of undecryptable updates sent by the server. This is *not* + recorded for the cases where sync encryption is in a valid pending state, + e.g. user hasn't entered their passphrase yet. + + + + + rushans@google.com + treib@chromium.org + Services>Sync + + Recorded once per commit message after which the quota for the given data + type is depleted. If the commit cycle contains 150 commit messages for a + given data type and the quota has initially 100 tokens, the quota gets + depleted after first 100 messages and this histogram gets recorded for all + the remaining messages (i.e. ~50 times) for the data type. Quota is tracked + (and this metric gets recorded) only for data types that can be committed + via JS API of extensions. + + + + + rushans@google.com + treib@chromium.org + Services>Sync + + Recorded once per local change that gets scheduled for committing with an + extra long nudge delay. This happens if and only if the commit quota for + this data type for this user is depleted. Quota is tracked (and this metric + gets recorded) only for data types that can be committed via JS API of + extensions. This metric is not very reliable as nudging for local changes + happens via thread hopping and there is no guarantee whether a local change + will nudge for commit _before_ or _after_ it actually gets committed. + + + + + rushans@google.com + mastiz@chromium.org + Services>Sync + + Recorded once per activation of a(n) {StorageType} data type; the value is + the duration of the setup (time from the start of the configuration of sync + until the data type receives all its sync data and the data is ready for the + user). This metric is used for monitoring general health of sync client-side + code. + + + + + + + + + + rushans@google.com + mastiz@chromium.org + Services>Sync + + Counts the number of entries for each model type. The count is based on + metadata entries for the type. Recorded after sync configuration. This + metric is used for monitoring general health of sync client-side code. + + + + + + treib@chromium.org + rushans@google.com + Services>Sync + + Recorded once for every sync entity change (whenever it is commited to the + server or updated from the server). This metric is used for monitoring + general health of sync client-side code. Note: This is only recorded with a + data type suffix. The base version is never recorded. + + + + + + mastiz@chromium.org + treib@chromium.org + Services>Sync + + Records whenever ClientTagBasedModelTypeProcessor finds entity metadata + during ModelReadyToSync() but initial_sync_done is false. + + + + + treib@chromium.org + rushans@google.com + Services>Sync + + Recorded whenever ClientTagBasedModelTypeProcessor triggers a data type + failure (recorded for both Start and Run failures). It distinguishes call + sites for triggering such failures. + + + + + + rushans@google.com + mastiz@chromium.org + Services>Sync + + Counts the number of incremental sync updates received by the processor, per + datatype. Logged in the model thread prior to any filtering, and includes + tombstones as well as regular updates. + + + + + rushans@google.com + mastiz@chromium.org + Services>Sync + + Counts the number of initial sync updates received by the processor, per + datatype. Logged in the model thread prior to any filtering. + + + + + mastiz@chromium.org + rushans@google.com + Services>Sync + + Estimated memory usage by sync datatype in kilobytes. Recorded after sync + configuration. This metric is used for monitoring general health of sync + client-side code. + + + + + + mastiz@chromium.org + treib@chromium.org + Services>Sync + + Records whenever an orphan metadata is encountered by the + ClientTagBasedModelTypeProcessor. + + + + + + + + + + treib@chromium.org + rushans@google.com + Services>Sync + + Records the LevelDB Status error code for ModelTypeStore {Operation} + operations. Recorded when there is an error while communicating with the DB + for any data type that uses the ModelTypeStore. This metric should be used + together with Sync.DataType[Run|Start]Failures2 to figure out the root cause + of the data type failure. + + + + + + + + + + + + + victorvianna@google.com + mastiz@chromium.org + Services>Sync + + Records how long it took from the moment the first update encrypted with + this key was received by ModelTypeWorker, to the moment where the key was + available to the Cryptographer. The time is measured by the number of + GetUpdates cycles performed by the worker *while* the Cryptographer didn't + have pending keys (and thus the key should have been known in theory). + + This replaced Sync.ModelTypeTimeUntilEncryptionKeyFound which used to + measure the same time in GetUpdatesResponse-s. + + + + + + + + victorvianna@google.com + mastiz@chromium.org + Services>Sync + + Records the number of entities dropped when the data type decided that a + certain encryption key was lost and dropped all pending updates encrypted + with it. Future updates encrypted with such key will also be ignored by the + data type, but those are *not* counted in this metric. + + + + + + + + treib@chromium.org + rushans@google.com + Services>Sync + + Recorded whenever a remote update for a particular data type gets dropped + for the following reason: {Reason}. + + + + + + + + + + + + + + + mastiz@chromium.org + treib@chromium.org + Services>Sync + + Freshness of the sync data per received sync entity update, excluding + reflections. The time represents the clock difference from the model being + modified (usually on another device) until the change is processing by this + instance of the browser. The time is capped at 1 week. Beware of potential + clock skew due to two clients being involved. + + + + + + + + treib@chromium.org + mastiz@chromium.org + Services>Sync + The active sync passphrase type at sync startup. + + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + Sync passphrase type collected at each metrics upload. + + + + mastiz@chromium.org + mmoskvitin@google.com + Services>Sync + + The active sync passphrase type when the client receives a NOT_MY_BIRTHDAY + or ENCRYPTION_OBSOLETE event from the server. + + + + + mamir@chromium.org + mastiz@chromium.org + Services>Sync + + Records whether password notes are set in password specifics proto or the + backup field. Recorded when decrypting password entity update upon download + from the sync server. + + + + + shabdan@google.com + rushans@google.com + Services>Sync + + Number of acknowledged and dropped invalidations broken down by reason. + Recorded during browser shutdown, after a sync cycle or on incoming + invalidation. + + + + + mastiz@chromium.org + Services>Sync + + Number of network requests issued by sync to the sync server, grouped by + content type. + + + + + mastiz@chromium.org + treib@chromium.org + Services>Sync + + A sync error code received from the sync server as a result of a + client-initiated request. Note that this excludes network errors (e.g. + client offline) and HTTP errors. + + + + + mastiz@chromium.org + Services>Sync + + Time taken for a client-initiated request to be sent over the network and + receive the response from the sync server. + + + + + mastiz@chromium.org + rushans@google.com + Services>Sync + + Emitted per network Commit() request to the sync server and datatype. It + helps estimate how much load each datatype puts on the server. Note that the + sum across buckets does not represent the total number of requests sent to + the server, since multiple datatypes can be grouped in a single request. See + Sync.PostedClientToServerMessage for the total number of requests/messages. + + + + + mastiz@chromium.org + rushans@google.com + Services>Sync + + Emitted per network GetUpdates() request to the sync server and datatype. It + represents how much load each datatype puts on the server. Note that the sum + across buckets does not represent the total number of requests sent to the + server, since multiple datatypes can be grouped in a single request. See + Sync.PostedClientToServerMessage for the total number of requests/messages. + + + + + mastiz@chromium.org + rushans@google.com + Services>Sync + + Emitted per network GetUpdates() request to the sync server, it represents + the reason for sending such GetUpdates() request. + + + + + mastiz@chromium.org + rushans@google.com + Services>Sync + + Records different issues encountered when processing incremental bookmark + updates from the sync server. + + + + + rushans@google.com + mastiz@chromium.org + Services>Sync + + Records different issues encountered when processing remote bookmarks from + the sync server during the initial merge procedure. + + + + + mmoskvitin@google.com + treib@chromium.org + Services>Sync + + For every user event that is recorded, this histogram records the type of + event (i.e. which of the "oneof event" entries in the + UserEventSpecifics proto was set). + + + + + rushans@google.com + treib@chromium.org + Services>Sync + + Recorded whenever the sync engine is restarted. The recorded value is the + calling site of ResetEngine. + + + + + rushans@google.com + treib@chromium.org + Services>Sync + + Counts the number of commit results while committing sharing message. + + + + + mastiz@chromium.org + treib@chromium.org + Services>Sync + The type of event that triggered sync initialization. + + + + + Expired in M108. + + ydago@chromium.org + treib@chromium.org + Services>Sync + + The time spent waiting for policies to load before starting the sync engine. + This is recorded every time the sync engine is started after having to wait + for the browser policies from all sources to be loaded. In case the policy + service already had all of its policies loaded by the time the sync ending + starts, this records base::TimeDelta(). + + + + + + Expired in M108. + + ydago@chromium.org + treib@chromium.org + Services>Sync + + Records if the policy load delay before starting the sync engine was timed + out. In case of a timeout, the sync engine attempts to start ignoring + potential policy restrictions. + + + + + mastiz@chromium.org + treib@chromium.org + Services>Sync + + Recorded on browser startup if the SyncEngine initialization is deferred by + a fixed (configurable) delay due to performance reasons. In some cases, a + data type may force sync to start before the delay finishes, causing the + recorded time to be smaller. This histogram records the time spent after the + SyncServiceImpl *creation* but before the SyncEngine initialization. + + + + + treib@chromium.org + mastiz@chromium.org + Services>Sync + + Tracks how sync was turned off. Logged every time sync is told to stop + permanently by the user (e.g. it won't come back on by itself). + + + + + ankushkush@google.com + treib@chromium.org + Services>Sync + + This is recorded everytime a syncable pref is changed locally. This does not + include changes sent during the initial sync/merge. + + + + + ankushkush@google.com + treib@chromium.org + Services>Sync + + During browser startup, if sync is enabled and initial data exists, this + records the time until a SyncableService is ready to process changes (both + locally and coming from the server). The value is the duration from when + SyncableServiceBasedBridge was initialized to the time when SyncableService + has started (this comprises of loading all data from disk and + MergeDataAndStartSyncing()). + + + + + + victorvianna@google.com + Services>Sync + + Records the availability status (local, sync or non-available) for favicons + associated with synced history entries. Recorded when one of the following + is displayed: entries in chrome://history that are known to be present in + remote history data; all entries in chrome://history/syncedTabs; tabs from + other devices in the 3 dots history menu (desktop); tabs from other devices + in the android Recent Tabs UI. + + + + + + + + + + jlebel@chromium.org + chrome-signin-team@google.com + Services>Sync + + Enumeration of error conditions that displays an infobar to the user. iOS + only. + + + + + treib@chromium.org + mastiz@chromium.org + Services>Sync + + Boolean histogram for whether the "Sync Everything" option was + selected by the user. Samples are taken every time the Sync data types are + (re)configured, which typically happens during startup and when the user + changes any Sync settings. + + + + + mmoskvitin@google.com + treib@chromium.org + Services>Sync + + Analogous to Sync.SyncEverything2 for Chrome OS sync settings. Reflects + whether the "Sync Everything" option was selected by the user for + OS datatypes. Samples are taken every time the Sync data types are + (re)configured, which typically happens during startup and when the user + changes any Sync settings. + + + + + rushans@google.com + treib@chromium.org + Services>Sync + + Counts the number of Sync stopped events broken down by whether it was + reported to the server. The event may be reported only if an access token + and a birthday are not empty. Recorded when sync engine is stopped or + disabled (it doesn't include regular browser shutdown). + + + + + rushans@google.com + treib@chromium.org + Services>Sync + + Counts of responses (both http code and net error code) for Sync stopped + event URL fetches. Note that requests that timed out are not covered by this + histogram; see Sync.SyncStoppedURLFetchTimedOut for that. + + + + + rushans@google.com + treib@chromium.org + Services>Sync + + Whether a Sync stopped event URL fetch timed out or not. Note that this + records true on timeout and false on success, but doesn't record anything if + the fetch failed for any other reason. + + + + + victorvianna@google.com + src/components/sync/OWNERS + Services>Sync + + Logged when the server instructs the client to throttle all its data types. + See also Sync.ThrottledSomeModelTypes which records a different event. + + This histogram can help explain changes in + Sync.PostedClientToServerMessageError2::THROTTLED. + + + + + victorvianna@google.com + src/components/sync/OWNERS + Services>Sync + + Logged when the sync server instructs this client to throttle a special list + of data types. See also Sync.ThrottledAllModelTypes which records a + different event. + + This histogram can help explain changes in + Sync.PostedClientToServerMessageError2::THROTTLED. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records whether access token fetching attempt was successful upon every + request to Security Domains service. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records whether attempt of adding trusted vault keys was successful (i.e. + whether pending keys state resolved). + + + + + mmrashad@google.com + mmoskvitin@google.com + Services>Sync + + Records the known degraded recoverability value when the degraded + recoverability handler is started. Note that the value reflects state + restored from the file and recorded before sending new request to the + server. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Simplified version of Sync.TrustedVaultDeviceRegistrationState. Records + whether the local device is registered (and ignores whether re-registration + was completed/pending/in-flight) upon startup (if signed in) or upon first + signin. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records the outcome of device registration attempt upon request completion + or failure. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records whether the local device is registered on the server upon startup + (if signed in) or upon first signin, and if not registered, provides + insights into why. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records the result of an attempt to download trusted vault keys from the + server (includes all registration versions). + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records the result of an attempt to download trusted vault keys from the + server, specifically if the local device is known to have a V1 registration. + + + + + + Replaced in M114 by Sync.TrustedVaultErrorShownOnFirstTimeSync2. + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records whether user action was required to fetch trusted vault keys upon + first sync (i.e. after signin). Recorded only if trusted vault passphrase + type is used and at most once per browser/profile lifetime. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records whether user action was required to fetch trusted vault keys upon + first sync (i.e. after signin). Recorded only if trusted vault passphrase + type is used and sync-the-feature is enabled. Recorded at most once per + browser/profile lifetime. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records whether user action was required to fetch trusted vault keys upon + startup. Recorded only if trusted vault passphrase type is used and at most + once per browser/profile lifetime. + + {TrustedVaultTimeSinceMigrationSuffix} + + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records number of trusted vault keys fetched upon fetching completion. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + Recorded when fetching trusted vault keys is attempted. + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + Recorded when reading local trusted vault file. + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records whether writing local trusted vault file upon each write. + + + + + mmrashad@google.com + mmoskvitin@google.com + Services>Sync + + Recorded when an immediate degraded recoverability request is going to be + sent to the server. Records which heuristic triggered immediate request of + the current degraded recoverability state from the server. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records whether invocations to the Javascript API + chrome.addTrustedSyncEncryptionRecoveryMethod(), when received via Mojo in + the browser process, corresponds to an incognito profile. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records whether invocations to the Javascript API + chrome.addTrustedSyncEncryptionRecoveryMethod() completed successfully. + Instrumented on Android only. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records whether invocations to the Javascript API + chrome.addTrustedSyncEncryptionRecoveryMethod() specify a user ID that is + known by IdentityManager. Instrumented on Android only. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records invocations to the Javascript API + chrome.addTrustedSyncEncryptionRecoveryMethod() and whether the passed + arguments could be successfully parsed (which doesn't imply the function + actually succeeded). + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records whether invocations to the Javascript API + chrome.setSyncEncryptionKeys(), when received via Mojo in the browser + process, corresponds to an incognito profile. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records invocations to the Javascript API chrome.setSyncEncryptionKeys() and + whether the passed arguments could be successfully parsed (which doesn't + imply the function actually succeeded). + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Recorded when user clicks/taps on trusted vault error button for the + keys-missing error state. Buckets represents the UI elements which contain + trusted vault error button. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records whether local data was successfully decrypted upon every attempt to + read local file. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Recorded when user clicks/taps on trusted vault error button for the + recoverability-degraded error state. Buckets represents the UI elements + which contain trusted vault error button. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records whether user action was required to improve the recoverability of + trusted vault keys. Recorded only if trusted vault passphrase type is used, + when keys are locally available and at most once per browser/profile + lifetime. + + {TrustedVaultTimeSinceMigrationSuffix} + + + + + + mmrashad@google.com + mmoskvitin@google.com + Services>Sync + + Records the status of the degraded recoverability upon the request + completion. Note that this is the status on the server side, which could be + error if the request was failed. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Counts of responses (both http code and net error code) for requests to the + Trusted Vault server (aka Security Domain Service). Note that requests that + timed out are not covered by this histogram. + + + + + + + + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records the result of verifying the state of the local device registration, + which is achieved by simulating a key-download procedure. Recorded only for + already-registered devices (V0 or V1) that have a primary account set, 10 + seconds after metric Sync.TrustedVaultDeviceRegistrationState is recorded. + + + + + mmoskvitin@google.com + mastiz@chromium.org + Services>Sync + + Records the result of verifying the state of the local device registration, + which is achieved by simulating a key-download procedure. Recorded only for + V1-registered devices that have a primary account set, 10 seconds after + metric Sync.TrustedVaultDeviceRegistrationState is recorded. + + + + + mastiz@chromium.org + Services>Sync + + Recorded when TypedURLSyncBridge encounters a database error. As a result, + the bridge stops operating (and tracking metadata) for the rest of the + runtime of Chrome. + + + + + mastiz@chromium.org + treib@chromium.org + Services>Sync + + Counts of responses (both http code and net error code) for Sync URL + fetches. Note that requests that timed out are not covered by this + histogram; see Sync.URLFetchTimedOut for that. + + + + + mastiz@chromium.org + treib@chromium.org + Services>Sync + + Whether a URL fetch timed out or not. Timing out implies the fetch was + stalled for an unknown reason. Note that this records true on timeout and + false on success, but doesn't record anything if the fetch failed for any + other reason. + + + + + + diff --git a/histograms/metadata/system/OWNERS b/histograms/metadata/system/OWNERS new file mode 100644 index 000000000000..362a50ec300b --- /dev/null +++ b/histograms/metadata/system/OWNERS @@ -0,0 +1,8 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +etienneb@chromium.org +fdoray@chromium.org +gab@chromium.org +pmonette@chromium.org diff --git a/histograms/metadata/system/histograms.xml b/histograms/metadata/system/histograms.xml new file mode 100644 index 000000000000..99a598836f29 --- /dev/null +++ b/histograms/metadata/system/histograms.xml @@ -0,0 +1,43 @@ + + + + + + + + + + etienneb@chromium.org + gab@chromium.org + + Measures the pressure on {resource}. Pressure increases when contention + happens on the resource usage. It measures the amount of the runnable time + that is wasted because of {resource} starvation. + + + + + + + + + + + diff --git a/histograms/metadata/tab/OWNERS b/histograms/metadata/tab/OWNERS new file mode 100644 index 000000000000..f07e4dd35627 --- /dev/null +++ b/histograms/metadata/tab/OWNERS @@ -0,0 +1,8 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +ckitagawa@chromium.org +joenotcharles@google.com +olivierli@chromium.org +dfried@chromium.org diff --git a/histograms/metadata/tab/histograms.xml b/histograms/metadata/tab/histograms.xml new file mode 100644 index 000000000000..f5b4d0aac224 --- /dev/null +++ b/histograms/metadata/tab/histograms.xml @@ -0,0 +1,2368 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vovoy@chromium.org + fdoray@chromium.org + + The number of tabs discards since last emit. The emit interval is at least + 24 hours, see metrics::DailyEvent for more details. The discards are + requested {TabDiscardReason}. + + + + + + vovoy@chromium.org + fdoray@chromium.org + + The number of tabs reloads since last emit. The emit interval is at least 24 + hours, see metrics::DailyEvent for more details. The discards corresponding + to the reloads are requested {TabDiscardReason}. + + + + + + chrisha@chromium.org + catan-team@chromium.org + + The number of tabs discard candidates. This is recorded each time Chrome + needs to urgently discard a tab. + + + + + chrisha@chromium.org + catan-team@chromium.org + + The largest tab's resident set among all the urgent discarding candidates. + + + + + chrisha@chromium.org + catan-team@chromium.org + The resident set of the oldest urgent discarding candidate. + + + + chrisha@chromium.org + catan-team@chromium.org + + An estimate of the total resident set of Chrome when receiving a critical + memory pressure event, in megabytes. Note that the estimate is based on the + most recent data collected by Performance Manager, which are refreshed at a + low frequency (up to 2 minutes). + + + + + chrisha@chromium.org + catan-team@chromium.org + + An estimate of the total resident set of Chrome when receiving a critical + memory pressure event, in percentage of the total amount of RAM. Note that + the estimate is based on the most recent data collected by Performance + Manager, which are refreshed at a low frequency (up to 2 minutes). + + + + + ewannpv@chromium.org + gambard@chromium.org + bling-team@google.com + + The age of a Tab when closed (Time between creation time on the current + device and closure time). + + + + + wnwen@chromium.org + + [Android] Count of upload success/failures by crash type. + {AndroidCrashUploadTypes} + + + + + + + + + + + ppi@chromium.org + + Mobile-specific metric: when a tab that was opened in background (via + "Open link in new tab") is switched to, we record whether the + eagerly loaded tab was still memory resident, or we lost the loaded page due + to memory pressure. + + + + + + Removed 4/2022. Replaced with a metric split by incognito and non-incognito + usage of the modal dialog as experiments showed possible differences between + the groups. The sum of the new .Incognito and .NonIncognito values should be + equivalent to what this value reported. + + ckitagawa@chromium.org + fredmello@chromium.org + + Records whether the "Close all tabs" action was taken when the + close all tabs confirmation dialog was shown through App Menu > Close all + tabs. This is only recorded for Android. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + Records whether the "Close all tabs" action was taken when the + close all tabs confirmation dialog was shown through App Menu > Close all + tabs. This is only recorded for Android for {CloseType} close all tabs menu + actions. + + + + + + + + + rhalavati@chromium.org + chrome-incognito@google.com + + Number of open tabs in each guest window. Recorded once a new tab in a guest + window is opened and adds one to the bucket of number of tabs in that + particular window (it does not count the total number of tabs in all open + guest windows). Please note that this metric double counts the lower + numbers, meaning that if user opens three tabs (without closing any in + between), then buckets 1, 2, and 3 will all be incremented in turn. The + metric also overcounts the tabs that are moved from one window to another as + they are recorded both when they are created in the first window and when + they are added to the second window. + + + + + rhalavati@chromium.org + chrome-incognito@google.com + + Number of open tabs in each incognito window. Recorded once a new tab is + opened in an incognito window and adds one to the bucket of number of tabs + in that particular window (it does not count the total number of tabs in all + open incognito windows). Please note that this metric double counts the + lower numbers, meaning that if user opens three tabs (without closing any in + between), then buckets 1, 2, and 3 will all be incremented in turn. The + metric also overcounts the tabs that are moved from one window to another as + they are recorded both when they are created in the first window and when + they are added to the second window. + + + + + mrefaat@chromium.org + bling-team@google.com + + [iOS] Used on External App launcher Prompt to determine if the user clicked + open or cancel. + + + + + tbergquist@chromium.org + bsep@chromium.org + + Recorded when a new tab is opened. Tracks the method in which the tab was + opened. Does not apply to opening existing links or searches in a new tab, + only to brand new empty tabs. Note: Currently the "Regular menu + option" includes some programmatic actions in addition to user actions. + + + + + carlosk@chromium.org + harringtond@chromium.org + + The time for the new tab page to load. Only recorded on Android. Recorded + only once per tab, i.e. excluding back/forward navigations. + {TabNewTabOnload} + + + + + + + + marq@chromium.org + [iOS] The orientation of the device. Recorded on page load. + + + + dtrainor@chromium.org + + [Android] The number of page loads since the last switch to an evicted tab + on Android. This was sampled each time an evicted tab was reloaded. + + + + + ckitagawa@chromium.org + dtrainor@chromium.org + yfriedman@chromium.org + + [Android] User-perceived load time for a successful tab restore, measured + from the first time the user sees the tab being restored until the load + completes. + + Warning this historgram was expired between M89 and 2022-08-24. + + + + + dfried@chromium.org + collinbaker@chromium.org + + When generating a preview for a background tab, this measures the time + between requesting a video capture and receiving the first usable frame. + + + + + + Removed 12/2022. Not actively used because reported values are 0 most of the + time. It would be more useful to report number of discards per day. + + dfried@chromium.org + collinbaker@chromium.org + + When generating a preview, a tab's contents are captured as an uncompressed + image, compressed in the background, then sent to subscribers on the main + thread. This roughly measures the time between the capture completing and + the compressed image being available on the main thread. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + + Removed 12/2022. Not actively used because reported values are 0 most of the + time. It would be more useful to report number of discards per day. + + dfried@chromium.org + collinbaker@chromium.org + + When generating a preview for a background tab, this measures the time + between receiving a frame and storing it as the current thumbnail. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + dfried@chromium.org + collinbaker@chromium.org + + On tab switch, the visible content area is captured and stored as a + thumbnail. This measures the time between requesting the capture and storing + it as the current thumbnail. + + + + + + Removed 12/2022. Not actively used because reported values are 0 most of the + time. It would be more useful to report number of discards per day. + + dfried@chromium.org + collinbaker@chromium.org + + Measures the total time spent in video capture mode when generating a + preview for a background tab. This is emitted at the end of each capture + session. + + + + + gambard@chromium.org + chromeleon@google.com + + Record the action executed when the user performs a pull down gesture. This + feature is currently iOS only. + + A pull down gesture is an action completed when the user scrolls past the + edge of the web page and continues scrolling in the same direction revealing + a specific UI on the header with multiple actions icons. The user can then + choose an action by scrolling left or right and lift the finger or cancel by + scrolling back up. This is currently an iOS specific feature. + + + + + ajuma@chromium.org + bling-fundamentals@google.com + + [iOS] A count of the number of alive renderers in the current window when a + renderer termination occurs. Expired for M78-94. + + + + + pkl@chromium.org + + [iOS] The number of renderers which are either currently alive or recently + terminated in the current window at the time of a renderer termination. + + + + + ajuma@chromium.org + thegreenfrog@chromium.org + + [iOS] The number of tabs of the current window at the time of a renderer + termination. + + + + + sreejakshetty@chromium.org + chrome-brapp-loading@google.com + + [Desktop] This metric is recorded whenever a tab is restored by the user. + Set to true if the tab is restored from ClosedTabCache and false indicates + the tab is restored normally. This accounts for all types of tab restores + i.e., in a closed window, closed group also on startup tab restores. + + + + + skare@chromium.org + + Records actions taken after one or more screenshots of a page were taken. + This will not be recorded if Chromium is killed before leaving the page. If + several types of action (IPH and Sharing) occur, only the last is recorded. + We think that both IPH and Sharing happening at the same time is rare, so we + do not expect to lose much data this way. + + + + + skare@chromium.org + + Records the number of screenshots taken of a specific page. It is recorded + when the user navigates away from this page or the tab is destroyed. This + will not be recorded if Chromium is killed before leaving the page. + + + + + gambard@chromium.org + olivierrobin@chromium.org + + The state (foreground/background) of a tab when its renderer is terminated. + + + + + ckitagawa@chromium.org + marq@chromium.org + + [Android and iOS] The status of a tab collected each time the user switches + to it on mobile. That does not include tabs being created at the time the + user switches to them, such as NTP or tabs opened to handle intents. + + Warning this historgram was expired between M86 and 2022-08-24. + + + + + dtrainor@chromium.org + + [Android] Age (in ms) when the tab was switched to foreground. + + + + + tedchoc@chromium.org + clank-team@google.com + + [Android] The total count of tabs which were kept while Chrome process is in + the foreground. This is recorded only for Android right before Chrome + process goes into the background. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + The number of tabs groups that are collapsed in all browsers (counting + app-mode windows) when a load completes. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + The number of tabs in a collapsed tab group in all browsers, reported every + 5 minutes. Desktop only. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + The number of (non-zero) tabs groups open in all browsers (counting app-mode + windows) when a load completes. + + + + + yusufo@chromium.org + wychen@chromium.org + + This histogram records the number of sessions of a selected tab group + whenever Chrome comes to the foreground, or switch tab in the tab switcher. + This number is accumulated until that group id is outdated, meaning all the + tabs with that group id has been closed. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + The time a tab group spends in the collapsed state before the group is + either expanded or closed. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + The time a tab group spends in the expanded state before the group is either + collapsed or closed. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + The number of tabs groups with a user-set name or color open in all browsers + (counting app-mode windows) when a load completes. + + + + + yusufo@chromium.org + wychen@chromium.org + + This histogram records the number of tab groups whenever Chrome comes to the + foreground. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + The number of tabs groups open in all browsers (counting app-mode windows) + when a load completes. + + + + + yusufo@chromium.org + wychen@chromium.org + + This histogram records the number of tab groups that have customized group + name whenever Chrome comes to the foreground. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + The number of pinned tabs in the tabstrip in all browser windows, when a + page load completes. + + + + + + Removed 12/2022. Not actively used because reported values are 0 most of the + time. It would be more useful to report number of discards per day. + + dfried@chromium.org + chrome-desktop-ui-sea@google.com + + This histogram records the time the user sees a full hover card with preview + image on tab they then go on to select. The time is counted from the time + the hover card is fully opaque and has landed on the target tab and a valid + preview image for the tab is visible, and may be zero if the user clicks + before the preview appears. This metric is not recorded if previews are + disabled. {TabCountMetrics} + + + + + + + + + + + + + + + Removed 12/2022. Not actively used because reported values are 0 most of the + time. It would be more useful to report number of discards per day. + + dfried@chromium.org + chrome-desktop-ui-sea@google.com + + This histogram records the time the user sees a full hover card on tab they + then go on to select. The time is counted from the time the hover card is + fully opaque and has landed on the target tab, and may be zero if the user + clicks before the card is visible. {TabCountMetrics} + + + + + + + + + + + + + + + Removed 12/2022. Not actively used because reported values are 0 most of the + time. It would be more useful to report number of discards per day. + + dfried@chromium.org + chrome-desktop-ui-sea@google.com + + This histogram records the time the user sees a full hover card with preview + image on any tab. The time is counted from the time the hover card is fully + opaque and has landed on the target tab and a valid preview image for the + tab is visible. This metric is not recorded if previews are disabled, or if + an image is never displayed for the tab. {TabCountMetrics} + + + + + + + + + + + + + + + Removed 12/2022. Not actively used because reported values are 0 most of the + time. It would be more useful to report number of discards per day. + + dfried@chromium.org + chrome-desktop-ui-sea@google.com + + This histogram records the number of tab hover cards seen between the last + active tab change and a tab change by mouse click. {TabCountMetrics} + + + + + + + + + + + + + + + Removed 12/2022. Not actively used because reported values are 0 most of the + time. It would be more useful to report number of discards per day. + + dfried@chromium.org + chrome-desktop-ui-sea@google.com + + This histogram records the time the user sees a full hover card on any tab. + The time is counted from the time the hover card is fully opaque and has + landed on the tab. This metric is not recorded if the card never actually + lands on the tab. {TabCountMetrics} + + + + + + + + + + + + + + + Removed 12/2022. Not actively used because reported values are 0 most of the + time. It would be more useful to report number of discards per day. + + dfried@chromium.org + chrome-desktop-ui-sea@google.com + + This histogram records the number of tab hover card previews seen between + the last active tab change and a tab change by mouse click. + {TabCountMetrics} + + + + + + + + + + + + + + + Removed 12/2022. Not actively used because reported values are 0 most of the + time. It would be more useful to report number of discards per day. + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + This histogram records the time between when a hover card was last hidden to + when it is shown again. Since users can easily hover out of the tab strip we + want to reshow the tab hover card with no delay if we think they + unintentionally exited the tab strip. If the user reenters the tab strip + within X ms we want to reshow the hover card immediately. This histogram + will help to better refine that number. + + + + + chrisha@chromium.org + + The max number of background tabs pending or loading when opening background + tabs. This is recorded at the end of the background tab opening session (the + duration of time from when the browser starts to open background tabs until + the time the browser has finished loading those tabs or otherwise decided to + stop loading them). The metric is not recorded when the session overlaps + with session restore. + + + + + chrisha@chromium.org + + The number of background tabs whose loading was triggered by TabManager + automatically when opening background tabs. This is recorded at the end of + the background tab opening session (the duration of time from when the + browser starts to open background tabs until the time the browser has + finished loading those tabs or otherwise decided to stop loading them). The + metric is not recorded when the session overlaps with session restore. + + + + + chrisha@chromium.org + + Whether the tab load is timed out during background tab opening session (the + duration of time from when the browser starts to open background tabs until + the time the browser has finished loading those tabs or otherwise decided to + stop loading them). The metric is not recorded when the session overlaps + with session restore. + + + + + chrisha@chromium.org + + The number of background tabs whose loading was triggered by user action + when opening background tabs. For example, when the user selects a + background tab and brings it to foreground, that tab will start to load + immediately if not already loading. This is recorded at the end of the + background tab opening session (the duration of time from when the browser + starts to open background tabs until the time the browser has finished + loading those tabs or otherwise decided to stop loading them). The metric is + not recorded when the session overlaps with session restore. + + + + + chrisha@chromium.org + + The max number of background tabs paused to load due to memory pressure when + opening background tabs. This is recorded at the end of the background tab + opening session during a background tab opening session (the duration of + time from when the browser starts to open background tabs until the time the + browser has finished loading those tabs or otherwise decided to stop loading + them). The metric is not recorded when the session overlaps with session + restore. + + + + + chrisha@chromium.org + catan-team@chromium.org + + Cumulative number of tabs discarded due to low memory conditions, recorded + once per tab discard event. For example, a user who had 3 tabs discarded + records a count in the 1 bin, 2 bin and 3 bin. Thus each bin N is the number + of sessions where users experienced N or more tab discard events. + + + + + oysteine@chromium.org + + Recorded for each discarding, indicates whether the discarded tab succeeded + in doing a render process fast shutdown or not. + + + + + oysteine@chromium.org + + Recorded for each discarding, allowing us to know whether the discarded tab + succeeded an unsafe process shutdown (not invoking unload handlers). + + + + + georgesak@chromium.org + + Recorded for each discarding, allowing us to know whether the discarded tab + had a before unload handler or not. + + + + + chrisha@chromium.org + catan-team@chromium.org + + Elapsed time between a tab getting discarded to eventually being reloaded by + the user. + + + + + chrisha@chromium.org + catan-team@chromium.org + + Elapsed time between the time a tab switched from being active to inactive + (that eventually gets discarded) until it gets reloaded. + + + + + chrisha@chromium.org + catan-team@chromium.org + + Cumulative number of discarded tabs that have been reloaded by the user, + recorded once per tab discard event. For example, a user who had 3 tabs + reloaded records a count in the 1 bin, 2 bin and 3 bin. Thus each bin N is + the number of sessions where users experienced N or more tab reload events. + + + + + chrisha@chromium.org + catan-team@chromium.org + + Elapsed time between the last time a discarded tab was reloaded and the time + it gets closed. + + + + + chrisha@chromium.org + + The tab load time of a tab that is switched to during a session restore. Tab + load time is defined as the time between when the user switches to a + backround tab, and the time when that tab finishes loading in the + foreground. If the user switches away before the tab finishes loading, a + metric will not be recorded unless the user switches back, in which case the + tab load time is measured from that point in time. The metric is only + recorded when a tab is switched to from another tab within the same + tabstrip. As a result, the initial forground tab is not included in this + metric since it was not switched to from another tab. The metric is only + recorded when session restore is actively loading tabs, which ends when + either all tabs have been loaded and their pages rendered, or tab loading + needs to be deferred in cases where the system is under memory pressure. The + metric is not recorded when the session overlaps with background tab opening + session. + + + + + chrisha@chromium.org + lpy@chromium.org + + Measures the time duration from when the tab is backgrounded to when its + favicon is updated. The first-time set of favicon will be ignored; this + metric will only be recorded after 5 minutes from main frame navigation + committed and when the tab is in the background. + + + + + chrisha@chromium.org + lpy@chromium.org + + Measures the time duration from when the tab is backgrounded to when a + non-persistent notification is created. Only recorded when the tab is in the + background. + + + + + chrisha@chromium.org + lpy@chromium.org + + Measures the time duration from when the tab is backgrounded to when its + title is updated. The first-time set of title will be ignored; this metric + will only be recorded after 5 minutes from main frame navigation committed + and when the tab is in the background. + + + + + chrisha@chromium.org + + Whether background tab opening session is overlapped with other types of + session, e.g., session restore. Background tab opening session is the + duration of time from when the browser starts to open background tabs until + the time the browser has finished loading those tabs or otherwise decided to + stop loading them. This metric helps to understand how often background tab + opening has overlap with other sessions. + + + + + michaelpg@chromium.org + charleszhao@chromium.org + + Logged when calculating a tab reactivation score for a background tab. Any + value other than "none" may indicate a bug in the inference code, + a problem with the preprocessor configuration shipped with the model, or a + bug in the code that populates the RankerExample for a tab. + + + + + sreejakshetty@chromium.org + chrome-brapp-loading@google.com + + Recorded when the user restores a {RestoreType}. The value is the time + duration between the previous closing of the {RestoreType} and the + {RestoreType} being restored. + + + + + + + + + + alionadangla@chromium.org + lpromero@chromium.org + chromeleon@google.com + + [iOS] Records the number of tabs that are considered active as per the + current tab inactivity threshold. This is recorded at cold launch. + + + + + + + marq@chromium.org + olivierrobin@chromium.org + + [iOS] The number of tabs opened when the app comes out of the background. + + + + + marq@chromium.org + chromeleon@google.com + [Android and iOS] The number of tabs opened at cold launch. + + + + pakzhygitov@google.com + chromeleon@google.com + + [iOS] The number of duplicated tabs restored at cold launch. + + Note: This metric counts each non-unique tab as a duplicate. E.g. if there + are 3 tabs with the same URL, this metric will reprepresnet the amount of + total duplicates (i.e. two duplicates). + + + + + pkotwicz@chromium.org + + Records the "Tab Creation Rank" for the first background tab which + was switched to the foreground. The "Tab Creation Rank" is + relative to other background tabs which were opened from the same URL via + the context menu. The oldest background tab has a rank of zero. + + + + + pkotwicz@chromium.org + + Records the "Reverse Tab Creation Rank" for the first background + background tab which was switched to the foreground. The "Reverse Tab + Creation Rank" is relative to other background tabs which were opened + from the same URL via the context menu. The newest background tab has a + "Reverse Tab Creation Rank" of zero. + + + + + alionadangla@chromium.org + lpromero@chromium.org + chromeleon@google.com + + [iOS] Records the number of tabs that are considered inactive as per the + current tab inactivity threshold. This is recorded at cold launch. + + + + + thegreenfrog@chromium.org + bling-team@google.com + + [iOS] The number of live allocated regular (not incognito) NTP tabs when the + app comes out of a background state. A live NTP is one whose UI classes are + initialized. Prior to M99 this incorrectly counted whichever interface + (regular or incognito) was selected. + + + + + + + chrisha@chromium.org + fdoray@chromium.org + catan-team@chromium.org + + The maximum number of tabs that Chrome displays at the same time over the + course of a day. Desktop only. + + NOTE: This metric is asynchronous, the value reported on a given day + represents the previous day's observations (which can be from a different + build). + + + + + + + + chrisha@chromium.org + fdoray@chromium.org + catan-team@chromium.org + + The maximum number of tabs per window that Chrome displays over the course + of a day. Desktop Only. + + NOTE: This metric is asynchronous, the value reported on a given day + represents the previous day's observations (which can be from a different + build). + + + + + + + + chrisha@chromium.org + fdoray@chromium.org + catan-team@chromium.org + + The maximum number of windows existing at the same time over the course of a + day. Desktop only. + + NOTE: This metric is asynchronous, the value reported on a given day + represents the previous day's observations (which can be from a different + build). + + + + + + gjc@google.com + blink-network-dev@chromium.org + + Whether another tab under the same origin can be found when a tab has + finished a navigation to a new security origin. This can happen when a new + tab is added with a website or the user navigates to another security + origin. The browser will iterate over all the tabs to find if there is a tab + with content under the same origin as the new link. + + + + + gogerald@chromium.org + nasims@google.com + + [iOS] The number of NTP tabs open when the app comes out of the background. + + + + + gogerald@chromium.org + nasims@google.com + [iOS] The number of NTP tabs open at cold launch. + + + + + + chrisha@chromium.org + fdoray@chromium.org + catan-team@chromium.org + + The number of tabs total at resume from sleep/hibernate. This is being + logged on all desktop platforms. + + + + + + alionadangla@chromium.org + lpromero@chromium.org + chromeleon@google.com + + [iOS] Number of tabs older than 21 days. Recorded at cold launch. + + + + + davidjm@chromium.org + dtrainor@chromium.org + nyquist@chromium.org + + CriticalPersistedTabData persists core Tab metadata (tab id, web contents + etc.) across restarts. This metric records if the Tab metadata is + successfully mapped from raw storage into an object which can be consumed in + Tab restoration. + + + + + + + yusufo@chromium.org + nyquist@chromium.org + dtrainor@chromium.org + davidjm@chromium.org + + CriticalPersistedTabData stores data pertinent to the running of the app + such as tab id, parent id, web contents. This data is serialized and stored + across restarts. This records if the deserialization succeeds or fails. + + + + + yusufo@chromium.org + nyquist@chromium.org + dtrainor@chromium.org + davidjm@chromium.org + + CriticalPersistedTabData stores data pertinent to the running of the app + such as tab id, parent id, web contents. This data is serialized and stored + across restarts. This records if the serialization succeeds or fails. + + + + + yusufo@chromium.org + nyquist@chromium.org + dtrainor@chromium.org + davidjm@chromium.org + + FilePersistedTabData storage stores serialized PersistedTabData (metadata + persisted across restarts) in a file. This metric records if a delete was + successful or unsuccessful. + + + + + yusufo@chromium.org + nyquist@chromium.org + dtrainor@chromium.org + davidjm@chromium.org + + FilePersistedTabData storage stores serialized PersistedTabData (metadata + persisted across restarts) in a file. This metric records if a delete + operation was found to have the file not existing. + + + + + davidjm@chromium.org + dtrainor@chromium.org + + Records the number of keys that were identified to be orphaned in the + LevelDB database for PersistedTabData. PersistedTabData stores Tab data to + be persisted across restarts. When a Tab is closed, the data is removed, + however, it is possible for data to become orphaned if the app crashes after + a Tab is closed and before the cleanup is complete. This metric is recorded + in the first callback, OnPerformMaintenance, whereby orphaned keys are + identified and before they are deleted. + + + + + davidjm@chromium.org + dtrainor@chromium.org + nyquist@chromium.org + + PersistedTabData stores Tab related data across restarts in a number of + storage options. This metric stores the time to load Tab data from file + storage and map it into an object available for consumption on Tab + restoration. The only client currently using File storage is + CriticalPersistedTabData which persists core Tab metadata (tab id, web + contents etc.) across restarts. + + + + + yusufo@chromium.org + nyquist@chromium.org + dtrainor@chromium.org + davidjm@chromium.org + + FilePersistedTabData storage stores serialized PersistedTabData (metadata + persisted across restarts) in a file. This metric records how long it took + to load the file in the event the file exists. . + + + + + davidjm@chromium.org + dtrainor@chromium.org + nyquist@chromium.org + + PersistedTabData stores Tab related data across restarts in a number of + storage options. This metric stores the time to map data acquired from raw + file storage into an object which can be consumed on Tab restoration. The + only client currently using File storage is CriticalPersistedTabData which + persists core Tab metadata (tab id, web contents etc.) across restarts. + + + + + yusufo@chromium.org + nyquist@chromium.org + dtrainor@chromium.org + davidjm@chromium.org + + FilePersistedTabData storage stores serialized PersistedTabData (metadata + persisted across restarts) in a file. This metric records if a restore was + successful or unsuccessful. + + + + + yusufo@chromium.org + nyquist@chromium.org + dtrainor@chromium.org + davidjm@chromium.org + + FilePersistedTabData storage stores serialized PersistedTabData (metadata + persisted across restarts) in a file. This metric records if a save was + successful or unsuccessful. + + + + + yusufo@chromium.org + nyquist@chromium.org + dtrainor@chromium.org + davidjm@chromium.org + + First storage request type in FilePersistedTabData. It would be expected + that the first storage request will be a restore (as restoring the active + tab) is pivotal for startup performance. + + + + + yusufo@chromium.org + nyquist@chromium.org + dtrainor@chromium.org + davidjm@chromium.org + + FilePersistedTabData storage stores serialized PersistedTabData (metadata + persisted across restarts) in a file. This metric records how long it took + to save the file in the event of a successful save. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + The number of distinct entries from TabRestoreService of + {RecentlyClosedType} type that were restored in one Recent Tabs page session + on Android. This is recorded when destroying the Recent Tabs page if any + entires of {RecentlyClosedType} type were shown. + + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + The number of distinct entries from TabRestoreService of + {RecentlyClosedType} type shown in one Recent Tabs page session on Android. + This is recorded when destroying the Recent Tabs page. + + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + Recorded once for each tab closure event processed by HistoricalTabSaverImpl + on Android. Enum categories correspond to the the type of closure that was + saved to the native TabRestoreService. Tab for single tab, Group for a + single tab group and Bulk for a combination of tabs and groups or more than + one of either. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + The percentage of entries from TabRestoreService of {RecentlyClosedType} + type that were restored relative to the number shown in one Recent Tabs page + session on Android. This is recorded when destroying the Recent Tabs page if + any entires of {RecentlyClosedType} type were shown. + + + + + + lpromero@google.com + chromeleon@google.com + + Recorded on disabling Inactive Tabs (for example in case of an unlaunch). + The number of tabs rescued from the orphan inactive tabs browser after the + Inactive Tabs experimental flag has been disabled. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + [Android] TabState restoration may fail resulting in fallback restoration + from the TabStateList or aborting restoration altogether. TabState + restoration occurs on startup when restoring tab state from disk or when + merging multi-instance modes together. This histogram is emitted when + TabState restoration fails to indicate the cause of the failure. + + + + + sonnyrao@chromium.org + jamescook@chromium.org + + Counts of events from the style of sad tab which has a feedback button as + its primary action. Currently, events include being displayed (actually + visible in a window), and the actions a user can take on the page. + + + + + sonnyrao@chromium.org + jamescook@chromium.org + + Counts of events from the style of sad tab which has a reload button as its + primary action. Compare to Tabs.SadTab.Feedback.Event. + + + + + sonnyrao@chromium.org + jamescook@chromium.org + + The number of times a tab was reloaded because it was killed (usually by the + kernel OOM killer) and the user clicked on it later, recorded once per + reload event. For example, a user who clicks on 3 discarded tabs will record + a count in the 1 bin, 2 bin, and 3 bin. Thus each bin N is the number of + sessions where users experienced N or more reload events. Compare to + Tabs.Discard.DiscardCount. + + + + + davidjm@chromium.org + nyquist@chromium.org + dtrainor@chromium.org + yusufo@chromium.org + + Records load time of a Tab using {SavedTabMethod} storage and whether the + {SavedTabLoadResult} + + + + + + + + + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + This histogram records the number of tabs that are 'scrubbed' by key press + during a given interval of time (i.e. ctrl+tab navigation). For this metric, + a tab is considered 'scrubbed' if it was active for less than or equal to a + given amount of time. + + + + + corising@chromium.org + chrome-desktop-ui-sea@google.com + + This histogram records the number of tabs that are 'scrubbed' by mouse press + during a given interval of time. For this metric, a tab is considered + 'scrubbed' if it was active for less than or equal to a given amount of + time. + + + + + afakhry@chromium.org + tclaiborne@chromium.org + + The distance a user multi-finger scrubbed to change tabs. Always positive + (ignores left / right). + + + + + afakhry@chromium.org + tclaiborne@chromium.org + + The duration a user spent doing multi-finger scrubbing to change tabs before + a different tab than the currently active one was actually activated. + + + + + yusufo@chromium.org + ayman@chromium.org + davidjm@chromium.org + + Records if we find a BuyableProductAnnotation in the response from our + endpoint which provides page annotations to enrich the user experience. The + endpoint is called for every Tab when we enter the Tab grid switcher and is + cached with a time to live of 1 hour. + + + + + davidjm@chromium.org + nyquist@chromium.org + Records the number of {TabType} Tabs loaded on startup. + + + + + + + + kouhei@chromium.org + tzik@chromium.org + + Recorded once per tab activation. The number of tabs that were activated + while the tab was inactive. + + This metric is to be removed after M46 hits stable. We don't expect this + metric to change over release, so we will remove this once we have the + numbers from stable. + + + + + kouhei@chromium.org + tzik@chromium.org + + Number of tabs between the previously active tab and the new active tab. + + This metric is to be removed after M46 hits stable. We don't expect this + metric to change over release, so we will remove this once we have the + numbers from stable. + + + + + yusufo@chromium.org + davidjm@chromium.org + meiliang@chromium.org + + The user is presented with recommendations on which Tabs they could take the + suggested action. The user has the option to: 1) Remove a Tab from the + recommendation 2) Add a Tab which wasn't in the recommendation to the + recommendation. + + This metric records the sum of the number of times the user does 1) or 2) + and is a measure of how useful the recommendation is. This metric is + recorded after the user accepts a recommendation - potentially with edits by + performing 1) or 2). + + Note: Adding and removing the same Tab, or vice versa, would be counted as + 0. {TabSuggestionType} + + + + + + + + + + + markchang@google.com + + The number of tabs open in the active window when a load completes. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + The number of tabs in the current active group when a load completes. + Records 0 if the active tab is not in a group. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + The number of tabs across all browsers (counting app-mode windows) with the + same host piece when a load completes. {TotalTabCountBucket} is inclusive + and describes the total number of tabs when logging. + + + + + + + + + + + + + + + + + + + + + + mpearson@chromium.org + chrome-desktop-ui-sea@google.com + sbirch@google.com + + The number of tabs open in all browsers (counting app-mode windows) when a + load completes. + + This is basically the average number of tabs over time. + + + + + mpearson@chromium.org + chrome-desktop-ui-sea@google.com + + The number of tabs open per window (counting app-mode windows) when a load + completes. + + This value will be recorded multiple times per load if more than one window + is open. + + + + + + + chrisha@chromium.org + fdoray@chromium.org + catan-team@chromium.org + + Counts the number of tabs across all windows, reported every 5 minutes. + Desktop only. + + + + + + yusufo@chromium.org + + How many tabs a user moved forward or backward in the Android tab switcher. + {TabOffsetOfSwitchComponentList} + + Logged by the Android tab switcher when a user switches tabs (other than by + opening a new tab). If the user switches to an earlier tab in the stack, we + log a positive offset value indicating how many tabs back they moved. If the + user switches to a later tab, we log a negative offset value. If the user + stays on the same tab, we log 0. If the user switches to a tab in a + different stack (i.e. they switch from normal to incognito or vice-versa), + we don't log a value. + + + + + + + + + davidjm@chromium.org + dtrainor@chromium.org + nyquist@chromium.org + + CriticalPersistedTabData is a schema based Tab restoration system which + persists Tab metadata such as web contents and time last accessed across + restarts. CriticalPersistedTabData will replace legacy hand-written + TabState. + + This metric records how many Tabs are restored using + CriticalPersistedTabData, TabState, are re-created, skipped or failed to be + restored. As we migrate from TabState to CriticalPersistedTabData it is + imperative we can compare the success rate of each system vs. how many Tabs + are re-created or failed to be restored. This metric is emitted once for + each Tab restoration on startup. + + + + + tluk@chromium.org + robliao@chromium.org + + Tab Search is a feature that allows users to better search for and switch to + their desired tabs. The Tab Search UI is shown in a bubble anchored to an + element of the UI in the browser window. + + The bubble is dismissed when it loses focus or the escape key is pressed. + This metric tracks if the UI bubble was dismissed as a result of an action + taken from within the UI (such as switching to an open tab) or dismissed + without direct interaction with the Tab Search UI. + + + + + kerenzhu@chromium.org + romanarora@chromium.org + yuhengh@chromium.org + tluk@chromium.org + robliao@chromium.org + + The time taken to switch tab. This is measured as the time from when the + user clicks a tab in Tab Search to when the browser finishes switching tab. + + + + + kerenzhu@chromium.org + romanarora@chromium.org + yuhengh@chromium.org + tluk@chromium.org + robliao@chromium.org + + Records whether there's a pending Tabs.TabSearch.Mojo.SwitchToTab + measurement when a new measurement is requested. + + + + + kerenzhu@chromium.org + romanarora@chromium.org + yuhengh@chromium.org + tluk@chromium.org + robliao@chromium.org + + The time taken for Tab Search to update its tab list when the browser's tab + strip model changes. This is measured as the time from when the browser + emits a notification to when the WebUI updates its state. + + + + + kerenzhu@chromium.org + romanarora@chromium.org + yuhengh@chromium.org + tluk@chromium.org + robliao@chromium.org + + Records whether there's a pending Tabs.TabSearch.Mojo.TabUpdated measurement + when a new measurement is requested. + + + + + tluk@chromium.org + robliao@chromium.org + + Tab Search is a feature that allows users to better search their browsers + for their desired tabs and close any currently open tabs. This records the + number of tabs closed from a single instance of the UI (the number of tabs + closed from within Tab Search in the time between when the UI is open and + when it is closed). + + + + + tluk@chromium.org + robliao@chromium.org + + Tab Search is a feature that allows users to better search their browsers + for their desired tabs. It can be opened and closed. This records the number + of tabs there are in the payload Tab Search is sent when it is first opened. + + + + + tluk@chromium.org + robliao@chromium.org + + Tab Search is a feature that allows users to better search their browsers + for their desired tabs. It can be opened and closed. This records the number + of windows there are in the payload Tab Search is sent when it is first + opened. + + + + + tluk@chromium.org + robliao@chromium.org + + Tab Search is a feature that allows users to better search for and switch to + their desired tabs. The Tab Search UI is shown in a bubble anchored to an + element of the UI in the browser window. + + The bubble can be invoked via a number of different means including mouse + click, keyboard navigation, keyboard shortcut or touch gesture. This metric + tracks the kind of action the user took to invoke the Tab Search bubble UI. + + + + + tluk@chromium.org + robliao@chromium.org + yuhengh@chromium.org + romanarora@chromium.org + + Tab Search is a feature that allows users to better search for and switch to + their desired tabs. The Tab Search UI is shown in a bubble anchored to an + element of the UI in the browser window. + + When the WebUIController is first created it waits for the WebUI code in the + renderer process to request the creation of the TabSearchPageHandler. This + metric tracks the time between when the WebUIController was constructed to + when the TabSearchPageHandler begins construction. This metric is emitted + right before the TabSearchPageHandler's constructor is called. + + + + + romanarora@chromium.org + robliao@chromium.org + tluk@chromium.org + yuhengh@chromium.org + + Tab Search is a feature that allows users to better search for and switch to + their desired tabs. The Tab Search UI displays both open and recently closed + tabs under different list sections. The recently closed section can be + expanded or collapsed by the user by clicking a button. + + This metric tracks the recently closed section being expandeded or collapsed + via the toggle button. + + + + + romanarora@chromium.org + robliao@chromium.org + tluk@chromium.org + yuhengh@chromium.org + + Tab Search is a feature that allows users to better search for and switch to + their desired tabs. The Tab Search UI displays both open and recently closed + tabs under different list sections. The recently closed section can be + expanded or collapsed by the user by clicking a button. + + This metric tracks if the recently closed section is in an expanded or + collapsed state at the time of opening the Tab Search dialog. + + + + + tluk@chromium.org + robliao@chromium.org + yuhengh@chromium.org + romanarora@chromium.org + + Tab Search is a feature that allows users to better search their browsers + for their desired tabs and close any currently open tabs. + + This records the index at which a {Action} has been performed on a tab in + Tab Search's tab list in a {State} state. + + + + + + + + + + + + + + tluk@chromium.org + robliao@chromium.org + + The amount of time between the RenderFrameHost StartProvisionalLoad event + and the RenderFrameHost DocumentOnLoadCompleted event for the Tab Search + WebUI page. + + + + + tluk@chromium.org + robliao@chromium.org + + The amount of time between the RenderFrameHost StartProvisionalLoad and + DidFinishDocumentLoad events for the Tab Search WebUI page. + + + + + tluk@chromium.org + chrome-cros@chromium.org + + Tab Search is a feature that allows users to better search their browsers + for their desired tabs or recently closed tabs and tab groups. This records + whether the user used Tab Search to open a recently closed {Item} from a + filtered search results list or the default unfiltered list. + + + + + + + + + yuhengh@chromium.org + chrome-cros@chromium.org + + The time taken to run the search algorithm. The algorithm takes an + unfiltered list of items and user search query as inputs, then generate a + list of filtered items as output. Recorded after the measurement ends. + + + + + tluk@chromium.org + robliao@chromium.org + yuhengh@chromium.org + + The time taken for the WebUI in the renderer to receive the full list of + tabs for the current user profile. This is measured as the time from when + the data was first requested by the WebUI to when the data was received by + the WebUI. + + + + + kerenzhu@chromium.org + tluk@chromium.org + robliao@chromium.org + yuhengh@chromium.org + kerenzhu@chromium.org + + The time taken for the WebUI in the renderer to receive the full list of + tabs for the current user profile. This is measured as the time from when + the data was first requested by the WebUI to when the data was received by + the WebUI. + + This metric is recorded by MetricsReporter. + + + + + kerenzhu@chromium.org + tluk@chromium.org + robliao@chromium.org + yuhengh@chromium.org + kerenzhu@chromium.org + + Records whether there's a pending Tabs.TabSearch.WebUI.TabListDataReceived2 + measurement when a new measurement is requested. + + + + + tluk@chromium.org + robliao@chromium.org + + Tab Search is a feature that allows users to better search their browsers + for and switch to their desired tabs. This records whether the user used Tab + Search to switch to a tab from a filtered search results list or the default + unfiltered list. + + + + + yuhengh@chromium.org + chrome-cros@chromium.org + + The time taken between the tab search bubble is open and user switches to a + tab or opens a recently closed tab, with or without search query. Recorded + after the measurement ends. + + + + + + + + + + + + + tluk@chromium.org + robliao@chromium.org + + Tab Search is a feature that allows users to better search their browsers + for their desired tabs. It can be opened and closed. This records the amount + of time between when a Tab Search bubble is opened and when it is closed. It + does so by recording the difference in time between when the the hosting + WebUIBubbleDialogView's Widget is first created and when the widget is + destroyed. + + The Tab Search UI is a bubble anchored to an element within a browser window + and is closed if the user switches to a tab, presses the escape key or + performs an action to return focus to the hosting window. The Tab Search UI + bubble will also close if the hosting browser window is closed or crashes. + + Users may leave the bubble open for long periods of time without directly + interacting with the UI which could result in a long tail of displayed + durations. + + + + + tluk@chromium.org + robliao@chromium.org + yuhengh@chromium.org + romanarora@chromium.org + + Tab Search is a feature that allows users to better search for and switch to + their desired tabs. The Tab Search UI is shown in a bubble anchored to an + element of the UI in the browser window. + + This tracks the time between when the Tab Search WebUI bubble widget is + first created and when it is first shown to users. This metric is only + logged if a previously cached WebView is used for the construction of the + bubble widget. This metric is emitted when the bubble window is first + revealed. + + + + + tluk@chromium.org + robliao@chromium.org + yuhengh@chromium.org + romanarora@chromium.org + + Tab Search is a feature that allows users to better search for and switch to + their desired tabs. The Tab Search UI is shown in a bubble anchored to an + element of the UI in the browser window. + + This tracks the time between when the Tab Search WebUI bubble widget is + first created and when it is first shown to users. This metric is only + logged if a new WebView was created for the construction of the bubble + widget. This metric is emitted when the bubble window is first revealed. + + + + + sebmarchand@chromium.org + + Counts how often tab stats daily interval events were fired. + + + + + yusufo@chromium.org + nyquist@chromium.org + dtrainor@chromium.org + davidjm@chromium.org + + Time taken to load a TabState file in the event that it exists. + + + + + yusufo@chromium.org + nyquist@chromium.org + dtrainor@chromium.org + davidjm@chromium.org + + Time taken to save a TabState file in the event of a successful save. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + [Android] boolean value indicating whether the invariant that tab groups are + contiguous holds. Recorded on cold start after all tabs are restored. + + + + + ckitagawa@chromium.org + fredmello@chromium.org + + [Android] boolean value indicating whether a tab that was added to the + TabModel would have been added at the correct position if + TabGroupModelFilter had not interved to move it so it respected group + position. Recorded each time a tab is added to the TabModel. + + + + + pakzhygitov@google.com + chromeleon@google.com + + [iOS] The age of tabs opened at cold launch. The age of a tab is the time + elapsed since its creation. + + + + + pakzhygitov@google.com + chromeleon@google.com + + [iOS] The number of old/unused tabs opened at cold launch. Inactive tab is a + tab that has been not interacted with for more than 7 days. + + + + + + + fdoray@chromium.org + catan-team@chromium.org + + Counts the number of Chrome windows, reported every 5 minutes. Desktop only. + + + + + + collinbaker@chromium.org + chrome-desktop-ui-sea@google.com + + The width of each open browser window, in DIPs, reported every 5 minutes. + Desktop only. + + + + + dpenning@chromium.org + tbergquist@chromium.org + + [Desktop] The size in pixels of the {TabActiveState} tab logged when a tab + is added. Used to collect size data for scrolling tabs. + + + + + + + Removed 01/2023. Feature deprecated and code deleted. + + yusufo@chromium.org + wychen@chromium.org + + When conditional tab strip shows, records which kind of intentional + tab-related action triggered it. + + + + + yuhengh@chromium.org + tluk@chromium.org + romanarora@chromium.org + + Tab activation triggered by click or touch on a tab. This is used to measure + tab activation count of tab strip vs WebUI tab strip. + + + + + + + + + yusufo@chromium.org + wychen@chromium.org + + This histogram records the number of tabs within the group during page load. + + If the loading happens in a tab that does not belong to a group, we log 0. + Else, we log a positive number >= 2. + + + + + robliao@chromium.org + chrome-desktop-ui-sea@google.com + + The amount of time from receiving a new tab button pressed to creating the + elements necessary to represent a new tab. + + + + + dpenning@chromium.org + chrome-desktop-ui-sea@google.com + + The amount of time from cursor entering the tabstrip to first click on a tab + to switch. + + This will exclude some kinds of switching (hotkeys, between windows) where + it would be difficult to define a start time. Entering the tabstrip is an + approximation which will vary between users, but should still be useful for + A/B comparison. + + + + + + Removed 01/2023. Feature deprecated and code deleted. + + yusufo@chromium.org + wychen@chromium.org + + A tab strip session starts when the last time Chrome comes to the foreground + was more than an hour ago. At the beginning of a tab strip session, records + the user status of conditional tab strip feature in the last tab strip + session. + + + + + + diff --git a/histograms/metadata/translate/DIR_METADATA b/histograms/metadata/translate/DIR_METADATA new file mode 100644 index 000000000000..6734540c855d --- /dev/null +++ b/histograms/metadata/translate/DIR_METADATA @@ -0,0 +1,11 @@ +# Metadata information for this directory. +# +# For more information on DIR_METADATA files, see: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md +# +# For the schema of this file, see Metadata message: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto + +monorail { + component: "UI>Browser>Language>Translate" +} \ No newline at end of file diff --git a/histograms/metadata/translate/OWNERS b/histograms/metadata/translate/OWNERS new file mode 100644 index 000000000000..982f0d131f41 --- /dev/null +++ b/histograms/metadata/translate/OWNERS @@ -0,0 +1,8 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +perrier@chromium.org +curranmax@chromium.org +tbansal@chromium.org +toyoshim@chromium.org diff --git a/histograms/metadata/translate/histograms.xml b/histograms/metadata/translate/histograms.xml new file mode 100644 index 000000000000..41fbec0e86aa --- /dev/null +++ b/histograms/metadata/translate/histograms.xml @@ -0,0 +1,1075 @@ + + + + + + + + + + megjablon@google.com + chrome-language@google.com + + The number of times the always translate option was selected in the + translate infobar. + + + + + megjablon@google.com + chrome-language@google.com + + The language codes of the languages in the user's always translate language + list. If the user has multiple languages in this list, then a separate entry + is recorded for each language. + + This histogram is recorded once per profile initiation. Incognito profiles + are ignored. + + + + + megjablon@google.com + chrome-language@google.com + + The number of languages in the user's always translate language list. + + This histogram is recorded once per profile initiation. Incognito profiles + are ignored. + + + + + megjablon@google.com + chrome-language@google.com + + The language code of the languages in the user's never translate language + list. If the user has multiple languages in this list, then a separate entry + is recorded for each language. + + This histogram is recorded once per profile initiation. Incognito profiles + are ignored. + + + + + megjablon@google.com + chrome-language@google.com + + The number of languages in the user's never translate language list. + + This histogram is recorded once per profile initiation. Incognito profiles + are ignored. + + + + + megjablon@google.com + chrome-language@google.com + + The number of sites in the user's never translate site list. + + This histogram is recorded once per profile initiation. Incognito profiles + are ignored. + + + + + groby@google.com + chrome-language@google.com + Tracks UI events related to the Full Page Translate bubble. + + + + sclittle@google.com + megjablon@google.com + chrome-language@google.com + + The time spent capturing plain text from the DOM. Pre sub frame translation + support (this includes before M83), this is reported by + ChromeRenderViewObserver. If sub frame translation is enabled, this is + captured in the browser process and reported by ContentTranslateDriver. + + + + + megjablon@google.com + chrome-language@google.com + + Language of the input page detected by CLD3. This information is logged on + every page load. + + + + + megjablon@google.com + chrome-language@google.com + + Percentage of the bytes that are associated with the most popular language + on the input page. Only recorded if the detection returned a + "known" result. + + + + + mcrouse@chromium.org + chrome-language@google.com + + The time to evaluate the CLD3 language detection model for the top language. + This information is logged on every request. + + + + + megjablon@google.com + chrome-language@google.com + Various user actions performed in the translate infobar. + + + + megjablon@google.com + chrome-language@google.com + + Records the hashcode of the source language when always translate this + language option is clicked in the menu. + + + + + megjablon@google.com + chrome-language@google.com + + Records the hashcode of the language clicked on the more languages menu. + + + + + megjablon@google.com + chrome-language@google.com + + Records the hashcode of the source language when never translate this + language option is clicked in the menu. + + + + + megjablon@google.com + chrome-language@google.com + + Records the hashcode of the language clicked on the menu to indicate the + page is not in the selected language. + + + + + megjablon@google.com + chrome-language@google.com + + Records the hashcode of the language clicked on the infobar. + + + + + megjablon@google.com + chrome-language@google.com + + The number of times the "Nope" (don't translate) or the infobar's + X button was clicked in the translate infobar. + + + + + megjablon@google.com + chrome-language@google.com + + The events (shown, saved, cancelled) happening in the Explicit Language Ask + prompt. + + + + + megjablon@google.com + chrome-language@google.com + + The languages that were added to the Accept Languages list from the Explicit + Language Ask prompt. + + + + + megjablon@google.com + chrome-language@google.com + + The languages that were removed from the Accept Languages list from the + Explicit Language Ask prompt. + + + + + sclittle@google.com + megjablon@google.com + chrome-language@google.com + + For Google navigations, the hrefTranslate hint may trigger a translation + automatically. If the hint is present on a Google navigation, record which + blocklists came into play when filtering the translation decision according + to user prefs. Note that this doesn't necessarily mean that translation + didn't happen - it's possible that the hrefTranslate translation overrode + one or more of these blocklists depending on which features are active. + + + + + sclittle@google.com + megjablon@google.com + chrome-language@google.com + + For Google navigations, the hrefTranslate hint may trigger a translation + automatically. If the hint is present on a Google navigation, record whether + or not automatic translation happened. If automatic translation was already + going to happen, then we use the auto translate target language. Also record + if this caused the target language to be different than the hrefTranslate + target language. + + + + + megjablon@google.com + chrome-language@google.com + + The number of times the translate infobar was shown in the old translate UI + on Android. Only true is recorded. + + + + + megjablon@google.com + chrome-language@google.com + + The reason why Chrome decided to perform the next action (e.g., to show + infobar, to translate a page without any prompting, and so on) when Chrome + Translate is ready to translate a page. + + + + + sclittle@chromium.org + megjablon@chromium.org + chrome-language@google.com + + The number of characters of page content used for language detection. + + + + + megjablon@google.com + chrome-language@google.com + + Measures whether the provided HTML language (i.e. the page lang attribute if + it exists, otherwise the header Content-Language value) matches the language + determined by the model. Beyond directly matching or mismatching the HTML + language, the model can complement the HTML language. For example, suppose + the HTML language is 'zh' (general Chinese), a language code that the + Translate server does not support. In this case, the model can detect a + subcode like '-TW' or '-CN', resulting in language codes 'zh-TW' and + 'zh-CN', which the Translate server supports. This is referred to as + "complementing a language subcode". + + This histogram is recorded every time language detection is run. This + includes for each page load, and for sub frame detection. + + + + + rajendrant@chromium.org + mcrouse@chromium.org + chrome-language@google.com + + Records the time taken for the TFLite language detection model to determine + page language. Unlike Translate.LanguageDeterminedDuration, this metric does + not record the duration for CDL3 language detection when the TFLite model is + unavailable. + + + + + andrewhayden@chromium.org + chrome-language@google.com + + For each page load, records whether language detection occurs on time or + gets deferred. If deferred language detection later completes, this is also + recorded. This allows measuring the UX impact of using a non-static CLD data + source. + + + + + sclittle@chromium.org + megjablon@chromium.org + chrome-language@google.com + + Records the time from when a navigation finishes to when its page language + is determined. This includes the time to load the frame(s), capturing the + text content of the page, and running language classification on that + content. + + + + + cuianthony@google.com + chrome-language@google.com + + Logs the availability of manual translate from the context (Desktop) menu + and app (Mobile) menu. Emitted when the menu is shown. + + + + + cuianthony@google.com + chrome-language@google.com + + If manual translate is not available on the context (Desktop) or app + (Mobile) menu for the current page, logs ALL the reasons why. Emitted when + the menu is shown. More than one bucket may be logged per menu open. This + allows us to investigate the primary reasons the user isn't seeing the menu + item and make the manual translate UI more visible to users. + + + + + megjablon@google.com + chrome-language@google.com + + The number of times the source language in the translate infobar has been + changed. + + + + + megjablon@google.com + chrome-language@google.com + + The number of times the target language in the translate infobar has been + changed. + + + + + megjablon@google.com + chrome-language@google.com + + The number of times the never translate option was selected in the translate + infobar. + + + + + megjablon@google.com + chrome-language@google.com + + The number of times the never translate site was selected in the translate + infobar. + + + + + megjablon@google.com + chrome-language@google.com + + Records the hashcode of the source language at the end of the page load. + This may differ from the initial source language determined by Chrome, + because the user can manually change the source language. This value is + logged once the page load is completed or the first time Chrome is + backgrounded during the course of the page load, whichever comes first. + + + + + megjablon@google.com + chrome-language@google.com + + The state of Translate at the end of a page load. The state includes whether + the page is translated, and what translate is shown (no UI, omnibox icon + only, and full UI shown). This value is logged once the page load is + completed or the first time Chrome is backgrounded during the course of the + page load, whichever comes first. + + + + + megjablon@google.com + chrome-language@google.com + + Records the hashcode of the target language at the end of the page load. + This may differ from the initial target language determined by Chrome, + because the user can manually change the target language. This value is + logged once the page load is completed or the first time Chrome is + backgrounded during the course of the page load, whichever comes first. + + + + + megjablon@google.com + chrome-language@google.com + + Logs the highest priority reason for the initial state of Translate for the + page load. Only logs for navigations from Google with an href translate + attribute. This value is logged at the end of the page load or the first + time Chrome is backgrounded during the page load, whichever comes first. + + + + + megjablon@google.com + chrome-language@google.com + + Records the hashcode of the source language at the beginning of the page + load. The initial source language is automatically determined by Chrome. + This value is logged once the page load is completed or the first time + Chrome is backgrounded during the course of the page load, whichever comes + first. + + + + + megjablon@google.com + chrome-language@google.com + + The state of Translate at the start of a page load. The state includes + whether the page is translated, and what translate is shown (no UI, omnibox + icon only, and full UI shown). This value is logged once the page load is + completed or the first time Chrome is backgrounded during the course of the + page load, whichever comes first. + + + + + megjablon@google.com + chrome-language@google.com + + Records the hashcode of the target language at the beginning of the page + load. The initial target language is automatically determined by Chrome. + This value is logged once the page load is completed or the first time + Chrome is backgrounded during the course of the page load, whichever comes + first. + + + + + megjablon@google.com + chrome-language@google.com + + Records the origin of the target language at the beginning of the page load. + This is the reason why Chrome decided to use the initial target language. + This value is logged once the page load is completed or the first time + Chrome is backgrounded during the course of the page load, whichever comes + first. + + + + + megjablon@google.com + chrome-language@google.com + + Whether or not the initial source language of this page load is in the + user's never translate language list. By default the UI language, languages + the user has translated to, and languages added to the content languages are + on the never tranlsate list. However, users can add or remove languages + manually as well. + + This value is logged once the page load is completed or the first time + Chrome is backgrounded during the course of the page load, whichever comes + first. + + + + + megjablon@google.com + chrome-language@google.com + + The number of translations that are reverted over the course of a page load. + This value is logged once the page load is completed or the first time + Chrome is backgrounded during the course of the page load, whichever comes + first. + + + + + megjablon@google.com + chrome-language@google.com + + The number of times the user changed the target language over the course of + the page load. This value is logged once the page load is completed or the + first time Chrome is backgrounded during the course of the page load, + whichever comes first. + + + + + megjablon@google.com + chrome-language@google.com + + The number of translations performed over the course of a page load. This + value is logged once the page load is completed or the first time Chrome is + backgrounded during the course of the page load, whichever comes first. + + + + + megjablon@google.com + chrome-language@google.com + + Logs the decision (show UI, don't show UI, or not queried) of the Translate + Ranker for a page load. This value is logged once the page load is completed + or the first time that Chrome is backgrounded during the course of the page + load, whichever comes first. + + + + + megjablon@google.com + chrome-language@google.com + + Logs the time it takes for the Translate Ranker to calculate whether or not + the Translate UI should be shown. This value is only logged on pages loads + where the Translate Ranker is queried. On these page loads, the value is + logged once the page load is completed or the first time that Chrome is + backgrounded during the course of the page load, whichever comes first. + + + + + megjablon@google.com + chrome-language@google.com + + Logs the version of the Translate Ranker used for a page load. This value is + logged once the page load is completed or the first time that Chrome is + backgrounded during the course of the page load, whichever comes first. + + + + + megjablon@google.com + chrome-language@google.com + + Logs the highest priority reason for the initial state of Translate for the + page load. This value is logged at the end of the page load or the first + time Chrome is backgrounded during the page load, whichever comes first. + + + + + megjablon@google.com + chrome-language@google.com + Counts translation target page schemes. + + + + cuianthony@google.com + chrome-language@google.com + Tracks UI events related to the Partial Translate bubble. + + + + basiaz@google.com + cuianthony@google.com + + For each HTTP response for the Partial Translation request to Contextual + Search Plugin, reports the associated HTTP code. + + + + + cuianthony@google.com + chrome-language@google.com + + Logs the time from a Partial Translate being requested to the corresponding + Partial Translate response being received. This is recorded when a Partial + Translation is completed. + + + + + cuianthony@google.com + chrome-language@google.com + + Logs the length in characters of a Partial Translate text selection before + truncation. This is recorded before a Partial Translation is started. + + + + + cuianthony@google.com + chrome-language@google.com + + Logs the source language used for a Partial Translate request. This is + recorded when a Partial Translation is started. + + + + + cuianthony@google.com + chrome-language@google.com + + Logs the target language used for a Partial Translate request. This is + recorded when a Partial Translation is started. + + + + + cuianthony@google.com + chrome-language@google.com + + Logs the length in characters of the translated text from a Partial + Translation. This is recorded when a Partial Translation is completed and + only when it is successful. Nothing is recorded on error. + + + + + cuianthony@google.com + chrome-language@google.com + + Logs the completion status of a Partial Translation. This is recorded when a + Partial Translation is completed. + + + + + + Logged on profile open, including for system and ash-internal profiles that + don't use the Translate feature. Replaced in M-110 by the histogram + Translate.Ranker.Model.Status2, which is similar but only emitted on regular + and guest profiles. + + megjablon@google.com + chrome-language@google.com + + Tracks the outcome of attempts to download a Translate Ranker Model. + + + + + megjablon@google.com + chrome-language@google.com + + Tracks the outcome of attempts to download a Translate Ranker Model. Only + recorded for profiles where Translate is available (not recorded in System + profiles nor Ash non-user profiles). + + + + + megjablon@google.com + chrome-language@google.com + + Whether the TranslateRanker accepts or denies to show the translation + prompt. + + + + + megjablon@google.com + chrome-language@google.com + + The number of times the show original button was clicked in the translate + infobar. + + + + + megjablon@google.com + chrome-language@google.com + + Chrome Translate shows an error UI (infobar or bubble) when an error happens + on translation and the UI message depends on what kind of error happens. + This metric counts how often each error message is shown. + + + + + megjablon@google.com + chrome-language@google.com + + This metrics is logged whenever a page is loaded. The logged value is + "Matched" when the CLD-detected language differs from the page + language code, and the two languages are such similar languages. In that + case, Chrome ignore the CLD-determined language and instead uses the page + language code. The page language code is decided by Content-Language and + HTML lang attribute. + + + + + megjablon@google.com + chrome-language@google.com + + The number of requests sent to the Translate server, grouped by source + language. + + + + + megjablon@google.com + chrome-language@google.com + + The number of requests sent to the Translate server, grouped by target + language. + + + + + + Replaced by Translate.PageLoad.InitialTargetLanguage.Origin in M114. + + megjablon@google.com + chrome-language@google.com + + Where the target language was determined from. Can be the most recent target + language, from the language model, the UI language, the user's accept + languages, or default to English. + + + + + megjablon@google.com + chrome-language@google.com + + The number of times the translate button was clicked in the translate + infobar. + + + + + sclittle@google.com + megjablon@google.com + chrome-language@google.com + + The number of times the translate button was clicked in the translate + infobar for a page that is likely an AMP Cache URL. + + + + + jds@chromium.org + chrome-language@google.com + + Android: Records the result of assembling translate data to provide to + Assistant via AssistContent. See TranslateAssistContentResult in enums.xml + for possible values. + + + + + sclittle@google.com + megjablon@google.com + chrome-language@google.com + + The number of frames translated for a translated page (including the main + frame). This is recorded when sub frame translation is enabled. + + + + + sclittle@google.com + megjablon@google.com + chrome-language@google.com + + The error type for a failed sub frame translation (where the main frame was + successfully translated). This is recorded when sub frame translation is + enabled. + + + + + sclittle@google.com + megjablon@google.com + chrome-language@google.com + + The percentage of sub frames that translated successfully for a translated + page (where the main frame was successfully translated). This is recorded + when sub frame translation is enabled. + + + + + jds@chromium.org + chrome-language@google.com + + Android: Records the result of processing a TRANSLATE_TAB intent. See + TranslateTabIntentResult in enums.xml for possible values. + + This is recorded once for each TRANSLATE_TAB intent received. + + + + + megjablon@chromium.org + chrome-language@google.com + + The number of characters of page content extracted at language detection + time, recorded when a translation successfully finishes. This can be used as + a rough estimate for the amount of content translated. + + + + + megjablon@google.com + chrome-language@google.com + + Records the source language used for a translation. This is the language + being translated from. + + This is recorded when a translation (both manual and automatic) is started. + + + + + megjablon@google.com + chrome-language@google.com + + Records the final status of a translation. We count a translation as + successful if the user keeps the translation until the end of the page load. + Otherwise we record what followed the translation (for example the user + reverted the translation, or the user requested a different translation). + + For each translation one sample is recorded once the status of the + translation is determined. This includes when the page load is finished, the + user reverts the translation, a new translation is requested, or the + translation fails. Note that we consider the user backgrounding Chrome as + the page load finishing because we can lose any stored metrics if the user + kills Chrome while it is backgrounded. + + + + + megjablon@google.com + chrome-language@google.com + + Records the target language used for a translation. This is the language + being translated to. + + This is recorded when a translation (both manual and automatic) is started. + + + + + megjablon@google.com + chrome-language@google.com + + Records the origin of the target language used for a translation. + + This is recorded when a translation (both manual and automatic) is started. + + + + + megjablon@google.com + chrome-language@google.com + + Records the time from injecting the translation scripts to being ready to + perform translation. + + This is recorded when a translation (both manual and automatic) is started. + + + + + megjablon@google.com + chrome-language@google.com + + Records the time from injecting the translation scripts to finish loading + all dependent libraries. + + This is recorded when a translation (both manual and automatic) is started. + + + + + megjablon@google.com + chrome-language@google.com + + Records the time from when the translation script beings translating to when + it finishes. + + This is recorded when a translation (both manual and automatic) is started. + + + + + megjablon@google.com + chrome-language@google.com + + Records the type of translation being performed, either manual or automatic. + We additionally breakdown automatic translations by the reason why an + automatic translation was performed. + + This is recorded when a translation (both manual and automatic) is started. + + + + + megjablon@google.com + chrome-language@google.com + + Records the UI interaction that the user performed. The set of possible + actions are independent of the exact UI and platform, and capture the high + level action performed. + + This is recorded every time the user interacts with the Translate UI on all + platforms. + + + + + megjablon@google.com + chrome-language@google.com + + Logs an unsupported source language detected during initiation of the + Translate feature. This is reported when the language detector successfully + detects the language of the webpage, but the language is not supported by + the translation server because it is too minor. This metric allows us to + assess how important the unsupported language is for Google translate. + + + + + megjablon@google.com + chrome-language@google.com + + The time from a page content language being determined to user requesting + Chrome Translate. + + + + + mcrouse@chromium.org + chrome-language@chromium.org + + Records the number of requests that were pending when the language detection + model was provided and ready to be returned to requesters. Recorded once per + model update by the OptimizationGuide. + + + + + mcrouse@chromium.org + chrome-language@chromium.org + + Records whether the language detection model file provided by the + OptimizationGuide was valid and was successfully loaded by the + TranslateModelService. Recorded once per model update by the + OptimizationGuide. + + + + + + diff --git a/histograms/metadata/ukm/histograms.xml b/histograms/metadata/ukm/histograms.xml new file mode 100644 index 000000000000..6e430060e26d --- /dev/null +++ b/histograms/metadata/ukm/histograms.xml @@ -0,0 +1,394 @@ + + + + + + + + + + rkaplow@chromium.org + ukm-team@google.com + + The actual interval between log upload start and previous log upload + finished within the same process. A value of 0 indicates there was no + previous upload. + + + + + rkaplow@chromium.org + ukm-team@google.com + + Emitted when UKM Service attempts to build and store a log. Emits true if it + was empty (no sources or entries) which means no log is written, false + otherwise. + + + + + rkaplow@chromium.org + ukm-team@google.com + + Logged in UpdateUkmAllowedForAllProfiles from the UkmConsentStateObserver + which is called when UkmConsentStateObserver starts observing a new profile + and every time a URL-keyed anonymized data collection state changes or a + sync service state changes. This records whether UKM is allowed for all + profiles. + + + + + andrewbregger@google.com + ukm-team@google.com + + Logged in UpdateUkmAllowedForAllProfiles from the UkmConsentStateObserver. + This records if App-sync was changed everytime a profile is updated. True + will be recorded when App-sync changes and false otherwise. This is to + understand how often App-sync is changed. + + + + + rkaplow@chromium.org + ukm-team@google.com + + Logged in the UpdateProfileState call from the UkmConsentStateObserver. This + records if the UKM allowed change will trigger a purge of the local UKM + data. + + + + + rkaplow@chromium.org + ukm-team@google.com + + Number of UKM entries that are dropped. Categorized by the cause of it being + dropped. + + + + + jwd@chromium.org + ukm-team@google.com + + The hashed name of the UKM entry being dropped. The hash is the same hash + sent in the UKM log but truncated to 31 bits with "event_hash & + 0x7fffffff". Recorded when adding an entry and the UKM recorder decides + it should be dropped. + + + + + lucnguyen@google.com + ukm-team@google.com + + The hashed name of the UKM entry being dropped. The hash is the same hash + sent in the UKM log but truncated to 31 bits with "event_hash & + 0x7fffffff". Recorded when adding an entry and the UKM recorder decides + it should be dropped due to reaching the max number of sources allowed in + memory. + + + + + yrsun@chromium.org + ukm-team@google.com + + The hashed name of the UKM entry being dropped. The hash is the same hash + sent in the UKM log but truncated to 31 bits with "event_hash & + 0x7fffffff". Recorded when adding an entry and the UKM recorder decides + it should be dropped due to the UkmRecorderImpl::ApplyEntryFilter check. + + + + + lucnguyen@google.com + ukm-team@google.com + + The hashed name of the UKM entry being dropped. The hash is the same hash + sent in the UKM log but truncated to 31 bits with "event_hash & + 0x7fffffff". Recorded when adding an entry and the UKM recorder decides + it should be dropped due to it being sampled out. + + + + + yrsun@chromium.org + ukm-team@google.com + + The hashed name of the UKM entry being recorded. The hash is the same hash + sent in the UKM log but truncated to 31 bits with "event_hash & + 0x7fffffff". Recorded when an entry is added and accepted by the UKM + recorder. + + + + + rkaplow@chromium.org + ukm-team@google.com + Number of serialized UKM entries when storing a UKM log. + + + + rkaplow@chromium.org + ukm-team@google.com + + Number of serialized UKM entries that are of type PageLoad that have the + metric PaintTiming.NavigationToFirstContentfulPaint. This is recorded every + time a UKM log is stored. + + + + + rkaplow@chromium.org + ukm-team@google.com + + Logged during UkmService initialization whether the init task or the initial + log timer completed first. The expectation is the vast majority of the time, + the init task should complete first. If metrics show otherwise, then it may + indicate there's a bug in the UkmService init sequence and that it should be + investigated. + + + + + rkaplow@chromium.org + + Number of times when UKM.LogSize.OnSuccess was recorded on iOS. Recorded + when the app transitions to the foreground. This histogram should help to + figure out the root cause of crbug.com/1154678 (Data loss on UMA in iOS). If + total count of UKM.IOSLog.OnSuccess is greater than number of + UKM.LogSize.OnSuccess records, then data loss is caused by failure to write + the histogram to the disk on background thread. Otherwise (if total sum of + UKM.IOSLog.OnSuccess is equal to total count of UKM.LogSize.OnSuccess + records) then there is actually no data loss and app simply gets terminated + in a short window between UKM reached the server and the API call which + records the data. + + + + + rkaplow@chromium.org + ukm-team@google.com + + Size in kilobytes (after compression) of an uploaded UKM log. Recorded after + a successful UKM upload. + + Note: A related metric (UKM.ProtoCompressionRatio) logs the compression + ratio. + + + + + rkaplow@chromium.org + ukm-team@google.com + + Logs whether a log was not uploaded due to cellular log throttling logic. + Android only. + + + + + rkaplow@chromium.org + ukm-team@google.com + + HTTP response codes and network errors encountered by UKM when attempting to + upload logs to the server. + + + + + jwd@chromium.org + rkaplow@chromium.org + ukm-team@google.com + + The client id was migrated from an Int64 pref to a UInt64 pref. Not migrated + is recorded when a valid UInt64 value is loaded from prefs. Migration + started in M75. + + + + + rkaplow@chromium.org + ukm-team@google.com + The status when loading UKM PersistedLogs from Prefs. + + + + rkaplow@chromium.org + src/base/metrics/OWNERS + + Compression ratio of the serialized protobuf that will be uploaded to the + UKM server. This serialized protobuf is compressed using gzip. See also + UKM.LogSize.OnSuccess. + + + + + rkaplow@chromium.org + src/base/metrics/OWNERS + + Number of sources pruned after the operation of {Type} type. + + + + + + + + + + + + + yrsun@chromium.org + ukm-team@google.com + + Percentage that data non-directly attributed (e.g. system profile info, etc) + to UKM take up in a serialized ukm::Report protocol buffer, before + compression. + + + + + rkaplow@chromium.org + ukm-team@google.com + + Recorded when a UKM client state (client_id, session_id) is reset. This + emits the reason the resetting was triggered. + + + + + rkaplow@chromium.org + ukm-team@google.com + + Number of UKM sources that are dropped. Categorized by the cause of it being + dropped. + + + + + rkaplow@chromium.org + ukm-team@google.com + + Number of unsent UKM sources that were kept in-memory to be potentially + transmitted in the next log. + + + + + rkaplow@chromium.org + ukm-team@google.com + + Number of serialized UKM sources when storing a UKM log. {UkmSourceIdTypes} + + + + + + + + + + + + rkaplow@chromium.org + ukm-team@google.com + + Number of UKM sources that were not sent because they did not match a + navigation source URL. + + + + + rkaplow@chromium.org + ukm-team@google.com + + Number of UKM sources that were not sent because they had no associated + entries. + + + + + rkaplow@chromium.org + ukm-team@google.com + + Number of bytes in an excessively large log that was discarded while + persisting UKM logs to disk to retry during next chrome run. + + + + + rkaplow@chromium.org + ukm-team@google.com + + Counter for number of UKM unsent logs removed from persistent storage. + + + + + vincb@google.com + ukm-team@google.com + + The status of the retrieval of user demographics from sync that are reported + to UKM. Emitted each time UKM metrics are reported. + + + + + + diff --git a/histograms/metadata/uma/histograms.xml b/histograms/metadata/uma/histograms.xml new file mode 100644 index 000000000000..e3c2dc28c300 --- /dev/null +++ b/histograms/metadata/uma/histograms.xml @@ -0,0 +1,1050 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + The hash codes of histograms that were found to have bad construction + arguments. These would be DCHECK exceptions in debug builds but have simply + been logged and corrected as best as possible rather than crash. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + The hash codes of histograms that were found to have construction arguments + different from a previous instantiation of the same name. Entries here have + conflicting definitions and should be investigated. Data collected for the + secondary definitions will be silently dropped. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + The hash codes of histograms that were found to request more than 1000 + buckets. These would be DCHECK exceptions in debug builds if the limit is + lowered so are being logged before that change. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + The actual interval between log upload start and previous log upload + finished within the same process. A value of 0 indicates there was no + previous upload. Prior to M71, logging for this metric was broken. + + + + + + + wfh@chromium.org + src/base/metrics/OWNERS + + Records the result of the attempt to enumerate the installed AntiVirus on + the machine. This is recorded once during metrics initialization. + + + + + caitlinfischer@google.com + justincohen@chromium.org + src/base/metrics/OWNERS + + The combined state of distinct beacons stored in the beacon file and in a + platform-specific location (e.g. the Windows registry or NSUserDefaults on + iOS). They are normally expected to be identical. Recorded when the + CleanExitBeacon is initialized on Windows and iOS. + + Unlike UMA.CleanExitBeaconConsistency2, this histogram excludes the Local + State beacon. + + As of M102 for desktop and iOS and M103 for Android Chrome, any client may + emit this metric. Prior to this, the metric was emitted by only clients in + an enabled group that used the beacon file. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Recorded when we are somehow missing the client ID stored in Local State yet + are able to recover it from a backup location along with the backed up + installation date. This report carries the age in hours of the recovered + client id. + + + + + pdyson@chromium.org + src/base/metrics/OWNERS + + Recorded when the client id is cleared due to the device opting out of UMA + metrics. + + + + + pdyson@chromium.org + src/base/metrics/OWNERS + The source of the client id when its creation is forced. + + + + jongahn@chromium.org + src/base/metrics/OWNERS + + Records the status of writing the per-user metrics state to daemon-store (or + the boot state to /home/chronos/). Written on login or logout, and when a + user changes their consent state. + + + + + jongahn@chromium.org + asvitkine@chromium.org + + Counts the number of times an ID was reset. The client ID is reset when a + known user who has sent metrics before re-enables metrics collection. This + is to preserve pseudo-anonymity of the (client_id, user_id) pair. The user + ID is reset whenever per-user eligible user turns off metrics collection. + + + + + jongahn@chromium.org + asvitkine@chromium.org + + Records the state that metrics service is in when user log store was set or + unset. This should be recorded once when a valid user that can use per-user + logs in and unsetting should be recorded once when a user logs out. + + + + + + + sweilun@chromium.org + src/base/metrics/OWNERS + + This is logged with a random value drawn from an artificial log normal + distribution in every ongoing metrics logs (not logs about the previous + session) and used for data validation. The mean and standard deviation + parameters of the log normal distribution are controlled by artificial A/B + experiments so that we can assess the accuracy and power of data from field + trials. + + + + + + + asvitkine@chromium.org + kaznacheev@chromium.org + chrome-metrics-team@google.com + + Logs the device enrollment status for Chrome OS device. Logged with every + UMA upload. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Logs the entropy source type that was used for field trial randomization. + Logged once at each start up. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Logged on Android whenever an external experiment is registered. The logged + value is the number of groups in the experiment. This will not be logged at + all if there are no external experiments, but will be logged on group + transitions (e.g. when going from 1 to 0 groups). + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Records attempts to access a file for the purpose of extracting metrics. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Records attempts to access a file for the purpose of extracting initial + stability metrics. + + + + + lucnguyen@google.com + src/base/metrics/OWNERS + + The number of histograms merged to the current session from a PMA file from + the {Source} source. Emitted right after merging the histograms. + + + + + + + + + + lucnguyen@google.com + src/base/metrics/OWNERS + + The amount of time the main thread spent on finalizing and storing an + independent log provided by {Provider}. This is only emitted for logs that + are successfully closed. + + + + + + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Logged during MetricsService initialization whether the init task or the + initial log timer completed first. The expectation is the vast majority of + the time, the init task should complete first. If metrics show otherwise, + then it may indicate there's a bug in the MetricsService init sequence and + that it should be investigated. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + This is logged with a value of true in every log when the UMA client code + has detected that this is a potentially cloned install and has set the pref + to reset its UMA client id on the next startup. + + + + + bttk@chromium.org + src/base/metrics/OWNERS + + Number of histogram samples that were not recorded when flushing due to + cache size limits in the Java in-memory cache. There are separate limits on + the number of cached histograms, and the number of samples in a histogram. + + + + + bttk@chromium.org + src/base/metrics/OWNERS + + Number of user actions that were not recorded when flushing due to a cache + size limit in Java the in-memory cache. + + + + + bttk@chromium.org + src/base/metrics/OWNERS + + Number of histograms recorded when flushing the Java in-memory cache. + + + + + bttk@chromium.org + src/base/metrics/OWNERS + + Number of histogram samples seen by the time the Java in-memory cache was + flushed. This includes samples counted in DroppedHistogramSampleCount. + + + + + bttk@chromium.org + src/base/metrics/OWNERS + + Number of user actions seen by the time the in-memory cache was flushed. + This includes actions counted in DroppedUserActionCount. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Size in kilobytes (after compression) of an uploaded UMA log. Recorded after + a successful UMA upload. + + Note: A related metric (UMA.ProtoCompressionRatio) logs the compression + ratio. + + + + + holte@chromium.org + asvitkine@chromium.org + src/base/metrics/OWNERS + + Logs whether a log was not uploaded due to cellular log throttling logic. + Android only. + + + + + holte@chromium.org + asvitkine@chromium.org + src/base/metrics/OWNERS + + HTTP response codes and network errors encountered by UMA when attempting to + upload logs to the server through an HTTPS connection. + + + + + holte@chromium.org + asvitkine@chromium.org + src/base/metrics/OWNERS + + HTTP response codes and network errors encountered by UMA when attempting to + upload logs to the server through an HTTP connection. + + + + + jwd@chromium.org + src/base/metrics/OWNERS + + Tracks if the machine ID is generated successfully and if it changes from + one run to the next. The machine ID is a 24-bit hash of machine + characteristics. It is expected to change if an install of Chrome is copied + to multiple machines. This check happens once per browser startup. + + + + + jwd@chromium.org + src/base/metrics/OWNERS + + Records when the metrics IDs (client id and low entry source) are reset due + to a cloned install detection. This is done during startup when + MetricsStateManager is created. + + A cloned install is detected when the current machine ID (24-bit hash of + machine characteristics) is different than the one stored in local state. A + pref is then written to local state to indicate a clone. The metrics IDs are + reset on the next startup assuming the cloned install pref is still set. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Logged when user successfully enables/disables MetricsReporting or when an + error occurs. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Time taken by MetricsService::InitializeMetricsState(). + + Note that clients without high-resolution clocks will report 0 for very + short times. + + + + + lucnguyen@google.com + src/base/metrics/OWNERS + + The amount of time the main thread spends on storing a finalized async log + and marking its unlogged samples as logged. I.e., the run time of + MetricsService::MaybeCleanUpAndStoreFinalizedLog(). This is not emitted if + the async log is not stored (see the UMA.MetricsService.ShouldStoreAsyncLog + histogram). + + + + + lucnguyen@google.com + src/base/metrics/OWNERS + + Whether there is an ongoing log being finalized right as we are about to + close a non-periodic log. For example, due to Chrome being shut down. + Emitted every time MetricsService::PushPendingLogsToPersistentStorage() is + called. + + + + + lucnguyen@google.com + src/base/metrics/OWNERS + + Whether there is an ongoing log being finalized right as we are about to + close a non-periodic log due to Chrome being backgrounded. This should be a + subset of the UMA.MetricsService.PendingOngoingLog histogram. Only emitted + on mobile platforms. + + + + + lucnguyen@google.com + src/base/metrics/OWNERS + + Whether there is an ongoing log being finalized right as we are about to + close a non-periodic log due to the metrics service being disabled. Most + commonly, this happens when Chrome is shutting down cleanly. Otherwise, this + can happen when the user manually disables UMA. Emitted every time + MetricsService::DisableRecording() is called. This is only emitted on mobile + platforms. This should be a subset of the + UMA.MetricsService.PendingOngoingLog histogram. + + + + + lucnguyen@google.com + src/base/metrics/OWNERS + + Whether there is an ongoing log being finalized right as we are about to + close a non-periodic log due to Chrome being foregrounded. This should be a + subset of the UMA.MetricsService.PendingOngoingLog histogram. Only emitted + on mobile platforms. + + + + + lucnguyen@google.com + src/base/metrics/OWNERS + + The amount of time the main thread spent on finalizing a periodic ongoing + log. I.e., the run time of MetricsService::OnFinalLogInfoCollectionDone(). + This is not emitted if UMA was turned off while collecting some final + metrics for the log. + + + + + lucnguyen@google.com + src/base/metrics/OWNERS + + The time it took between posting a task to finalize a periodic ongoing log, + and when the reply task was run (on the main thread) to store the finalized + log. This is only emitted if the periodic ongoing log was created + asynchronously. + + + + + lucnguyen@google.com + src/base/metrics/OWNERS + + Whether a log that was created asynchronously is going to be stored. An + async log will not be stored if a synchronous log was created while the + async one was being finalized. Emitted every time the + MetricsService::MaybeCleanUpAndStoreFinalizedLog() callback runs. + + + + + lucnguyen@google.com + src/base/metrics/OWNERS + + The runtime of SnapshotStatisticsRecorderDeltas(). Emitted every time it is + called. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + The lower 32 bits of the ID of the histogram that went negative. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + The amount of increment that caused a sample count to become negative. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Reasons why a negative sample count would have been created. Currently, only + negative samples from persistent sparse histograms are being checked. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Errors detected by the persistent memory allocator. These are set when they + occur. {PersistentAllocatorType} + + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Percentage of persistent memory segment that has been allocated. This is + updated only once per reporting cycle. {PersistentAllocatorType} + + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + A count of successes and failures for the creation of various forms of + persistent memory used to store histograms. + + + + + michaelpg@chromium.org + yilkal@chromium.org + src/base/metrics/OWNERS + + This UMA logs the primary user type per metrics recording interval. + + + + + + + mpearson@chromium.org + src/base/metrics/OWNERS + + An enum representing the sign-in status of all regular profiles with open + browser windows at the time a UMA log record is closed (i.e., excluding + system and guest profiles). Recorded once in every ongoing metrics log; not + recorded in logs about the previous session. System, Guest and Incognito + profiles are ignored because the user cannot sign-in into them. + + Being signed into the browser means, for example, the user sees their Google + account on the New Tab Page and in the toolbar at the top of the browser. It + does NOT mean the user has a currently-valid token; they may need to refresh + their credentials. As a concrete example, it means the user may not get + personalized results and suggestions when using google.com. + + On desktop, when Chrome is running and there are no profiles with open + browser windows (this can happen on Mac), this histogram will report + "Unknown sign-in status". + + On Android, when Chrome is running and there are no profiles with open + browser windows (this can happen when Chrome is doing something in the + background), it will report the sign-in status as if there were an open + browser window. + + If a profile is open during the time period covered by this log record but + closed before the log record is closed, the profile's status will not be + reflected in this histogram. + + Not supported on ChromeOS Ash. (Supported on Lacros.) + + + + + + + mpearson@chromium.org + src/base/metrics/OWNERS + + An enum representing the sync status of all regular profiles with open + browser windows at the time a UMA log record is closed (i.e., excluding + system and guest profiles). Recorded once in every ongoing metrics log; not + recorded in logs about the previous session. System, Guest and Incognito + profiles are ignored because the user cannot sign-in into them. + + If a profile is open during the time period covered by this log record but + closed before the log record is closed, the profile's status will not be + reflected in this histogram. + + Sync status indicates the profile has consented to sync and has a valid + credential for the account (i.e., is signed-in), meaning sync in principle + should be working. For example, if the user signs out of the web, their + credentials will be put into an error state; they will not be valid. The + profile will not be considered to be syncing. It is possible that the user + is technically syncing (according to this histogram and Chrome) yet not + syncing at that instant. Examples of this include (i) user is offline and + (ii) user disabled syncing for all sync data types but didn't revoke + consent. + + Not supported on ChromeOS Ash. (Supported on Lacros.) + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Compression ratio of the serialized protobuf that will be uploaded to the + UMA server. This serialized protobuf is compressed using gzip. See also + UMA.LogSize.OnSuccess. + + + + + + + sweilun@chromium.org + src/base/metrics/OWNERS + + This is the pseudo {Metrics} metric. It's logged alongside with the real + metric. The value of this pseudo metric is a linear function (ax + b) of the + real value (x). The multiplicative factor (a) and additive factor (b) are + controlled by field trial experiments. This metric is used for data + validation and to help us better assess the accuracy and power of data from + field trials. + + + + + + + + + + + + + jwd@chromium.org + src/base/metrics/OWNERS + + Sample rate applied to this client, expressed as number of clients per 1000 + that are in the sample. Recorded on every log upload but only if the client + is eligible for sampling. (As of September 2019, the only clients eligible + for sampling are Windows and Android installs on which the UMA checkbox was + enabled by default.) + + Clients not eligible for sampling will not have this histogram recorded. + + Clients that are eligible for sampling but are sampled out (i.e., not + uploading logs) will not have this histogram recorded. Notably, it will not + appear in chrome://histograms! (Obviously, it also won't appear in the UMA + logs because the client is not uploading logs.) + + Additional nuance, hopefully not important: the rate refers to the session + that the log was generated in, not the session the log was generated about. + This means when UMA uploads information about the last session (such as + stability statistics), it is possible--though extremely unlikely--that the + sampling rate config has changed from the previous session to the current + one. As such, the sampling rate emitted in a previous-session log record may + not be the right one that should've applied to that record. + + + + + caitlinfischer@google.com + src/base/metrics/OWNERS + + Denotes whether or not the Local State file exists during startup. Emitted + when the PrefService is created. Android Chrome only. + + + + + caitlinfischer@google.com + src/base/metrics/OWNERS + + Whether the session is a background or foreground session. Recorded just + before the MetricsStateManager is created. Android Chrome only. + + + + + tby@chromium.org + jongahn@chromium.org + + File size of events recorded outside of Chrome. This metric is recorded for + every file processed by an external metrics scan, which reads the events + into memory to be appended to an UMA log. This external metrics scan happens + roughly every 45 minutes. + + + + + jongahn@chromium.org + tby@chromium.org + rkaplow@chromium.org + asvitkine@chromium.org + + Emitted when a structured metrics event is sent for recording. This records + whether that event was recorded successfully, or otherwise what error + occurred. + + + + + andrewbregger@google.com + jongahn@chromium.org + + The serialized size in bytes of a Structured Metrics event. This is the size + the event uses when serialized to be uploaded. + + + + + jongahn@chromium.org + tby@chromium.org + + Number of events recorded before private keys are initialized to hash + events. This metric should be recorded once per session. + + + + + andrewbregger@google.com + jongahn@chromium.org + + The number of external metric scans from platform2 were performed since the + last Structured Metric upload. An external metric scan collects events that + were generated by platform2 and copies them to be uploaded by Structured + Metrics. + + + + + jongahn@chromium.org + tby@chromium.org + rkaplow@chromium.org + asvitkine@chromium.org + + Records unexpected internal errors of the structured metrics system. The + bucket proportion of this metric is not meaningful. + + + + + jongahn@chromium.org + tby@chromium.org + rkaplow@chromium.org + asvitkine@chromium.org + + When a user event key is validated (and possibly updated), whether the key + was valid and required no changes, missing and required creation, or old and + required rotation. + + This histogram was expired from 2022-11-01 to 2023-03-21, and might be + missing data in that period. + + + + + jongahn@chromium.org + tby@chromium.org + rkaplow@chromium.org + asvitkine@chromium.org + + How many events are provided when the structured metrics system is called on + to provide its current session data. + + + + + tby@chromium.org + jongahn@chromium.org + + How many files in the external Structured metrics directory before an + external metrics scan is triggered. The external metrics scan will read the + events into memory and delete ALL files in the directory. + + + + + andrewbregger@google.com + jongahn@chromium.org + tby@chromium.org + + The serialized size in bytes of the Structured Metrics payload attached to + UMA. This correlates to the amount of memory Structured Metrics uses during + an upload by UMA. + + + + + rkaplow@chromium.org + src/base/metrics/OWNERS + + The number of omnibox events that existed in the metrics log before we + truncated them to save bandwidth. + + + + + rkaplow@chromium.org + src/base/metrics/OWNERS + + The number of user actions events that existed in the metrics log before we + truncated them to save bandwidth. + + + + + holte@chromium.org + asvitkine@chromium.org + lucnguyen@google.com + src/base/metrics/OWNERS + + The number of unsent UMA logs removed from persistent storage. Emitted just + before unsent logs are trimmed. Unsent log trimming occurs immediately after + logs creation, upon successful log upload, or whenever MetricsService stops + recording. + + + + + akirabaruah@chromium.org + rkaplow@chromium.org + asvitkine@chromium.org + lucnguyen@google.com + src/base/metrics/OWNERS + + Size of unsent logs removed from persistent storage due to exceeding the + individual log size limit. Unsent log trimming occurs immediately after logs + creation, upon successful log upload, or whenever MetricsService stops + recording. + + + + + michaelbai@chromium.org + asvitkine@chromium.org + lucnguyen@google.com + src/base/metrics/OWNERS + + The size of all persistent initial or ongoing logs that have been + proto-encoded and compressed in the previous browser run; it is recorded on + the browser start up. The value '0' means no unsent logs. + + + + + michaelbai@chromium.org + asvitkine@chromium.org + lucnguyen@google.com + src/base/metrics/OWNERS + + The number of UMA histogram samples that were sent in the previous browser + run. Emitted when the browser starts up. + + + + + michaelbai@chromium.org + asvitkine@chromium.org + lucnguyen@google.com + src/base/metrics/OWNERS + + The number of UMA histogram samples that were not yet sent in the previous + browser run. Emitted when the browser starts up. + + + + + michaelbai@chromium.org + asvitkine@chromium.org + lucnguyen@google.com + src/base/metrics/OWNERS + + The percentage of the unsent samples over the total in the previous browser + run; it is recorded on the browser start up. + + + + + mpearson@chromium.org + src/base/metrics/OWNERS + + Emitted when a user action is recorded. + + Intended to be used to estimate how many user actions are lost due lack of + being persisted in the same way histograms are. One way to use this + histogram is to look as the count in this histogram in logs that come from + the previous session. All of those user actions will have been lost. + + Also note that user actions can be lost due to being truncated before + uploading a UMA record. Those logs user actions are recorded in the + histogram UMA.TruncatedEvents.UserAction. + + There may be other ways user actions are dropped too. + + + + + tobyhuang@chromium.org + cros-families-eng@google.com + + True indicates that the current user is over the age of 21 and under the age + of 85 inclusive, and unknown otherwise. Specifically, this histogram can't + identify users under 21 and over 85. The user's age includes a random offset + for privacy. This metric is logged periodically through + ProvideCurrentSessionData(). + + + + + rogerm@google.com + src/base/metrics/OWNERS + + The status of the retrieval of user demographics from sync that are reported + to UMA. Emitted each time UMA metrics are reported. + + + + + + diff --git a/histograms/metadata/update_engine/OWNERS b/histograms/metadata/update_engine/OWNERS new file mode 100644 index 000000000000..65b43e74b987 --- /dev/null +++ b/histograms/metadata/update_engine/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. + +poromov@chromium.org diff --git a/histograms/metadata/update_engine/histograms.xml b/histograms/metadata/update_engine/histograms.xml new file mode 100644 index 000000000000..e925327351b6 --- /dev/null +++ b/histograms/metadata/update_engine/histograms.xml @@ -0,0 +1,802 @@ + + + + + + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The network connection type when the attempt begins. Possible values include + "Unknown", "Ethernet", "Wifi", + "Wimax", "Bluetooth", "Cellular", + "Tethered Ethernet", "Tethered Wifi". + + This is reported when an update attempt ends. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + A more detailed description of the last Payload transfer error when + downloading the payload. + + This is reported when an attempt ends with the "Payload Download + Error" result. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The download source used, possible values include "HTTPS Server", + "HTTP Server" and "HTTP Peer". + + This is reported when an update attempt ends. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The number of minutes the update attempt took including the time the device + spent sleeping. + + This is reported when an update attempt ends. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The number of minutes the update attempt took excluding the time the device + spent sleeping. + + This is reported when an update attempt ends. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + A more detailed description of the last internal error. The possible values + correspond to the ErrorCode enumeration in the update_engine source code. + + This is reported when an attempt ends with the InternalError result. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The attempt number which starts at 0 for the initial attempt and keeps + increasing for subsequent attempts. + + This is reported when an update attempt ends. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The number of payload mebibytes (1048576 bytes) actually download. + + This is reported when an update attempt ends. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The payload download speed, in kilobytes per second (1000 bytes/second). + This is calculated as the number of bytes downloaded divided by the duration + of the attempt (excluding time spent sleeping). + + This is reported when an update attempt ends. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The payload size, in mebibytes (1048576 bytes). + + This is reported when an update attempt ends. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The payload type, possible values include "Delta" (if Omaha + specified to download a delta payload); and "Full" (if Omaha + specified to download a full payload); and "ForcedFull" (if the + client specified that it would only accept a full payload). + + This is reported when an update attempt ends. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The result of the update attempt. + + This is reported when an update attempt ends. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The number of minutes since the last attempt including the time the device + spent sleeping. + + This is reported when an update attempt ends but only if there was a + previous attempt for the same update. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The number of minutes since the last attempt excluding the time the device + spent sleeping. + + This is reported when an update attempt ends but only if there was a + previous attempt for the same update. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The status of the certificate check done when downloading a payload over + HTTPS. Note that most downloads are done over HTTP. + + This is reported on every HTTPS connection to the payload download server. + Connection drops on the same payload may report different values. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The status of the certificate check done when querying Omaha for a new + version. + + This is reported on every update check. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + If unable to download a response from Omaha, a more detailed error code is + reported in this metric. + + This is reported on every update check resulting in "Download + error". + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + If there is an update available, this metric will track what the device does + with the information. Possible values include "Applying update", + "Deferring update", "Ignoring update", and "Backing + off". + + This is reported on update checks resulting in "Update available". + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The update check results from update_engine. Possible values are in sync + with the enum class CheckResult in the ChromeOS repo: + src/aosp/system/update_engine/common/metrics_constants.h + + This is reported on every update check. + + This metric is specific to Chrome OS. + + + + + mpolzer@google.com + crisguerrero@chromium.org + chromeos-commercial-remote-management@google.com + + First section of the ChromeOS target version set by device policy and sent + to Omaha if rollback is also allowed. This is a sparse histogram, since the + possible valid values are stable ChromeOS version prefixes (usually one per + milestone). + + Example value: 10323 (meaning M65 stable). + + This is reported on every update check if the TargetVersionPrefix device + policy is set and rollback is enabled. + + This metric is specific to ChromeOS. + + + + + mpolzer@google.com + chromeos-commercial-remote-management@google.com + + First section of the Chrome OS target version set by device policy and sent + to Omaha. This is a sparse histogram, since the possible valid values are + stable Chrome OS version prefixes (usually one per milestone). + + Example value: 10323 (meaning M65 stable). + + This is reported on every update check if the TargetVersionPrefix device + policy is set. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The number of minutes since the last check including the time the device + spent sleeping. + + This is reported on every update check except for the first one. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The number of minutes since the last check excluding the time the device + spent sleeping. + + This is reported on every update check except for the first one. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The total number of times the inactive partition was updated before reboot. + + This is reported after every reboot. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + This is reported after every failed consecutive update. The first update is + not included. This metric can be interpreted alongside metrics such as + SuccessfulUpdate.AttemptCount, and Attempt.Result. + + This metric is specific to Chrome OS. + + + + + yuanpengni@chromium.org + chromeos-core-services@google.com + + This records if the eligible user has opted out the consumer auto update. + Ineligible user will be skipped. + + This is reported each time Chrome metrics logs are created. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The age of the OS in days, defined as the age of the /etc/lsb-release file. + + This is reported on every update check but at most once a day. + + This metric is specific to Chrome OS. + + + + + mpolzer@google.com + crisguerrero@chromium.org + chromeos-commercial-remote-management@google.com + + First section of the ChromeOS version to which an enterprise rollback + (rollback initiated by the admin of the device) has failed. This is a sparse + histogram, since the possible valid values are stable ChromeOS version + prefixes (usually one per milestone). + + Example value: 10323 (meaning M65 stable). + + This is reported after a rollback image has failed installing. + + This metric is specific to ChromeOS. + + + + + mpolzer@google.com + crisguerrero@chromium.org + chromeos-commercial-remote-management@google.com + + First section of the ChromeOS version to which an enterprise rollback + (rollback initiated by the admin of the device) has succeeded. This is a + sparse histogram, since the possible valid values are stable ChromeOS + version prefixes (usually one per milestone). + + Example value: 10323 (meaning M65 stable). + + This is reported after a rollback image has been successfully installed. + + This metric is specific to ChromeOS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The number of consecutive times a device has failed to boot an update that + successfully applied. + + This is reported every time the firmware fails to boot the slot with the + update and fell back to the slot it originally updated from. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The source used to provision the install-date-days value sent to Omaha with + every request. + + This is reported when OOBE (Out Of Box Experience) completes (M34 or later) + or when upgrading to a version with install-date-days support. + + This metric is specific to Chrome OS. + + + + + mpolzer@google.com + crisguerrero@chromium.org + chromeos-commercial-remote-management@google.com + + Whether setting the MaxKernelKeyRollforward value in the TPM succeeded. + + This is reported every time an update check happens. This is a bool value. + + This metric is specific to ChromeOS. + + + + + mpolzer@google.com + crisguerrero@chromium.org + chromeos-commercial-remote-management@google.com + + Maximum value the device can roll forward the minimum kernel key version + value in the TPM during the next boot. + + This value is set to infinity (0xfffffffe) for devices which doesn't allow + rollback. + + Otherwise, the value is the kernel key version of the earliest image to + which the device is allowed to roll back. + + This is reported every time an update check happens. This is a sparse value. + + This metric is specific to ChromeOS. + + + + + mpolzer@google.com + crisguerrero@chromium.org + chromeos-commercial-remote-management@google.com + + Minimum kernel key version already set in the TPM. This value specifies + which images can be booted up with verified boot. + + This is reported every time an update check happens. This is a sparse value. + + This metric is specific to ChromeOS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + Whether rollback worked. + + This is reported every time there's a rollback request. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The total number of update attempts required to update the device. + + This is reported on every successful update. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The total number of bytes downloaded in mebibytes (1048576 bytes) using all + available sources (e.g. HTTP, HTTPS, HTTP Peer). + + This is reported on every successful update. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The total number of bytes downloaded in mebibytes (1048576 bytes) using HTTP + from a local peer. + + This is reported on every successful update. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The total number of bytes downloaded in mebibytes (1048576 bytes) using + HTTP. + + This is reported on every successful update. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The total number of bytes downloaded in mebibytes (1048576 bytes) using + HTTPS. + + This is reported on every successful update. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The ratio between bytes downloaded and payload size minus 100. + + This is reported on every successful update. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The various download sources used - this is a combination of the values + "HTTPS Server", "HTTP Server" and "HTTP Peer". + + This is reported on every successful update. + + This metric is specific to Chrome OS. + + + + + snijhara@google.com + managed-platforms@google.com + + The total number of days from when an update is first seen to when an update + is finished downloading (but before rebooting). This metric is recorded on + enterprise-enrolled devices that do not have the + DeviceAutoUpdateTimeRestrictions policy enabled. + + This metric is specific to Chrome OS. + + + + + snijhara@google.com + managed-platforms@google.com + + The total number of days from when an update is first seen to when an update + is finished downloading (but before rebooting). This metric is recorded on + devices that have the DeviceAutoUpdateTimeRestrictions policy enabled. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The size of the payload, in mebibytes (1048576 bytes). + + This is reported on every successful update. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The payload type ("Delta", "Full", + "ForcedFull") used. + + This is reported on every successful update. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The total number of reboots during the update. + + This is reported on every successful update. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The total number of minutes from when an update was detected until an update + (possibly another update) was applied. This includes the time waiting for + update checks and time the device spent sleeping. + + This is reported on every successful update. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The total number of minutes from when an update was detected until an update + (possibly another update) was applied. This does not include the time + waiting for update checks and time the device spent sleeping. + + This is reported on every successful update. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The total number of updates that were abandoned since the last successful + update. + + This is reported on every successful update. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The total number of times the URL was switched (from e.g. HTTPS to HTTP) + because of failures. + + This is reported on every successful update. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + The duration between when an update has successfully completed and the user + is presented with the "reboot arrow" and when the system has + booted into the new update. + + This is reported every time the device is rebooted after an update has been + applied. + + This metric is specific to Chrome OS. + + + + + kimjae@chromium.org + chromeos-core-services@google.com + + This metric is reported every time the `invalidate_last_update` tag is sent + from Omaha. Reports whether the update was able to be fully invalidated. + + This metric is specific to Chrome OS. + + + + + + diff --git a/histograms/metadata/v8/OWNERS b/histograms/metadata/v8/OWNERS new file mode 100644 index 000000000000..532eb34e22d5 --- /dev/null +++ b/histograms/metadata/v8/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +mlippautz@chromium.org diff --git a/histograms/metadata/v8/histograms.xml b/histograms/metadata/v8/histograms.xml new file mode 100644 index 000000000000..321a5c191676 --- /dev/null +++ b/histograms/metadata/v8/histograms.xml @@ -0,0 +1,2285 @@ + + + + + + + + + + gdeepti@chromium.org + ecmziegler@chromium.org + clemensb@chromium.org + + Number of bytes requested in array buffer allocations greater than one + megabyte. + + + + + gdeepti@chromium.org + ecmziegler@chromium.org + clemensb@chromium.org + Array buffer sizes for which V8 failed to allocate memory. + + + + yangguo@chromium.org + + Reason code data has been rejected when attempting to deserialize. + + + + + yangguo@chromium.org + Cache size to source size ratio when caching compiled code. + + + + delphick@chromium.org + + Time spent collecting source positions to generate stack traces. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + yangguo@chromium.org + + Time spent compiling a script that may be subject to caching. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + jgruber@chromium.org + leszeks@chromium.org + + Time spent deserializing code, used by V8 code caching. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + yangguo@chromium.org + + Time spent in V8 compiler (full codegen) for eval. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + hablich@chromium.org + + Aggregated time spent compiling functions lazily during a single script + execution. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + yangguo@chromium.org + + Time spent in V8 compiler (full codegen) excluding parser. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + leszeks@chromium.org + v8-runtime@google.com + + The cache behaviour of compiling a V8 script, including whether we produced + or consumed a code cache, whether we hit V8's isolate's cache, and if we + didn't use the code cache, the reason why not. + + + + + leszeks@chromium.org + v8-runtime@google.com + + Total time spent in compiling a script (incl. parsing/caching). + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + leszeks@chromium.org + rmcilroy@chromium.org + v8-runtime@google.com + + Total time spent in compiling a script (incl. parsing) on a background + thread. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + leszeks@chromium.org + v8-runtime@google.com + + Total time spent in compiling a script when the 'compilation' is + deserializing it from the code cache. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + leszeks@chromium.org + v8-runtime@google.com + + Total time spent in compiling a script (incl. parsing/caching) when the + compilation tried to deserialize it from the code cache, but failed. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + leszeks@chromium.org + v8-runtime@google.com + + Total time spent in compiling a script (incl. parsing/caching) in the case + where the V8 isolate's compilation cache is hit. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + leszeks@chromium.org + v8-runtime@google.com + + Total time spent in compiling a script (incl. parsing) when the cache is too + cold to use. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + leszeks@chromium.org + v8-runtime@google.com + + Total time spent in compiling a script (incl. parsing) when the script is an + inline script. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + leszeks@chromium.org + v8-runtime@google.com + + Total time spent in compiling a script (incl. parsing) when we do not want + to cache it. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + leszeks@chromium.org + v8-runtime@google.com + + Total time spent in compiling a script (incl. parsing) when the script is + too small to be cached. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + leszeks@chromium.org + v8-runtime@google.com + + Total time spent in compiling a script (incl. parsing) and serializing it + for the code cache. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + leszeks@chromium.org + v8-runtime@google.com + + Total time spent in finalizing a script that was streaming compiled. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + jgruber@chromium.org + leszeks@chromium.org + + Time spent serializing code, used by V8 code caching. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + yangguo@chromium.org + bmeurer@chromium.org + + Debugger feature used at least once per isolate, recorded on first use. + + + + + bmeurer@chromium.org + szuend@chromium.org + chrome-devtools@google.com + + Duration beginning when V8 stops execution due to a breakpoint/exception + until the "Debugger.paused" CDP event is sent by the V8 inspector. + The event is recorded when all the event data was collected and processed, + but before the event is serialized and put on the wire. + + + + + hablich@chromium.org + + The amount of JavaScript errors thrown by V8 per context. It does not count + custom errors and ignores catched errors thrown by V8. This is collected + after the context is detached. + + + + + cbruni@chromium.org + v8-runtime@google.com + + Time spent in JavaScript Execution, including runtime calls, and lazy + compilation. This histogram excludes time spent in embedder callbacks. + + + + + saelo@chromium.org + ishell@chromium.org + + The outcome of external pointer table compaction. + + External pointer table compaction may only succeed partially or fail + entirely if the application allocates lots of external pointer table entries + while the table is being compacted. This histogram records this outcome at + the end of a table-compacting GC. The frequency of such failures influences + the heuristics used to decide when to compact the table, and to some degree + also the compaction algorithm itself. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + The percentage of managed JavaScript memory that has been collected by a + full garbage collection of the unified heap. Reported at the end of the + garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + The percentage of managed C++ memory that has been collected by a garbage + collection of the managed C++ heap. Reported at the end of the garbage + collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + The percentage of managed JavaScript memory that has been collected by a + young generation garbage collection of the JavaScript heap. Reported at the + end of the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + The speed at which a full garbage collection of the unified heap reclaims + unused memory. Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + The speed at which garbage collection of the managed C++ heap reclaims + unused memory. Reported at the end of the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + The speed at which a full garbage collection of the unified heap reclaims + unused memory on the main thread only. This histogram ignores concurrent + garbage collection. Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + The speed at which garbage collection of the managed C++ heap reclaims + unused memory on the main thread only. This histogram ignores concurrent + garbage collection. Reported at the end of the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + The speed at which a young generation garbage collection of the JavaScript + heap reclaims unused memory on the main thread only. This histogram ignores + concurrent garbage collection. Reported at the end of the garbage collection + cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + The speed at which a young generation garbage collection of the JavaScript + heap reclaims unused memory. Reported at the end of the garbage collection + cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Overall duration of a full garbage collection of the unified heap. Reported + at the end of the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Time spent on compaction during a full garbage collection of the unified + heap. Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Time spent on compaction during a whole garbage collection of the managed + C++ heap. Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Overall duration of a whole garbage collection of the managed C++ heap. + Reported at the end of the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Time spent on marking during a full garbage collection of the unified heap. + Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Time spent on marking during a whole garbage collection of the managed C++ + heap. Reported at the end of the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Time spent on sweeping during a full garbage collection of the unified heap. + Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Time spent on sweeping during a whole garbage collection of the managed C++ + heap. Reported at the end of the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Time spent on weakness handling during a full garbage collection of the + unified heap. Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Time spent on weakness handling during a whole garbage collection of the + managed C++ heap. Reported at the end of the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Main-thread only duration of a full garbage collection of the unified heap. + Reported at the end of the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Overall main thread duration of the atomic pause of a garbage collection of + the unified heap. There is only a single atomic pause event per cycle but it + may cover several sub-events. Reported at the end of the garbage collection + cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Overall duration of compaction on the main thread during the atomic pause of + a garbage collection of the unified heap. There is only a single atomic + pause compaction event per cycle but it may cover several sub-events. + Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Overall duration of compaction on the main thread during the atomic pause of + a garbage collection of the managed C++ heap. There is only a single atomic + pause compaction event per cycle but it may cover several sub-events. + Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Overall main thread duration of the atomic pause of a garbage collection of + the managed C++ heap. There is only a single atomic pause event per cycle + but it may cover several sub-events. Reported at the end of the garbage + collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Overall duration of marking on the main thread during the atomic pause of a + garbage collection of the unified heap. There is only a single atomic pause + marking event per cycle but it may cover several sub-events. Reported at the + end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Overall duration of marking on the main thread during the atomic pause of a + garbage collection of the managed C++ heap. There is only a single atomic + pause marking event per cycle but it may cover several sub-events. Reported + at the end of the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Overall duration of sweeping on the main thread during the atomic pasue of a + garbage collection of the unified heap. There is only a single atomic pause + sweeping event per cycle but it may cover several sub-events. Reported at + the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Overall duration of sweeping on the main thread during the atomic pasue of a + garbage collection of the managed C++ heap. There is only a single atomic + pause sweeping event per cycle but it may cover several sub-events. Reported + at the end of the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Overall duration of weakness handling on the main thread during the atomic + pause of a garbage collection of the unified heap. There is only a single + atomic pause weakness handling event per cycle but it may cover several + sub-events. Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Overall duration of weakness handling on the main thread during the atomic + pause of a garbage collection of the managed C++ heap. There is only a + single atomic pause weakness handling event per cycle but it may cover + several sub-events. Reported at the end of the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Time spent on compaction on the main thread during a full garbage collection + of the unified heap. Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Time spent on compaction on the main thread during a whole garbage + collection of the cpp heap. Reported at the end of the garbage collection + cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Main thread only duration of a whole garbage collection of the managed C++ + heap. Reported at the end of the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Overall duration of incremental marking steps on the main thread during a + full garbage collection of the unified heap. Reported at the end of the + garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Overall duration of incremental marking steps on the main thread during a + full garbage collection of the managed C++ heap. Reported at the end of the + garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Overall duration of incremental sweeping steps on the main thread during a + full garbage collection of the unified heap. Reported at the end of the + garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Overall duration of incremental sweeping steps on the main thread during a + full garbage collection of the managed C++ heap. Reported at the end of the + garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Time spent on marking on the main thread during a full garbage collection of + the unified heap. Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Time spent on marking on the main thread during a whole garbage collection + of the managed C++ heap. Reported at the end of the garbage collection + cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Time spent on sweeping on the main thread during a full garbage collection + of the unified heap. Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Time spent on sweeping on the main thread during a whole garbage collection + of the managed C++ heap. Reported at the end of the garbage collection + cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Time spent on weakness handling on the main thread during a full garbage + collection of the unified heap. Reported at the end of the garbage + collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Time spent on weakness handling on the main thread during a whole garbage + collection of the managed C++ heap. Reported at the end of the garbage + collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Main-thread only duration of a young generation garbage collection of the + JavaScript heap. Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Amount of allocated memory freed by a garbage collection of the managed C++ + heap. Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Amount of used memory after a garbage collection of the managed C++ heap. + Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Amount of used memory before a garbage collection of the managed C++ heap. + Reported at the end of the garbage collection cycle. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Amount of used memory freed by a garbage collection of the managed C++ heap. + Reported at the end of the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Reason a full garbage collection was started in V8. Reported at the end of + the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Reason a young generation garbage collection was started in V8. Reported at + the end of the garbage collection cycle. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Overall duration of a young generation garbage collection of the JavaScript + heap. Reported at the end of the garbage collection cycle. + + + + + mlippautz@chromium.org + v8-memory-sheriffs@google.com + + Time spent in the atomic pause of a {Mode} {Incrementality} full garbage + collection for a V8 Isolate running in {Visibility}. Recorded at the end of + the garbage collection. + + + + + + + + + + + + + + + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Duration of individual incremental marking steps on the main thread during a + garbage collection of the unified heap. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Duration of individual incremental marking steps on the main thread during a + garbage collection of the managed C++ heap. + + + + + nikolaos@chromium.org + v8-memory-sheriffs@google.com + + Duration of individual incremental sweeping steps on the main thread during + a garbage collection of the unified heap. + + + + + omerkatz@chromium.org + v8-memory-sheriffs@google.com + + Duration of individual incremental sweeping steps on the main thread during + a garbage collection of the managed C++ heap. + + + + + dinfuehr@chromium.org + v8-memory-sheriffs@google.com + + Time between requesting GC from background thread and actually starting + collection on main thread. This is reported each time a background thread + requests a GC. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + dinfuehr@chromium.org + v8-memory-sheriffs@google.com + + Time spent in stopping other threads to reach a safepoint. This is reported + each time a safepoint is reached. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + mlippautz@chromium.org + hpayer@chromium.org + v8-memory-sheriffs@google.com + + Time spent in the clearing phase of incremental latency-optimized + Mark-Compact GC. + + + + + mlippautz@chromium.org + hpayer@chromium.org + v8-memory-sheriffs@google.com + + Time spent in the epilogue of incremental latency-optimized Mark-Compact GC. + + + + + mlippautz@chromium.org + hpayer@chromium.org + v8-memory-sheriffs@google.com + + Time spent in the finish phase of incremental latency-optimized Mark-Compact + GC. + + + + + mlippautz@chromium.org + hpayer@chromium.org + v8-memory-sheriffs@google.com + + Time spent in the prologue of incremental latency-optimized Mark-Compact GC. + + + + + hpayer@chromium.org + mlippautz@chromium.org + v8-memory-sheriffs@google.com + + Time spent doing incremental marking steps during garbage collection. + Recorded at the end of each step. + + + + + mlippautz@chromium.org + v8-memory-sheriffs@google.com + Reason an incremental marking was started in V8. + + + + hpayer@chromium.org + v8-memory-sheriffs@google.com + Time spent in starting incremental marking. + + + + mlippautz@chromium.org + v8-memory-sheriffs@google.com + + The total time spent in incremental marking steps in one GC cycle. It is + only recorded if the time is non-zero. + + + + + mlippautz@chromium.org + v8-memory-sheriffs@google.com + Reason a mark-compact garbage collection was started in V8. + + + + mlippautz@chromium.org + v8-memory-sheriffs@google.com + + Sum of all durations of all marking phases (incremental and non-incremental) + within one V8 garbage collection cycle. Reported once per garbage collection + at the end. + + + + + mlippautz@chromium.org + v8-memory-sheriffs@google.com + + Wall time spent in the main scavenging phase that copies over all reachable + objects during a V8 scavenge. + + + + + mlippautz@chromium.org + v8-memory-sheriffs@google.com + Time spent in scavenging the roots during a V8 scavenge. + + + + + Removed 02/2022. + + hpayer@chromium.org + v8-memory-sheriffs@google.com + + Time spent in scavenging phase of GC in a background isolate. + + + + + + Removed 02/2022. Superseded by V8.GC.Cycle.Reason.Young. + + mlippautz@chromium.org + v8-memory-sheriffs@google.com + Reason a scavenge garbage collection was started in V8. + + + + + Removed 02/2022. + + hpayer@chromium.org + v8-memory-sheriffs@google.com + + Time spent in scavenging phase of GC in a foreground isolate. + + + + + oth@chromium.org + Results from snapshot loading. + + + + oth@chromium.org + Results from opening V8 snapshot files. + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + + Liftoff (V8's baseline compiler for WebAssembly) bails out if it hits the + first unsupported feature in a function. The function is recompiled with + TurboFan then. This histogram records the bailout reason (or success) per + WebAssembly function compilation in Liftoff. + + + + + hpayer@chromium.org + + External memory fragmentation in the code space after each GC in percent. + + + + + hpayer@chromium.org + + External memory fragmentation in the large object space after each GC in + percent. + + + + + hpayer@chromium.org + + External memory fragmentation in the map space after each GC in percent. + + + + + hpayer@chromium.org + + External memory fragmentation in the old space after each GC in percent. + + + + + hpayer@chromium.org + + The size of committed memory in the code space after each GC in KB. + + + + + hpayer@chromium.org + + The size of committed memory in the map space after each GC in KB. + + + + + hpayer@chromium.org + + The maximum size of committed memory used by V8 after each GC in KB. + + + + + hpayer@chromium.org + + The total size of committed memory used by V8 after each GC in KB. + + + + + chikamune@chromium.org + chrome-worker@google.com + + Time spent serializing and persisting code (mojo call) for V8 code caching. + Recorded when ProduceCacheInternal() is called. Only recorded when producing + a code cache is required. + + + + + jgruber@chromium.org + pthier@chromium.org + + The number of backtracks performed in a single regexp execution. + + + + + saelo@chromium.org + ishell@chromium.org + + The number of in-use external pointers in an Isolate's ExternalPointerTable. + + When the V8 Sandbox is enabled, objects located outside of the sandbox are + referenced through a per-Isolate ExternalPointerTable to ensure memory-safe + access to them. This histogram records the number of active external + pointers in a single table, which is determined by counting the number of + alive entries during garbage collection of an ExternalPointerTable. + + + + + saelo@chromium.org + ishell@chromium.org + + Mode of operation of V8's sandbox. + + By default, the V8 sandbox is fully backed by a large virtual address space + reservation, ensuring that only V8-related objects are located inside the + sandbox. In that case, the sandbox is configured securely. However, when it + is not possible to reserve a sufficient amount of virtual address space + during initialization (e.g. due to memory or virtual address space + constraints), the sandbox will instead use a fallback mode where only a part + of the sandbox's address space is actually reserved. In that case, unrelated + memory mappings may end up inside the sandbox though, where they could be + corrupted by an attacker. As such, this mode is considered insecure. + + Recorded as enum value during initialization of V8. + + + + + saelo@chromium.org + ishell@chromium.org + + Size of the virtual address space reservation backing the V8 sandbox, in GB. + + This value is typically larger than the size of the sandbox as it includes + the surrounding guard regions. However, in the case of a partially-reserved + (i.e. insecure) sandbox, this value will be smaller than the sandbox size. + + Recorded during initialization of V8. + + + + + gdeepti@chromium.org + ulan@chromium.org + + Number of megabytes requested in shared array buffer allocations. + + + + + jgruber@chromium.org + leszeks@chromium.org + + Time spent deserializing the context snapshot. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + jgruber@chromium.org + leszeks@chromium.org + + Time spent deserializing the isolate snapshot. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + jgruber@chromium.org + leszeks@chromium.org + + Time spent deserializing the read-only snapshot. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + tebbi@chromium.org + mslekova@chromium.org + + Number of ticks (in 1000s of ticks) from starting optimizing to installing + the code object. Recorded on each regular optimization of a function. + + Similar to V8.TurboFanOptimizeTotalTime, but instead of counting time, we + count a deterministic number of ticks sprinkled throughout the Turbofan + compiler. + + + + + tebbi@chromium.org + mslekova@chromium.org + + Total time from starting optimizing to installing the code object. Recorded + on each regular, concurrent optimization of a function. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + tebbi@chromium.org + mslekova@chromium.org + + Time spent in the execution phase of TurboFan optimization. Recorded on each + regular optimization of a function. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + tebbi@chromium.org + mslekova@chromium.org + + Time spent in the finalization phase of TurboFan optimization. Recorded on + each regular optimization of a function. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + tebbi@chromium.org + mslekova@chromium.org + + Time spent in the execution phase of TurboFan optimization for On Stack + Replacement (OSR). Recorded on each optimization for on-stack replacement of + a function. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + tebbi@chromium.org + mslekova@chromium.org + + Time spent in the finalization phase of TurboFan optimization for On Stack + Replacement (OSR). Recorded on each optimization for on-stack replacement of + a function. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + tebbi@chromium.org + mslekova@chromium.org + + Time spent in the preparation phase of TurboFan optimization for On Stack + Replacement (OSR). Recorded on each optimization for on-stack replacement of + a function. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + tebbi@chromium.org + mslekova@chromium.org + + Total time from starting optimizing for On Stack Replacement (OSR) to + installing the code object. Recorded on each optimization for on-stack + replacement of a function. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + tebbi@chromium.org + mslekova@chromium.org + + Total time from starting optimizing to installing the code object. Recorded + on each regular, non-concurrent optimization of a function. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + tebbi@chromium.org + mslekova@chromium.org + + Time spent in the preparation phase of TurboFan optimization. Recorded on + each regular optimization of a function. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + tebbi@chromium.org + mslekova@chromium.org + + Total time spent on a background thread during TurboFan optimization. + Recorded on each regular optimization of a function. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + tebbi@chromium.org + mslekova@chromium.org + + Total time spent on the main thread during TurboFan optimization. Recorded + on each regular optimization of a function. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + tebbi@chromium.org + mslekova@chromium.org + + Total time from starting optimizing to installing the code object. Recorded + on each regular optimization of a function. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + chikamune@chromium.org + sisidovski@chromium.org + hiroshige@chromium.org + kouhei@chromium.org + + Report true when an unhandled exception is reported in the main thread, + which may happen when the code has no appropriate exception handling in the + main thread. The false value is never reported. This histogram is supposed + to be used in A/B testing to check if unhandled exception count is different + across experiment groups by counting the true values. + + + + + chikamune@chromium.org + sisidovski@chromium.org + hiroshige@chromium.org + kouhei@chromium.org + + Report true when an unhandled exception is reported in the worker, which may + happen when the code has no appropriate exception handling in the worker. + The false value is never reported. This histogram is supposed to be used in + A/B testing to check if unhandled exception count is different across + experiment groups by counting the true values. + + + + + ahaas@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Number of times a WebAssembly module being added to the browser cache. With + dynamic tiering, caching is triggered repeatedly whenever the amount of + generated optimized code reaches a threshold. Recorded every time a new + version of the WebAssembly module is being added to the cache, and also when + the module is compiled initially. + + + + + thibaudm@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Number of exceptions caught so far in an isolate, recorded on each caught + exception. + + + + + ahaas@chromium.org + clemensb@chromium.org + wasm-runtime@google.com + + The result of a Wasm code cache lookup. Recorded once per Wasm streaming + compilation at the time where we try to get the compiled Wasm module from + the code cache. + + + + + ahaas@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + WebAssembly JS API function that triggers compilation. Recorded when + WebAssembly compilation gets triggered, independently of the compilation + results, i.e. whether compilation succeeds or fails. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Time from finishing compilation of a WebAssembly module until downloading + the module finishes with streaming compilation. Recorded when streaming + compilation finishes and the compilation of the WebAssembly module finished + before the download. If the download finishes first, then the histogram + V8.WasmStreamingUntilCompilationFinishedMilliSeconds is recorded. + + + + + ahaas@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + After deserialization, all functions that were not in the serialized module + are compiled with the baseline compiler. This metric measures the time spent + by the baseline compiler on compiling missing functions. Recorded after the + baseline compilation of the missing functions finishes. + + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + wasm-v8@google.com + + Time to compile a WebAssembly function. Recorded on each compilation of a + single function, either synchronous, asynchronous, or lazily. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + wasm-v8@google.com + + Peak memory used to compile a WebAssembly function. Recorded for each + TurboFan compilation of a WebAssembly function. + + + + + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Time to compile a huge WebAssembly function. A function is considered huge + if it is larger than 100kB. Recorded on each compilation of such a function, + either synchronous, asynchronous, or lazily. + + + + + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Peak memory used to compile a huge WebAssembly function. A function is + considered huge if it is larger than 100kB. Recorded for each TurboFan + compilation of such a function. + + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + wasm-v8@google.com + + Time to asynchronously compile a WebAssembly module (using the + 'WebAssembly.compile' API). Recorded on each asynchronous WebAssembly + compilation, but only if a high-resolution clock is available. + + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + wasm-v8@google.com + + Time to compile a WebAssembly module. Recorded on each synchronous + WebAssembly compilation. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + wasm-v8@google.com + + Time to asynchronously compile a WebAssembly module using streaming + compilation (via the 'WebAssembly.compileStreaming' API). Recorded on each + streaming WebAssembly compilation, but only if a high-resolution clock is + available. Note that compilation speed is often limited by the network + speed, which is also reflected in this metric. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Time to deserialize a WebAssembly module when the WebAssembly module is + loaded from the cache. Recorded whenever a WebAssembly module gets + deserialized during streaming compilation. + + + + + bbudge@chromium.org + clemensb@chromium.org + adamk@chromium.org + wasm-v8@google.com + + Time to asynchronously compile or deserialize a WebAssembly module during + streaming compilation (via the 'WebAssembly.compileStreaming' API). Recorded + on each streaming WebAssembly compilation or deserialization from the cache, + but only if a high-resolution clock is available. Note that compilation + speed is often limited by the network speed, which is also reflected in this + metric. + + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + wasm-v8@google.com + + Function count per WebAssembly module. Recorded for each WebAssembly module + which is decoded for validation, compilation, or deserialization. + + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + wasm-v8@google.com + + Size of a huge WebAssembly function in bytes. A function is considered huge + if it is larger than 100kB. Recorded on each compilation of a single + function, either synchronous, asynchronous, or lazily. + + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + wasm-v8@google.com + + Time to instantiate a WebAssembly module. Recorded on each instantiation of + a WebAssembly module. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Time spend for lazily compiling WebAssembly functions. Recorded on each lazy + compilation event (which typically compiles one function). + + This histogram only records metrics on machines with high-resolution clocks. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Maximum time spent on the main thread on compiling a single WebAssembly + function with lazy compilation in the first 120 seconds after the first + instantiation of a WebAssembly module. Recorded 120 seconds after calling + the start function of the WebAssembly module during the first instantiation + of a WebAssembly module. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Maximum time spent on the main thread on compiling a single WebAssembly + function with lazy compilation in the first 20 seconds after the first + instantiation of a WebAssembly module. Recorded 20 seconds after calling the + start function of the WebAssembly module during the first instantiation of a + WebAssembly module. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Maximum time spent on the main thread on compiling a single WebAssembly + function with lazy compilation in the first 5 seconds after the first + instantiation of a WebAssembly module. Recorded 5 seconds after calling the + start function of the WebAssembly module during the first instantiation of a + WebAssembly module. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Maximum time spent on the main thread on compiling a single WebAssembly + function with lazy compilation in the first 60 seconds after the first + instantiation of a WebAssembly module. Recorded 60 seconds after calling the + start function of the WebAssembly module during the first instantiation of a + WebAssembly module. + + + + + ecmziegler@chromium.org + adamk@chromium.org + ahaas@chromium.org + wasm-v8@google.com + + Number of 64KiB pages a WebAssembly module declares as its maximum + requirement. Recorded on each instantiation of a WebAssembly module. + + + + + ecmziegler@chromium.org + adamk@chromium.org + ahaas@chromium.org + wasm-v8@google.com + + The result of attempts to allocate WebAssembly.Memory buffers. Recorded on + each attempt to allocate a WebAssembly.Memory buffer. + + + + + clemensb@chromium.org + jkummerow@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Whether the system supports memory protection keys in userspace (MPK / PKU / + PKEY). This is determined once per process and recorded once per isolate + during isolate creation (startup). + + As we use a Linux-specific API for PKUs, this value is only recorded on + 64-bit Linux machines. + + + + + ecmziegler@chromium.org + adamk@chromium.org + ahaas@chromium.org + wasm-v8@google.com + + Number of 64KiB pages a WebAssembly module declares as its minimum + requirement. Recorded on each instantiation of a WebAssembly module. + + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + wasm-v8@google.com + + The amount of generated code in MiB for one WebAssembly module. Recorded + when baseline compilation finished. + + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + wasm-v8@google.com + + The amount of committed code space in MiB used by individual WebAssembly + modules. Recorded for each live module after each full GC. + + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + wasm-v8@google.com + + The percentage of WebAssembly code freed by garbage collection (ratio of + total freed code to total generated code so far). Recorded for each live + module after each full GC. + + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + wasm-v8@google.com + + The amount of generated code in MiB for one WebAssembly module. Recorded + when top-tier compilation finished. + + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + wasm-v8@google.com + + Number of code GCs triggered per WebAssembly module. Recorded after each + code GC. + + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + wasm-v8@google.com + + The number of code spaces (i.e. individual reservations) of a WebAssembly + module. Recorded on every code space allocation. + + + + + ecmziegler@chromium.org + adamk@chromium.org + ahaas@chromium.org + wasm-v8@google.com + + Size of the wire bytes of a WebAssembly module. Recorded for each + WebAssembly module which is decoded for validation, compilation, or + deserialization. + + + + + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Number of WebAssembly native modules live in a Wasm engine (typically per + process). Recorded whenever a new native module is created. + + + + + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Number of WebAssembly native modules live in an isolate. Recorded whenever a + new native module is created. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Number of functions that get compiled lazily in 120 seconds after the first + instantiation of a WebAssembly module. Recorded 120 seconds after calling + the start function of the WebAssembly module during the first instantiation + of a WebAssembly module. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Number of functions that get compiled lazily in 20 seconds after the first + instantiation of a WebAssembly module. Recorded 20 seconds after calling the + start function of the WebAssembly module during the first instantiation of a + WebAssembly module. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Number of functions that get compiled lazily in 5 seconds after the first + instantiation of a WebAssembly module. Recorded 5 seconds after calling the + start function of the WebAssembly module during the first instantiation of a + WebAssembly module. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Number of functions that get compiled lazily in 60 seconds after the first + instantiation of a WebAssembly module. Recorded 60 seconds after calling the + start function of the WebAssembly module during the first instantiation of a + WebAssembly module. + + + + + thibaudm@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Number of exceptions rethrown so far in an isolate, recorded on each + rethrown exception. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Time to serialize a WebAssembly module for storing it in the cache. Recorded + on each serialization, which happens after top-tier compilation finished, or + when a new chunk of functions was compiled (with dynamic tiering). + + + + + ahaas@chromium.org + clemensb@chromium.org + wasm-runtime@google.com + + Classification of the argument to the streaming WebAssembly APIs + (WebAssembly.compileStreaming and WebAssembly.instantiateStreaming). + Recorded on each invocation of this API. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Time from finishing downloading a WebAssembly module until streaming + compilation finishes. Recorded when streaming compilation finishes and the + download of the WebAssembly module finished before compilation. If + compilation finishes first, then the histogram + V8.WasmCompilationUntilStreamFinishedMilliSeconds is recorded. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Total time spent on the main thread on compiling WebAssembly functions with + lazy compilation in the first 120 seconds after the first instantiation of a + WebAssembly module. Recorded 120 seconds after calling the start function of + the WebAssembly module during the first instantiation of a WebAssembly + module. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Total time spent on the main thread on compiling WebAssembly functions with + lazy compilation in the first 20 seconds after the first instantiation of a + WebAssembly module. Recorded 20 seconds after calling the start function of + the WebAssembly module during the first instantiation of a WebAssembly + module. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Total time spent on the main thread on compiling WebAssembly functions with + lazy compilation in the first 5 seconds after the first instantiation of a + WebAssembly module. Recorded 5 seconds after calling the start function of + the WebAssembly module during the first instantiation of a WebAssembly + module. + + + + + ahaas@chromium.org + clemensb@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Total time spent on the main thread on compiling WebAssembly functions with + lazy compilation in the first 60 seconds after the first instantiation of a + WebAssembly module. Recorded 60 seconds after calling the start function of + the WebAssembly module during the first instantiation of a WebAssembly + module. + + + + + thibaudm@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Number of exceptions thrown so far in an isolate, recorded on each thrown + exception. + + + + + ecmziegler@chromium.org + adamk@chromium.org + clemensb@chromium.org + wasm-v8@google.com + + Time to tier-up a WebAssembly module, i.e. the time between baseline + compilation finishes and top-tier compilation finishes. Recorded whenever an + asynchronously compiled module finishes top-tier compilation, but only if a + high-resolution clock is available. + + + + + thibaudm@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Time since the last time an exception was caught in WebAssembly, recorded + when the next exception is caught (per isolate). + + + + + thibaudm@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Time since the last time an exception was rethrown in WebAssembly, recorded + when the next exception is rethrown (per isolate). + + + + + thibaudm@chromium.org + ecmziegler@chromium.org + wasm-v8@google.com + + Time since the last time an exception was thrown in WebAssembly, recorded + when the next exception is thrown (per isolate). + + + + + + diff --git a/histograms/metadata/variations/histograms.xml b/histograms/metadata/variations/histograms.xml new file mode 100644 index 000000000000..be29ce5ebb9d --- /dev/null +++ b/histograms/metadata/variations/histograms.xml @@ -0,0 +1,749 @@ + + + + + + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Whether creating field trials from shared memory succeeded. Recorded by each + child process on process startup. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Whether creating field trials from --force-fieldtrials switch succeeded. + Recorded by each child process on process startup. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Logged if there is no field trial allocator available when getting the list + of initially active field trials, resulting to a fallback to the command \ + line. Note: False is never logged. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Logged if the command line was populated with field trial information due to + the read-only shared memory handle not being available, when starting a + child process. Note: False is never logged. + + + + + caitlinfischer@google.com + src/base/metrics/OWNERS + + The size of the variations seed (serialized uncompressed proto) that is + loaded on startup and used. Note that not all loaded seeds are used; for + example, expired seeds are not used. The seed could be a regular seed or a + safe seed. Recorded after setting up field trials with the seed. + + + + + caitlinfischer@google.com + src/base/metrics/OWNERS + + The number of studies contained in the seed that is being used. Note that + the client may not participate in all studies due to study filtering. The + seed could be a regular seed or a safe seed. Recorded before setting up + field trials with the seed. + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + + The time interval between when a WebView-using app's copy of the variations + seed was written to its local app storage and when it was loaded for use. + This is different from Variations.SeedFreshness because it measures + freshness from when the app received its copy of the seed, not when the seed + was originally downloaded. Written every time the browser process + initializes, but not if there was an error reading the seed, or no seed + existed. + + + + + caitlinfischer@google.com + src/base/metrics/OWNERS + Internals>Metrics>Variations + + The error code given by JSONFileValueDeserializer::Deserialize(). Emitted + during CleanExitBeacon initialization when the beacon file cannot be + deserialized. In other words, it is emitted whenever the "Not + deserializable" bucket of the BeaconFileStateAtStartup histogram is + emitted. + + As of M102 for desktop and iOS and M103 for Android Chrome, any client may + emit this metric. Prior to this, the metric was emitted by only clients in + an enabled group that used the beacon file. + + + + + caitlinfischer@google.com + src/base/metrics/OWNERS + Internals>Metrics>Variations + + The state of the beacon file and its contents, e.g. readable or not + deserializable. See the BeaconFileDeserializationError histogram for more + details on why the file was not deserializable. Emitted when the + CleanExitBeacon is initialized. + + As of M102 for desktop and iOS and M103 for Android Chrome, any client may + emit this metric. Prior to this, the metric was emitted by only clients in + an enabled group that used the beacon file. + + + + + caitlinfischer@google.com + src/base/metrics/OWNERS + Internals>Metrics>Variations + + Denotes whether the beacon file was successfully written. Recorded + immediately after Chrome tries to write the file. + + As of M102 for desktop and iOS and M103 for Android Chrome, any client may + emit this metric. Prior to this, the metric was emitted by only clients in + an enabled group that used the beacon file. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + swestphal@chromium.org + src/android_webview/OWNERS + src/base/metrics/OWNERS + + The state of the delta-compression when attempting to fetch a variations + seed via the java-based fetcher on Android. Records both the requested and + received delta compression values in one enumeration. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + The latency of connection to the variations server when fetching an initial + variations seed during Android Chrome first run. This is included in the + Variations.FirstRun.SeedFetchTime measurement. Only considers cases where an + HTTP 200 result was received. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + The result of attempting to fetch an initial variations seed during Android + Chrome first run. Records both the HTTP code and various error values in one + enumeration. Prior to M95, non-200 HTTP codes were counted as IOException. + Starting with M95, these codes are logged separately. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + The latency of fetching an initial variations seed during Android Chrome + first run. Only considers cases where an HTTP 200 result was received. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + The result of attempting to import an initial variations seed during Android + Chrome first run. Logged from VariationsSeedStore::LoadSeed when seed prefs + do not exist. + + + + + caitlinfischer@google.com + src/base/metrics/OWNERS + Internals>Metrics + + The owner of the top-level domain from which certain subframe-initiated HTTP + requests are made. It's logged after determining that (i) the request should + include variations headers, (ii) the request is from a subframe, and (iii) + TrustedParams are not present. It's logged before adding headers. It allows + us to verify whether non-render-thread-initiated requests, if any, lack + TrustedParams. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + Records number of experiment ids in the X-Client-Data header at the time the + header is constructed. + + + + + asvitkine@chromium.org + jwd@chromium.org + caitlinfischer@google.com + src/base/metrics/OWNERS + Internals>Metrics + + Details about the request context in which an HTTP request is made. Logged + after determining that the request should include variations headers but + before adding the headers. + + + + + asvitkine@chromium.org + jwd@chromium.org + src/base/metrics/OWNERS + + The result of whether to append Variations headers to a request. Logged when + when determining (i) whether the URL to which the request is being sent + should have a variations header and (ii) whether--after a redirect--the + request to which a variations header was added should have the variations + header removed. {VariationsHeadersURLValidationResult} + + + + + + + + + holte@chromium.org + src/base/metrics/OWNERS + + Records the reason for rejecting an invalid layer. Recorded when processing + the variations seed at startup and when simulating a new seed. + + + + + jwd@chromium.org + src/base/metrics/OWNERS + + Records the reason for rejecting an invalid study. Recorded when processing + the variations seed at startup and when simulating a new seed. + + + + + dalerogerson@google.com + src/base/metrics/OWNERS + + The number of kilobytes of the variations crash keys, recorded every time + crash keys are updated. Crash keys larger than kVariationKeySize will be + truncated. The size of kVariationKeySize is controlled by the preprocessor + macro LARGE_VARIATION_KEY_SIZE. {Size}; + + + + + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + Records how the country code saved in prefs used for filtering permanent + consistency studies compares to the country code in the variations seed. + This is recorded each time the saved country code is loaded from the pref. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + The result of verifying the latest variations seed's signature, recorded + when the seed is loaded from Local State. Not recorded when running in safe + mode. + + + + + ydago@chromium.org + pastarmovj@chromium.org + src/base/metrics/OWNERS + + Records the restrictions on how experiment variations are applied on the + client. This is recorded at start up. + + This histogram is not interesting anymore but it is still used by test code + to verify that the respective log is properly applied so it will be kept in + the code even if not collected by the server anymore. TODO(crbug/1345624): + Clean this dependency up and remove the histogram. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + Counts the number of times the VariationsService is allowed or not allowed + to make a request due to the ResourceRequestAllowedNotifier. Useful for + debugging cases where variations seeds may not be getting fetched. + + + + + isherman@chromium.org + asvitkine@chromium.org + src/base/metrics/OWNERS + + Records whether the safe variations seed was successfully read from disk on + startup. Records a detailed reason on read failure. Only recorded when + attempting to run in safe mode. + + Expired after M77 and revived in M93. + + + + + isherman@chromium.org + asvitkine@chromium.org + src/base/metrics/OWNERS + + The result of verifying the safe variations seed's signature. Recorded when + the seed is loaded from disk. Only recorded when attempting to run in safe + mode. + + Expired after M77 and revived in M93. + + + + + isherman@chromium.org + asvitkine@chromium.org + src/base/metrics/OWNERS + + Records the result of attempting to store a safe variations seed (and all + associated metadata) on disk. + + Expired after M77 and revived in M93. + + + + + isherman@chromium.org + asvitkine@chromium.org + src/base/metrics/OWNERS + + The result of verifying the safe variations seed's signature. Recorded when + attempting to store the safe seed on disk. + + Expired after M77 and revived in M93. + + + + + isherman@chromium.org + asvitkine@chromium.org + src/base/metrics/OWNERS + + The number of consecutive crashes observed by the VariationsService without + a single intervening successful seed fetch. Recorded during Chrome startup + when the MetricsStateManager's CleanExitBeacon is created. + + Prior to M92, this was recorded when the SafeSeedManager was created. + + + + + isherman@chromium.org + asvitkine@chromium.org + src/base/metrics/OWNERS + + The number of consecutive failed attempts to fetch a new seed by the + VariationsService. Recorded during Chrome startup when the SafeSeedManager + is created. + + + + + hnakashima@chromium.org + src/chrome/browser/flags/OWNERS + + The number of consecutive crashes observed by Android's CachedFeatureFlags + without a single intervening successful flag cache from native. Recorded the + first time a cached flag is checked. + + Android only. + + + + + hnakashima@chromium.org + src/chrome/browser/flags/OWNERS + + What behavior of Safe Mode for CachedFlags (including not engaging it) was + performed. + + {Event} + + The ratio "Cached" / ("WillCache" - "Pause") + is the success rate for a given mode, and (100% - success rate) is the crash + rate. + + Android only. + + + + + + + + + + + jwd@chromium.org + asvitkine@chromium.org + src/base/metrics/OWNERS + + Counts if a response from the variations server is the first response of the + day or not. This is counted when a new valid seed or a 304 is received. The + date line is computed in UTC and the times being compared are the server + time from the server response and the stored server time from the last + successful request. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + HTTP response codes and network error encountered by VariationsService when + attempting to fetch a variations seed from the server over an + {ConnectionType} connection. + + + + + + + + + ginnyhuang@chromium.org + src/base/metrics/OWNERS + + The latency of fetching an initial variations seed during first run on + non-Android platforms. Only considers cases where an HTTP 200 result was + received. + + The respective metric for Android's is Variations.FirstRun.SeedFetchTime. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + The time interval between when the variations seed was downloaded and when + it was loaded for use. + + Recorded after the seed is loaded for both regular seeds and safe seeds. Not + recorded for expired seeds or for seeds with an unknown download time, which + is typically a seed imported via first run. A seed that (a) was fetched over + 30 days ago and (b) is older than the binary build time is considered + expired. + + Prior to M93, this metric was recorded under slightly different conditions. + First, the metric was recorded for safe seeds--expired or not--as long as + they had download times. As of M93, it's no longer recorded for expired safe + seeds. Second, the metric was not previously recorded for regular seeds that + were older than 30 days, but as of M93, the freshness is recorded for seeds + that are older than 30 days and newer than the binary build time. + + Prior to M99, this histogram would not be logged for first run seeds (where + they were not fetched by Chrome, but provided externally, such as part of + Chrome installation via Google Update). In M99+, this histogram will be + logged with a value of 0 minutes, so that the seed is considered fresh. + + + + + ntfschr@chromium.org + src/base/metrics/OWNERS + src/android_webview/OWNERS + + Records the time spent blocking WebView startup to wait for the variations + seed. This is less than the entire time needed to load the seed, since + startup is only blocked if loading is not complete by the time the seed is + needed. This would ideally have a maximum value equal to the timeout in + VariationsSeedLoader, but there is no actual limit on how late that timeout + could fire. This is logged once per WebView startup, whether or not loading + the seed was successful. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + Records whether the latest variations seed was successfully read from local + state on startup. Records a detailed reason on read failure. Not recorded + when running in safe mode. + + + + + isherman@chromium.org + asvitkine@chromium.org + src/base/metrics/OWNERS + + Records how long it takes to load and apply a variations seed. Recorded only + when the seed is successfully loaded and applied. To help diagnose a + processing time increase, see whether Variations.AppliedSeed.Size and + Variations.AppliedSeed.StudyCount increased at the same time. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + Records the result of storing the variations seed that was received from the + server. Also logs the types of data received (gzip, delta, etc). + + + + + caitlinfischer@google.com + src/base/metrics/OWNERS + + Captures details about Chrome's attempt to use a VariationsSeed, e.g. + whether Chrome used a safe seed. Recorded once during Chrome startup after + attempting to load a seed and before field trials are created. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + The size of the variations seed data, which may be a partial (delta) or + compressed (gzip) payload, see Variations.SeedStoreResult. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + The UI thread run time of the VariationsSeedStore::StoreSeedData function. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + The result of verifying the variations seed signature, recorded when the + variations seed is stored to Local State after being retrieved from the + server. + + + + + asvitkine@chromium.org + src/base/metrics/OWNERS + + Records the number of UI strings overriden for each study that overrides + strings. Recorded at start up when each study is evaluated. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + The time since the previous attempt to fetch the variations seed within the + same session, with 0 indicating that this is the first attempt. Recorded + when a variations seed fetch is attempted by the VariationsService. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + Log the user channel assigned at browser startup used for evaluating the + variations seeds. + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + + The time between the start of two consecutive WebView seed downloads by + WebView's service. This metric will not be written if seeds are never + downloaded. + + + + + ntfschr@chromium.org + src/android_webview/OWNERS + + The delay between when a WebView seed download was scheduled by the service + with the JobScheduler and when it was executed. + + + + + asvitkine@chromium.org + rkaplow@chromium.org + src/base/metrics/OWNERS + + Stores the state of the loaded variations seed, e.g. not expired. Recorded + after the seed is loaded and before trials are created from the seed. Note + that seeds for which this metric is recorded may not be applied, e.g. when + the seed has expired. + + {Mode} + + + + + + + + + + diff --git a/histograms/metadata/video_tutorials/OWNERS b/histograms/metadata/video_tutorials/OWNERS new file mode 100644 index 000000000000..66926bcdad4e --- /dev/null +++ b/histograms/metadata/video_tutorials/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +qinmin@chromium.org +shaktisahu@chromium.org diff --git a/histograms/metadata/video_tutorials/histograms.xml b/histograms/metadata/video_tutorials/histograms.xml new file mode 100644 index 000000000000..93c7170d0aea --- /dev/null +++ b/histograms/metadata/video_tutorials/histograms.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + shaktisahu@chromium.org + chrome-upboarding-eng@google.com + + Recorded whenever the user interacts with the video player language picker + UI. Records various user actions such as language selection, back press, or + dismiss actions. + + + + + shaktisahu@chromium.org + chrome-upboarding-eng@google.com + + Recorded whenever the user taps on a language in the video player language + picker UI. Only the position of the language in the list of available + languages will be recorded. + + + + + shaktisahu@chromium.org + chrome-upboarding-eng@google.com + + Records the latency in bringing up the video player for video tutorials. + Measures the time difference between user clicking on a video to the time + when it actually starts playing. + + + + + shaktisahu@chromium.org + chrome-upboarding-eng@google.com + + Records video watch progress events such as play, pause, resume, completion, + failure etc. encountered during when watching video tutorial for the + {Feature} feature. + + + + + + shaktisahu@chromium.org + chrome-upboarding-eng@google.com + + Records user actions on the video player UI, such as clicking on various + buttons, encountered when watching video tutorial for the {Feature} feature. + + + + + + + diff --git a/histograms/metadata/views/histograms.xml b/histograms/metadata/views/histograms.xml new file mode 100644 index 000000000000..1ad361cf0880 --- /dev/null +++ b/histograms/metadata/views/histograms.xml @@ -0,0 +1,93 @@ + + + + + + + + + + pkasting@chromium.org + tluk@chromium.org + skau@chromium.org + + Records the size of the ColorProviderManager cache when a new ColorProvider + is generated. New entries are generated when a client requests a + ColorProvider with a Key that is not in the cache. Since the cache size is + capped, a distribution with too many results at the tail indicate that the + cache is too small. + + + + + pkasting@chromium.org + tluk@chromium.org + skau@chromium.org + + Records the number of ColorProvider instances constructed and initialized by + the ColorProviderManager following a NativeTheme update in a {Process} + process. Emitted after the NotifyOnNativeThemeUpdated() event has been + processed. + + + + + + + + + pkasting@chromium.org + tluk@chromium.org + skau@chromium.org + + Records the time spent initializing a newly constructed ColorProvider + instance in a {Process} process. The timer starts immediately before the + ColorProvider is constructed and emitted immediately after initialization + (i.e. all mixers are run and the ColorMap is created). + + + + + + + + + pkasting@chromium.org + tluk@chromium.org + skau@chromium.org + + Records the time spent synchronously processing the the + NotifyOnNativeThemeUpdated() event in a {Process} process. The timer starts + as soon as the event handler is entered and emitted when code returns from + the event handler. + + + + + + + + + + diff --git a/histograms/metadata/web_apk/OWNERS b/histograms/metadata/web_apk/OWNERS new file mode 100644 index 000000000000..c24d884be63b --- /dev/null +++ b/histograms/metadata/web_apk/OWNERS @@ -0,0 +1,7 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +eirage@chromium.org +hartmanng@chromium.org +rayankans@chromium.org diff --git a/histograms/metadata/web_apk/histograms.xml b/histograms/metadata/web_apk/histograms.xml new file mode 100644 index 000000000000..1d9d691f93f7 --- /dev/null +++ b/histograms/metadata/web_apk/histograms.xml @@ -0,0 +1,367 @@ + + + + + + + + + + + + + + + + + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Records the available space that can be used when installing a WebAPK from + Google Play fails. The space recorded is the available space beyond the + system's minimum free space threshold, with a range between -1000 and 1000 + MB. Negative values mean that there is less free space available than the + system's minimum, by the given amount. + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Records the available space that can be used when installing a WebAPK from + Google Play fails after freeing up cache. The space recorded is the + available space beyond the system's minimum free space threshold, with a + range between -1000 and 1000 MB. Negative values mean that there is less + free space available than the system's minimum, by the given amount. + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Records the error code when installing a WebAPK from Google Play fails. See + go/webapk-install-googleplayerrorcode. + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Records whether installing a WebAPK from Google Play succeeded. If not, + records the reason that the install failed. + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + How long it takes to install a WebAPK. The time is measured from the time + that the user initiates the install to the time that the Open button is + shown in the infobar. This metric is only recorded when install succeeds. + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + WebAPKs are PWAs wrapped in an Android apk, installed from an app banner or + the add to homescreen menu item. This stat tracks WebAPK installation + events. + + + + + eirage@chromium.org + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Record whether installing a WebAPK succeeded. If not record the reason that + the install failed. + + + + + finnur@chromium.org + peter@chromium.org + src/chrome/android/webapk/OWNERS + + Records the path that the user took to reach install point for PWAs. This + can be via the Install Modal or the new BottomSheet and may involve the + in-product help (IPH) showing. Recorded once per install of a PWA, at the + time the PWA is installed. + + + + + hartmanng@chromium.org + rayankans@chromium.org + src/chrome/android/webapk/OWNERS + + Records the amount of time which has elapsed from the "install infobar + showing" to the "install request being sent to Google Play". + This time includes the time that it takes to request the WebAPK token and + the time that it takes to compute the hashes for the launcher icon and the + badge icon. + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Records the error codes when a WebAPK is launched with network failures. + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Recorded each time that a WebAPK is navigated. Records whether the + navigation is within the scope of the WebAPK's Web Manifest. Not recorded + for child tabs - e.g. tabs opened via window.open() + + + + + + Replaced by WebApk.Notification.Permission.Status2 in June 20220. + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + When a WebAPK receives a notification, log whether it has permission to + display that notification. + + + + + hartmanng@chromium.org + mvanouwerkerk@chromium.org + src/chrome/android/webapk/OWNERS + + When a WebAPK receives a notification, log whether it has permission to + display that notification. + + + + + mvanouwerkerk@chromium.org + peconn@chromium.org + src/chrome/android/webapk/OWNERS + + The result of a WebAPK notification permission request for the purpose of + notification delegation. This is logged when the + NotificationPermissionUpdater receives the result from the + WebApkServiceClient. + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + The length of a WebAPK session (launch/foregrounding to backgrounding) in + milliseconds. {WebApkDistributorType} + + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Records WebAPK "Shell APK version" when the WebAPK is launched. + The "Shell APK version" is documented in shell_apk_version.gni + {WebApkDistributorType} + + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Tracks the time to splash screen visible starting from the launch of the + WebAPK shell (rather than from the launch of Chrome) for new-style WebAPKs. + The WebAPK shell displays the splash screen for new-style WebAPKs. + + This is recorded iff: - This is a cold startup of Chrome. - Chrome has not + been sent to the background since launch. - There was no recents entry for + Chrome (Android replays intents if a recents entry exists), which otherwise + adds noise/long-tail to this histogram. + + + + + mheikal@chromium.org + yfriedman@chromium.org + + Tracks the time to splashscreen visible starting from the launch of the + WebAPK shell (rather than from the launch of Chrome). The splashscreen is + shown during postInflationStartup. + + This is recorded iff: - This is a cold startup of Chrome. - Chrome has not + been sent to the background since launch. - There was no recents entry for + Chrome (android replays intents if a recents entry exists), which otherwise + adds noise/long-tail to this histogram. + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Records that a WebAPK was uninstalled. {WebApkDistributorType} + + + + + + eirage@chromium.org + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + When WebApkUpdateDataFetcher found a valid manifest, record whether the + manifest can be used to update the WebAPK. + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Records whether updating a WebAPK from Google Play succeeded. If not, + records the reason that the update failed. + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Records the number of zombie "WebAPK update request" files that + the update process failed to cleanup. Recorded for all WebAPKs whenever a + WebAPK or webapp is launched. + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Records the number of times that a WebAPK update request was queued (i.e. + waiting for the WebAPK to be backgrounded) before being sent to the server. + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Records the time point when a request to update a WebAPK is sent to the + WebAPK Server. + + + + + eirage@chromium.org + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + When WebAPK updates with empty or same UniqueId, record whether each of the + {LegacyIdentifierType} was the same. + + + + + + + + + + eirage@chromium.org + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + For WebAPK unique ID migration, record whether an update is neede (with + non-empty update reason). This only records for the first legacy update that + updates the WebAPK from an empty id. + + + + + hartmanng@chromium.org + src/chrome/android/webapk/OWNERS + + Records whether Chrome can bind to a WebAPK's "WebAPK service". + Recorded each time that Chrome attempts to bind to a WebAPK service. + + + + + eirage@chromium.org + src/chrome/android/webapk/OWNERS + + Records number of unique origins for WebAPKs that have been added to + WebappRegistry. This is recorded each time on Chrome startup, after the + WebappRegistry is initialized. + + + + + + diff --git a/histograms/metadata/web_audio/OWNERS b/histograms/metadata/web_audio/OWNERS new file mode 100644 index 000000000000..91c0afcfb11c --- /dev/null +++ b/histograms/metadata/web_audio/OWNERS @@ -0,0 +1,6 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +hongchan@chromium.org +mjwilson@chromium.org diff --git a/histograms/metadata/web_audio/histograms.xml b/histograms/metadata/web_audio/histograms.xml new file mode 100644 index 000000000000..ecbc5dbeaa70 --- /dev/null +++ b/histograms/metadata/web_audio/histograms.xml @@ -0,0 +1,314 @@ + + + + + + + + + + hongchan@chromium.org + mjwilson@chromium.org + + The length (in frames) requested by createBuffer(). Recorded for every call + to createBuffer(). Probably many (tens or hundreds) per page. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + The number of channels requested by createBuffer(). Recorded for every call + to createBuffer(). Probably many (tens or hundreds) per page. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + The sample rate (in Hz) requested by createBuffer(). Recorded for every call + to createBuffer(). Probably many (tens or hundreds) per page. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + The ratio of the buffer sample rate from createBuffer() to the context + sample rate. This indicates if the buffer needs to be resampled. Recorded + for every call to createBuffer(). Probably many (tens or hundreds) per page. + + + + + hongchan@chromium.org + mjwilson@chromium.org + cduvall@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + Measures the time it takes to create the AudioContext object. This is + recorded every time an AudioContext is successfully created. + + + + + hongchan@chromium.org + mjwilson@chromium.org + + The hardware sample rate (in Hz) used by an AudioContext. Recorded for every + WebAudio AudioContext that is created; probably only one or two per page. + + + + + hongchan@chromium.org + mjwilson@chromium.org + + If provided, the latencyHint option category of "interactive", + "balanced", "playback", or "exact", in that + order where "exact" means an explicit floating point value was + provided. Recorded for every AudioContext that is constructed with a + latencyHint. + + + + + hongchan@chromium.org + mjwilson@chromium.org + + If the latencyHint is provided and is a floating-point number, the value in + milliseconds is recorded. This is recorded for every AudioContext that is + constructed with a floating-point latencyHint value. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + The maximum number of (hardware) channels available in an AudioContext. + Recorded for every WebAudio AudioContext that is created; probably only one + or two per page. + + + + + fdoray@chromium.org + hongchan@chromium.org + + Tracks occurences of AudioContext operations, to allow assessing what + proportion of AudioContexts are explicitly closed. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + The sample rate requested by developer to be used as the sample rate when + constructing an AudioContext with an AudioContextOptions dictionary. This is + recorded for each AudioContext created, probably just one or two per page. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + The ratio of the user-selected sample rate to the hardware sample rate of an + AudioContext. The ratio is represented as a percentage. This is recorded for + each AudioContext created, probably just one or two per page. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + The callback buffer size (in audio frames) for WebAudio rendering between + the WebAudio graph and the audio device thread. This can differ from the + value recommended by the audio hardware due to internal constraints in + WebAudio. Recorded for every WebAudio AudioContext that is created. + + + + + hongchan@chromium.org + mjwilson@chromium.org + + The buffer size (in audio frames) for WebAudio rendering recommended by the + audio hardware. Recorded for every WebAudio AudioContext that is created. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + The latency reported from the audio hardware. This number can be dynamic at + runtime but the metric is collected only once at the first platform audio + callback after an AudioContext is created. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + The autoplay status of an AudioContext when destroyed. This include all + types of frames. In order to know the value only for main frames, the + .CrossOrigin values can be substracted. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + The autoplay status of an AudioContext when destroyed in a cross-origin + frame. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + Records how an AudioContext was unlocked (if it was). This is recorded when + the AudioContext is destroyed. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + The type of the BiquadFilterNode. Recorded each time the type is set. This + recorded once (to lowpass) when a biquad filter is created and also recorded + whenever the filter type changes due to user action or programatically. It + is unlikely the type will change more than once. + + + + + hongchan@chromium.org + mjwilson@chromium.org + + The duration in millisec of impulse responses for a ConvolverNode. Recorded + each time the impulse response is set for a ConvolverNode. + + + + + hongchan@chromium.org + mjwilson@chromium.org + + The order of the WebAudio IIRFilterNode. The order is one less than the + number of feedback coefficients used in the denominator of the IIRFilter + transfer function. Recorded each time an IIRFilter is constructed. + + + + + hongchan@chromium.org + mjwilson@chromium.org + cduvall@chromium.org + + Measures the time it takes to create the OfflineAudioContext object. This is + recorded every time an OfflineAudioContext is successfully created. + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + The panning model for the PannerNode. Recorded once with the default value + at creation and once again whenver it is changed. Once changed, it is + unlikely to be changed again. If there are any PannerNodes created at all, + then there is probably one for each source (AudioBufferSourceNode, + OscillatorNode, or other source). + + + + + hongchan@chromium.org + mjwilson@chromium.org + + Captures if WebAudio caused glitches or not due to the FIFO underflow. It is + recorded when PushPullFIFO is destroyed. (e.g. navigating away from the + page.) + + + + + hongchan@chromium.org + mjwilson@chromium.org + src/third_party/blink/renderer/modules/webaudio/OWNERS + + Percentage of FIFO underflow happened due to the the missed deadline of + WebAudio rendering engine. It is recorded when PushPullFIFO is destroyed. + (e.g. navigating away from the page.) + + + + + + diff --git a/histograms/metadata/web_core/OWNERS b/histograms/metadata/web_core/OWNERS new file mode 100644 index 000000000000..c4e2a63a395d --- /dev/null +++ b/histograms/metadata/web_core/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +chrishtr@chromium.org diff --git a/histograms/metadata/web_core/histograms.xml b/histograms/metadata/web_core/histograms.xml new file mode 100644 index 000000000000..9dd31ca866b6 --- /dev/null +++ b/histograms/metadata/web_core/histograms.xml @@ -0,0 +1,820 @@ + + + + + + + + + + + + + + + wychen@chromium.org + gilmanmh@google.com + + The time spent on collecting the statistics of the document in the main + frame. These statistics would be used as features to classify whether the + page is suitable for DOM distiller. + + Warning: This metric may include reports from clients with low-resolution + clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports + will cause this metric to have an abnormal distribution. When considering + revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the + solution. + + + + + yosin@chromium.org + kojii@chromium.org + + Counts the number of times each document.execCommand is executed. This + doesn't count commands not supported by Blink. + + + + + yosin@chromium.org + kojii@chromium.org + + Counts the number of times each Editor::Command::execute is called. This + doesn't count commands not supported by Blink. + + + + + jarhar@chromium.org + vmpstr@chromium.org + + Records the amount of time between keystrokes the user made while typing a + search query into the find-in-page browser dialog. Reported on each Find + request that extends the text of the previous request. This will be used in + order to determine how long we should make the find-in-page scroll delay: + http://crbug.com/1250158 + + + + + rakina@chromium.org + altimin@chromium.org + + Records the number of find-in-page tasks executed for a find-in-page + request. Emitted when a find-in-page request is finished (it went through + the whole document) or when it got aborted. {FindInPageRequestEndState} + + + + + + rakina@chromium.org + altimin@chromium.org + + Records how long one find-in-page request (consisting multiple tasks) took + from the request start until the last find-in-page task for the request + finished. Emitted when a find-in-page request is finished (it went through + the whole document) or when it got aborted. {FindInPageRequestEndState} + + + + + + rakina@chromium.org + altimin@chromium.org + + Records how long one find-in-page task took from invocation start to end. + Emitted when a find-in-page task finished running. + + + + + rakina@chromium.org + altimin@chromium.org + + Records the total task duration of all of the find-in-page tasks for one + find-in-page request. Nothe that this does not include the time spent in + between tasks. Emitted when a find-in-page request is finished (it went + through the whole document) or when it got aborted. + {FindInPageRequestEndState} + + + + + + csharrison@chromium.org + japhet@chromium.org + + The position of the URL in the framebust UI list (desktop only) when it is + clicked. Note that this UI surface is shared with the tab-under + intervention, so elements in the list could come from either features. This + metric will only be logged when a URL from the framebust (3p redirect) + intervention is clicked. + + + + + csharrison@chromium.org + japhet@chromium.org + + The (android only) outcome of a particular framebust infobar. Recorded when + the user either closes the infobar or declines the intervention by clicking + the link. + + + + + yoavweiss@chromium.org + csharrison@chromium.org + + Time in which non-AppCache requests have been delayed after being discovered + by the HTMLPreloadScanner, due to document element not being yet available, + which is required for AppCache support. Recorded per document. + + + + + yoavweiss@chromium.org + csharrison@chromium.org + + Time in which non-AppCache requests have been delayed after being discovered + by the HTMLPreloadScanner, due to document element not being yet available, + which is required for AppCache support. Recorded per document, but applies + only to main frames. + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records actions that take place in IndexedDB. These stats are used for + normalization in formulas. See go/chrome-indexeddb-heartbeat + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Methods that encountered consistency errors. Such errors probably point to a + bug in our code. + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records the result of trying to delete an IndexedDB database, per the user + using the IDBFactory::DeleteDatabase API. + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records the result of the FIRST attempt at opening the backing store for + IndexedDB (i.e. retries are ignored). This is recorded when an API call + needs to open the backing store (if it isn't already opened). API calls that + can open the backing store are: IDBFactory::Open, GetDatabaseNames, + GetDatabaseInfo, and DeleteDatabase. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records the time that it takes to open IndexedDB's backing store. This is + only recorded if the backing store was opened successfully on the first + attempt. + + + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Count of the different success and failure modes when opening an IndexedDB + backing store - clean open, successful open with recovery, failed recovery, + etc. Includes all hosts. + + + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Count of the different success and failure modes when opening an IndexedDB + backing store - clean open, successful open with recovery, failed recovery, + etc. Only for docs.google.com. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Length of leveldb directories that cause paths to not fit in the filesystem, + either because the individual component is too long or the overall path is + larger than MAX_PATH. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Methods that encountered leveldb errors while trying to read from disk. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Methods that encountered leveldb errors while trying to write to disk. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + The reason that a forced-close of a backing store occurred. + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Recorded when there is an error during the force close of IndexedDB for an + origin. A force close can be triggered either from DevTools, or when there + is a disk error. Errors during force close are ignored, as the system is + already being torn down. This metric is the only record of these errors + happening. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Recorded when a blob is attempted to be read from an IndexedDB value. This + is triggered for both implicit blob-wrapped large values and explicit blob + values. Its value is false iff there was a file not found value when reading + the file. This metric is to help track down the rate of missing files for + http://crbug.com/1131151. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time that it takes to close IndexedDB's LevelDB backing store. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time that it takes to open IndexedDB's LevelDB backing store. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time that it takes to write data to an IndexedDB's LevelDB backing + store. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Error classes returned by LevelDB when it failed to open a database. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Errors (base::File::Error) encountered by a single LevelDBEnv method when + opening an IndexedDB instance. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Types of corruption that LevelDB encounters when opening a database. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + LevelDBEnv methods that generated IO errors when opening a database. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Error classes returned by LevelDB when it failed to read a database. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Errors (base::File::Error) encountered by a single LevelDBEnv method when + reading from an IndexedDB instance. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Types of corruption that LevelDB encounters when reading a database. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + LevelDBEnv methods that generated IO errors when reading a database. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Error classes returned by LevelDB when it failed to write to a database. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Errors (base::File::Error) encountered by a single LevelDBEnv method when + writing to an IndexedDB instance. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Types of corruption returned by LevelDB when it failed to write to a + database. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + LevelDBEnv methods that generated IO errors when writing to a database. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records the full time it takes to open a database that isn't open yet (so + files are loaded from disk, metadata checked, etc). The measurement happens + when a website calls "indexedDB.open", and records the time it + takes from when this method is called to when the onsuccess event (or + onupgradeneeded event, in the case of a database upgrade) is dispatched. See + WebCore.IndexedDB.OpenTime.Warm for the time it takes an already-loaded + database to load. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records the full time it takes to open an already-open database. The + measurement happens when a website calls "indexedDB.open", and + records the time it takes from when this method is called to when the + onsuccess event (or onupgradeneeded event, in the case of a database + upgrade) is dispatched. See WebCore.IndexedDB.OpenTime.Cold for the time it + takes to open a database that is not open yet. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The number of blobs being saved in an IndexedDB object store 'put' + operation. Recorded for every 'put' operation. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The total size of the blobs being saved in an IndexedDB object store 'put' + operation. Recorded for every 'put' operation, except when there are no + attached blobs or a blob has an unknown size. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The size of the IndexedDB key used in an IndexedDB object store 'put' + operation. Recorded for every 'put' operation. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The size of the IndexedDB value used in an IndexedDB object store 'put' + operation. Recorded for every 'put' operation. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records the total size of tombstones deleted by the IndexedDB Tombstone + Sweeper. Recorded on the browser side (back end) when the sweeper has + completed scanning and it is in the 'deletion' mode. See + https://goo.gl/coKwA7. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records the time it takes for the IndexedDB Tombstone Sweeper to commit + tombstone deletions. Recorded on the browser side (back end) when the + sweeper has completed a round of sweeping and, it's in 'deletion' mode, and + it has tombstones to delete. See https://goo.gl/coKwA7. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records the time it takes for the IndexedDB Tombstone Sweeper to fully sweep + the indexes. Recorded on the browser side (back end) when the sweeper has + completed sweeping all indexes (so partial sweeps are not recorded) and it + is in 'deletion' mode. See https://goo.gl/coKwA7. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records when an error occurs during deletion of index tombstones by the + IndexedDB Tombstone Sweeper. Recorded on the browser side (back end) when + the sweeper has completed a round of sweeping and, it's in 'deletion' mode, + and it has tombstones to delete. See https://goo.gl/coKwA7. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Recorded on the browser side (back end) when the IndexedDB Tombstone Sweeper + has completed scanning. Records the percentage of the indexes the scanner + fully scanned before it was stopped. To reduce the number of buckets, the + recorded value is the percentage divided by 5. See https://goo.gl/coKwA7. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Records the number of tombstones deleted by the IndexedDB Tombstone Sweeper. + Recorded on the browser side (back end) when the sweeper has completed + scanning and it is in 'deletion' mode. See https://goo.gl/coKwA7. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Recorded on the browser side (back end) when the IndexedDB Tombstone Sweeper + encounters an error while sweeping. See https://goo.gl/coKwA7. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The total temporary size of an IndexedDB ReadOnly Transaction. Since this is + a readonly transaction, the size should only be >0 when the transaction + is removing tombstone index keys. Recorded on transaction commit. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time it takes for an IndexedDB ReadOnly Transaction to commit, starting + from when it starts executing tasks (when it is scheduled). Recorded on + transaction commit. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The total temporary size of an IndexedDB ReadWrite Transaction. This is the + memory that is temporarily stored before writing to disk. Recorded on + transaction commit. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time it takes for an IndexedDB ReadWrite Transaction to commit, starting + from when it starts executing tasks (when it is scheduled). Recorded on + transaction commit. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The total temporary size of an IndexedDB VersionChange Transaction. This is + the memory that is temporarily stored before writing to disk. Version change + transactions happen when creating a database or updating a current database + schema. Recorded on transaction commit. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + The time it takes for an IndexedDB VersionChange Transaction to commit, + starting from when it starts executing tasks (when it is scheduled). Version + change transactions happen when creating a database or updating a current + database schema. Recorded on transaction commit. + + + + + ayui@chromium.org + chrome-owp-storage@google.com + + Recorded on the browser side (back end) when an IndexedDB transaction is + aborted, specifically recording the reason for the abort. This can be + triggered by javascript code on the renderer, errors or force closes on the + backend, or by the transaction timeout timer. + + + + + clamy@chromium.org + + The resulting action (e.g. load resource, use resource from in-memory + cache...) upon a resource request. + + + + + clamy@chromium.org + + Whether the resource in the cache is being used by at least one client (live + resource) or not (dead resource) upon a cache hit. + + + + + leszeks@chromium.org + v8-runtime@google.com + Reason for not streaming an async script. + + + + leszeks@chromium.org + v8-runtime@google.com + Whether an async script was streamed or not. + + + + leszeks@chromium.org + v8-runtime@google.com + Reason for not streaming a deferred script. + + + + leszeks@chromium.org + v8-runtime@google.com + Whether a deferred script was streamed or not. + + + + cduvall@chromium.org + leszeks@chromium.org + + Whether waiting for the background compile for an inline script timed out on + the main thread. This is recorded each time an inline script streamer is + available when executing an inline script. + + + + + cduvall@chromium.org + leszeks@chromium.org + + Records the time the main thread is blocked while waiting for an inline + script to finish compiling on a background thread. Recorded for each inline + script that is compiled on a background thread. + + This histogram only records metrics on machines with high-resolution clocks. + + + + + leszeks@chromium.org + v8-runtime@google.com + + Reason for not streaming an other (not async, deferred or parser blocking) + script. + + + + + leszeks@chromium.org + v8-runtime@google.com + + Whether an other (not async, deferred or parser blocking) script was + streamed or not. + + + + + leszeks@chromium.org + v8-runtime@google.com + Reason for not streaming a parsing blocking script. + + + + leszeks@chromium.org + v8-runtime@google.com + Whether a parsing blocking script was streamed or not. + + + + yhirano@chromium.org + ricea@chromium.org + + Count the number of send() method calls on WebSockets for each argument + type. + + + + + + diff --git a/histograms/metadata/web_rtc/OWNERS b/histograms/metadata/web_rtc/OWNERS new file mode 100644 index 000000000000..bbb2a4ae3143 --- /dev/null +++ b/histograms/metadata/web_rtc/OWNERS @@ -0,0 +1,8 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +kron@chromium.org + +# For Desktop/Window Capture metrics +alcooper@chromium.org diff --git a/histograms/metadata/web_rtc/histograms.xml b/histograms/metadata/web_rtc/histograms.xml new file mode 100644 index 000000000000..8c4a7a6f6aa0 --- /dev/null +++ b/histograms/metadata/web_rtc/histograms.xml @@ -0,0 +1,3946 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + + ilnik@chromium.org + webrtc-video@google.com + + + ilnik@chromium.org + webrtc-video@google.com + + + ilnik@chromium.org + webrtc-video@google.com + + + ilnik@chromium.org + webrtc-video@google.com + + + ilnik@chromium.org + webrtc-video@google.com + + + ilnik@chromium.org + webrtc-video@google.com + + + ilnik@chromium.org + webrtc-video@google.com + + + + + silen@chromium.org + alessiob@chromium.org + webrtc-audio-uma@google.com + + Logs the input clipping rate in AGC1 and in AGC2. A log call is made every + 30 seconds during an active WebRTC call using the input volume controller. + + + + + alessiob@chromium.org + silen@chromium.org + webrtc-audio-uma@google.com + + Logs adaptive digital compression gain that is applied by + AdaptiveDigitalGainApplier in GainController2. A log call is made once per + second. The compression gain is applied to the microphone signal at the end + of the processing chain. + + + + + alessiob@chromium.org + silen@chromium.org + webrtc-audio-uma@google.com + + This histogram reports the noise level estimation done in GainController2. A + value is reported every second. The unit is inverted dBFS. The scale goes + from 0 (very loud noise) to 100 (very faint noise). Warning: this histogram + was expired from 2021-12-31 to 2022-11-16; data may be missing. + + + + + alessiob@chromium.org + silen@chromium.org + webrtc-audio-uma@google.com + + How long the AGC2 limiter remained in the {Region} region. Logged during an + active WebRTC call whenever the limiter switches region and at the end of + the call. + + + + + + + + + + + hlundin@chromium.org + webrtc-audio-uma@google.com + + The automatic gain control (AGC) in WebRTC tries to adjust the microphone + gain to maintain a strong audio level, but without clipping (saturation). + The histogram will log a value every time input clipping is detected. The + value is a boolean, with "true" meaning that the gain was in fact + adjusted in response to the detected clipping, and "false" meaning + that adjustment was not allowed due to limiting boundaries in the algorithm. + + + + + silen@chromium.org + alessiob@chromium.org + webrtc-audio-uma@google.com + + The recommended input volume when adjusted to match the target level - i.e., + not adjusted to handle clipping input. A log call is made every time that + such a volume changes during an active WebRTC call. + + + + + silen@chromium.org + alessiob@chromium.org + webrtc-audio-uma@google.com + + The {InputVolumeType} input volume. A log call is made every time that the + volume changes during an active WebRTC call. + + + + + + + + + silen@chromium.org + alessiob@chromium.org + webrtc-audio-uma@google.com + + The {InputVolumeType} input volume average {Metric} measured over 60 seconds + in AudioProcessingImpl. A log call is made every 60 seconds during an active + WebRTC call. + + + + + + + + + + + + + + silen@chromium.org + alessiob@chromium.org + webrtc-audio-uma@google.com + + The {InputVolumeType} input volume {Metric} rate measured over 60 seconds in + AudioProcessingImpl. A log call is made every 60 seconds during an active + WebRTC call. + + + + + + + + + + + + + + hlundin@chromium.org + webrtc-audio-uma@google.com + + This histogram reports the average RMS of the signal coming in to WebRTC's + Audio Processing Module, prior to any WebRTC processing. A new value is + reported every 10 seconds, and the average is over the latest interval. The + metric is negated dBFS, meaning that 0 is a full-scale signal, while 127 + corresponds to -127 dBFS (very faint). + + + + + hlundin@chromium.org + webrtc-audio-uma@google.com + + This histogram reports the peak RMS of the signal coming in to WebRTC's + Audio Processing Module, prior to any WebRTC processing. A new value is + reported every 10 seconds, and the peak is the RMS of the strongest 10 ms + block over the latest interval. The metric is negated dBFS, meaning that 0 + is a full-scale signal, while 127 corresponds to -127 dBFS (very faint). + + + + + peah@chromium.org + webrtc-audio-uma@google.com + + This histogram reports the average RMS of the signal in the output of + WebRTC's Audio Processing Module, after all audio WebRTC processing. A new + value is reported every 10 seconds, and the average is over the latest + interval. The metric is negated dBFS, meaning that 0 is a full-scale signal, + while 127 corresponds to -127 dBFS (very faint). + + + + + peah@chromium.org + webrtc-audio-uma@google.com + + This histogram reports the peak RMS of the signal in the output of WebRTC's + Audio Processing Module, after all WebRTC audio processing. A new value is + reported every 10 seconds, and the peak is the RMS of the strongest 10 ms + block over the latest interval. The metric is negated dBFS, meaning that 0 + is a full-scale signal, while 127 corresponds to -127 dBFS (very faint). + + + + + hlundin@chromium.org + ivoc@chromium.org + webrtc-audio-uma@google.com + + Measures the duration of each audio interruption event. An audio + interruption is defined as a loss concealment (a.k.a. expand) event that + lasts more than 150 milliseconds. The metric registers each of these events. + This gives an indication of the length and prevalence of severe network + events, which are likely to be detrimental to the audio quality. + + + + + fhernqvist@google.com + olka@chromium.org + webrtc-audio-uma@google.com + + Logs the AudioMixer source count whenever the mixer gets a new highest + source count. This allows us to differentiate the histogram to get the + number of mixers that have had a specific number of maximum sources. For + example, the number of AudioMixers that have had a maximum of 5 sources is + NewHighestSourceCount[5] - NewHighestSourceCount[6]. + + Note that this is not the same as logging the source count whenever a source + is added; logging only happens when the source count exceeds the previously + highest source count. + + + + + hlundin@chromium.org + gustaf@chromium.org + webrtc-audio-uma@google.com + + Measures the average waiting time in the buffer for each packet. The waiting + time is the time elapsed from the packet arrives until it is decoded. The + metric is calculated as the average over one minute, and is logged at the + end of each such interval. A well tuned target buffer level should lead to a + low value. + + + + + hlundin@chromium.org + webrtc-audio-uma@google.com + + Measures the duration of each packet loss concealment (a.k.a. expand) event + that is not followed by a merge operation. The outage is measured in + milliseconds, with a range between 0 and 2000 ms. This gives an indication + of how well the jitter buffer's level adaptation is working. If the chosen + target level is too low, this value will increase. + + + + + hlundin@chromium.org + webrtc-audio-uma@google.com + + Counts the number of delayed packet outage events per minute. The range is + between 0 and 100 (corresponds to more 1.6 events per second). See + WebRTC.Audio.DelayedPacketOutageEventMs for the definition of a delayed + packet outage event, and the interpretation of such events. + + + + + peah@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + This histogram logs half the applied render buffer delay used in the WebRTC + echo canceller. The value 0 means that no delay could be estimated, + otherwise the logged delay corresponds to the actual delay + 1. A new value + is logged every 10 seconds and the logged value constitutes the current + buffer delay at the time when the value is logged. + + + + + peah@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + This histogram logs a value every time the WebRTC echo canceller has + detected saturation in the capture signal. A new value is logged every 10 + seconds and the logged value indicates whether the capture signal has been + saturated during the last 10 seconds. + + + + + gustaf@chromium.org + peah@chromium.org + webrtc-audio-uma@google.com + + This histogram logs whether clockdrift is detected in the WebRTC echo + canceller. A new value is logged every 10 seconds. + + + + + peah@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + This histogram logs the frequency of echo path delay changes that are + detected by the delay estimator in the WebRTC echo canceller. A new value is + logged every 10 seconds and the logged value indicates how frequent delay + changes have been during the last 10 seconds. + + + + + peah@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + This histogram logs half the estimated echo path delay in 64 sample blocks + as seen by the delay estimator in the WebRTC echo canceller. The value 0 + means that no delay could be estimated, otherwise the logged delay + corresponds to the actual delay + 1. A new value is logged every 10 seconds + and the logged value is the estimate of the delay of the echo path at the + time when the value is logged. + + + + + gustaf@chromium.org + peah@chromium.org + webrtc-audio-uma@google.com + + This histogram logs the echo return loss enhancement achieved by the WebRTC + echo canceller as described in ITU G.168. When the echo canceller is being + used, one value is logged every 10 seconds per ongoing WebRTC call. + {WebRTCEchoCancellerEstimate} + + + + + + + + gustaf@chromium.org + peah@chromium.org + webrtc-audio-uma@google.com + + This histogram logs the echo return loss achieved by the WebRTC echo + canceller as described in ITU G.168. When the echo canceller is being used, + one value is logged every 10 seconds per ongoing WebRTC call. + {WebRTCEchoCancellerEstimate} + + + + + + + + peah@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + This histogram logs the estimated echo path delay in 64 sample blocks as + seen by the linear filter delay in the WebRTC echo canceller. The value 0 + means that no delay could be estimated from the linear filter, otherwise the + logged delay corresponds to the actual delay + 1. A new value is logged + every 10 seconds and the logged value is the estimate of the filter delay at + the time when the value is logged. + + + + + peah@chromium.org + gustaf@chromium.org + webrtc-audio-uma@google.com + + This histogram logs the observed maximum number of capture API calls in a + row in the unit of frames (10 ms). A new value is logged every 10 seconds. + + + + + peah@chromium.org + gustaf@chromium.org + webrtc-audio-uma@google.com + + This histogram logs the observed maximum number of render API calls in a row + in the unit of frames (10 ms). A new value is logged every 10 seconds. + + + + + peah@chromium.org + gustaf@chromium.org + webrtc-audio-uma@google.com + + This histogram logs the observed minimum number of capture API calls in a + row in the unit of frames (10 ms). A new value is logged every 10 seconds. + + + + + peah@chromium.org + gustaf@chromium.org + webrtc-audio-uma@google.com + + This histogram logs the observed minimum number of render API calls in a row + in the unit of frames (10 ms). A new value is logged every 10 seconds. + + + + + peah@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + This histogram logs whether the WebRTC echo canceller has encountered + persistent multichannel playout reference content during its lifetime. The + value is logged at the end of the AEC lifetime if the AEC has processed at + least 5 seconds of audio. + + + + + peah@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + This histogram logs the frequency of persistent multichannel playout + reference content detected by the WebRTC echo canceller. `true` if a + majority of the last 10 seconds of audio was classified as persistent + multichannel. A new value is logged every 10 seconds. + + + + + peah@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + This histogram logs the assessed reliability of the delay estimates produced + by the delay estimator in the WebRTC echo canceller. A new value is logged + every 10 seconds and the logged value is a meausure based on how often + during that period the delay estimate was reliable. + + + + + peah@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + This histogram logs the frequency of overruns in the render buffer of the + WebRTC echo canceller. A new value is logged every 10 seconds and the logged + value is a meausure that indicates how often overruns occurred. + + + + + peah@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + This histogram logs the frequency of underruns in the render buffer of the + WebRTC echo canceller. A new value is logged every 10 seconds and the logged + value is a meausure that indicates how often underruns occurred. + + + + + peah@chromium.org + saza@chromium.org + webrtc-audio-uma@google.com + + This histogram logs a value every time the WebRTC echo canceller deems that + the linear filter in the echo canceller is sufficiently well adapted to be + usable. A new value is logged every 10 seconds and the logged value is the + assessment of whether the filter is usable at the time when the value is + logged. + + + + + hlundin@chromium.org + jakobi@google.com + tomasl@google.com + webrtc-audio-uma@google.com + + Histogram of audio codec usage. Every sample corresponds to 5 seconds of + encoding with that codec. + + + + + hlundin@chromium.org + webrtc-audio-uma@google.com + + Measures the expand rate for an incoming WebRTC audio stream. The expand + rate is the fraction of samples that are generated through loss-concealemnt + algorithms instead of being decoded from incoming media packets. The metric + is calculated as the percent over a 10 second internval, and is logged at + the end of each such interval. + + + + + hlundin@chromium.org + webrtc-audio-uma@google.com + + The sum of the jitter buffer delay and the sound card's buffering delay for + the receiving side. That is, the sum of the metrics + WebRTC.Audio.ReceiverDeviceDelayMs and + WebRTC.Audio.ReceiverJitterBufferDelayMs. Sampled once every 10 ms when + WebRTC audio is playing. Warning: this histogram was expired from 2020-07-06 + to 2022-08-25; data may be missing. + + + + + hlundin@chromium.org + webrtc-audio-uma@google.com + + The sound card's buffering delay for the receiving side. Sampled once every + 10 ms when WebRTC audio is playing. + + + + + hlundin@chromium.org + webrtc-audio-uma@google.com + + The jitter buffer delay for the receiving side. Sampled once every 10 ms + when WebRTC audio is playing. + + + + + hlundin@chromium.org + webrtc-audio-uma@google.com + + Measures the audible expand rate for an incoming WebRTC audio stream. The + metric is very similar to WebRTC.Audio.ExpandRate, with the difference that + this metric only reports loss-concealement that generates audible samples. + The metric is calculated as the percent over a 10 second internval, and is + logged at the end of each such interval. + + + + + hlundin@chromium.org + webrtc-audio-uma@google.com + + The target bitrate in kbps that the audio codec should try to produce on + average. Sampled every time the rate is updated. + + + + + hlundin@chromium.org + webrtc-audio-uma@google.com + + The target jitter buffer delay for the receiving side. Sampled once every 10 + ms per WebRTC receive stream when WebRTC audio is playing. + + + + + saza@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Audio input channel layout in WebRTC. Warning: this histogram was expired + from 2020-11-01 to 2022-04-11; data may be missing. + + + + + saza@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Audio input sample rate for WebRTC (in Hz). Warning: this histogram was + expired from 2020-11-29 to 2022-04-11; data may be missing. + + + + + saza@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Audio input sample rate for WebRTC (atypical values, in Hz). Warning: this + histogram was expired from 2021-04-30 to 2022-04-11; data may be missing. + + + + + saza@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + Audio output sample rate for WebRTC (in Hz). + + + + saza@chromium.org + olka@chromium.org + webrtc-audio-uma@google.com + + Audio output sample rate for WebRTC (atypical values, in Hz). Warning: this + histogram was expired from 2021-04-30 to 2022-12-07; data may be missing. + + + + + holmer@chromium.org + The bandwidth estimate 2 seconds into a WebRTC call. + + + + holmer@chromium.org + + The number of video packets lost durig the first 2 seconds in a WebRTC call. + + + + + holmer@chromium.org + + The round-trip time as measured 2 seconds into a WebRTC call. + + + + + holmer@chromium.org + + The difference between the bandwidth estimate at 2 seconds and 20 seconds + into a WebRTC call, with a min at 0, which is supposed to capture the how + much the initial bandwidth estimate overshot the actual bandwidth available. + + + + + holmer@chromium.org + + The time it takes the estimated bandwidth to reach 1000 kbps from the first + RTCP packet received. Used to measure the bandwidth ramp-up time. + + + + + holmer@chromium.org + + The time it takes the estimated bandwidth to reach 2000 kbps from the first + RTCP packet received. Used to measure the bandwidth ramp-up time. + + + + + holmer@chromium.org + + The time it takes the estimated bandwidth to reach 500 kbps from the first + RTCP packet received. Used to measure the bandwidth ramp-up time. + + + + + holmer@chromium.org + webrtc-dev@chromium.org + + The bandwidth estimation used in WebRTC calls. Records whether the BWE is + running on the sender or the receiver and what BWE related RTP header + extensions are in use. + + Warning: This histogram was expired from 2022-10-11 to 2022-12-15. Data may + be missing. + + + + + holmer@chromium.org + + Average audio bitrate received during a call, counted from first packet + received until Call instance is destroyed. Only mesured for calls that are + at least 10 seconds long. + + + + + holmer@chromium.org + + Average total bitrate received during a call (audio + video + RTCP), counted + from first packet received until Call instance is destroyed. Only mesured + for calls that are at least 10 seconds long. + + + + + holmer@chromium.org + + Average estimated send bitrate during a call, counted from first packet sent + until Call instance is destroyed. Only mesured for calls that are at least + 10 seconds long. + + + + + asapersson@chromium.org + + The lifetime of a call. Recorded when a Call instance is destroyed. + + + + + holmer@chromium.org + + Average pacer bitrate during a call, counted from first packet sent until + Call instance is destroyed. Only mesured for calls that are at least 10 + seconds long. + + + + + holmer@chromium.org + + Average RTCP bitrate received during a call, counted from first packet + received until Call instance is destroyed. Only mesured for calls that are + at least 10 seconds long. + + + + + saza@chromium.org + + The amount of time between the arrival of the first and last audio RTP + packets to pass through a Call object. This is logged when the Call object + is destroyed. This is only logged if audio RTP packets are at some point in + time received, and is a way to omit temporary objects that do not send any + actual media. + + + + + saza@chromium.org + + The amount of time between the arrival of the first and last video RTP + packets to pass through a Call object. This is logged when the Call object + is destroyed. This is only logged if video RTP packets are at some point in + time received, and is a way to omit temporary objects that do not send any + actual media. + + + + + holmer@chromium.org + + Average video bitrate received during a call, counted from first packet + received until Call instance is destroyed. Only mesured for calls that are + at least 10 seconds long. + + + + + orphis@chromium.org + toprice@chromium.org + + Recorded when a data channel is created. Counts the combination of reliable + and ordered modes in a data channel. + + + + + orphis@chromium.org + toprice@chromium.org + + Recorded when a data channel is created. Counts a few main attributes of + data channels. Expired in April 2020. Revived in M93. + + + + + orphis@chromium.org + toprice@chromium.org + + Recorded when a data channel is created. The length of the time window + during which transmissions and retransmissions may occur in unreliable mode. + It is set to the value used in the configuration when a RTCDataChannel is + created. + + + + + orphis@chromium.org + toprice@chromium.org + + Recorded when a data channel is created. The maximum number of + retransmissions that are attempted in unreliable mode. It is set to the + value used in the configuration when a RTCDataChannel is created. Expired in + M86. Revived in M93. + + + + + orphis@chromium.org + toprice@chromium.org + + Recorded when a data channel is closed unexpectedly and the error event is + dispatched. Contains the SCTP error code signaled by the transport. + + + + + henrika@chromium.org + webrtc-dev@chromium.org + + A boolean is recorded to this histogram for each provided video frame where + the desktop media source is given by {CapturerType}. Sampled as true if the + provided frame is a results of a client/sink asking for a refresh frame + using the RequestRefreshFrame() API, and sampled as false when the captured + frame is newly captured frame not explicitly requested by the client/sink. + Very few frames are expected to be marked as refresh frames. + + + + + + + + + henrika@chromium.org + webrtc-dev@chromium.org + + A boolean is recorded to this histogram for each captured video frame where + the desktop media source is given by {CapturerType}. Only recorded for + capturers that support detection of whether 0Hz is active or not which + requires that each captured frame must contain a representation of what + regions have been updated since the last frame. Windows WGC is an example of + a capturer which does not support this. + + + + + + + + + henrika@chromium.org + webrtc-dev@chromium.org + + The maximum CPU time percentage of a single core that can be consumed for + desktop capturing is by default 50%. It is possible to modify it using the + --webrtc-max-cpu-consumption-percentage command-line switch. This boolean is + set to true when the default value is used and false if it has been + overrided using the switch. Recorded each time a desktop capture stream + starts. + + + + + alcooper@chromium.org + auorion@microsoft.com + edgecapabilitiesdev@microsoft.com + + This measures the frequency of use for each desktop capturer implementation, + allowing us to measure the adoption of the WGC capturer. + + + + + henrika@chromium.org + webrtc-dev@chromium.org + + This records high level errors, or success, encountered across the entire + capture flow in the DirectX (DXGI) based capturer. Is recorded every time a + new video frame is captured using DXGI. Only recorded on Windows. + + + + + henrika@chromium.org + webrtc-dev@chromium.org + + A boolean is recorded to this histogram for each captured video frame where + the desktop media source is the full screen and a change has been detected + in the mouse cursor position. The value is true when the cursor pointer is + embedded in the captured desktop image and false if not. It is expected that + most display adapters will report false. Only recorded when DirectX (DXGI) + is used on Windows. + + + + + alcooper@chromium.org + auorion@microsoft.com + edgecapabilitiesdev@microsoft.com + + This records high level errors, or success, encountered across the entire + capture flow in the WGC based capturer. + + + + + alcooper@chromium.org + auorion@microsoft.com + edgecapabilitiesdev@microsoft.com + + This records the result from retrieving a frame from the WGC based capturer. + + + + + alcooper@chromium.org + auorion@microsoft.com + edgecapabilitiesdev@microsoft.com + + This records the result from starting up the WGC based capturer. + + + + + alcooper@chromium.org + auorion@microsoft.com + edgecapabilitiesdev@microsoft.com + This measures the performance of the {Capturer} capturer. + + + + + + + + + + + toprice@chromium.org + webrtc-dev@chromium.org + + Counters on creation of DesktopCaptureDevice and the first capture call. + + + + + toprice@chromium.org + agpalak@chromium.org + + Measures the time between a page calling enumerateDevices() and the returned + promise resolving (either successfully or with an error), intended for + monitoring for latency regressions in the wild. Note a call which never + resolves won't be counted in this metric. + + + + + zhihuang@chromium.org + + Counters on different types of TCP socket error code. Collected when we hit + the error code when writing. + + + + + + Removed 03/2022. + + reillyg@chromium.org + device-dev@chromium.org + + Records whether a user would potentially see a permission prompt for moving + the camera. It is recorded when showing a camera permission prompt + regardless of whether or not the site requested camera movement. + + + + + handellm@chromium.org + webrtc-dev@chromium.org + + This histogram logs how many received UDP packets are batched in a single + P2PSocketClient IPC. This is recorded every time the batched received + packets transmit over IPC. + + + + + hta@chromium.org + webrtc-dev@chromium.org + + Outcomes of adding ICE candidates to a PeerConnection. Used to check the + theory that failures in candidate addition are ignored by applications. + + + + + hta@chromium.org + webrtc-dev@chromium.org + + Determines whether BUNDLE is configured. Recorded during the first DTLS + connection establishment. Values are specified in + https://w3c.github.io/webrtc-pc/#dom-rtcbundlepolicy + + Warning: This histogram was expired from 2022-08-28 to 2022-10-10. Data may + be missing. + + + + + hta@chromium.org + webrtc-dev@chromium.org + + Determines whether BUNDLE is used in remote offers or answers. Recorded + during setRemoteDescription calls. Distinguishes between simple, complex, + datachannel-only and legacy plan-b usage. + + Warning: This histogram was expired from 2022-08-28 to 2022-10-10. Data may + be missing. + + + + + qingsi@google.com + jeroendb@google.com + + Counters of various ICE Endpoint types. These values are logged for the + first selected candidate pair of a PeerConnection. {IPProtocolType} + + + + + + + + + This measurement showed that numbers higher than 1 are in frequent use for + all policies. Experiment is no longer needed. + + hta@chromium.org + webrtc-dev@chromium.org + + Measures the configured ice candidate poolsize for the {BundlePolicy} + bundlePolicy: + https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icecandidatepoolsize + Recorded during the first DTLS connection establishment. See also + WebRTC.PeerConnection.BundlePolicy. + + + + + + + + + + hta@chromium.org + webrtc-dev@chromium.org + + Counters of ICE Connection states. These values are logged when the + PeerConnection gets into that state for the first time or after the ICE + restart. + + Warning: This histogram was expired from 2022-08-21 to 2022-10-29. Data may + be missing. + + + + + zhihuang@chromium.org + + Records the error whenever the Dtls handshake fails. There are only two + types of errors, incompatitable cipher suite and unknown error, for now. + + + + + handellm@chromium.org + webrtc-dev@chromium.org + + Duration between the moment the WebRTC network thread's JingleThreadWrapper + begins running a task and the moment it ends executing it. It only measures + durations of tasks posted to rtc::Thread. Samples are acquired periodically + every several seconds by JingleThreadWrapper. + + Warning: This metric does not include reports from clients with + low-resolution clocks (i.e. on Windows, ref. + |TimeTicks::IsHighResolution()|). + + + + + handellm@chromium.org + webrtc-dev@chromium.org + + Duration between the moment the WebRTC signaling thread's + JingleThreadWrapper begins running a task and the moment it ends executing + it. It only measures durations of tasks posted to rtc::Thread. Samples are + acquired periodically every several seconds by JingleThreadWrapper. + + Warning: This metric does not include reports from clients with + low-resolution clocks (i.e. on Windows, ref. + |TimeTicks::IsHighResolution()|). solution. + + + + + handellm@chromium.org + webrtc-dev@chromium.org + + Duration between the moment the WebRTC worker thread's JingleThreadWrapper + begins running a task and the moment it ends executing it. It only measures + durations of tasks posted to rtc::Thread. Samples are acquired periodically + every several seconds by JingleThreadWrapper. + + Warning: This metric does not include reports from clients with + low-resolution clocks (i.e. on Windows, ref. + |TimeTicks::IsHighResolution()|). + + + + + honghaiz@chromium.org + Records the reasons for ICE re-gathering. + + + + honghaiz@chromium.org + + Records the transport channel states when ICE restart happens. + + + + + + Removed 10/2022. + + hta@chromium.org + webrtc-dev@chromium.org + + Records the number of configured ICE servers when the peerconnection is + created or gets connected, depending on {MeasuredAt}. + + + + + + + + + qingsi@google.com + jeroendb@google.com + + Counters on IPv4 and IPv6 usage in PeerConnection. These values are logged + once per PeerConnection. + + + + + hta@chromium.org + webrtc-dev@chromium.org + + Number of IPv4 network interfaces discovered in a PeerConnection Session. + + Warning: This histogram was expired from M81 to M110 Canary (2022-10-29). + Data may be missing. + + + + + hta@chromium.org + webrtc-dev@chromium.org + + Number of IPv6 network interfaces discovered in a PeerConnection Session. + + Warning: This histogram was expired from M81 to M110 Canary (2022-10-29). + Data may be missing. + + + + + + The SDES protocol is no longer available in Chrome as of M98. DTLS is the + only possible value. + + hta@chromium.org + webrtc-dev@chromium.org + + What key exchange protocol (DTLS or SDES) is used to establish the crypto + keys for a PeerConnection's RTP transport. Note: This histogram was expired + after M82, and resurrected in M89. + + + + + handellm@chromium.org + webrtc-dev@chromium.org + + Latency defined as the duration between the moment a task is scheduled from + the WebRTC network thread's JingleThreadWrapper's task runner, and the + moment it begins running. Samples are acquired periodically every several + seconds by JingleThreadWrapper. + + Warning: This metric does not include reports from clients with + low-resolution clocks (i.e. on Windows, ref. + |TimeTicks::IsHighResolution()|). + + + + + handellm@chromium.org + webrtc-dev@chromium.org + + Latency defined as the duration between the moment a task is scheduled from + the WebRTC signaling thread's JingleThreadWrapper's task runner, and the + moment it begins running. Samples are acquired periodically every several + seconds by JingleThreadWrapper. + + Warning: This metric does not include reports from clients with + low-resolution clocks (i.e. on Windows, ref. + |TimeTicks::IsHighResolution()|). + + + + + handellm@chromium.org + webrtc-dev@chromium.org + + Latency defined as the duration between the moment a task is scheduled from + the WebRTC worker thread's JingleThreadWrapper's task runner, and the moment + it begins running. Samples are acquired periodically every several seconds + by JingleThreadWrapper. + + Warning: This metric does not include reports from clients with + low-resolution clocks (i.e. on Windows, ref. + |TimeTicks::IsHighResolution()|). + + + + + + Removed 12/2022. + + hta@chromium.org + webrtc-dev@chromium.org + + Records the length of the SDP mid attribute in order to limit its length to + 16 characters. + + + + + hta@chromium.org + webrtc-dev@chromium.org + + Whether provisional answers are used. Recorded during the first DTLS + connection establishment. + + + + + hta@chromium.org + webrtc-dev@chromium.org + + Whether RTCP-mux is used for the PeerConnection (both the local and remote + description enable RTCP-mux). Recorded after SetLocalDescription and + SetRemoteDescription are called, once per PeerConnection. + + Warning: This histogram was expired from 2020-02-23 to 2022-10-10. Data may + be missing. + + + + + hta@chromium.org + webrtc-dev@chromium.org + phancke@microsoft.com + + Which RTCPMuxPolicy was requested for the PeerConnection. Recorded during + the first DTLS connection establishment. + + + + + + Removed 04/2022. + + hbos@chromium.org + webrtc-dev@chromium.org + + The SDP usage category ("safe", "unsafe" or + "unknown") of createAnswer(). Using complex SDP without explicitly + specifying the sdpSemantics is considered unsafe in this context because + such usage is sensitive to the rollout of a different default SDP semantic. + + + + + + Removed 04/2022. + + hbos@chromium.org + webrtc-dev@chromium.org + + The SDP usage category ("safe", "unsafe" or + "unknown") of createOffer(). Using complex SDP without explicitly + specifying the sdpSemantics is considered unsafe in this context because + such usage is sensitive to the rollout of a different default SDP semantic. + + + + + + Removed 04/2022. + + hbos@chromium.org + webrtc-dev@chromium.org + + The SDP usage category ("safe", "unsafe" or + "unknown") of setLocalDescription(answer). Using complex SDP + without explicitly specifying the sdpSemantics is considered unsafe in this + context because such usage is sensitive to the rollout of a different + default SDP semantic. + + + + + + Removed 04/2022. + + hbos@chromium.org + webrtc-dev@chromium.org + + The SDP usage category ("safe", "unsafe" or + "unknown") of setLocalDescription(offer). Using complex SDP + without explicitly specifying the sdpSemantics is considered unsafe in this + context because such usage is sensitive to the rollout of a different + default SDP semantic. + + + + + + Removed 04/2022. + + hbos@chromium.org + webrtc-dev@chromium.org + + The SDP usage category ("safe", "unsafe" or + "unknown") of setRemoteDescription(answer). Using complex SDP + without explicitly specifying the sdpSemantics is considered unsafe in this + context because such usage is sensitive to the rollout of a different + default SDP semantic. + + + + + + Removed 04/2022. + + hbos@chromium.org + webrtc-dev@chromium.org + + The SDP usage category ("safe", "unsafe" or + "unknown") of setRemoteDescription(offer). Using complex SDP + without explicitly specifying the sdpSemantics is considered unsafe in this + context because such usage is sensitive to the rollout of a different + default SDP semantic. + + + + + + Removed 09/2022. + + steveanton@chromium.org + hta@chromium.org + webrtc-dev@chromium.org + + What SDP format is received in the remote offer. The value "no + tracks" means that no audio or video tracks were received. The value + "simple" means that at most one audio and at most one video track + was received. The value "complex" means that more than one audio + or more than one video track was received, and how this was signaled is + indicated ("Plan B" meaning with a=ssrc lines within the same m= + section and "Unified Plan" meaning with a separate m= section). + This is recorded when calling setRemoteDescription with an SDP Offer. + + + + + + Removed 09/2022. + + steveanton@chromium.org + hta@chromium.org + webrtc-dev@chromium.org + + What SDP format is received in the remote answer. See + WebRTC.PeerConnection.SdpFormatReceived for the description of the values. + This is recorded when calling setRemoteDescription with an SDP Answer. + + + + + + Removed 09/2022. + + hta@chromium.org + webrtc-dev@chromium.org + + What SDP semantic (Unified Plan or Plan B) was detected when completing + negotiation of a PeerConnection. This is recorded when accepting an SDP + Answer. The value "mixed" means that the accepted answer included + both types of marker in the SDP. The value "none" will happen when + the answerer sends no media. + + + + + amithi@chromium.org + + Was simulcast applied to the local description and with which API surface. + + + + + amithi@chromium.org + + Was simulcast applied to the remote description and with which API surface. + + + + + amithi@chromium.org + + Simulcast was disabled because it is not supported by the remote party. This + is a counter that can take on only a single value (1). + + + + + amithi@chromium.org + + Counts the number of send encodings given to PeerConnection::AddTransceiver. + This histogram will be used to understand if and how the API is used. + + + + + handellm@google.com + hbos@chromium.org + + Measures computer speed limit state, sampled every 60s when a PeerConnection + is open. The value indicates the current operating point in percent of the + nominal capacity of the CPUs. The computer decreases the capacity during + thermal overload events. + + + + + + + steveanton@chromium.org + + What error code is reported by libsrtp when failing to unprotect an incoming + SRTCP (secured media control) packet. + + + + + qingsi@google.com + jeroendb@google.com + + Counters on the type of SRTP crypto suites used by WebRTC. This is collected + whenever the transport signals the OnCompleted event. {WebRTCMediaType} + + + + + + + + + + steveanton@chromium.org + + What error code is reported by libsrtp when failing to unprotect an incoming + SRTP (secured media) packet. + + + + + + + hta@google.com + webrtc-dev@chromium.org + + Counters on the type of SSL cipher suites used by WebRTC. This is collected + whenever the transport signals the OnCompleted event. {WebRTCMediaType} + + + + + + + + eshr@google.com + hbos@chromium.org + + Measures computer thermal state, sampled every 60s when a PeerConnection is + open with a video sender. Most quick toggles between thermal states are thus + not sampled, but thermal states are generally stable so these toggles should + be rare. + + + + + handellm@google.com + hbos@chromium.org + + Sampled every 60s when the peer connection is open. True when the computer's + speed limit is between 0 and 99 inclusively, false otherwise. + + + + + handellm@google.com + hbos@chromium.org + + The number of thermal throttling episodes the peer connection encountered. + Reported when the peer connection is torn down if the peer connection had at + least one track. + + + + + hta@chromium.org + webrtc-dev@chromium.org + + Capsule history of a WebRTC PeerConnection, encoded as a sequence of bits + encapsulated in an integer. Only a few values will be deemed interesting, + but the interesting values may change over time. + + + + + hta@chromium.org + webrtc-dev@chromium.org + phancke@microsoft.com + + Measures whether the remote description contains a RTP header extension id + collision that is not allowed by the IETFs BUNDLE specification. Recorded + for every remote description. + + + + + hbos@chromium.org + webrtc-dev@chromium.org + phancke@microsoft.com + + Measures whether the remote description contains a payload type collision + that is not allowed by the IETFs BUNDLE specification. Enforcing this would + allow simplifying the statistics collector. Recorded for every remote + description. + + + + + hta@chromium.org + webrtc-dev@chromium.org + phancke@microsoft.com + + Measures whether the ice-ufrag/ice-pwd consists of characters allowed by the + specification. Currently some characters outside the range are allowed for + backward compability with deployed software. Recorded during the first DTLS + connection establishment. + + + + + + + handellm@chromium.org + hta@chromium.org + + Durations of audio tracks received over a PeerConnection. The stopwatch + starts when the track first becomes connected, and ends when it is + disconnected or very soon thereafter. Warning: this histogram was expired + between 2023-04-02 to 2023-04-19; data may be missing. + + + + + + + handellm@chromium.org + hta@chromium.org + + Durations of video tracks received over a PeerConnection. The stopwatch + starts when the track first becomes connected, and ends when it is + disconnected or very soon thereafter. Warning: this histogram was expired + from 2022-11-27 to 2022-12-10 and from 2023-04-02 to 2023-04-19; data may be + missing. + + + + + perkj@chromium.org + + Sizes of messages sent over reliable data channels. The size of an + individual message is added to the histogram as a sample immediately when a + message is sent. + + + + + jiayl@chromium.org + Time for capturing one frame in screen capturing. + + + + kron@chromium.org + webrtc-video@google.com + + Tracks the usage of the WebRTC Fullscreen Detector. The Fullscreen Detector + is used when capturing presentation applications such as PowerPoint. If the + editor window is captured and a slideshow is started in fullscreen mode, the + Fullscreen Detector will automatically change so that the fullscreen window + is captured. Once the slideshow stops, the editor will be captured again. + This is recorded the first time this feature is activated, but only once per + screensharing session. + + + + + handellm@google.com + ilnik@chromium.org + + Sampled every time a VideoStreamEncoder starts encoding frames with min and + max frame rate constraint supplied. The value sampled is 60 * min + max - 1. + + + + + handellm@google.com + ilnik@chromium.org + + Sampled true every time a VideoStreamEncoder starts encoding frames with + frame rate constraints supplied in advance. + + + + + handellm@google.com + ilnik@chromium.org + + Sampled true every time a VideoStreamEncoder starts encoding frames with a + max frame rate constraint supplied. + + + + + handellm@google.com + ilnik@chromium.org + + Sampled every time a VideoStreamEncoder starts encoding frames with a max + frame rate constraint supplied. + + + + + handellm@google.com + ilnik@chromium.org + + Sampled true every time a VideoStreamEncoder starts encoding frames with a + min frame rate constraint supplied. + + + + + handellm@google.com + ilnik@chromium.org + + Sampled every time a VideoStreamEncoder starts encoding frames with a min + frame rate constraint supplied. + + + + + handellm@google.com + ilnik@chromium.org + + Sampled every time a VideoStreamEncoder starts encoding frames with a max + frame rate constraint supplied, which is greater than the min value. + + + + + handellm@google.com + ilnik@chromium.org + + Sampled every time a VideoStreamEncoder starts encoding frames with a min + frame rate constraint supplied, which is less than the max value. + + + + + handellm@google.com + ilnik@chromium.org + + Sampled every time a VideoStreamEncoder starts encoding frames with a max + frame rate constraint supplied, and the min frame rate constraint is unset. + + + + + handellm@google.com + ilnik@chromium.org + + The number of milliseconds from the point a zero-Hz frame cadence adapter is + created until the first frame arrives from a connected source. + + + + + + + handellm@chromium.org + hta@chromium.org + + Durations of audio tracks sent over a PeerConnection. The stopwatch starts + when the track first becomes connected, and ends when it is disconnected or + very soon thereafter. + + + + + + + handellm@chromium.org + hta@chromium.org + + Durations of video tracks sent over a PeerConnection. The stopwatch starts + when the track first becomes connected, and ends when it is disconnected or + very soon thereafter. + + + + + qingsi@google.com + jeroendb@google.com + + For clients using a shared source port per STUN binding request toward the + specified servers, success rate for requests which received a response with + various intervals between requests. Only the first instance of renderers + will conduct the trial and log this result. The STUN binding requests are + grouped into multiple batches and the success rate is calculated for an + individual batch. {NatType} + + + + + + + + hta@chromium.org + webrtc-dev@chromium.org + + Records outcome of integrity checks for STUN requests. This is used in + investigation of crbug.com/1177125, in order to figure out if it is safe to + turn on checking of these attributes. + + + + + + + + + + + + + + + + + + + qingsi@google.com + jeroendb@google.com + + For clients using a shared source port per STUN binding request, average RTT + for requests which received a response with various intervals between + requests. Only the first instance of renderers will conduct the trial and + log this result. {NatType} + + + + + + + + qingsi@google.com + jeroendb@google.com + + For clients using a shared source port per STUN binding request, success + rate for requests which received a response with various intervals between + requests. Only the first instance of renderers will conduct the trial and + log this result. {NatType} + + + + + + + + perkj@chromium.org + + Sizes of messages sent over unreliable data channels. The size of an + individual message is added to the histogram as a sample immediately when a + message is sent. + + + + + andresp@chromium.org + toprice@chromium.org + agpalak@chromium.org + benjaminwagner@google.com + + The state of a UserMediaRequest when it gets destroyed before having a + result. Warning: this histogram was expired from M77 to M108(excluded); data + may be missing. + + Note: "Explicitly Cancelled" means + MediaStreamImpl::cancelUserMediaRequest was called and not necessarily that + the user cancelled. Those are likely tracked as UserMediaRequest with a + result of permission denied. + + + + + toprice@chromium.org + agpalak@chromium.org + + Counters for UserMediaRequests results such as failure reasons. The standard + specification error names are in parenthesis. + + + + + + + asapersson@chromium.org + webrtc-video@google.com + + The average number of adaptation changes per minute for a sent video stream. + Recorded when a stream is removed. {VideoAdaptationReason} + + + + + + + + + + + + holmer@chromium.org + + The average round-trip time of a WebRTC call in milliseconds. Recorded when + a stream is removed. + + + + + + + asapersson@chromium.org + + The absolute value of the sync offset between a rendered video frame and the + latest played audio frame is measured per video frame. The average offset + per received video stream is recorded when a stream is removed. + + + + + + + asapersson@chromium.org + + Percentage of sent frames that are limited in resolution due to bandwidth + for a sent video stream. Recorded when a stream is removed. + + + + + + + asapersson@chromium.org + webrtc-video@google.com + + For frames that are limited in resolution due to bandwidth, the average + number of disabled resolutions is recorded for a sent video stream. Recorded + when a stream is removed. + + + + + + + asapersson@chromium.org + + The number of received bits per second for a received video stream. Recorded + when a stream is removed. The total number of bytes is divided by the time + the video stream exists. + + + + + + + asapersson@chromium.org + + The number of sent bits per second for a sent video stream. Recorded when a + stream is removed. The total number of bytes is divided by the time the + video stream exists. + + + + + + + asapersson@chromium.org + + Percentage of frames that are limited in resolution due to CPU for a sent + video stream. Recorded when a stream is removed. + + + + + + + asapersson@chromium.org + + Average current delay for a received video stream. This is the actual delay + imposed on frames (where the goal is to reach the target delay (see + WebRTC.Video.TargetDelayInMs)). Recorded when a stream is removed. + + + + + + + asapersson@chromium.org + + The average QP (quantizer value) per frame for a received VP8 video stream. + Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + asapersson@chromium.org + + The number of decoded frames per second for a received video stream. + Recorded when a stream is removed. The total number of frames is divided by + the time the video stream exists. + + + + + + + asapersson@chromium.org + + The average decode time per frame for a received video stream. Recorded when + a stream is removed. + + + + + + + asapersson@chromium.org + + Percentage of delayed frames to renderer for a received video stream. + Recorded when a stream is removed. + + + + + + + asapersson@chromium.org + + The average delay of delayed frames to renderer for a received video stream. + Recorded when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Total number of frames dropped by a capturer for a sent video stream. + Recorded when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Total number of frames dropped by an encoder's internal rate limiter for a + sent video stream. Recorded when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Total number of frames dropped because encoder queue is full for a sent + video stream. Recorded when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Total number of frames dropped by a WebRTC rate limiter (in MediaOpt) for a + sent video stream. Recorded when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Total number of frames dropped by a WebRTC on the receive side because they + are incomplete or undecodable. + + + + + + + asapersson@chromium.org + + The average QP (quantizer value) per frame for a sent video stream. Recorded + when a stream is removed. {VideoEncodedQpStats} + + + + + + + + + + + + + + + + + + + asapersson@chromium.org + webrtc-video@google.com + + Configured video codec for a sent video stream. Recorded when a + VideoSendStream is destroyed (for streams whose lifetime is longer than 10 + seconds). + + + + + + + asapersson@chromium.org + + The average encode time per frame for a sent video stream. Recorded when a + stream is removed. + + + + + + + asapersson@chromium.org + + The average end-to-end delay per frame for a received video stream. Recorded + when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The maximum end-to-end delay per frame for a received video stream. Recorded + when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + asapersson@chromium.org + + The number of received FEC bits per second for a received video stream. + Recorded when a stream is removed. The total number of bytes is divided by + the time the video stream exists. + + + + + + + asapersson@chromium.org + + The number of sent FEC bits per second for a sent video stream. Recorded + when a stream is removed. The total number of bytes is divided by the time + the video stream exists. + + + + + + + asapersson@chromium.org + + The number of received RTCP FIR packets per minute for a sent video stream. + Recorded when a stream is removed. The total number of packets is divided by + the time the video stream exists. + + + + + + + asapersson@chromium.org + + The number of sent RTCP FIR packets per minute for a received video stream. + Recorded when a stream is removed. The total number of packets is divided by + the time the video stream exists. + + + + + + + hbos@chromium.org + + The number of |H264DecoderImpl| events, such as an initialization or + decoding error, that have occurred. At most one Init and one Error is + reported per |H264DecoderImpl| instance. This is to avoid the same event + from being reported multiple times (e.g. if there is an error you might + re-initialize or get a decode error every frame which would otherwise + pollute the data). + + + + + + + hbos@chromium.org + + The number of |H264EncoderImpl| events, such as an initialization or + encoding error, that have occurred. At most one Init and one Error is + reported per |H264EncoderImpl| instance. This is to avoid the same event + from being reported multiple times (e.g. if there is an error you might + re-initialize or get an encode error every frame which would otherwise + pollute the data). + + + + + kron@chromium.org + webrtc-video@google.com + + The number of hardware decoded frames between fallbacks to software decoder + for a received video stream. {WebRtcCodecs} + + + + + + + + + + + + + + + asapersson@chromium.org + + The number of incoming frames per second for a sent video stream. Recorded + when a stream is removed. The total number of frames is divided by the time + the video stream exists. + + + + + + + asapersson@chromium.org + + The average input height per frame (for incoming frames to video engine) for + a sent video stream. Recorded when a stream is removed. + + + + + + + asapersson@chromium.org + + The average input width per frame (for incoming frames to video engine) for + a sent video stream. Recorded when a stream is removed. + + + + + ilnik@chromium.org + webrtc-video@google.com + + The 95th percentile of interframe delay for a received video stream. + Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The average interframe delay for a received video stream. Recorded when a + stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The maximum interframe delay for a received video stream. Recorded when a + stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + asapersson@chromium.org + + Average jitter buffer delay for a received video stream. Recorded when a + stream is removed. + + + + + + + asapersson@chromium.org + + Permille of frames that are key frames for a received video stream. Recorded + when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + asapersson@chromium.org + + Permille of frames that are key frames for a sent video stream. Recorded + when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The average duration of a freeze in video playback. Recorded when a received + stream is removed or content type changes. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The average duration of a smooth video playback. Recorded when a received + stream is removed or content type changes. + + + + + + + asapersson@chromium.org + + The number of received media payload bits per second for a received video + stream. Recorded when a stream is removed. The total number of bytes is + divided by the time the video stream exists. {WebRTCVideoExperimentGroupId} + + + + + + + + + + asapersson@chromium.org + + The number of sent media payload bits per second for a sent video stream. + Recorded when a stream is removed. The total number of bytes is divided by + the time the video stream exists. + + + + + + + asapersson@chromium.org + + The number of received RTCP NACK packets per minute for a sent video stream. + Recorded when a stream is removed. The total number of packets is divided by + the time the video stream exists. + + + + + + + asapersson@chromium.org + + The number of sent RTCP NACK packets per minute for a received video stream. + Recorded when a stream is removed. The total number of packets is divided by + the time the video stream exists. + + + + + + + ssilkin@chromium.org + + The number of video freezes per minute for a received video stream. Recorded + when a stream is removed or content type changes. + + + + + + + asapersson@chromium.org + + The number of times a video stream has been paused/resumed during a call. + Recorded when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The average number of resolution down-switches per minute for a received + video stream. Recorded when a stream is removed or content type changes. + + + + + + + asapersson@chromium.org + + Average delay (network delay (rtt/2) + jitter delay + decode time + render + delay) for a received video stream. Recorded when a stream is removed. + + + + + + + asapersson@chromium.org + + The number of received padding bits per second for a received video stream. + Recorded when a stream is removed. The total number of bytes is divided by + the time the video stream exists. + + + + + + + asapersson@chromium.org + + The number of sent padding bits per second for a sent video stream. Recorded + when a stream is removed. The total number of bytes is divided by the time + the video stream exists. + + + + + + + asapersson@chromium.org + + Percentage of time that the video has been paused for a sent video stream. + Recorded when a stream is removed. + + + + + + + asapersson@chromium.org + + The number of received RTCP PLI packets per minute for a sent video stream. + Recorded when a stream is removed. The total number of packets is divided by + the time the video stream exists. + + + + + + + asapersson@chromium.org + + The number of sent RTCP PLI packets per minute for a received video stream. + Recorded when a stream is removed. The total number of packets is divided by + the time the video stream exists. + + + + + + + asapersson@chromium.org + + For frames that are downscaled in resolution due to quality, the average + number of downscales is recorded for a sent video stream. Recorded when a + stream is removed. + + + + + + + asapersson@chromium.org + + Percentage of sent frames that are downscaled in resolution due to quality + for a sent video stream. Recorded when a stream is removed. + + + + + + + asapersson@chromium.org + + Percentage of received FEC packets for a received video stream. Recorded + when a stream is removed. + + + + + + + asapersson@chromium.org + + The average received height per frame for a received video stream. Recorded + when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + asapersson@chromium.org + + Percentage of received packets lost for a received video stream. Recorded + when a stream is removed. + + + + + + + asapersson@chromium.org + + The average received width per frame for a received video stream. Recorded + when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + asapersson@chromium.org + + The lifetime of a video receive stream. Recorded when a VideoReceiveStream + instance is destroyed. + + + + + + + asapersson@chromium.org + + Percentage of recovered media packets from FEC packets for a received video + stream. Recorded when a stream is removed. + + + + + + + asapersson@chromium.org + + The number of sent frames to the renderer per second for a received video + stream. Recorded when a stream is removed. The total number of frames is + divided by the time the video stream exists. + + + + + + + asapersson@chromium.org + + The number of pixels (sqrt(width*height)) of sent frames to the renderer per + second for a received video stream. Recorded when a stream is removed. The + total number of pixels is divided by the time the video stream exists. + + + + + + + asapersson@chromium.org + + The number of retransmitted bits per second for a received video stream. + Recorded when a stream is removed. The total number of bytes is divided by + the time the video stream exists. + + + + + + + asapersson@chromium.org + + The number of retransmitted bits per second for a sent video stream. + Recorded when a stream is removed. The total number of bytes is divided by + the time the video stream exists. + + + + + + + asapersson@chromium.org + + The absolute value of the difference between the estimated frequency during + RTP timestamp to NTP time conversion and the actual value (i.e. 90 kHz) is + measured per received video frame. The max offset during 40 second intervals + is stored. The average of these stored offsets per received video stream is + recorded when a stream is removed. + + + + + + + asapersson@chromium.org + + The number of received bits over RTX per second for a received video stream. + Recorded when a stream is removed. The total number of bytes is divided by + the time the video stream exists. + + + + + + + asapersson@chromium.org + + The number of sent bits over RTX per second for a sent video stream. + Recorded when a stream is removed. The total number of bytes is divided by + the time the video stream exists. + + + + + orphis@chromium.org + toprice@chromium.org + + Counts usage of each scalability mode used to configure the video senders in + RTCRtpEncodingParameters from addTransceiver and setParameters APIs. This is + part of the WebRTC-SVC specification. + + + + + + + sprang@chromium.org + + Percentage of sent frames that are limited in resolution due to bandwidth + for a sent (screen content) video stream. Recorded when a stream is removed. + + + + + + + sprang@chromium.org + + For frames that are limited in resolution due to bandwidth, the average + number of disabled resolutions is recorded for a sent (screen content) video + stream. Recorded when a stream is removed. + + + + + + + sprang@chromium.org + + The number of sent bits per second for a sent screenshare stream. Recorded + when a stream is removed. The total number of bytes is divided by the time + the video stream exists. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The average QP (quantizer value) per frame for a received VP8 screenshare + stream. Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Total number of frames dropped by a capturer for a sent screenshare stream. + Recorded when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Total number of frames dropped by an encoder's internal rate limiter for a + sent screenshare stream. Recorded when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Total number of frames dropped because encoder queue is full for a sent + screenshare stream. Recorded when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Total number of frames dropped by a WebRTC rate limiter (in MediaOpt) for a + sent screenshare stream. Recorded when a stream is removed. + + + + + + + sprang@chromium.org + + The average encode time per frame for a sent (screen content) video stream. + Recorded when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The average end-to-end delay per frame for a received screenshare stream. + Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The maximum end-to-end delay per frame for a received screenshare stream. + Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + sprang@chromium.org + + The number of sent FEC bits per second for a sent screenshare stream. + Recorded when a stream is removed. The total number of bytes is divided by + the time the video stream exists. + + + + + + + sprang@chromium.org + + The number of received RTCP FIR packets per minute for a sent screenshare + stream. Recorded when a stream is removed. The total number of packets is + divided by the time the video stream exists. + + + + + + + sprang@chromium.org + + Ratio of sent frames to dropped frames at the encoder. The value is reported + when a stream is removed and is calculated as the total number frames sent + divided by the number of dropped frames. + + + + + + + sprang@chromium.org + + Ratio of sent frames to number of re-encoded frames (due to target bitrate + overshoot). The value is reported when a stream is removed and is calculated + as the total number frames sent divided by the number of re-encoded frames. + + + + + + + asapersson@chromium.org + + The number of incoming frames per second for a sent (screen content) video + stream. Recorded when a stream is removed. The total number of frames is + divided by the time the video stream exists. + + + + + + + sprang@chromium.org + + The average input height per frame (for incoming frames to video engine) for + a sent (screen content) video stream. Recorded when a stream is removed. + + + + + + + sprang@chromium.org + + The average input width per frame (for incoming frames to video engine) for + a sent (screen content) video stream. Recorded when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The 95th percentile of interframe delay for a received screenshare stream. + Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The average interframe delay for a received screenshare stream. Recorded + when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The maximum interframe delay for a received screenshare stream. Recorded + when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Permille of frames that are key frames for a received screenshare stream. + Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + sprang@chromium.org + + Permille of frames that are key frames for a sent (screen content) video + stream. Recorded when a stream is removed. + + + + + + + sprang@chromium.org + + Stats for the lower layer (TL0) of a screenshare stream in conference mode. + {ScreenshareLayerStats} + + + + + + + + + + sprang@chromium.org + + Stats for the higher layer (TL1) of a screenshare stream in conference mode. + {ScreenshareLayerStats} + + + + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The average duration of a freeze in screenshare playback. Recorded then a + received stream is removed or content type changes. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The average duration of a smooth video playback for screenshare stream. + Recorded when a received stream is removed or content type changes. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The number of received media payload bits per second for a received + screenshare stream. Recorded when a stream is removed. The total number of + bytes is divided by the time the video stream exists. + {WebRTCVideoExperimentGroupId} + + + + + + + + + + sprang@chromium.org + + The number of sent media payload bits per second for a sent screenshare + stream. Recorded when a stream is removed. The total number of bytes is + divided by the time the video stream exists. + + + + + + + sprang@chromium.org + + The number of received RTCP NACK packets per minute for a sent screenshare + stream. Recorded when a stream is removed. The total number of packets is + divided by the time the video stream exists. + + + + + + Removed 12/2022. + + ilnik@chromium.org + webrtc-video@google.com + + The average number of resolution down-switches per minute for a receive + screenshare stream. Recorded when a stream is removed or content type + changes. + + + + + + + sprang@chromium.org + + The number of sent padding bits per second for a sent screenshare stream. + Recorded when a stream is removed. The total number of bytes is divided by + the time the video stream exists. + + + + + + + sprang@chromium.org + + The number of received RTCP PLI packets per minute for a sent screenshare + stream. Recorded when a stream is removed. The total number of packets is + divided by the time the video stream exists. + + + + + + + sprang@chromium.org + + For frames that are downscaled in resolution due to quality, the average + number of downscales is recorded for a sent (screen content) video stream. + Recorded when a stream is removed. + + + + + + + sprang@chromium.org + + Percentage of sent frames that are downscaled in resolution due to quality + for a sent (screen content) video stream. Recorded when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The average received height per frame for a received screenshare stream. + Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Percentage of received packets lost for a received screenshare stream. + Recorded when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The average received width per frame for a received screenshare stream. + Recorded when a stream is removed. {WebRTCVideoExperimentGroupId} + + + + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The lifetime of a screenshare receive stream. Recorded when a + VideoReceiveStream instance is destroyed. + + + + + + + sprang@chromium.org + + The number of retransmitted bits per second for a sent screenshare stream. + Recorded when a stream is removed. The total number of bytes is divided by + the time the video stream exists. + + + + + + + sprang@chromium.org + + The number of sent bits over RTX per second for a sent screenshare stream. + Recorded when a stream is removed. The total number of bytes is divided by + the time the video stream exists. + + + + + + + sprang@chromium.org + + The average delay (of average delays) of sent packets for a sent (screen + content) video stream. Recorded when a stream is removed. The delay is + measured from a frame is input to video engine until a packet is sent to the + network. For each sent packet, the average delay of all sent packets over + the last second is reported. The average of these reported delays is + recorded. + + + + + + + sprang@chromium.org + + The average delay (of max delays) of sent packets for a sent (screen + content) video stream. Recorded when a stream is removed. The delay is + measured from a frame is input to video engine until a packet is sent to the + network. For each sent packet, the maximum delay of all sent packets over + the last second is reported. The average of these reported delays is + recorded. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + The number of sent frames per second for a sent (screen content) video + stream. Recorded when a stream is removed. The total number of frames is + divided by the time the video stream exists. + + + + + + + sprang@chromium.org + + The average sent height per frame for a sent (screen content) video stream. + Recorded when a stream is removed. + + + + + + + sprang@chromium.org + + Percentage of sent packets lost for a sent screenshare stream. Recorded when + a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Ratio between Screenshare.SentFramesPerSecond and + Screenshare.InputFramesPerSecond in percents. Recorded when a stream is + removed. The total number of sent frames is divided by the total number of + input frames and multiplied by 100. + + + + + + + sprang@chromium.org + + The average sent width per frame for a sent (screen content) video stream. + Recorded when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Percentage of time the received screenshare stream playbacks low quality + blocky video. Recorded when a stream is removed or content type changes. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Percentage of time the received screenshare stream playbacks HD resolution. + Recorded when a stream is removed or content type changes. + + + + + + + sprang@chromium.org + + Percentage of unique RTCP NACK requests that are received in response to a + sent screenshare stream. Recorded when a stream is removed. + + + + + + + asapersson@chromium.org + + The average send delay of sent packets for a sent video stream. Recorded + when a stream is removed. The delay is measured from a packet is sent to the + transport until leaving the socket. + + + + + + + asapersson@chromium.org + + The average delay (of average delays) of sent packets for a sent video + stream. Recorded when a stream is removed. The delay is measured from a + frame is input to video engine until a packet is sent to the network. For + each sent packet, the average delay of all sent packets over the last second + is reported. The average of these reported delays is recorded. + + + + + + + asapersson@chromium.org + + The average delay (of max delays) of sent packets for a sent video stream. + Recorded when a stream is removed. The delay is measured from a frame is + input to video engine until a packet is sent to the network. For each sent + packet, the maximum delay of all sent packets over the last second is + reported. The average of these reported delays is recorded. + + + + + + + asapersson@chromium.org + + The lifetime of a video send stream. Recorded when a VideoSendStream + instance is destroyed. + + + + + + + asapersson@chromium.org + + The number of sent frames per second for a sent video stream. Recorded when + a stream is removed. The total number of frames is divided by the time the + video stream exists. + + + + + + + asapersson@chromium.org + + The average sent height per frame for a sent video stream. Recorded when a + stream is removed. + + + + + + + asapersson@chromium.org + + Percentage of sent packets lost for a sent video stream. Recorded when a + stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Ratio between SentFramesPerSecond and InputFramesPerSecond in percents. + Recorded when a stream is removed. The total number of sent frames is + divided by the total number of input frames and multiplied by 100. + + + + + + + asapersson@chromium.org + + The average sent width per frame for a sent video stream. Recorded when a + stream is removed. + + + + + + + asapersson@chromium.org + + Average target delay (jitter delay + decode time + render delay) for a + received video stream. Recorded when a stream is removed. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Percentage of time the receive video stream playbacks low quality blocky + video. Recorded when a stream is removed or content type changes. + + + + + + + ilnik@chromium.org + webrtc-video@google.com + + Percentage of time the receive video stream playbacks HD resolution. + Recorded when a stream is removed or content type changes. + + + + + + + asapersson@chromium.org + + Percentage of unique RTCP NACK requests that are received in response to a + sent video stream. Recorded when a stream is removed. + + + + + + + asapersson@chromium.org + + Percentage of unique RTCP NACK requests that are sent in response to a + received video stream. Recorded when a stream is removed. + + + + + + + perkj@chromium.org + + Counts occurences of if the VP8 software decoder runs out of buffers due to + that they are not returned to the buffer pool. See http://crbug/652923 and + http://crbug/542522. + + + + + toprice@chromium.org + hbos@chromium.org + mcasas@chromium.org + emircan@chromium.org + armax@chromium.org + Counts number of calls to WebRTC APIs from JavaScript. + + + + toprice@chromium.org + hbos@chromium.org + + Counts the number of calls to WebRTC APIs from JavaScript once per session. + A session is a crude estimate since its implemented as the lifetime of the + render process that called the WebRTC API. + + + + + eladalon@chromium.org + manj@google.com + dmitriyg@google.com + + The result of calls to the API for the collection and uploading of WebRTC + event logs. + + + + + eladalon@chromium.org + manj@google.com + dmitriyg@google.com + + NetError returned by the SimpleURLLoader object in charge of uploading a + WebRTC event log file. + + + + + eladalon@chromium.org + manj@google.com + dmitriyg@google.com + + Tracks the uploading or discarding of WebRTC event logs that were previously + collected. + + + + + toprice@chromium.org + olka@chromium.org + webrtc-dev@chromium.org + + Network error codes for WebRTC text log upload failures. Recorded when an + upload attempt fails. Note: The histogram was disabled between May 2022 and + M110, so has no data for that period. + + + + + toprice@chromium.org + olka@chromium.org + webrtc-dev@chromium.org + + Counts upload failures for WebRTC text log. Error codes for network errors + are logged in WebRtcTextLogging.UploadFailureNetErrorCode. Recorded when an + upload attempt fails. + + + + + toprice@chromium.org + olka@chromium.org + webrtc-dev@chromium.org + + Counts the number of WebRTC text log events per web application. Suffixed by + event. {WebRtcLoggingEvent} + + + + + + + + + + + + + + diff --git a/histograms/metadata/webapps/OWNERS b/histograms/metadata/webapps/OWNERS new file mode 100644 index 000000000000..c2ccf868fe4a --- /dev/null +++ b/histograms/metadata/webapps/OWNERS @@ -0,0 +1,9 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +alancutter@chromium.org +dmurph@chromium.org +eirage@chromium.org +glenrob@chromium.org +hartmanng@chromium.org diff --git a/histograms/metadata/webapps/histograms.xml b/histograms/metadata/webapps/histograms.xml new file mode 100644 index 000000000000..525424b6e8e1 --- /dev/null +++ b/histograms/metadata/webapps/histograms.xml @@ -0,0 +1,1564 @@ + + + + + + + + + + dominickn@chromium.org + pjmclachlan@google.com + desktop-pwas-team@google.com + + App banners promote an application related to the current website, and are + requested specifically through the current page's HTML. This stat tracks + usage of the BeforeInstallPromptEvent, which allows developers to control + when an app banner appears. The events in this histogram are not mutually + exclusive - for example, preventDefault() must be called if prompt() is + called. + + + + + pjmclachlan@google.com + pcovell@google.com + + App banners promote an application related to the current website, and are + requested specifically through the current page's HTML. This stat tracks the + different ways that an app banner left the screen, e.g. through an automatic + dismissal after navigation or an explicit user action. + + + + + pjmclachlan@google.com + pcovell@google.com + + App banners promote an application related to the current website, and are + requested specifically through the current page's HTML. This stat tracks + when an app banner was requested and how the request was handled, e.g. the + user blocked its appearance or the banner was ultimately created. + + + + + dominickn@chromium.org + pjmclachlan@google.com + + App banners promote an application related to the current website, and are + requested specifically through the current page's HTML. This stat tracks the + status code logged by the app banner system as it processes a site's + eligibility for an app banner. Every request for a banner will be logged in + a bucket of this histogram. + + + + + dominickn@chromium.org + pjmclachlan@google.com + pcovell@google.com + + App banners promote an application related to the current website, and are + requested specifically through the current page's HTML. This stat tracks + when a user triggers an install dialog for the app promoted by the banner, + as well as whether or not the user ultimately decided to install the app. + + + + + dominickn@chromium.org + pjmclachlan@google.com + + This stat tracks the user reponse when the add-to-homescreen dialog is shown + either: (A) Via the website's JavaScript (B) Via the user tapping the app + banner which promotes the application related to the current site. + + + + + dmurph@chromium.org + desktop-pwa-team@google.com + + Records the display mode (as defined in the Web App Manifest spec) at the + launch of a web app that was created using "Create Shortcut..." on + desktop. This is only recorded if the launch was to a browwer tab context, + not a standalone window. + + + + + dmurph@chromium.org + desktop-pwa-team@google.com + + Records the display mode (as defined in the Web App Manifest spec) at the + launch of a desktop web app installed NOT using "Create + Shortcut...". This is only recorded if the launch was to a browwer tab + context, not a standalone window. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records the launch_handler.client_mode used when a web app is launched in a + browser tab. + + + + + dominickn@chromium.org + hartmanng@chromium.org + peconn@chromium.org + + Records how Chrome handled a launch from an Android Home screen shortcut. + + + + + dominickn@chromium.org + hartmanng@chromium.org + peconn@chromium.org + + Records the source of an Android homescreen launch intent used to launch + Chrome. + + The Menu item bucket is deprecated as of M57, and will only contain records + for shortcuts added to the homescreen until M56. + + For M57+, the Menu item (standalone) bucket contains all launch intents + originating from the add to homescreen menu item that launch to standalone + mode and *are not* WebAPKs. These are sites which do not meet the PWA + eligibility criteria, but have an app manifest that specifies either + standalone or fullscreen display. This bucket also contains PWA *and* + non-PWA intents that were added to the homescreen *prior* to M57, as we + cannot distinguish between them after they are added. + + For M57+, the Menu item (shortcut) bucket contains all launch intents + originating from the add to homescreen menu item that launch to a browser + tab, regardless of when the intent was added. + + + + + peter@chromium.org + yfriedman@chromium.org + + Records the display mode (as defined in the Web App Manifest spec) at the + launch of the Added to Home screen or installed Web App (including WebAPKs). + This is only recorded if the launch was to a windowed context, not a browwer + tab. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records the launch_handler.client_mode used when a web app is launched in a + window. + + + + + dmurph@chromium.org + desktop-pwa-team@google.com + + Records the display mode (as defined in the Web App Manifest spec) at the + launch of a shortcut created using "Add to Homescreen" on mobile, + or a "Create Shortcut..." on desktop. This is only recorded if the + launch was to a windowed context, not a browwer tab. + + + + + dominickn@chromium.org + peconn@chromium.org + + Records the number of milliseconds that the add to homescreen dialog + required to check installability eligibility. + + + + + finnur@chromium.org + peter@chromium.org + + Keeps track of what verbiage was shown in the App menu versus what was + actually installed. + + + + + eirage@chromium.org + src/chrome/android/webapk/OWNERS + + On mobile, an install ambient badge may automatically shows to promote an + application related to the current website when the site meets all install + criteria. When the ambient badge was clicked by the user and displaying the + app banner UI, record the type of the app (native app or web app). + + + + + eirage@chromium.org + src/chrome/android/webapk/OWNERS + + On mobile, an install ambient badge may automatically shows to promote an + application related to the current website when the site meets all install + criteria. When the ambient badge was explictly dismissed by the user, record + the type of the app (native app or web app). + + + + + eirage@chromium.org + src/chrome/android/webapk/OWNERS + + On mobile, an install ambient badge may automatically shows to promote an + application related to the current website when the site meets all install + criteria. When an ambient badge was shown, record the type of the app + (native app or web app). + + + + + eirage@chromium.org + src/chrome/android/webapk/OWNERS + + On mobile, an install ambient badge may automatically shows to promote an + application related to the current website when the site meets all install + criteria. When the ambient badge pipleline was terminated, record the + pipeline state. + + + + + finnur@chromium.org + peter@chromium.org + + Whenever PWAs change their manifest, this may result in a change to their + identity (icon and/or name). This metric is intended to keep track of the + combinations of App Identity changes that were requested (changes to the + icons and/or app name -- plus icon masks and/or shortname on Android). This + metric is logged once each time Chrome determines that a PWA is in need of + an update, but ONLY if the change should be auto-approved. On Android that + happens when the user has approved the App Identity dialog with identical + data before (and another update request comes in), and on Desktop platforms + that happens when Default apps/Policy apps are pre-approved for updating. + See also complementary metric Webapp.AppIdentityDialog.NotShowing. Milestone + 112 update: This used to record when there were no app identity changes + required or for shortcut apps, this is now recorded as + Webapp.AppIdentityDialog.NotShowing instead. + + + + + finnur@chromium.org + peter@chromium.org + + Whenever PWAs change their manifest, this may result in a change to their + identity (icon and/or name). This metric is intended to keep track of the + combinations of App Identity changes that were requested (changes to the + icons and/or app name -- plus icon masks and/or shortname on Android). This + metric is logged once each time Chrome determines that a PWA is in need of + an update, but ONLY if there is no App Identity change involved (or the App + Identity dialog is disabled by a feature switch). See also complementary + metric Webapp.AppIdentityDialog.Showing. Milestone 112 update: + Webapp.AppIdentityDialog.AlreadyApproved used to record when there were no + app identity changes required or for shortcut apps, this is now recorded as + Webapp.AppIdentityDialog.NotShowing instead. + + + + + finnur@chromium.org + peter@chromium.org + + Whenever PWAs change their manifest, this may result in a change to their + identity (icon and/or name). This metric is intended to keep track of the + combinations of App Identity changes that were requested (changes to the + icons and/or app name -- plus icon masks and/or shortname on Android). This + metric is logged once each time Chrome determines that a PWA is in need of + an update, but ONLY if there is an App Identity change involved (the App + Identity dialog is enabled by a feature switch and the dialog was shown to + the user). See also complementary metric + Webapp.AppIdentityDialog.NotShowing. + + + + + phillis@chromium.org + desktop-pwas-team@google.com + + Records the source of certain navigations to chrome://app-settings. + Recording happens at the given entry point, and not during the loading of + chrome://app-settings, so direct visits to the URL are not recorded. + + + + + alancutter@chromium.org + tsergeant@chromium.org + desktop-pwas-team@google.com + + Records the result of scanning for a duplicate Calculator app erasure bug + https://crbug.com/1393284 and whether a fix was applied. Recorded at start + up of the browser process. + + + + + asamidoi@chromium.org + chrome-worker@google.com + + Records the result of the check if a PWA has a service worker with a fetch + event handler when the CheckOfflineCapability feature is disabled. When the + feature is enabled, records the result of the check if a PWA supports + offline pages with a service worker. + + + + + asamidoi@chromium.org + chrome-worker@google.com + + Records the time to complete the check if a PWA has a service worker with a + fetch event handler when the CheckOfflineCapability feature is disabled. + When the feature is enabled, records the time to complete the check if a PWA + supports offline pages with a service worker. + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + + Records if modifying data in the web app database was successful. Recorded + whenever the database is written to, which can happen on large events like + installing a web app, as well as small events like changing a the user + display preference for a web app. + + + + + finnur@chromium.org + peter@chromium.org + + Keeps track of why the default offline (error) page is no longer visible. + Logged once each time the default error page shown, after determining that + it is no longer needed, e.g. because a new navigation occurred for the error + page's WebContents, the device is online again and the WebContents was + refreshed or when the WebContents is destroyed. + + + + + finnur@chromium.org + peter@chromium.org + + Keeps track of how long the default offline (error) page was shown for PWAs. + Logged once each time the default error page shown, after determining that + it is no longer needed, e.g. because a new navigation occurred for the error + page's WebContents, the device is online again and the WebContents was + refreshed or when the WebContents is destroyed. + + + + + mgiuca@chromium.org + desktop-pwas-team@google.com + + The type of engagement (navigation, user input, etc.) which led to an + accumulation in site engagement within a web app window or tab. Should be + collected for a subset of SiteEngagementService.EngagementType, which is + triggered for all browsing contexts. Recorded at the time of engagement + accumulation (e.g., when mouse is clicked). + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + + Records on startup of the browser process the number of incorrect + install_urls for preinstalled apps flagged as uninstalled by the user, but + actually was not (they are still installed as preinstalled apps). This + should only occur due to a ChromeOS Lacros bug where a process incorrectly + starts with a wrong configuration hiding all of the installed web apps, + which the migration interprets as 'user uninstalled'. This metric is NOT + recorded if none of the install urls stored in the database were present in + the kUserUninstalledPreinstalledWebAppPref pref. See + https://crbug.com/1359205. + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + + Records on startup of the browser process the number of incorrect + install_urls for preinstalled apps flagged as uninstalled by the user, but + actually was not (they are still installed as preinstalled apps). This + should only occur due to a ChromeOS Lacros bug where a process incorrectly + starts with a wrong configuration hiding all of the installed web apps, + which the migration interprets as 'user uninstalled'. Specifically, this + case occurs if the external data for the kDefault management type is empty + or the install urls are empty (both of which could happen for chrome + installations that are old and didn't have the migration step in m104). See + https://crbug.com/1359205. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records whether the install_urls have been migrated or not because the data + is in sync in between the externally installed prefs and the web_app DB. + This is always measured on startup before the WebAppProvider subsystems + initialize. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records whether the is_placeholder field has been migrated or not because + the data is in sync in between the externally installed prefs and the + web_app DB. This is always measured on startup before the WebAppProvider + subsystems initialize. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records whether the data from external apps is absent both in the external + prefs and the web_app DB. This is recorded on startup just before the + WebAppProvider system initializes, when no externally installed apps are + found on the system. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records whether the data from external apps is absent in the external prefs + but exists in the web_app DB. This is recorded on startup just before the + WebAppProvider system initializes. This should not happen, because then + somewhere the data is out of sync and not being written properly. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records whether the data from external apps is present in the external prefs + but is absent in the web_app DB. This is recorded on startup just before the + WebAppProvider system initializes. This usually means a system where + migration does not happen, and should stop increasing at a point after all + systems have been migrated, or should increase slowly. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records whether the data from external apps is present both in the external + prefs and the web_app DB. This is recorded on startup just before the + WebAppProvider system initializes. This should always be increasing, and + denotes the best case where migration has happened. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records whether the user uninstalled preinstalled web app data is migrated + from the external prefs to the user uninstalled preinstalled prefs. This is + always measured on startup before the WebAppProvider subsystems initialize. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records the result of file handler registration for PWAs. This is triggered + during installations or updates, when set by policy changes in the web app + settings policy or when an user modifies the file handling settings from the + chrome://app-settings/ page per app. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records the result of file handler unregistration for PWAs. This is + triggered during uninstalls or updates, when set by policy changes in the + web app settings policy or when an user modifies the file handling settings + from the chrome://app-settings page per app. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records the number of web apps that have an empty + WebApp::downloaded_icon_sizes field. This indicates an icon failure state + caused by an installation bug. This gets recorded at browser profile start + up in both the Lacros and Ash processes. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records the number of web apps that have missing icon bitmap data. This gets + recorded at browser profile start up in both the Lacros and Ash processes. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records the number of web apps that have empty icon files. This gets + recorded at browser profile start up in both the Lacros and Ash processes. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records the number of web apps that have a generated letter icon bitmap + (distinct from the is_generated_icon flag). This gets recorded at browser + profile start up in both the Lacros and Ash processes. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records the number of web apps that have their WebApp::is_generated_icon + field set. This indicates a letter icon was generated during installation + instead of using a real app icon. This gets recorded at browser profile + start up in both the Lacros and Ash processes. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records the number of web apps that have their WebApp::is_generated_icon + field unset but actually have a generated icon bitmap. This indicates a + letter icon was generated during installation instead of using a real app + icon and a manifest update clobbered the correct value of is_generated_icon + (https://crbug.com/1317922). This gets recorded at browser profile start up + in both the Lacros and Ash processes. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records the number of web apps that have missing icon files. This gets + recorded at browser profile start up in both the Lacros and Ash processes. + + + + + alancutter@chromium.org + mgiuca@chromium.org + desktop-pwas-team@google.com + + The HTTP status code returned for a list of icons when installing single + WebApp. Recorded when WebAppInstallTask finishes downloading icons for + non-sync installs. Icon download attempts with identical codes produce only + one event for this histogram. + + + + + alancutter@chromium.org + mgiuca@chromium.org + desktop-pwas-team@google.com + + The HTTP status code returned for a list of icons when installing single + WebApp. Recorded when WebAppInstallTask finishes downloading icons for web + apps from sync. Icon download attempts with identical codes produce only one + event for this histogram. + + + + + alancutter@chromium.org + mgiuca@chromium.org + desktop-pwas-team@google.com + + The HTTP status code returned for a list of icons when updating single + WebApp. Recorded when ManifestUpdateDataFetchCommand finishes downloading + icons for update. Icon download attempts with identical codes produce only + one event for this histogram. + + + + + alancutter@chromium.org + mgiuca@chromium.org + desktop-pwas-team@google.com + + The overall result returned by WebAppIconDownloader. Recorded when + WebAppInstallTask finishes downloading icons for non-sync installs. + + + + + alancutter@chromium.org + mgiuca@chromium.org + desktop-pwas-team@google.com + + The overall result returned by WebAppIconDownloader. Recorded when + WebAppInstallTask finishes downloading icons for web aps from sync. + + + + + alancutter@chromium.org + mgiuca@chromium.org + desktop-pwas-team@google.com + + The overall result returned by WebAppIconDownloader. Recorded when + ManifestUpdateDataFetchCommand finishes downloading icons. + + + + + alancutter@chromium.org + mgiuca@chromium.org + desktop-pwas-team@google.com + + The HTTP status code class returned for each icon loaded during a WebApp's + creation. Recorded when WebAppInstallTask finishes downloading icons. + + + + + alancutter@chromium.org + mgiuca@chromium.org + desktop-pwas-team@google.com + + The HTTP status code class returned for each icon loaded when syncing a + WebApp. Recorded when WebAppInstallTask finishes downloading icons on sync. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + The HTTP status code class returned for each icon loaded when updating a + WebApp. Recorded when ManifestUpdateDataFetchCommand finishes downloading + icons. + + + + + peter@chromium.org + yfriedman@chromium.org + + Records the display mode (as defined in the Web App Manifest spec) at the + install time of a WebApp. Fixes a bug in the data collection for desktop web + apps. + + + + + alancutter@chromium.org + dominickn@chromium.org + + Records when a web app install bounced for different install sources. A + bounce is when the user uninstalls the web app within 1 hour of installing + it. + + + + + alancutter@chromium.org + dominickn@chromium.org + desktop-pwas-team@google.com + + Records the mechanism and source from which a web app installation was + triggered, regardless of whether the installation was successful. + + + + + phillis@chromium.org + desktop-pwas-team@google.com + + This is recorded when a web app installation is completed. If the + installation occurred or the app was already installed, then this records + "true". All other cases record "false". This tracks all + kinds of web app installations, e.g. user installs from install icon or + admin installs from WebAppInstallForcelist. + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + + This is recorded when a web app install from the sync system fails and the + fallback install is initiated. Sync installations happen when the sync + system tells the local client that a web app has been installed on the + profile on a different device. This often happens during startup. The value + is the error code for the regular install flow. + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + sunggch@microsoft.com + + Records the mechanism and source from which a web app uninstallation was + triggered, regardless of whether the uninstallation was successful. + + + + + dmurph@chromium.org + desktop-pwa-team@google.com + + Records the reason that the WebApp install confirmation dialog is closed. + This dialog is shown when the user clicks on the 'install' icon in the + omnibox for websites that are installable. This metric is intended to give + data for an experiment to choose the best install icon. + + + + + + Deprecated on 2022-04. Collected metrics on IPH usage and no longer needed. + + phillis@chromium.org + dmurph@chromium.org + + Records the result of user reaction to In Product Help promo for Web App + Install. + + + + + + + ortuno@chromium.org + qjw@chromium.org + Records the result code of Web App installs. + + + + cmfcmf@chromium.org + peletskyi@chromium.org + + Records whether reading integrity block and metadata from a Signed Web + Bundle via the isolated-app: scheme was successful or resulted in an error. + This is logged every time the integrity block and metadata of an Isolated + Web App are parsed, which happens whenever the reader for an Isolated Web + App is not yet cached. Readers are evicted from the cache after + approximately 10 minutes of not reading any responses from their + corresponding Signed Web Bundle. Isolated Web Apps are parsed for any + resources loading for the web app, so any usage could trigger this UMA. + + + + + cmfcmf@chromium.org + peletskyi@chromium.org + + Records whether reading the response head for a request to an Isolated Web + App via the isolated-app: scheme was successful or resulted in an error. As + a prerequisite for this metric to be logged, the Isolated Web App's + integrity block and metadata must have passed validation and its signatures + must have been verified successfully. This metric is then logged for any + resources loading for the Isolated Web App, so any usage could trigger this + metric. + + + + + cmfcmf@chromium.org + peletskyi@chromium.org + + This histogram is logged whenever an HTTP request to read a response from a + Signed Web Bundle used for Isolated Web Apps is made through the + isolated-app: scheme and handled by the corresponding URLLoader. This + happens both during installation of an Isolated Web App, and when users + browse an installed Isolated Web App. The histogram records whether a cached + reader was used to read the response. A cached reader is able to directly + read a response from the Signed Web Bundle, whereas an uncached reader first + needs to parse the Signed Web Bundle's Integrity Block and metadata, and + possibly verify signatures. + + + + + cmfcmf@chromium.org + peletskyi@chromium.org + + Records how long it takes to verify signatures of Signed Web Bundles used + for Isolated Web Apps every time their signatures are verified. Signatures + are verified during installation (all platforms) and when an Isolated Web + App is first accessed during a Chrome session (non-ChromeOS platforms only). + + + + + cmfcmf@chromium.org + peletskyi@chromium.org + + Records the file length of Signed Web Bundles used for Isolated Web Apps + every time their signatures are verified. Signatures are verified during + installation (all platforms) and when an Isolated Web App is first accessed + during a Chrome session (non-ChromeOS platforms only). + + + + + phillis@chromium.org + desktop-pwas-team@google.com + + Records the container used for a web app launch, when the app is launched + (eg. via UI surfaces or intents). Not recorded when the web app is navigated + to via URL. + + + + + davidbienvenu@chromium.org + jessemckenna@google.com + + The result of a Progressive Web App (PWA) launcher's attempt to launch + Chrome. Windows-only. + + + + + phillis@chromium.org + desktop-pwas-team@google.com + + The number of times web apps are launched, grouped by apps::LaunchSource. + The equivalent histogram on Android is called Launch.HomeScreenSource. + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + + Records the result of running the WebAppMover, which runs on Chrome startup. + It uninstalls a set of WebApps and then installs a single WebApp as a + replacement. + + + + + peter@chromium.org + hartmanng@chromium.org + + Records whether the top-level navigations in standalone Web Apps result in + presenting the web content or showing the error page. + + + + + + + davidbienvenu@chromium.org + dmurph@chromium.org + desktop-pwas-team@google.com + + Recorded when Chrome is launched to open a Web App; e.g., with --app-id. + Metric describes how the web app opened; e.g., in a standalone window or in + a tab. Previously recorded in Launch.Modes. + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + + Records the result of result of registering a PWA with the OS's app + management surface, which is used to offer uninstallation. This currently is + only implemented on Windows, and this causes the app to appear in the + control panel's list of installed applications. This is triggered during + installations or updates. Updates can occur when the app's name has been + changed, or when the system has determined that the user can uninstall this + app. For example, if this app was installed by the user and policy (so the + user cannot uninstall it, due to policy), but then the policy is removed. + The app is now uninstallable by the user, so this will be registered with + the OS. + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + + Records the result of result of unregistering a PWA with the OS's app + management surface, which is used to offer uninstallation. This currently is + only implemented on Windows, and this causes the app to no longer appear in + the control panel's list of installed applications. This is triggered during + uninstallations or updates. Updates can occur when the app's name has been + changed, or when the system has determined that the user cannot uninstall + this app. For example, if this app was installed by the user (which is + uninstallable), but then it is force-installed by policy. The app is no + longer uninstallable by the user, so this will be unregistered with the OS. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Chrome apps migrated to preinstalled web apps encountered an issue where + apps became duplicated, see https://crbug.com/1266234. + + The PreinstalledWebAppDuplicationFixer was added to fix users that + encountered duplicate apps. See https://crbug.com/1290716. This metric + records how many app duplications got fixed. + + This gets recorded at start up after Chrome apps have loaded. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Preinstalled web app configs can specify a set of apps to uninstall after + the preinstalled web app is installed. + + This records how many apps that are meant to be uninstalled are still + default installed; see https://crbug.com/1266234. + + This gets recorded at start up after preinstalled web apps configs have been + applied. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Preinstalled web app configs can specify a set of apps to uninstall after + the preinstalled web app is installed. + + This records how many apps that are meant to be uninstalled are still + installed. This could occur due to manual installation by the user or Chrome + app sync, see https://crbug.com/1266234. + + This gets recorded at start up after preinstalled web apps configs have been + applied. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Preinstalled web app configs can specify a set of apps to uninstall after + the preinstalled web app is installed. + + This records how many apps that are meant to be uninstalled are still + installed and present in the Chrome OS shelf; see https://crbug.com/1266234. + + This gets recorded at start up after preinstalled web apps configs have been + applied. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records how many preinstalled web app config files failed to parse as valid + JSON with valid fields. See preinstalled_web_app_utils.cc ParseConfig(). + This is recorded at start up. + + + + + alancutter@chromium.org + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records how many preinstalled web app configs have an entry in + UserUninstalledPreinstalledWebAppPrefs while the associated web app is still + installed by default. This state is an error state caused by: + https://crbug.com/1359205 This is recorded at start up. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records how many preinstalled web apps configs were disabled for the device. + This is recorded at start up. + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + + Records the reason a preinstalled installation was disabled. This is + recorded at startup for every app in the preinstalled apps list, before it + is sent to the ExternallyManagedAppManger for synchronization. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records how many preinstalled web apps configs were enabled for the device. + This is recorded at start up. + + + + + phillis@chromium.org + desktop-pwas-team@google.com + + Records whether the ExternalConfigMap data for an preinstalled app is + missing in web_app DB. This is recorded when an preinstalled web app is + getting uninstalled by user. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records how many preinstalled web apps that are migrating from Chrome apps + are not installed and their Chrome app is not installed either. This is + recorded at start up. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records how many preinstalled web apps that are migrating from Chrome apps + are not installed and their Chrome app is installed. This is recorded at + start up. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records how many preinstalled web apps that are migrating from Chrome apps + are installed and their Chrome app is not installed. This is recorded at + start up. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records how many preinstalled web apps that are migrating from Chrome apps + are installed and their Chrome app is installed as well. This is recorded at + start up. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records how many preinstalled web app installations uninstalled and replaced + an old default app (web app or Chrome app). This corresponds to the + "uninstall_and_replace" field in preinstalled web app configs. + + + + + glenrob@chromium.org + desktop-pwas-team@google.com + + Records that a preinstalled app's display mode is changed by the user. + Recorded when the display mode changes for a user in the experiment group, + which is new ChromeOS users. + + + + + + + + + + + + + + glenrob@chromium.org + desktop-pwas-team@google.com + + Records that a preinstalled app's link capturing setting is changed by the + user. Recorded when the link capturing mode changes for a user in the + experiment group, which is new ChromeOS users. + + + + + + + + + + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records the result of registering protocol handlers for PWAs. This is + triggered during OS integration synchronization whenever new protocol + handlers need to be registered for a recently installed app, when an user + allows an app as a protocol handler from chrome://settings/handlers or + during a manifest update process when the app previously did not have any + protocol handlers defined for it. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records the result of unregistering protocol handlers for PWAs. This is + triggered during OS integration synchronization whenever an app is being + uninstalled, when a manifest update removes the approved protocol handlers + from an app or when an user has disallowed the app from its protocol + handlers from chrome://settings/handlers. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records the result of updating protocol handlers for PWAs. This is triggered + during OS integration synchronization whenever the protocol handlers for an + existing app needs to be updated as part of the manifest update process or + user approval changes from chrome://settings/handlers. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records the completion state for Run On OS Login commands being scheduled. + The command can be scheduled when the user changes the Run on OS login + setting and/or when a policy is applied, and the completion state is + recorded after the command either executes succesfully or fails prematurely. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records the result of registering Run On OS Login with the OS. This is + triggered during OS integration whenever an app is being installed or the + run on OS login state is being updated by the user from various UI surfaces + like the chrome://apps context menu or from the app settings page for an + app. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records the result of unregistering Run On OS Login with the OS. This is + triggered during OS integration whenever an app is being uninstalled or the + user is modifying the app preferences to not have it run on startup from the + chrome://apps context menu or app settings page. + + + + + phillis@chromium.org + dmurph@chromium.org + Records the result of shortcut creation for PWA. + + + + dmurph@google.com + desktop-pwas-team@google.com + + The result of deleting shortcuts for an installed PWA. Shortcuts are usually + the icon in the operating system signifying the app or extension as an OS + entity (e.g. on Mac, it's the .app file). Deleting shortcuts occurs when an + app is uninstalled, which can be triggered by the user uninstalling the app, + or by other 'app management' sources uninstalling an app (e.g. organization + policy). + + + + + camdenking@google.com + desktop-pwas-team@google.com + + The result of updating shortcuts for an installed PWA. Shortcuts are usually + the icon in the operating system signifying the app or extension as an OS + entity (e.g. on Mac, it's the .app file). Updating shortcuts occurs when an + app is updated through the manifest update mechanism, when the Mac + architecture changes, the shortcut version number has been updated, and when + the user denies use of protocol handlers or file handlers, which occurs on + launch of those respective features. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records the different results (both failure and success) that contributes to + shortcuts menu registration on Windows. + + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + Records the result of shortcuts menu registration for PWAs. + + + + dibyapal@chromium.org + desktop-pwas-team@google.com + + Records the result of shortcuts menu unregistration for PWAs. + + + + + alancutter@chromium.org + desktop-pwas-team@google.com + + Records uninstallation result for sync initiated uninstalls in the new + USS-based web applications system. + + Warning: this histogram was expired from 2022-04-24 through M106, data may + be missing. + + + + + + Deprecated in 2022-04. Collected histogram shows the feature is working as + intended. Histogram is no longer needed. + + dominicschulz@google.com + qjw@chromium.org + + Records how long the SWA background task waits for the system to become idle + before starting to run. Recorded in milliseconds, from 1 millisecond to 1 + hour. This is logged when a SWA background task starts. + + + + + ortuno@chromium.org + qjw@chromium.org + + Records the time taken to perform a fresh install of all system web apps. It + measures the time from when we dispatch a call to install them, until we get + all the installation results. This intentionally excludes the scenario where + we don't request to install all the apps for consistency. Recorded in + milliseconds, from 1 millisecond to 3 minutes. + + + + + qjw@chromium.org + dominicschulz@chromium.org + + Records whether system web app icons are healthy for each user session that + has system web apps installed. Failure indicates that at least one app has + missing or fallback icons. + + + + + qjw@chromium.org + clamclamyan@google.com + dominicschulz@chromium.org + + Records whether a reinstall fixes previously broken system web app icons. + This is recorded during icon check after a reinstall (when icons were broken + in the last session). + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + + Records if removing icon data from disk was successful during webapp + uninstall, before the webapp is removed from the database. Uninstall can + occur from the user, enterprise policy, device policy, or chrome sync. + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + + Records the number of incomplete uninstalls that were found on startup. + These web apps are immediately scheduled for uninstall again. This does NOT + include webapps that uninstalled from sync - any incomplete uninstalls from + sync cannot be counted. + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + + Records if uninstalling OS hooks was successful during webapp uninstall, + before the webapp is removed from the database. Uninstall can occur from the + user, enterprise policy, device policy, or chrome sync. + + + + + dmurph@chromium.org + desktop-pwas-team@google.com + + Records if uninstallation was successful. Uninstall can occur from the user, + enterprise policy, device policy, or chrome sync. + + + + + benwells@chromium.org + dominickn@chromium.org + desktop-pwas-team@google.com + + Records the user response to the dialog shown when uninstalling a web app. + + Warning: this histogram was expired from 2022-05-22 through M106, data may + be missing. + + + + + alancutter@chromium.org + desktop-pwas-team@chromium.org + + Records the result of web app manifest update checks during page + navigations. Note that "No app in scope" results are ignored due + to the expected several orders of magnitude higher volume than all other + update results. + + + + + mek@chromium.org + desktop-pwas-team@google.com + + Records the result of web app origin association file fetch when url + handlers are present. Happens when PWA is installed or updated. + + + + + mek@chromium.org + desktop-pwas-team@google.com + + Records the result of web app origin association file parsing. Happens after + an web app origin association file is fetched. + + + + + qjw@chromium.org + ortuno@chromium.org + desktop-pwas-team@google.com + Records the result of WebAppUrlLoader::PrepareForLoad(). + + + + + diff --git a/histograms/metadata/webauthn/OWNERS b/histograms/metadata/webauthn/OWNERS new file mode 100644 index 000000000000..4fcf4cd90cd4 --- /dev/null +++ b/histograms/metadata/webauthn/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +kenrb@chromium.org diff --git a/histograms/metadata/webauthn/histograms.xml b/histograms/metadata/webauthn/histograms.xml new file mode 100644 index 000000000000..3e74b8147a50 --- /dev/null +++ b/histograms/metadata/webauthn/histograms.xml @@ -0,0 +1,292 @@ + + + + + + + + + + agl@chromium.org + martinkr@google.com + + Records user-visible BLE events that occur during a WebAuthn flow. + + + + + agl@chromium.org + martinkr@google.com + + Records events that occur during caBLE v1 authenticator discovery so that + potential discovery failures can be identified. + + + + + agl@chromium.org + martinkr@google.com + + Records events that happen during the discovery of USB-connected phones. + + + + + agl@chromium.org + martinkr@google.com + + Records events that happen when listening for a caBLEv2 device. + + + + + agl@chromium.org + martinkr@google.com + + The time taken between requesting GMS Core to do a GetAssertion operation + and the response getting received. Recorded only once the response is + received. + + + + + agl@chromium.org + martinkr@google.com + + Records events that occur during a caBLE v2 transaction from the mobile + side. + + + + + agl@chromium.org + martinkr@google.com + Records the outcome of caBLEv2 transactions. + + + + agl@chromium.org + martinkr@google.com + + The time between the phone connecting to the tunnel server (and thus + starting its BLE broadcast) to the point where it receives the handshake + message from the desktop. + + + + + agl@chromium.org + martinkr@google.com + + Records events that occur during the creation of a caBLEv2 tunnel. + + + + + agl@chromium.org + martinkr@google.com + + Records network and HTTP errors when a tunnel server connection fails. (The + HTTP error takes precedence if it's available.) + + + + + martinkr@google.com + hcyang@google.com + chrome-webauthn@google.com + Records the outcome of GetAssertion on Chrome OS. + + + + martinkr@google.com + hcyang@google.com + chrome-webauthn@google.com + Records the outcome of MakeCredential on Chrome OS. + + + + martinkr@google.com + chrome-webauthn@google.com + + Records the number of records of the user's WebAuthn credentials created on + Chrome OS. + + + + + martinkr@google.com + chrome-webauthn@google.com + The duration of a u2fd IsU2fEnabled request. + + + + martinkr@google.com + chrome-webauthn@google.com + + Records whether a u2fd IsU2fEnabled DBus call completed successfully or + encountered an error. + + + + + martinkr@google.com + chrome-webauthn@google.com + The duration of a u2fd IsUvpaa request. + + + + martinkr@google.com + chrome-webauthn@google.com + + Records whether a u2fd IsUvpaa DBus call completed successfully or + encountered an error. + + + + + kenrb@chromium.org + nsatragno@chromium.org + chrome-webauthn@google.com + + Records the number of passkeys available for a Conditional UI get request. + + + + + kenrb@chromium.org + martinkr@google.com + + Records the transport used for all WebAuthentication GetAssertion requests + sent to authenticators. This does not necessarily mean that there was a + success response from any given authenticator. + + + + + kenrb@chromium.org + martinkr@google.com + + Records the transport used when an authenticator responds with success to a + WebAuthentication GetAssertion request. + + + + + kenrb@chromium.org + martinkr@google.com + + Records the result of each Web Authentication + PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable() API + call. + + + + + nsatragno@chromium.org + chrome-webauthn@google.com + + Records the result of writing a large blob using the CTAP + authenticatorLargeBlobs command (0x0C) during a WebAuthentication + GetAssertion request. + + + + + kenrb@chromium.org + martinkr@google.com + + Records the transport used for all WebAuthentication MakeCredential requests + sent to authenticators. This does not necessarily mean that there was a + success response from any given authenticator. + + + + + kenrb@chromium.org + martinkr@google.com + + Records the transport used when an authenticator responds with success to a + WebAuthentication MakeCredential request. + + + + + angzhan@google.com + martinkr@google.com + nsatragno@chromium.org + + Records `true` if a user succesfully deletes a passkey and `false` otherwise + in chrome://settings/passkeys. + + + + + angzhan@google.com + martinkr@google.com + nsatragno@chromium.org + + Records `true` if a user succesfully edits a passkey and `false` otherwise + in chrome://settings/passkeys. + + + + + angzhan@google.com + martinkr@google.com + nsatragno@chromium.org + + Records the result of each Web Authentication + TouchIdCredentialStore.UpdateCredential() API call. + + + + + + diff --git a/histograms/metadata/weblayer/OWNERS b/histograms/metadata/weblayer/OWNERS new file mode 100644 index 000000000000..872f200b4596 --- /dev/null +++ b/histograms/metadata/weblayer/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +cduvall@chromium.org diff --git a/histograms/metadata/weblayer/histograms.xml b/histograms/metadata/weblayer/histograms.xml new file mode 100644 index 000000000000..dd627c973194 --- /dev/null +++ b/histograms/metadata/weblayer/histograms.xml @@ -0,0 +1,42 @@ + + + + + + + + + + cduvall@chromium.org + src/weblayer/OWNERS + + The time it takes for the WebLayer {Component} to be created. Recorded at + WebLayer startup. + + + + + + + + + + + diff --git a/histograms/metadata/windows/histograms.xml b/histograms/metadata/windows/histograms.xml new file mode 100644 index 000000000000..a17ad46444a3 --- /dev/null +++ b/histograms/metadata/windows/histograms.xml @@ -0,0 +1,305 @@ + + + + + + + + + + ajgo@chromium.org + wfh@chromium.org + + Records if CET (Control-flow Enforcement Technology / Hardware Enforced + Shadow Stack) is available, based on IsUserCetAvailableInEnvironment(). + Reported once per browser session, on startup. + + + + + ajgo@chromium.org + wfh@chromium.org + + Records if CET (Control-flow Enforcement Technology / Hardware Enforced + Shadow Stack) is enabled or if it has been disabled by IFEO. Reported only + if CetAvailable is true, once per browser session, on startup. Note: This + was recorded incorrectly in M91. + + + + + + We stopped emitting this stat on 07/14/22 in crrev.com/c/3761201. + + davidbienvenu@chromium.org + jessemckenna@google.com + + The number of drag events after a press event before we got a mouse move to + 0, 0 that is more than 200 pixels away from the current cursor position. + This will be used to change the detection of spurious 0,0 move move events + to a much smaller value (e.g., 20 pixels) but with the addition of a check + that we've only received a few mouse move events, once we've determined the + distribution of the number of drag events we receive before the 0,0 mouse + move events. Recorded in HWNDMessageHandler::HandleMouseEventInternal when + we see a mouse drag to 0,0 that is more than 200 pixels from the cursor + position. + + + + + brucedawson@chromium.org + gab@chromium.org + + The value of TimeTicks::IsHighResolution(). Reported once per browser + session, on startup. + + + + + olivierli@chromium.org + catan-team@chromium.org + + Percentage of elapsed time the high resolution timer is activated. The usage + is reported by each of Chrome processes individually (without aggregation) + and logged every 10 minutes. + + + + + rkc@chromium.org + vnagarnaik@google.com + rockot@chromium.org + + Whether Hyper-V is enabled on this machine. Logged shortly after startup. + This metric will only be logged on Windows 10+. + + + + + davidbienvenu@chromium.org + jessemckenna@chromium.org + + Records whether or not the user unpinned Chrome after the installer pinned + Chrome, on Win10+. Recorded when Chrome checks if Chrome is pinned to the + taskbar, on startup. This check is currently done on 1% of startups. Records + true if the installer pinned Chrome, and it's no longer pinned, false if the + installer pinned Chrome and it's still pinned. The unpin is only recorded at + most once per user, whereas the still pinned state is recorded on every + launch that checks if Chrome is pinned to the taskbar. + + + + + + + markchang@google.com + pmonette@chromium.org + + Indicates whether Chrome is pinned to the Windows taskbar for the current + user. Recorded shortly after startup. + + + + + pmonette@chromium.org + + Indicates whether a connection error occured between the browser and the + shell handler process. This is usually caused by a crash in the utility + process. This is logged every time the pinned state is queried. + + + + + davidbienvenu@chromium.org + jessemckenna@google.com + + Whether or not the taskbar shortcut Chrome was launched from was pinned by + the installer. Recorded when Chrome is launched from the taskbar, and the + install was done after the installer started pinning Chrome to the taskbar + for Windows 10+. + + + + + robliao@chromium.org + davidbienvenu@chromium.org + + Records the outcome of attempting to set the default directly. Recorded when + a request to make Chrome default is received and is eligible for the direct + path. + + + + + kylixrd@chromium.org + robliao@chromium.org + + Indicates whether Windows 11 style menus are used. Recorded on menu + configuration initialization. + + + + + davidbienvenu@chromium.org + sky@chromium.org + + Indicates if the current workspace state of a window is cached or not. If + it's known that the window is on the current workspace or not, then we can + avoid the COM method call IsWindowOnCurrentVirtualDesktop. This is recorded + in BrowserView::IsOnCurrentWorkspace. In general, the state should almost + always be cached. + + + + + pmonette@chromium.org + + Indicates whether a connection error occured between the browser and the + shell handler process. This is usually caused by a crash in the utility + process. This is logged every time SelectFile() function is called and the + WinOOPSelectFileDialog feature is enabled. + + + + + + + forshaw@chromium.org + wfh@chromium.org + + Records whether or not parallel DLL loading is enabled for the browser + process executable. This is recorded once per browser session, on startup. + + + + + + + wfh@chromium.org + brucedawson@chromium.org + + The 32-bit hash of the lower-case parent process basename (e.g. + explorer.exe) of the main Chrome executable. Reported once during startup as + part of install verification. + + + + + + + wfh@chromium.org + brucedawson@chromium.org + + A 32-bit value formed from combining the minor and patch level of the + currently running Windows operating system as reported by GetVersionEx(). + E.g. "Windows 10 OS Version 1809 (Build 17763.503)" would be 17763 + (0x4563), combined with 503 (0x1F7) = 0x456301F7. If either minor or patch + level exceeds the value that can fit in a 16-bit unsigned integer, then this + histogram will report 0. Reported once, shortly after browser startup. + + + + + + + wfh@chromium.org + brucedawson@chromium.org + + A 32-bit value formed from combining the minor and patch level of the + currently running Windows operating system as reported by VerQueryValue() of + kernel32.dll. E.g. "Windows 10 OS Version 1809 (Build 17763.503)" + would be 17763 (0x4563), combined with 503 (0x1F7) = 0x456301F7. If either + minor or patch level exceeds the value that can fit in a 16-bit unsigned + integer, then this histogram will report 0. Reported once, shortly after + browser startup. + + + + + rkc@chromium.org + vnagarnaik@google.com + rockot@chromium.org + + The processor family type. Logged shortly after startup. The value is + specified in the SMBIOS specification, section 7.5.2: + https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_2.7.1.pdf + This metric will only be logged on Windows 10+. + + + + + rkc@chromium.org + vnagarnaik@google.com + rockot@chromium.org + + Whether virtualization has been enabled in the system firmware. Logged + shortly after startup. This metric will only be logged on Windows 10+. + + + + + davidbienvenu@chromium.org + dfried@chromium.org + + Recorded each time the user starts a Windows touch drag drop of web + contents. This is currently only used by the WebUI tab strip, where touch + drag drop is enabled, to count the number of touch drags attempted. + ::DoDragDrop occasionally blocks waiting for a right mouse button down + followed by a move, which is detected by ::DoDragDrop not calling + QueryContinueDrag for more than a second. This will be recorded as false. + This stat will be used to determine how much of a real world problem this + is. + + + + + davidbienvenu@chromium.org + grt@chromium.org + + Indicates whether a connection error occured between the browser and the + shell handler process. This is usually caused by a crash in the utility + process. This is logged every time shortcuts are unpinned from the taskbar. + + + + + + diff --git a/histograms/metadata/xr/DIR_METADATA b/histograms/metadata/xr/DIR_METADATA new file mode 100644 index 000000000000..8177548686ea --- /dev/null +++ b/histograms/metadata/xr/DIR_METADATA @@ -0,0 +1,11 @@ +# Metadata information for this directory. +# +# For more information on DIR_METADATA files, see: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md +# +# For the schema of this file, see Metadata message: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto + +monorail { + component: "Internals>XR" +} diff --git a/histograms/metadata/xr/OWNERS b/histograms/metadata/xr/OWNERS new file mode 100644 index 000000000000..bd6093522640 --- /dev/null +++ b/histograms/metadata/xr/OWNERS @@ -0,0 +1,5 @@ +per-file OWNERS=file://tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS + +# Prefer sending CLs to the owners listed below. +# Use chromium-metrics-reviews@google.com as a backup. +alcooper@chromium.org diff --git a/histograms/metadata/xr/histograms.xml b/histograms/metadata/xr/histograms.xml new file mode 100644 index 000000000000..6f5f3e02fea7 --- /dev/null +++ b/histograms/metadata/xr/histograms.xml @@ -0,0 +1,70 @@ + + + + + + + + + + ymalik@chromium.org + + Whether the user had been through the FRE when Chrome is launched in VR + mode. + + + + + alcooper@chromium.org + xr-dev@chromium.org + + The duration of the VR session. Logged when a new disjoint session has + begun, or when the session has ended in a non-continuable way. + + + + + alcooper@chromium.org + xr-dev@chromium.org + The type of headset being used for VR. + + + + bialpio@chromium.org + xr-dev@chromium.org + + Recorded on every frame for as long as depth data is requested in an XR + session backed by ARCore device. Measures the number of pixels (width * + height) in the depth buffer obtained from ARCore. + + + + + alcooper@chromium.org + xr-dev@chromium.org + + Indicates which XR runtime was used for a session. Recorded when the session + was successfully created. + + + + + + diff --git a/histograms/populate_enums.py b/histograms/populate_enums.py new file mode 100644 index 000000000000..26542cf1e1be --- /dev/null +++ b/histograms/populate_enums.py @@ -0,0 +1,86 @@ +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Functions for populating enums with ukm events.""" + +from collections import namedtuple +import os +import sys +import xml.dom.minidom + +import extract_histograms + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'ukm')) +import codegen + + +EventDetails = namedtuple("EventDetails", "name hash is_obsolete") + + +def _GetEventDetails(event): + """Returns a simple struct containing the event details. + + Args: + event: An event description as defined in ukm.xml. + + Returns: + A struct containing the event name, truncated hash, and whether the event is + considered obsolete. + """ + name = event.getAttribute('name') + # The value is UKM event name hash truncated to 31 bits. This is recorded in + # https://cs.chromium.org/chromium/src/components/ukm/ukm_recorder_impl.cc?q=LogEventHashasUmaHistogram + hash = codegen.HashName(name) & 0x7fffffff + + def _HasDirectObsoleteTag(node): + return any( + isinstance(child, xml.dom.minidom.Element) + and child.tagName == 'obsolete' for child in node.childNodes) + + # The UKM event is considered obsolete if the event itself is marked as + # obsolete with a tag or all of its metrics are marked as obsolete. + is_event_obsolete = _HasDirectObsoleteTag(event) + are_all_metrics_obsolete = all( + _HasDirectObsoleteTag(metric) + for metric in event.getElementsByTagName('metric')) + + return EventDetails(name=name, + hash=hash, + is_obsolete=is_event_obsolete or are_all_metrics_obsolete) + + +def PopulateEnumWithUkmEvents(doc, enum, ukm_events): + """Populates the enum node with a list of ukm events. + + Args: + doc: The document to create the node in. + enum: The enum node needed to be populated. + ukm_events: A list of ukm event nodes. + """ + event_details = [_GetEventDetails(event) for event in ukm_events] + event_details.sort(key=lambda event: event.hash) + + for event in event_details: + node = doc.createElement('int') + node.attributes['value'] = str(event.hash) + label = event.name + # If the event is obsolete, mark it in the int's label. + if event.is_obsolete: + label += ' (Obsolete)' + node.attributes['label'] = label + enum.appendChild(node) + + +def PopulateEnumsWithUkmEvents(doc, enums, ukm_events): + """Populates enum nodes in the enums with a list of ukm events + + Args: + doc: The document to create the node in. + enums: The enums node to be iterated. + ukm_events: A list of ukm event nodes. + """ + for enum in extract_histograms.IterElementsWithTag(enums, 'enum', 1): + # We only special case 'UkmEventNameHash' currently. + if enum.getAttribute('name') == 'UkmEventNameHash': + PopulateEnumWithUkmEvents(doc, enum, ukm_events) diff --git a/histograms/presubmit_bad_message_reasons.py b/histograms/presubmit_bad_message_reasons.py new file mode 100644 index 000000000000..ef482ce2d392 --- /dev/null +++ b/histograms/presubmit_bad_message_reasons.py @@ -0,0 +1,43 @@ +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Check to see if the various BadMessage enums in histograms.xml need to be +updated. This can be called from a chromium PRESUBMIT.py to ensure updates to +bad_message.h also include the generated changes to histograms.xml +""" + +import update_histogram_enum + + +def PrecheckBadMessage(input_api, + output_api, + histogram_name, + end_marker='^BAD_MESSAGE_MAX', + strip_k_prefix=False): + source_path = '' + + # This function is called once per bad_message.h-containing directory. Check + # for the |bad_message.h| file, and if present, remember its path. + for f in input_api.AffectedFiles(): + if f.LocalPath().endswith('bad_message.h'): + source_path = f.LocalPath() + break + + # If the |bad_message.h| wasn't found in this change, then there is nothing to + # do and histogram.xml does not need to be updated. + if source_path == '': + return [] + + START_MARKER='^enum (class )?BadMessageReason {' + presubmit_error = update_histogram_enum.CheckPresubmitErrors( + histogram_enum_name=histogram_name, + update_script_name='update_bad_message_reasons.py', + source_enum_path=source_path, + start_marker=START_MARKER, + end_marker=end_marker, + strip_k_prefix=strip_k_prefix) + if presubmit_error: + return [output_api.PresubmitPromptWarning(presubmit_error, + items=[source_path])] + return [] diff --git a/histograms/pretty_print.py b/histograms/pretty_print.py new file mode 100755 index 000000000000..ac99828b6817 --- /dev/null +++ b/histograms/pretty_print.py @@ -0,0 +1,213 @@ +#!/usr/bin/env python3 +# Copyright 2013 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Pretty-prints the histograms.xml file, alphabetizing tags, wrapping text +at 80 chars, enforcing standard attribute ordering, and standardizing +indentation. + +This is quite a bit more complicated than just calling tree.toprettyxml(); +we need additional customization, like special attribute ordering in tags +and wrapping text nodes, so we implement our own full custom XML pretty-printer. +""" + +from __future__ import with_statement + +import argparse +import os +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import etree_util +import presubmit_util + +import histogram_configuration_model + + +class Error(Exception): + pass + +UNIT_REWRITES = { + 'mcs': 'microseconds', + 'microsecond': 'microseconds', + 'us': 'microseconds', + 'millisecond': 'ms', + 'milliseconds': 'ms', + 'kb': 'KB', + 'kB': 'KB', + 'kilobytes': 'KB', + 'kbits/s': 'kbps', + 'mb': 'MB', + 'mB': 'MB', + 'megabytes': 'MB', + 'mbits/s': 'mbps', + 'percent': '%', + 'Percent': '%', + 'percentage': '%', +} + +def canonicalizeUnits(tree): + """Canonicalize the spelling of certain units in histograms.""" + if tree.tag == 'histogram': + units = tree.get('units') + if units and units in UNIT_REWRITES: + tree.set('units', UNIT_REWRITES[units]) + + for child in tree: + canonicalizeUnits(child) + +def fixObsoleteOrder(tree): + """Put obsolete tags at the beginning of histogram tags.""" + obsoletes = [] + + for child in tree: + if child.tag == 'obsolete': + obsoletes.append(child) + else: + fixObsoleteOrder(child) + + for obsolete in obsoletes: + tree.remove(obsolete) + + # Only keep the first obsolete tag. + if obsoletes: + tree.insert(0, obsoletes[0]) + +def DropNodesByTagName(tree, tag, dropped_nodes=[]): + """Drop all nodes with named tag from the XML tree.""" + removes = [] + + for child in tree: + if child.tag == tag: + removes.append(child) + dropped_nodes.append(child) + else: + DropNodesByTagName(child, tag) + + for child in removes: + tree.remove(child) + +def FixMisplacedHistogramsAndHistogramSuffixes(tree): + """Fixes misplaced histogram and histogram_suffixes nodes.""" + histograms = [] + histogram_suffixes = [] + + def ExtractMisplacedHistograms(tree): + """Gets and drops misplaced histograms and histogram_suffixes. + + Args: + tree: The node of the xml tree. + histograms: A list of histogram nodes inside histogram_suffixes_list + node. This is a return element. + histogram_suffixes: A list of histogram_suffixes nodes inside histograms + node. This is a return element. + """ + for child in tree: + if child.tag == 'histograms': + DropNodesByTagName(child, 'histogram_suffixes', histogram_suffixes) + elif child.tag == 'histogram_suffixes_list': + DropNodesByTagName(child, 'histogram', histograms) + else: + ExtractMisplacedHistograms(child) + + ExtractMisplacedHistograms(tree) + + def AddBackMisplacedHistograms(tree): + """Adds back those misplaced histogram and histogram_suffixes nodes.""" + for child in tree: + if child.tag == 'histograms': + child.extend(histograms) + elif child.tag == 'histogram_suffixes_list': + child.extend(histogram_suffixes) + else: + AddBackMisplacedHistograms(child) + + AddBackMisplacedHistograms(tree) + +def PrettyPrintHistograms(raw_xml): + """Pretty-print the given histograms XML. + + Args: + raw_xml: The contents of the histograms XML file, as a string. + + Returns: + The pretty-printed version. + """ + top_level_content = etree_util.GetTopLevelContent(raw_xml) + root = etree_util.ParseXMLString(raw_xml) + return top_level_content + PrettyPrintHistogramsTree(root) + +def PrettyPrintHistogramsTree(tree): + """Pretty-print the given ElementTree element. + + Args: + tree: The ElementTree element. + + Returns: + The pretty-printed version as an XML string. + """ + # Prevent accidentally adding enums to histograms.xml + DropNodesByTagName(tree, 'enums') + FixMisplacedHistogramsAndHistogramSuffixes(tree) + canonicalizeUnits(tree) + fixObsoleteOrder(tree) + return histogram_configuration_model.PrettifyTree(tree) + + +def PrettyPrintEnums(raw_xml): + """Pretty print the given enums XML.""" + + root = etree_util.ParseXMLString(raw_xml) + + # Prevent accidentally adding histograms to enums.xml + DropNodesByTagName(root, 'histograms') + DropNodesByTagName(root, 'histogram_suffixes_list') + top_level_content = etree_util.GetTopLevelContent(raw_xml) + formatted_xml = histogram_configuration_model.PrettifyTree(root) + return top_level_content + formatted_xml + +def main(): + """Pretty-prints the histograms or enums xml file at given relative path. + + Args: + filepath: The relative path to xml file. + --non-interactive: (Optional) Does not print log info messages and does not + prompt user to accept the diff. + --presubmit: (Optional) Simply prints a message if the input is not + formatted correctly instead of modifying the file. + --diff: (Optional) Prints diff to stdout rather than modifying the file. + + Example usage: + pretty_print.py metadata/Fingerprint/histograms.xml + pretty_print.py enums.xml + """ + parser = argparse.ArgumentParser() + parser.add_argument('filepath', help="relative path to XML file") + # The following optional flags are used by common/presubmit_util.py + parser.add_argument('--non-interactive', action="store_true") + parser.add_argument('--presubmit', action="store_true") + parser.add_argument('--diff', action="store_true") + args = parser.parse_args() + + status = 0 + if 'enums.xml' in args.filepath: + status = presubmit_util.DoPresubmit(sys.argv, 'enums.xml', + 'enums.before.pretty-print.xml', + PrettyPrintEnums) + + elif 'histograms' in args.filepath: + # Specify the individual directory of histograms.xml. + status = presubmit_util.DoPresubmit( + sys.argv, + args.filepath, + # The backup filename should be + # 'path/to/histograms.before.pretty-print.xml'. + '.before.pretty-print.'.join(args.filepath.rsplit('.', 1)), + PrettyPrintHistograms) + + sys.exit(status) + + +if __name__ == '__main__': + main() diff --git a/histograms/pretty_print_test.py b/histograms/pretty_print_test.py new file mode 100755 index 000000000000..8597f7bd83a8 --- /dev/null +++ b/histograms/pretty_print_test.py @@ -0,0 +1,116 @@ +#!/usr/bin/env python +# Copyright 2018 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest + +import pretty_print + + +ORIGINAL_XML = """ + + + + + + + person@chromium.org + A long line that should be formatted in a way that does not result + in extra whitespace between words. + + It has multiple paragraphs. + + + Removed 1/2019. + + + + + Foo + Obsolete 1 + Obsolete 2 + This shouldn't be here + + + + + + + + + + + + + person@chromium.org + Misplaced content. + A misplaced histogram + + + + + +This shouldn't be here + +""".strip() + +PRETTY_XML = """ + + + + + + + + + + + + Obsolete 1 + + Foo + + + + + Removed 1/2019. + + person@chromium.org + + A long line that should be formatted in a way that does not result in extra + whitespace between words. + + It has multiple paragraphs. + + + + + person@chromium.org + A misplaced histogram + + + + + + + + + + + + + + +""".strip() + + +class PrettyPrintHistogramsXmlTest(unittest.TestCase): + + def testPrettyPrinting(self): + result = pretty_print.PrettyPrintHistograms(ORIGINAL_XML) + self.maxDiff = None + self.assertMultiLineEqual(PRETTY_XML, result.strip()) + +if __name__ == '__main__': + unittest.main() diff --git a/histograms/print_expanded_histograms.py b/histograms/print_expanded_histograms.py new file mode 100755 index 000000000000..6b7766f7d628 --- /dev/null +++ b/histograms/print_expanded_histograms.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Prints expanded histograms.""" + +import argparse +import re +import xml.dom.minidom + +import extract_histograms +import histogram_paths +import histogram_configuration_model +import merge_xml + + +def ConstructHistogram(doc, name, histogram_dict): + """Constructs a histogram node based on the |histogram_dict|.""" + histogram = doc.createElement('histogram') + # Set histogram node attributes. + histogram.setAttribute('name', name) + if 'enum' in histogram_dict: + histogram.setAttribute('enum', histogram_dict['enum']['name']) + else: + histogram.setAttribute('units', histogram_dict['units']) + if 'expires_after' in histogram_dict: + histogram.setAttribute('expires_after', histogram_dict['expires_after']) + if histogram_dict.get('base', False): + histogram.setAttribute('base', 'true') + # Populate the obsolete node. + if 'obsolete' in histogram_dict: + obsolete_node = doc.createElement('obsolete') + obsolete_node.appendChild(doc.createTextNode(histogram_dict['obsolete'])) + histogram.appendChild(obsolete_node) + # Populate owner nodes. + for owner in histogram_dict.get('owners', []): + owner_node = doc.createElement('owner') + owner_node.appendChild(doc.createTextNode(owner)) + histogram.appendChild(owner_node) + # Populate the summary nodes. + if 'summary' in histogram_dict: + summary_node = doc.createElement('summary') + summary_node.appendChild(doc.createTextNode(histogram_dict['summary'])) + histogram.appendChild(summary_node) + return histogram + + +def main(args): + try: + pattern = re.compile(args.pattern) + except re.error: + print("Non valid regex pattern.") + return + + # Extract all histograms into a dict. + doc = merge_xml.MergeFiles(filenames=histogram_paths.ALL_XMLS, + should_expand_owners=True) + histograms, had_errors = extract_histograms.ExtractHistogramsFromDom(doc) + if had_errors: + raise ValueError("Error parsing inputs.") + # Construct a dom tree that is similar to the normal histograms.xml so that + # we can use histogram_configuration_model to pretty print it. + doc = xml.dom.minidom.Document() + configuration = doc.createElement('histogram-configuration') + histograms_node = doc.createElement('histograms') + for name, histogram in histograms.items(): + if re.match(pattern, name): + histograms_node.appendChild(ConstructHistogram(doc, name, histogram)) + configuration.appendChild(histograms_node) + doc.appendChild(configuration) + print(histogram_configuration_model.PrettifyTree(doc)) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Print expanded histograms.') + parser.add_argument('--pattern', + type=str, + default='.*', + help='The histogram regex you want to print.') + args = parser.parse_args() + main(args) diff --git a/histograms/print_histogram_names.py b/histograms/print_histogram_names.py new file mode 100755 index 000000000000..ee6d143de051 --- /dev/null +++ b/histograms/print_histogram_names.py @@ -0,0 +1,116 @@ +#!/usr/bin/env python3 +# Copyright 2018 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Prints all histogram names.""" + +from __future__ import print_function + +import argparse +import os +import subprocess +import sys +import tempfile +import io + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import path_util + +import extract_histograms +import histogram_paths +import merge_xml + + +def get_names(xml_files): + """Returns all histogram names generated from a list of xml files. + + Args: + xml_files: A list of open file objects containing histogram definitions. + Returns: + A tuple of (names, obsolete names), where the obsolete names is a subset of + all names. + """ + doc = merge_xml.MergeFiles(files=xml_files) + histograms, had_errors = extract_histograms.ExtractHistogramsFromDom(doc) + if had_errors: + raise ValueError("Error parsing inputs.") + names = set(extract_histograms.ExtractNames(histograms)) + obsolete_names = set(extract_histograms.ExtractObsoleteNames(histograms)) + return (names, obsolete_names) + + +def histogram_xml_files(): + return [open(f) for f in histogram_paths.ALL_XMLS] + + +def get_diff(revision): + """Returns the added / removed histogram names relative to git revision + + Args: + revision: A git revision as described in + https://git-scm.com/docs/gitrevisions + Returns: + A tuple of (added names, removed names, obsoleted names), where each entry + is sorted in ascending order. + """ + + def get_file_at_revision(path): + """Returns a file-like object containing |path|'s content at |revision|""" + obj = "%s:%s" % (revision, path) + contents = subprocess.check_output( + ("git", "cat-file", "--textconv", obj)).decode() + + # Just store the contents in memory. histograms.xml is big, but it isn't + # _that_ big. + return io.StringIO(contents) + + prev_files = [] + for p in histogram_paths.ALL_XMLS_RELATIVE: + try: + prev_files.append(get_file_at_revision(p)) + except subprocess.CalledProcessError: + # Paths might not exist in the provided revision. + continue + + current_histogram_names, current_obsolete_names = get_names( + histogram_xml_files()) + prev_histogram_names, prev_obsolete_names = get_names(prev_files) + + added_names = sorted(list(current_histogram_names - prev_histogram_names)) + removed_names = sorted(list(prev_histogram_names - current_histogram_names)) + obsoleted_names = sorted(list(current_obsolete_names - prev_obsolete_names)) + return (added_names, removed_names, obsoleted_names) + + +def print_diff_names(revision): + added_names, removed_names, obsoleted_names = get_diff(revision) + print("%d histograms added:" % len(added_names)) + for name in added_names: + print(name) + + print("%d histograms removed:" % len(removed_names)) + for name in removed_names: + print(name) + + print("%d histograms obsoleted:" % len(obsoleted_names)) + for name in obsoleted_names: + print(name) + + +def main(argv): + parser = argparse.ArgumentParser(description='Print histogram names.') + parser.add_argument('--diff', + type=str, + help='Git revision to diff against (e.g. HEAD~)') + args = parser.parse_args(argv[1:]) + if args.diff is not None: + print_diff_names(args.diff) + else: + name_set, _ = get_names(histogram_xml_files()) + for name in sorted(list(name_set)): + print(name) + + +if __name__ == '__main__': + main(sys.argv) diff --git a/histograms/review_guidelines.md b/histograms/review_guidelines.md new file mode 100644 index 000000000000..7df5bfbf4f05 --- /dev/null +++ b/histograms/review_guidelines.md @@ -0,0 +1,144 @@ +# Things to note when doing metrics code review. + +[TOC] + +This covers how to review metrics code in the Chromium codebase. + +## UMA Histograms + +### What is covered under review? + +During code review ensure the following - + +#### XML metadata in histograms.xml is correct and descriptive. + +* Verify the histogram is created under the right histogram 'namespace'. + (i.e if the histogram name is A.B.C, then A is the histogram namespace). + If this is a new one, check if there a similar one that already exists? + +* Histogram owners match the + [histogram owners guidelines](https://chromium.googlesource.com/chromium/src/+/HEAD/tools/metrics/histograms/README.md#owners). + +* If generating multiple histograms programmatically or defining common set of + histogram, guide them to use + [histogram-suffixes](https://chromium.googlesource.com/chromium/src/tools/+/refs/heads/main/metrics/histograms/README.md#Histogram-Suffixes). + +* Verify that expires_after is reasonable. CL author should be able to justify + it. See guidance at on + [histogram-expiry](https://chromium.googlesource.com/chromium/src/+/HEAD/tools/metrics/histograms/README.md#Histogram-Expiry). + +* Summary section should describe what is measured, when is it recorded and + when not. The summary should generally describe a single emission of sample + and not the statistics in aggregate. + +* If the histogram is recorded only for some platforms, then it should be + included in the summary (unless part of its name). + +* Histogram and enum names don't include special characters besides dot, + underscores or slashes. + +#### Histogram is designed correctly. + +* Verify that the histogram follows the + [UMA histogram design recommendation](https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md). + If issues are found please link to docs in your review comments to + increase their visibility. + +#### Histogram is setup correctly. + +* If modifying an existing histogram, request that the histogram be + renamed if its meaning has changed significantly. Common practices are to + add suffix such as 2 to the name. When doing so, the existing entry for the + histogram should also be kept but with `` tag. + +* Don't allow deleting histograms or enum buckets unless there is a *very* + compelling reason to do so (e.g. never logged). Instead they should be + marked as obsolete with `` tag. + +* Re-numbering enum bucket values is not allowed as these break backward + compatibility with respect to the data stored. + +* When modifying enums it is better to add new values to the enum instead of + re-purposing existing enum values. + +* Modifying enum labels / summary is safe and allowed without review. However, + if reviewing these changes make sure the semantic meaning of the bucket + remain unchanged. e.g re-labeling 'Has Error' to 'Has Warning' should not be + allowed, while re-labeling 'Has Error' to 'Has Error (e.g this and that + error)' is okay. + +* Verify that histogram buckets are not a privacy risk. Some of the types + forbidden are if the buckets are encoding page contents, URL, domain name, + or is including any other type of personally identifying or sensitive + information. If during review you are unsure then do not hesitate to request + that Chrome Privacy Team review the change. + +* Check that the histogram bucket space of all possible values for all clients + will be limited to 50 generally. It should not exceed 100 unless the CL + author has a justification for having extra buckets. + + * If the lower bucket counts prove insufficient (e.g after reviewing + the data for 50 buckets proves to be unhelpful, more buckets can be + requested in a separate review). + + * When logging hashes in a sparse histogram make sure the global space + meet this criterion (not just a client). Another valid case is when + logging API error codes which in theory could be potentially large, + but on a particular day it is not the case. + +* Check that recorded samples will be within 0 and 2^31-1. + +* If you expect majority of values to be under a certain value, say X, + then it's good practice to pick the next order of magnitude - e.g. 10X for + the max. This ensures that even outliers will not overflow the distribution. + +* Verify that for an enum histogram, the enum described in enums.xml and the + enum defined in the client code matches. Furthermore, the enum in the code + should have a comment mentioning that the values must not be changes and + also that additions to the enum should be synced to enums.xml. + + * See the sample comment + [here](https://cs.chromium.org/chromium/src/base/metrics/histogram_macros.h?rcl=2c99f35f64380ba63c928787834661fbc1fa4234&l=46). + The comment should be identical or nearly so. + +* If the histogram is logged via a macro (rather than a call to the function), + check that the names will be constant at runtime. + +### What is not covered under review? + +* Metrics team members need not be versed with code where histogram is + recorded and are not reviewing all the corner cases associated with + collecting the histogram. + +* enums.xml changes don't need a review. However, it is still useful to verify + that the changes match the guidelines mentioned above. + +## User Actions + +* Verify that the user action logged is actually user triggered. If they + are not then advise cl author to convert them to a histogram. + + * However if ordering of actions is the interesting part of their analysis + then maybe see if each order combination can become a histogram bucket + instead of user action. + +* Don't allow logging of noisy user actions (like scroll events). Typical + allowed frequency is to be less frequent than PageLoad or MobilePageLoaded + event. + +## UKMs + +* UKM metrics are to be reviewed by UKM + [data privacy owners](https://cs.chromium.org/chromium/src/tools/metrics/ukm/PRIVACY_OWNERS). + +* The metrics must follow the + [data collection guideline](/analysis/uma/g3doc/ukm/ukm.md#adding-ukms). + + + +## Other specialized metrics + +The ChromeUserMetricsExtension proto includes a variety of other fields such as +records for Omnibox, Profiler, Stability, etc. These are specialized reviews and +should be routed to relevant owner. The guidelines here don't cover these cases +and typically require a server-side review first to change the proto. diff --git a/histograms/split_xml.py b/histograms/split_xml.py new file mode 100644 index 000000000000..4ba9ef9c8e25 --- /dev/null +++ b/histograms/split_xml.py @@ -0,0 +1,301 @@ +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Splits a XML file into smaller XMLs in subfolders. + +Splits nodes according to the first camelcase part of their name attribute. +Intended to be used to split up the large histograms.xml or enums.xml file. +""" + +import os +import re +from xml.dom import minidom + +import histogram_configuration_model +import histogram_paths +import merge_xml +import path_util + +# The top level comment templates that will be formatted and added to each split +# histograms xml. +FIRST_TOP_LEVEL_COMMENT_TEMPLATE = """ +Copyright 2021 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +""" +SECOND_TOP_LEVEL_COMMENT_TEMPLATE = """ +This file is used to generate a comprehensive list of %s +along with a detailed description for each histogram. + +For best practices on writing histogram descriptions, see +https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md + +Please send CLs to individuals in the OWNERS file in the same directory as this +xml file. If no OWNERS file exists, then send the CL to +chromium-metrics-reviews@google.com. +""" +# Number of times that splitting of histograms will be carried out. +TARGET_DEPTH = 1 +# The number of histograms below which they will be aggregated into +# the histograms.xml in 'others'. +AGGREGATE_THRESHOLD = 20 +# A map from the histogram name to the folder name these histograms should be +# put in. +_PREDEFINED_NAMES_MAPPING = { + 'BackForwardCache': 'BackForwardCache', + 'ChromeOS': 'ChromeOS', + 'CustomTabs': 'CustomTabs', + 'CustomTab': 'CustomTabs', + 'DataReductionProxy': 'DataReductionProxy', + 'DataUse': 'DataUse', + 'MultiDevice': 'MultiDevice', + 'NaCl': 'NaCl', + 'SafeBrowsing': 'SafeBrowsing', + 'SafeBrowsingBinaryUploadRequest': 'SafeBrowsing', + 'SafeBrowsingFCMService': 'SafeBrowsing', + 'NewTabPage': 'NewTabPage', + 'SiteEngagementService': 'SiteEngagementService', + 'SiteIsolation': 'SiteIsolation', + 'Tabs': 'Tab', + 'TextFragmentAnchor': 'TextFragmentAnchor', + 'TextToSpeech': 'TextToSpeech', + 'UpdateEngine': 'UpdateEngine', + 'WebApk': 'WebApk', + 'WebApp': 'WebApp', + 'WebAudio': 'WebAudio', + 'WebAuthentication': 'WebAuthentication', + 'WebCore': 'WebCore', + 'WebFont': 'WebFont', + 'WebHistory': 'WebHistory', + 'WebRTC': 'WebRTC', + 'WebRtcEventLogging': 'WebRTC', + 'WebRtcTextLogging': 'WebRTC', + 'WebUI': 'WebUI', + 'WebUITabStrip': 'WebUI', +} + + +def _ParseMergedXML(): + """Parses merged xml into different types of nodes""" + merged_histograms = merge_xml.MergeFiles(histogram_paths.HISTOGRAMS_XMLS) + histogram_nodes = merged_histograms.getElementsByTagName('histogram') + variants_nodes = merged_histograms.getElementsByTagName('variants') + histogram_suffixes_nodes = merged_histograms.getElementsByTagName( + 'histogram_suffixes') + return histogram_nodes, variants_nodes, histogram_suffixes_nodes + + +def _CreateXMLFile(comment, parent_node_string, nodes, output_dir, filename): + """Creates XML file for given type of XML nodes. + + This function also creates a |parent_node_string| tag as the parent node, e.g. + or , that wraps all the |nodes| in the + output XML. + + Args: + comment: The string to be formatted in the |TOP_LEVEL_COMMENT_TEMPLATE| + which will then be added on top of each split xml. + parent_node_string: The name of the the second-level parent node, e.g. + or . + nodes: A DOM NodeList object or a list containing or + that will be inserted under the parent node. + output_dir: The output directory. + filename: The output filename. + """ + doc = minidom.Document() + + doc.appendChild(doc.createComment(FIRST_TOP_LEVEL_COMMENT_TEMPLATE)) + doc.appendChild(doc.createComment(SECOND_TOP_LEVEL_COMMENT_TEMPLATE % + comment)) + + # Create the node for the new histograms.xml file. + histogram_config_element = doc.createElement('histogram-configuration') + doc.appendChild(histogram_config_element) + parent_element = doc.createElement(parent_node_string) + histogram_config_element.appendChild(parent_element) + + # Under the parent node, append the children nodes. + for node in nodes: + parent_element.appendChild(node) + + output_path = os.path.join(output_dir, filename) + if os.path.exists(output_path): + os.remove(output_path) + + # Use the model to get pretty-printed XML string and write into file. + with open(output_path, 'w') as output_file: + pretty_xml_string = histogram_configuration_model.PrettifyTree(doc) + output_file.write(pretty_xml_string) + + +def _GetCamelCaseName(node, depth=0): + """Returns the first camelcase name part of the given |node|. + + Args: + node: The node to get name from. + depth: The depth that specifies which name part will be returned. + e.g. For a node of name + 'CustomTabs.DynamicModule.CreatePackageContextTime' + The returned camel name for depth 0 is 'Custom'; + The returned camel name for depth 1 is 'Dynamic'; + The returned camel name for depth 2 is 'Create'. + + Default depth is set to 0 as this function is imported and + used in other files, where depth used is 0. + + Returns: + The camelcase name part at specified depth. If the number of name parts is + less than the depth, return 'others'. + """ + name = node.getAttribute('name') + split_string_list = name.split('.') + if len(split_string_list) <= depth: + return 'others' + elif split_string_list[depth] in _PREDEFINED_NAMES_MAPPING: + return _PREDEFINED_NAMES_MAPPING[split_string_list[depth]] + else: + name_part = split_string_list[depth] + start_index = 0 + # |all_upper| is used to identify the case where the name is ABCDelta, in + # which case the camel name of depth 0 should be ABC, instead of A. + all_upper = True + for index, letter in enumerate(name_part): + if letter.islower() or letter.isnumeric(): + all_upper = False + if letter.isupper() and not all_upper: + start_index = index + break + + if start_index == 0: + return name_part + else: + return name_part[0:start_index] + + +def GetDirForNode(node): + """Returns the correct directory that the given |node| should be placed in.""" + camel_name = _GetCamelCaseName(node) + # Check if the directory of its prefix exists. Return the |camel_name| if the + # folder exists. Otherwise, this |node| should be placed in 'others' folder. + if camel_name in histogram_paths.HISTOGRAMS_PREFIX_LIST: + return camel_name + return 'others' + + +def _CamelCaseToSnakeCase(name): + """Converts CamelCase |name| to snake_case.""" + name = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name) + return re.sub('([a-z0-9])([A-Z])', r'\1_\2', name).lower() + + +def _OutputToFolderAndXML(nodes, output_dir, key): + """Creates new folder and XML file for separated histograms. + + Args: + nodes: A list of histogram/variants nodes of a prefix. + output_dir: The output directory. + key: The prefix of the histograms, also the name of the new folder. + """ + # Convert CamelCase name to snake_case when creating a directory. + output_dir = os.path.join(output_dir, _CamelCaseToSnakeCase(key)) + if not os.path.exists(output_dir): + os.makedirs(output_dir) + _CreateXMLFile(key + ' histograms', 'histograms', nodes, output_dir, + 'histograms.xml') + + +def _WriteDocumentDict(document_dict, output_dir): + """Recursively writes |document_dict| to xmls in |output_dir|. + + Args: + document_dict: A dictionary where the key is the prefix of the histogram and + value is a list of nodes or another dict. + output_dir: The output directory of the resulting folders. + """ + for key, val in document_dict.items(): + if isinstance(val, list): + _OutputToFolderAndXML(val, output_dir, key) + else: + _WriteDocumentDict(val, os.path.join(output_dir, key)) + + +def _AggregateMinorNodes(node_dict): + """Aggregates groups of nodes below threshold number into 'others'. + + Args: + node_dict: A dictionary where the key is the prefix of the histogram/variant + and value is a list of histogram/variant nodes. + """ + others = node_dict.pop('others', []) + + for key, nodes in node_dict.items(): + # For a prefix, if the number of histograms is fewer than threshold, + # aggregate into others. + if len(nodes) < AGGREGATE_THRESHOLD: + others.extend(nodes) + del node_dict[key] + + if others: + node_dict['others'] = others + + +def _BuildDocumentDict(nodes, depth): + """Recursively builds a document dict which will be written later. + + This function recursively builds a document dict which the key of the dict is + the first word of the node's name at the given |depth| and the value of the + dict is either a list of nodes that correspond to the key or another dict if + it doesn't reach to |TARGET_DEPTH|. + + Args: + nodes: A list of histogram nodes or variants node. + depth: The current depth, starting from 0. + + Returns: + The document dict. + """ + if depth == TARGET_DEPTH: + return nodes + + temp_dict = document_dict = {} + for node in nodes: + name_part = _GetCamelCaseName(node, depth) + if name_part not in temp_dict: + temp_dict[name_part] = [] + temp_dict[name_part].append(node) + + # Aggregate keys with less than |AGGREGATE_THRESHOLD| values to 'others'. + _AggregateMinorNodes(temp_dict) + + for key, nodes in temp_dict.items(): + if key == 'others': + document_dict[key] = nodes + else: + document_dict[key] = _BuildDocumentDict(nodes, depth + 1) + + return document_dict + + +def SplitIntoMultipleHistogramXMLs(output_base_dir): + """Splits a large histograms.xml and writes out the split xmls. + + Args: + output_base_dir: The output base directory. + """ + if not os.path.exists(output_base_dir): + os.mkdir(output_base_dir) + + histogram_nodes, variants_nodes, histogram_suffixes_nodes = _ParseMergedXML() + + # Create separate XML file for histogram suffixes. + _CreateXMLFile('histogram suffixes', 'histogram_suffixes_list', + histogram_suffixes_nodes, output_base_dir, + 'histogram_suffixes_list.xml') + document_dict = _BuildDocumentDict(histogram_nodes + variants_nodes, 0) + + _WriteDocumentDict(document_dict, output_base_dir) + + +if __name__ == '__main__': + SplitIntoMultipleHistogramXMLs( + path_util.GetInputFile('tools/metrics/histograms/metadata')) diff --git a/histograms/split_xml_unittest.py b/histograms/split_xml_unittest.py new file mode 100644 index 000000000000..9ff3156602b6 --- /dev/null +++ b/histograms/split_xml_unittest.py @@ -0,0 +1,37 @@ +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from parameterized import parameterized +from xml.dom import minidom +import unittest + +import split_xml + +class SplitXmlTest(unittest.TestCase): + + @parameterized.expand([ + ('Camel case', 'MyHistogram.ThisHistogram', 'My'), + ('All upper case', 'UMA', 'UMA'), + ('In the predefined map', 'SafeBrowsing.TestHist', 'SafeBrowsing'), + ]) + def testGetCamelCaseName(self, _, name, expected_name): + doc = minidom.Document() + node = doc.createElement('histogram') + node.setAttribute('name', name) + result = split_xml._GetCamelCaseName(node) + self.assertEqual(expected_name, result) + + @parameterized.expand([ + ('Camel case', 'MyHistogram', 'my_histogram'), + ('All upper case', 'UMA', 'uma'), + ('mixed case', 'MYHistogram', 'my_histogram'), + ('usual case followed by all upper case', 'MyHISTOGRAM', 'my_histogram') + ]) + def testCamelCaseToSnakeCase(self, _, name, expected_name): + result = split_xml._CamelCaseToSnakeCase(name) + self.assertEqual(expected_name, result) + + +if __name__ == "__main__": + unittest.main() \ No newline at end of file diff --git a/histograms/suffixes_to_variants.py b/histograms/suffixes_to_variants.py new file mode 100644 index 000000000000..1a141a88ccf9 --- /dev/null +++ b/histograms/suffixes_to_variants.py @@ -0,0 +1,352 @@ +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Migrates histogram_suffixes to patterned histograms""" + +import argparse +import logging +import os + +from xml.dom import minidom + +import extract_histograms +import histogram_configuration_model +import histogram_paths +import path_util + +HISTOGRAM_SUFFIXES_LIST_PATH = path_util.GetInputFile( + 'tools/metrics/histograms/metadata/histogram_suffixes_list.xml') + + +def _ExtractObsoleteNode(node, recursive=True): + """Extracts obsolete child from |node|. Returns None if not exists.""" + if not recursive: + obsolete = [ + element for element in node.getElementsByTagName('obsolete') + if element.parentNode == node + ] + else: + obsolete = node.getElementsByTagName('obsolete') + if not obsolete: + return None + assert len(obsolete) == 1, ( + 'Node %s should at most contain one obsolete node.' % + node.getAttribute('name')) + return obsolete[0] + + +def _ExtractOwnerNodes(node): + """Extracts all owners from |node|. Returns None if not exists.""" + return node.getElementsByTagName('owner') + + +def _RemoveSuffixesComment(node, histogram_suffixes_name): + """Remove suffixes related comments from |node|.""" + for child in node.childNodes: + if child.nodeType == minidom.Node.COMMENT_NODE: + if ('Name completed by' in child.data + and histogram_suffixes_name in child.data): + node.removeChild(child) + + +def _UpdateSummary(histogram, histogram_suffixes_name): + """Appends a placeholder string to the |histogram|'s summary node.""" + summary = histogram.getElementsByTagName('summary') + assert len(summary) == 1, 'A histogram should have a single summary node.' + summary = summary[0] + if summary.firstChild.nodeType != summary.TEXT_NODE: + raise ValueError('summary_node doesn\'t contain text.') + summary.firstChild.replaceWholeText( + '%s {%s}' % (summary.firstChild.data.strip(), histogram_suffixes_name)) + + +def _AreAllAffectedHistogramsFound(affected_histograms, histograms): + """Checks that are all affected histograms found in |histograms|.""" + histogram_names = [histogram.getAttribute('name') for histogram in histograms] + return all( + affected_histogram.getAttribute('name') in histogram_names + for affected_histogram in affected_histograms) + + +def _GetSuffixesDict(nodes, all_histograms): + """Gets a dict of simple histogram-suffixes to be used in the migration. + + Returns two dicts of histogram-suffixes to be migrated to the new patterned + histograms syntax. + + The first dict: the keys are the histogram-suffixes' affected histogram name + and the values are the histogram_suffixes nodes that have only one + affected-histogram. These histograms-suffixes can be converted to inline + patterned histograms. + + The second dict: the keys are the histogram_suffixes name and the values + are the histogram_suffixes nodes whose affected-histograms are all present in + the |all_histograms|. These histogram suffixes can be converted to out-of-line + variants. + + Args: + nodes: A Nodelist of histograms_suffixes nodes. + all_histograms: A Nodelist of all chosen histograms. + + Returns: + A dict of histograms-suffixes nodes keyed by their names. + """ + + single_affected = {} + all_affected_found = {} + for histogram_suffixes in nodes: + affected_histograms = histogram_suffixes.getElementsByTagName( + 'affected-histogram') + if len(affected_histograms) == 1: + affected_histogram = affected_histograms[0].getAttribute('name') + single_affected[affected_histogram] = histogram_suffixes + elif _AreAllAffectedHistogramsFound(affected_histograms, all_histograms): + for affected_histogram in affected_histograms: + affected_histogram = affected_histogram.getAttribute('name') + if affected_histogram in all_affected_found: + logging.warning( + 'Histogram %s is already associated with other suffixes. ' + 'Please manually migrate it.', affected_histogram) + continue + all_affected_found[affected_histogram] = histogram_suffixes + return single_affected, all_affected_found + + +def _GetBaseVariant(doc, histogram): + """Returns a node whose name is an empty string as the base variant. + + If histogram has attribute `base = True`, it means that the base histogram + should be marked as obsolete. + + Args: + doc: A Document object which is used to create a new node. + histogram: The node to check whether its base is true or not. + + Returns: + A node. + """ + is_base = False + if histogram.hasAttribute('base'): + is_base = histogram.getAttribute('base').lower() == 'true' + histogram.removeAttribute('base') + base_variant = doc.createElement('variant') + base_variant.setAttribute('name', '') + if is_base: + base_obsolete_node = doc.createElement('obsolete') + base_obsolete_node.appendChild( + doc.createTextNode( + extract_histograms.DEFAULT_BASE_HISTOGRAM_OBSOLETE_REASON)) + base_variant.appendChild(base_obsolete_node) + return base_variant + + +def _PopulateVariantsWithSuffixes(doc, node, histogram_suffixes): + """Populates nodes to |node| from . + + This function returns True if none of the suffixes contains 'base' attribute. + If this function returns false, the caller's histogram node will not be + updated. This is mainly because base suffix is a much more complicated case + and thus it can not be automatically updated at least for now. + + Args: + doc: A Document object which is used to create a new node. + node: The node to be populated. it should be either for inline + variants or for out-of-line variants. + histogram_suffixes: A node. + + Returns: + True if the node can be updated automatically. + """ + separator = histogram_suffixes.getAttribute('separator') + suffixes_owners = _ExtractOwnerNodes(histogram_suffixes) + suffixes_name = histogram_suffixes.getAttribute('name') + # Check if node has its own node. + obsolete_histogram_suffix_node = _ExtractObsoleteNode(histogram_suffixes, + False) + for suffix in histogram_suffixes.getElementsByTagName('suffix'): + # The base suffix is a much more complicated case. It might require manual + # effort to migrate them so skip this case for now. + suffix_name = suffix.getAttribute('name') + if suffix.hasAttribute('base'): + logging.warning( + 'suffix: %s in histogram_suffixes %s has base attribute. Please ' + 'manually migrate it.', suffix_name, suffixes_name) + return False + # Suffix name might be empty. In this case, in order not to collide with the + # base variant, remove the base variant first before populating this. + if not suffix_name: + logging.warning( + 'histogram suffixes: %s contains empty string suffix and thus we ' + 'have to manually update the empty string variant in these base ' + 'histograms: %s.', suffixes_name, ','.join( + h.getAttribute('name') for h in + histogram_suffixes.getElementsByTagName('affected-histogram'))) + return False + variant = doc.createElement('variant') + if histogram_suffixes.hasAttribute('ordering'): + variant.setAttribute('name', suffix_name + separator) + else: + variant.setAttribute('name', separator + suffix_name) + if suffix.hasAttribute('label'): + variant.setAttribute('summary', suffix.getAttribute('label')) + # Obsolete the obsolete node from suffix to the new variant. The obsolete + # node for each suffix should override the obsolete node, if exists, + # in the histogram_suffixes node. + obsolete = _ExtractObsoleteNode(suffix) or obsolete_histogram_suffix_node + if obsolete: + variant.appendChild(obsolete.cloneNode(deep=True)) + # Populate owner's node from histogram suffixes to each new variant. + for owner in suffixes_owners: + variant.appendChild(owner.cloneNode(deep=True)) + node.appendChild(variant) + return True + + +def _UpdateHistogramName(histogram, histogram_suffixes): + """Adds histogram_suffixes's placeholder to the histogram name.""" + histogram_name = histogram.getAttribute('name') + histogram_suffixes_name = histogram_suffixes.getAttribute('name') + ordering = histogram_suffixes.getAttribute('ordering') + if not ordering: + histogram.setAttribute('name', + '%s{%s}' % (histogram_name, histogram_suffixes_name)) + else: + parts = ordering.split(',') + placement = 1 + if len(parts) > 1: + placement = int(parts[1]) + sections = histogram_name.split('.') + cluster = '.'.join(sections[0:placement]) + '.' + reminder = '.'.join(sections[placement:]) + histogram.setAttribute( + 'name', '%s{%s}%s' % (cluster, histogram_suffixes_name, reminder)) + + +def MigrateToInlinePatterenedHistogram(doc, histogram, histogram_suffixes): + """Migates a single histogram suffixes to an inline patterned histogram.""" + # Keep a deep copy in case when the |histogram| fails to be migrated. + old_histogram = histogram.cloneNode(deep=True) + # Update histogram's name with the histogram_suffixes' name. + histogram_suffixes_name = histogram_suffixes.getAttribute('name') + _UpdateHistogramName(histogram, histogram_suffixes) + + # Append |histogram_suffixes_name| placeholder string to the summary text. + _UpdateSummary(histogram, histogram_suffixes_name) + + # Create an inline node. + token = doc.createElement('token') + token.setAttribute('key', histogram_suffixes_name) + token.appendChild(_GetBaseVariant(doc, histogram)) + + # Populate s to the inline node. + if not _PopulateVariantsWithSuffixes(doc, token, histogram_suffixes): + logging.warning('histogram_suffixes: %s needs manually effort', + histogram_suffixes_name) + histograms = histogram.parentNode + histograms.removeChild(histogram) + # Restore old histogram when we the script fails to migrate it. + histograms.appendChild(old_histogram) + else: + histogram.appendChild(token) + histogram_suffixes.parentNode.removeChild(histogram_suffixes) + # Remove obsolete comments from the histogram node. + _RemoveSuffixesComment(histogram, histogram_suffixes_name) + + +def MigrateToOutOflinePatterenedHistogram(doc, histogram, histogram_suffixes): + """Migates a histogram suffixes to out-of-line patterned histogram.""" + # Update histogram's name with the histogram_suffixes' name. + histogram_suffixes_name = histogram_suffixes.getAttribute('name') + _UpdateHistogramName(histogram, histogram_suffixes) + + # Append |histogram_suffixes_name| placeholder string to the summary text. + _UpdateSummary(histogram, histogram_suffixes_name) + + # Create a node that links to an out-of-line . + token = doc.createElement('token') + token.setAttribute('key', histogram_suffixes_name) + token.setAttribute('variants', histogram_suffixes_name) + token.appendChild(_GetBaseVariant(doc, histogram)) + histogram.appendChild(token) + # Remove obsolete comments from the histogram node. + _RemoveSuffixesComment(histogram, histogram_suffixes_name) + + +def _MigrateOutOfLineVariants(doc, histograms, suffixes_to_convert): + """Converts a histogram-suffixes node to an out-of-line variants.""" + histograms_node = histograms.getElementsByTagName('histograms') + assert len(histograms_node) == 1, ( + 'Every histograms.xml should have only one node.') + for suffixes in suffixes_to_convert: + histogram_suffixes_name = suffixes.getAttribute('name') + variants = doc.createElement('variants') + variants.setAttribute('name', histogram_suffixes_name) + if not _PopulateVariantsWithSuffixes(doc, variants, suffixes): + logging.warning('histogram_suffixes: %s needs manually effort', + histogram_suffixes_name) + else: + histograms_node[0].appendChild(variants) + suffixes.parentNode.removeChild(suffixes) + + +def ChooseFiles(args): + """Chooses a set of files to process so that we can migrate incrementally.""" + paths = [] + for path in sorted(histogram_paths.HISTOGRAMS_XMLS): + if 'metadata' in path and path.endswith('histograms.xml'): + name = os.path.basename(os.path.dirname(path)) + if args.start <= name[0] <= args.end: + paths.append(path) + return paths + + +def SuffixesToVariantsMigration(args): + """Migates all histogram suffixes to patterned histograms.""" + histogram_suffixes_list = minidom.parse(open(HISTOGRAM_SUFFIXES_LIST_PATH)) + histogram_suffixes_nodes = histogram_suffixes_list.getElementsByTagName( + 'histogram_suffixes') + + doc = minidom.Document() + for histograms_file in ChooseFiles(args): + histograms = minidom.parse(open(histograms_file)) + single_affected, all_affected_found = _GetSuffixesDict( + histogram_suffixes_nodes, histograms.getElementsByTagName('histogram')) + suffixes_to_convert = set() + for histogram in histograms.getElementsByTagName('histogram'): + name = histogram.getAttribute('name') + # Migrate inline patterned histograms. + if name in single_affected.keys(): + MigrateToInlinePatterenedHistogram(doc, histogram, + single_affected[name]) + elif name in all_affected_found.keys(): + suffixes_to_convert.add(all_affected_found[name]) + MigrateToOutOflinePatterenedHistogram(doc, histogram, + all_affected_found[name]) + + _MigrateOutOfLineVariants(doc, histograms, suffixes_to_convert) + + # Update histograms.xml with patterned histograms. + with open(histograms_file, 'w') as f: + pretty_xml_string = histogram_configuration_model.PrettifyTree(histograms) + f.write(pretty_xml_string) + + # Remove histogram_suffixes that have already been migrated. + with open(HISTOGRAM_SUFFIXES_LIST_PATH, 'w') as f: + pretty_xml_string = histogram_configuration_model.PrettifyTree( + histogram_suffixes_list) + f.write(pretty_xml_string) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument( + '--start', + help='Start migration from a certain character (inclusive).', + default='a') + parser.add_argument('--end', + help='End migration at a certain character (inclusive).', + default='z') + args = parser.parse_args() + assert len(args.start) == 1 and len(args.end) == 1, ( + 'start and end flag should only contain a single letter.') + SuffixesToVariantsMigration(args) diff --git a/histograms/test_data/components/DIR_METADATA b/histograms/test_data/components/DIR_METADATA new file mode 100644 index 000000000000..f0d8935d77ad --- /dev/null +++ b/histograms/test_data/components/DIR_METADATA @@ -0,0 +1,11 @@ +# Metadata information for this directory. +# +# For more information on DIR_METADATA files, see: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/README.md +# +# For the schema of this file, see Metadata message: +# https://source.chromium.org/chromium/infra/infra/+/main:go/src/infra/tools/dirmd/proto/dir_metadata.proto + +monorail { + component: "Test>Component" +} diff --git a/histograms/test_data/components/histograms.xml b/histograms/test_data/components/histograms.xml new file mode 100644 index 000000000000..4da1afa5f21b --- /dev/null +++ b/histograms/test_data/components/histograms.xml @@ -0,0 +1,21 @@ + + + + + + person@chromium.org + team-alias@chromium.org + Summary 2 + + + + uma@chromium.org + team-alias@chromium.org + First>Component + A enum histogram. + + + + + diff --git a/histograms/test_data/enums.xml b/histograms/test_data/enums.xml new file mode 100644 index 000000000000..67e2c2ad6e1a --- /dev/null +++ b/histograms/test_data/enums.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + Placeholder enum. The values are UKM event name hashes truncated to 31 bits. + This gets populated by the GetEnumsNodes function in merge_xml.py when + producing the merged XML file. + + + + + + \ No newline at end of file diff --git a/histograms/test_data/histogram_suffixes_list.xml b/histograms/test_data/histogram_suffixes_list.xml new file mode 100644 index 000000000000..07a344f94075 --- /dev/null +++ b/histograms/test_data/histogram_suffixes_list.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/histograms/test_data/histograms.xml b/histograms/test_data/histograms.xml new file mode 100644 index 000000000000..1bc8793fbf50 --- /dev/null +++ b/histograms/test_data/histograms.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + Foo + person@chromium.org + Component + + + + + Removed 6/2020. + + person@chromium.org + + Summary 2 + + + + + + + Removed 6/2020. + + person@chromium.org + + Summary 2 + + + + + uma@chromium.org + + Obsolete message + + + A enum histogram. + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/histograms/test_data/ukm.xml b/histograms/test_data/ukm.xml new file mode 100644 index 000000000000..fd17a10254f3 --- /dev/null +++ b/histograms/test_data/ukm.xml @@ -0,0 +1,66 @@ + + + + owner1@chromium.org + + + A summary of AbusiveExperienceHeuristic.TestEvent1 + + + + + + owner3@chromium.org + + Deprecated 2/2019 + + + + A summary of the metric. + + + + + + owner3@chromium.org + + A summary of Autofill.TestEvent3. + + + + MetricVersion1 summary. + + + Deprecated and replaced by MetricVersion2. + + + + + MetricVersion2 summary. + + + + + + owner4@chromium.org + + All metrics of this event are marked as obsolete. + + + + MetricVersion1 summary. + + + Deprecated and replaced by MetricVersion2. + + + + + MetricVersion2 summary. + + + + + + + diff --git a/histograms/update_bad_message_reasons.py b/histograms/update_bad_message_reasons.py new file mode 100644 index 000000000000..477fdd0e54ec --- /dev/null +++ b/histograms/update_bad_message_reasons.py @@ -0,0 +1,58 @@ +# Copyright 2015 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Updates the various BadMessage enums in histograms.xml file with values read +from the corresponding bad_message.h files. + +If the file was pretty-printed, the updated version is pretty-printed too. +""" + +from __future__ import print_function + +import os +import sys + +from update_histogram_enum import UpdateHistogramEnum + +if __name__ == '__main__': + if len(sys.argv) > 1: + print('No arguments expected!', file=sys.stderr) + sys.stderr.write(__doc__) + sys.exit(1) + + histograms = { + 'chrome/browser/bad_message.h': { + 'name': 'BadMessageReasonChrome', + }, + 'content/browser/bad_message.h': { + 'name': 'BadMessageReasonContent' + }, + 'components/autofill/content/browser/bad_message.h': { + 'name': 'BadMessageReasonAutofill', + 'end_marker': '^kMaxValue .*', + 'strip_k_prefix': True + }, + 'components/guest_view/browser/bad_message.h': { + 'name': 'BadMessageReasonGuestView' + }, + 'components/nacl/browser/bad_message.h': { + 'name': 'BadMessageReasonNaCl' + }, + 'components/password_manager/content/browser/bad_message.h': { + 'name': 'BadMessageReasonPasswordManager' + }, + 'extensions/browser/bad_message.h': { + 'name': 'BadMessageReasonExtensions' + }, + } + + for header_file, details in histograms.items(): + end_marker = details.get('end_marker', '^BAD_MESSAGE_MAX') + strip_k_prefix = details.get('strip_k_prefix', False) + UpdateHistogramEnum(histogram_enum_name=details['name'], + source_enum_path=header_file, + start_marker='^enum (class )?BadMessageReason {', + end_marker=end_marker, + strip_k_prefix=strip_k_prefix, + calling_script=os.path.basename(__file__)) diff --git a/histograms/update_debug_scenarios.py b/histograms/update_debug_scenarios.py new file mode 100644 index 000000000000..6a11f3a242d3 --- /dev/null +++ b/histograms/update_debug_scenarios.py @@ -0,0 +1,27 @@ +# Copyright 2021 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Updates the DebugScenario enums in histograms with values read from the +corresponding header file. + +If the file was pretty-printed, the updated version is pretty-printed too. +""" + +from __future__ import print_function + +import os +import sys + +from update_histogram_enum import UpdateHistogramEnum + +if __name__ == '__main__': + if len(sys.argv) > 1: + print('No arguments expected!', file=sys.stderr) + sys.stderr.write(__doc__) + sys.exit(1) + + UpdateHistogramEnum(histogram_enum_name='DebugScenario', + source_enum_path='content/common/debug_utils.h', + start_marker='^enum class ?DebugScenario {', + end_marker='^kMaxValue', + calling_script=os.path.basename(__file__)) diff --git a/histograms/update_document_policy_enum.py b/histograms/update_document_policy_enum.py new file mode 100755 index 000000000000..2e139394d57b --- /dev/null +++ b/histograms/update_document_policy_enum.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Updates the DocumentPolicyFeature enum in enums.xml file with +values read from document_policy_feature.mojom. + +If the file was pretty-printed, the updated version is pretty-printed too. +""" + +from __future__ import print_function + +import os +import sys + +from update_histogram_enum import UpdateHistogramEnum + +if __name__ == '__main__': + if len(sys.argv) > 1: + print('No arguments expected!', file=sys.stderr) + sys.stderr.write(__doc__) + sys.exit(1) + + source_file = 'third_party/blink/public/mojom/permissions_policy/' \ + 'document_policy_feature.mojom' + UpdateHistogramEnum( + histogram_enum_name='DocumentPolicyFeature', + source_enum_path=source_file, + start_marker='^enum DocumentPolicyFeature {', + end_marker='^};', + strip_k_prefix=True, + calling_script=os.path.basename(__file__)) diff --git a/histograms/update_editor_commands.py b/histograms/update_editor_commands.py new file mode 100644 index 000000000000..6f653c1845de --- /dev/null +++ b/histograms/update_editor_commands.py @@ -0,0 +1,145 @@ +# Copyright 2014 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Updates MappedEditingCommands enum in histograms.xml file with values read + from EditorCommand.cpp. + +If the file was pretty-printed, the updated version is pretty-printed too. +""" + +from __future__ import print_function + +import logging +import os +import re +import sys + +from xml.dom import minidom + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +from diff_util import PromptUserToAcceptDiff +import path_util + +import histogram_paths +import histogram_configuration_model + + +ENUMS_PATH = histogram_paths.ENUMS_XML +ENUM_NAME = 'MappedEditingCommands' + +EDITOR_COMMAND_CPP = 'third_party/blink/renderer/core/editing/editor_command.cc' +ENUM_START_MARKER = "^ static const CommandEntry commands\[\] = {" +ENUM_END_MARKER = "^ };" + + +class UserError(Exception): + def __init__(self, message): + Exception.__init__(self, message) + + @property + def message(self): + return self.args[0] + + +def ReadHistogramValues(filename): + """Returns a list of pairs (label, value) corresponding to HistogramValue. + + Reads the EditorCommand.cpp file, locates the + HistogramValue enum definition and returns a pair for each entry. + """ + + # Read the file as a list of lines + with open(path_util.GetInputFile(filename)) as f: + content = f.readlines() + + # Locate the enum definition and collect all entries in it + inside_enum = False # We haven't found the enum definition yet + result = [] + for line in content: + if inside_enum: + # Exit condition: we reached last enum value + if re.match(ENUM_END_MARKER, line): + inside_enum = False + else: + # Inside enum: generate new xml entry + m = re.match("^{ \"([\w]+)\", \{([\w]+)", line.strip()) + if m: + result.append((m.group(1), int(m.group(2)))) + else: + if re.match(ENUM_START_MARKER, line): + inside_enum = True + enum_value = 0 # Start at 'UNKNOWN' + return sorted(result, key=lambda pair: pair[1]) + + +def UpdateHistogramDefinitions(histogram_values, document): + """Sets the children of node in + |document| to values generated from policy ids contained in + |policy_templates|. + + Args: + histogram_values: A list of pairs (label, value) defining each extension + function + document: A minidom.Document object representing parsed histogram + definitions XML file. + + """ + # Find ExtensionFunctions enum. + for enum_node in document.getElementsByTagName('enum'): + if enum_node.attributes['name'].value == ENUM_NAME: + extension_functions_enum_node = enum_node + break + else: + raise UserError('No policy enum node found') + + # Remove existing values. + while extension_functions_enum_node.hasChildNodes(): + extension_functions_enum_node.removeChild( + extension_functions_enum_node.lastChild) + + # Add a "Generated from (...)" comment + comment = ' Generated from {0} '.format(EDITOR_COMMAND_CPP) + extension_functions_enum_node.appendChild(document.createComment(comment)) + + # Add values generated from policy templates. + for (label, value) in histogram_values: + node = document.createElement('int') + node.attributes['value'] = str(value) + node.attributes['label'] = label + extension_functions_enum_node.appendChild(node) + + +def Log(message): + logging.info(message) + + +def main(): + if len(sys.argv) > 1: + print('No arguments expected!', file=sys.stderr) + sys.stderr.write(__doc__) + sys.exit(1) + + Log('Reading histogram enum definition from "%s".' % EDITOR_COMMAND_CPP) + histogram_values = ReadHistogramValues(EDITOR_COMMAND_CPP) + + Log('Reading existing histograms from "%s".' % (ENUMS_PATH)) + with open(ENUMS_PATH, 'rb') as f: + histograms_doc = minidom.parse(f) + f.seek(0) + xml = f.read() + + Log('Comparing histograms enum with new enum definition.') + UpdateHistogramDefinitions(histogram_values, histograms_doc) + + Log('Writing out new histograms file.') + new_xml = histogram_configuration_model.PrettifyTree(histograms_doc) + if PromptUserToAcceptDiff(xml, new_xml, 'Is the updated version acceptable?'): + with open(ENUMS_PATH, 'wb') as f: + f.write(new_xml) + + Log('Done.') + + +if __name__ == '__main__': + main() diff --git a/histograms/update_extension_histograms.py b/histograms/update_extension_histograms.py new file mode 100755 index 000000000000..95e3b8620d5a --- /dev/null +++ b/histograms/update_extension_histograms.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 +# Copyright 2013 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Updates the ExtensionEvents and ExtensionFunctions enums in histograms.xml +with values read from extension_event_histogram_value.h and +extension_function_histogram_value.h. + +If the file was pretty-printed, the updated version is pretty-printed too. +""" + +from __future__ import print_function + +import os +import sys + +from update_histogram_enum import UpdateHistogramEnum + +if __name__ == '__main__': + if len(sys.argv) > 1: + print('No arguments expected!', file=sys.stderr) + sys.stderr.write(__doc__) + sys.exit(1) + + histograms = ( + ('ExtensionEvents', + 'extensions/browser/extension_event_histogram_value.h'), + ('ExtensionFunctions', + 'extensions/browser/extension_function_histogram_value.h')) + for enum_name, source_header in histograms: + UpdateHistogramEnum( + histogram_enum_name=enum_name, + source_enum_path=source_header, + start_marker='^enum HistogramValue {', + end_marker='^ENUM_BOUNDARY', + calling_script=os.path.basename(__file__)) diff --git a/histograms/update_extension_permission.py b/histograms/update_extension_permission.py new file mode 100644 index 000000000000..794be06ffa9d --- /dev/null +++ b/histograms/update_extension_permission.py @@ -0,0 +1,29 @@ +# Copyright 2014 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Updates the ExtensionPermission3 enum in the histograms.xml file with values +read from api_permission_id.mojom. + +If the file was pretty-printed, the updated version is pretty-printed too. +""" + +from __future__ import print_function + +import os +import sys + +from update_histogram_enum import UpdateHistogramEnum + +if __name__ == '__main__': + if len(sys.argv) > 1: + print('No arguments expected!', file=sys.stderr) + sys.stderr.write(__doc__) + sys.exit(1) + + source_file = 'extensions/common/mojom/api_permission_id.mojom' + UpdateHistogramEnum(histogram_enum_name='ExtensionPermission3', + source_enum_path=source_file, + start_marker='^enum APIPermissionID {', + end_marker='^};', + calling_script=os.path.basename(__file__)) diff --git a/histograms/update_gpu_driver_bug_workaround_entries.py b/histograms/update_gpu_driver_bug_workaround_entries.py new file mode 100755 index 000000000000..1f7b84c11036 --- /dev/null +++ b/histograms/update_gpu_driver_bug_workaround_entries.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Updates GpuDriverBugWorkaroundEntry enum in histograms.xml file with values + read from gpu_driver_bug_list.json. + +If the file was pretty-printed, the updated version is pretty-printed too. +""" + +from __future__ import print_function + +import os.path +import re +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import path_util +import json + +import update_histogram_enum + + +GPU_DRIVER_BUG_WORKAROUND_PATH = 'gpu/config/gpu_driver_bug_list.json' + + +def ReadGpuDriverBugEntries(filename): + """Reads in the gpu driver bug list, returning a dictionary mapping + workaround ids to descriptions. + """ + # Read the file as a list of lines + with open(path_util.GetInputFile(filename)) as f: + json_data = json.load(f) + + entries = {} + entries[0] = '0: Recorded once every time this histogram is updated.' + for entry in json_data["entries"]: + entries[entry["id"]] = "%d: %s" % (entry["id"], entry["description"]) + return entries + + +def main(): + if len(sys.argv) > 1: + print('No arguments expected!', file=sys.stderr) + sys.stderr.write(__doc__) + sys.exit(1) + + update_histogram_enum.UpdateHistogramFromDict( + 'GpuDriverBugWorkaroundEntry', + ReadGpuDriverBugEntries(GPU_DRIVER_BUG_WORKAROUND_PATH), + GPU_DRIVER_BUG_WORKAROUND_PATH, + os.path.basename(__file__)) + + +if __name__ == '__main__': + main() diff --git a/histograms/update_histogram_enum.py b/histograms/update_histogram_enum.py new file mode 100644 index 000000000000..057aac1a25fd --- /dev/null +++ b/histograms/update_histogram_enum.py @@ -0,0 +1,378 @@ +# Copyright 2014 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Updates enums in histograms.xml file with values read from provided C++ enum. + +If the file was pretty-printed, the updated version is pretty-printed too. +""" + +import io +import logging +import os +import re +import sys + +from xml.dom import minidom + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import path_util + +import histogram_paths +import histogram_configuration_model + + +ENUMS_PATH = histogram_paths.ENUMS_XML + + +class UserError(Exception): + + @property + def message(self): + return self.args[0] + + +class DuplicatedValue(Exception): + """Exception raised for duplicated enum values. + + Attributes: + first_label: First enum label that shares the duplicated enum value. + second_label: Second enum label that shares the duplicated enum value. + """ + def __init__(self, first_label, second_label): + self.first_label = first_label + self.second_label = second_label + + +class DuplicatedLabel(Exception): + """Exception raised for duplicated enum labels. + + Attributes: + first_value: First enum value that shares the duplicated enum label. + second_value: Second enum value that shares the duplicated enum label. + """ + def __init__(self, first_value, second_value): + self.first_value = first_value + self.second_value = second_value + + +def Log(message): + logging.info(message) + + +def _CheckForDuplicates(enum_value, label, result): + """Checks if an enum value or label already exists in the results.""" + if enum_value in result: + raise DuplicatedValue(result[enum_value], label) + if label in result.values(): + (dup_value, ) = (k for k, v in result.items() if v == 'label') + raise DuplicatedLabel(enum_value, dup_value) + + +def ReadHistogramValues(filename, start_marker, end_marker, strip_k_prefix): + """Creates a dictionary of enum values, read from a C++ file. + + Args: + filename: The unix-style path (relative to src/) of the file to open. + start_marker: A regex that signifies the start of the enum values. + end_marker: A regex that signifies the end of the enum values. + strip_k_prefix: Set to True if enum values are declared as kFoo and the + 'k' should be stripped. + + Returns: + A dictionary from enum value to enum label. + + Raises: + DuplicatedValue: An error when two enum labels share the same value. + DuplicatedLabel: An error when two enum values share the same label. + """ + # Read the file as a list of lines + with io.open(path_util.GetInputFile(filename)) as f: + content = f.readlines() + + START_REGEX = re.compile(start_marker) + ITEM_REGEX = re.compile(r'^(\w+)') + ITEM_REGEX_WITH_INIT = re.compile(r'(\w+)\s*=\s*(\d*)') + WRAPPED_INIT = re.compile(r'(\d+)') + END_REGEX = re.compile(end_marker) + + iterator = iter(content) + # Find the start of the enum + for line in iterator: + if START_REGEX.match(line.strip()): + break + + enum_value = 0 + result = {} + for line in iterator: + line = line.strip() + # Exit condition: we reached last enum value + if END_REGEX.match(line): + break + # Inside enum: generate new xml entry + m = ITEM_REGEX_WITH_INIT.match(line) + if m: + label = m.group(1) + if m.group(2): + enum_value = int(m.group(2)) + else: + # Enum name is so long that the value wrapped to the next line + next_line = next(iterator).strip() + enum_value = int(WRAPPED_INIT.match(next_line).group(1)) + else: + m = ITEM_REGEX.match(line) + if m: + label = m.group(1) + else: + continue + if strip_k_prefix: + assert label.startswith('k'), "Enum " + label + " should start with 'k'." + label = label[1:] + _CheckForDuplicates(enum_value, label, result) + result[enum_value] = label + enum_value += 1 + return result + + +def ReadHistogramValuesFromXML(filename, element_name, + value_attribute, label_attribute): + """Creates a dictionary of enum values, read from an XML file. + + Args: + filename: The unix-style path (relative to src/) of the file to open. + element_name: Name of elements in the given XML that would be used to + extract enums. + value_attribute: The attribute name in source XML that would be mapped to + |value| attributes in enums.xml. + label_attribute: The attribute name in source XML that would be mapped to + |label| attributes in enums.xml. + + Returns: + A boolean indicating wheather the histograms.xml file would be changed. + + Raises: + DuplicatedValue: An error when two enum labels share the same value. + DuplicatedLabel: An error when two enum values share the same label. + """ + source_xml = minidom.parse(path_util.GetInputFile(filename)) + result = {} + for row in source_xml.getElementsByTagName(element_name): + enum_value = int(row.getAttribute(value_attribute)) + label = row.getAttribute(label_attribute) + _CheckForDuplicates(enum_value, label, result) + result[enum_value] = label + return result + + +def CreateEnumItemNode(document, value, label): + """Creates an int element to append to an enum.""" + item_node = document.createElement('int') + item_node.attributes['value'] = str(value) + item_node.attributes['label'] = label + return item_node + + +def UpdateHistogramDefinitions(histogram_enum_name, source_enum_values, + source_enum_path, caller_script_name, document): + """Updates the enum node named |histogram_enum_name| based on the definition + stored in |source_enum_values|. Existing items for which |source_enum_values| + doesn't contain any corresponding data will be preserved. |source_enum_path| + and |caller_script_name| will be used to insert a comment. + """ + # Get a dom of node in |document|. + for enum_node in document.getElementsByTagName('enum'): + if enum_node.attributes['name'].value == histogram_enum_name: + break + else: + raise UserError('No {0} enum node found'.format(histogram_enum_name)) + + new_item_nodes = {} + new_comments = [] + + # Add a "Generated from (...)" comment. + new_comments.append( + document.createComment( + ' Generated from {0}.'.format(source_enum_path).replace('\\', '/') + + ('\nCalled by {0}.'.format(caller_script_name + ) if caller_script_name else ''))) + + # Create item nodes for each of the enum values. + for value, label in source_enum_values.items(): + new_item_nodes[value] = CreateEnumItemNode(document, value, label) + + # Scan existing nodes in |enum_node| for old values and preserve them. + # - Preserve comments other than the 'Generated from' comment. NOTE: + # this does not preserve the order of the comments in relation to the + # old values. + # - Drop anything else. + SOURCE_COMMENT_REGEX = re.compile('^ Generated from ') + for child in enum_node.childNodes: + if child.nodeName == 'int': + value = int(child.attributes['value'].value) + if value not in source_enum_values: + new_item_nodes[value] = child + # Preserve existing non-generated comments. + elif (child.nodeType == minidom.Node.COMMENT_NODE and + SOURCE_COMMENT_REGEX.match(child.data) is None): + new_comments.append(child) + + # Update |enum_node|. First, remove everything existing. + while enum_node.hasChildNodes(): + enum_node.removeChild(enum_node.lastChild) + + # Add comments at the top. + for comment in new_comments: + enum_node.appendChild(comment) + + # Add in the new enums. + for value in sorted(new_item_nodes.keys()): + enum_node.appendChild(new_item_nodes[value]) + + +def _GetOldAndUpdatedXml(histogram_enum_name, source_enum_values, + source_enum_path, caller_script_name): + """Reads old histogram from |histogram_enum_name| from |ENUMS_PATH|, and + calculates new histogram from |source_enum_values| from |source_enum_path|, + and returns both in XML format. + """ + Log('Reading existing histograms from "{0}".'.format(ENUMS_PATH)) + with io.open(ENUMS_PATH, 'r', encoding='utf-8') as f: + histograms_doc = minidom.parse(f) + f.seek(0) + xml = f.read() + + Log('Comparing histograms enum with new enum definition.') + UpdateHistogramDefinitions(histogram_enum_name, source_enum_values, + source_enum_path, caller_script_name, + histograms_doc) + + new_xml = histogram_configuration_model.PrettifyTree(histograms_doc) + return (xml, new_xml) + + +def CheckPresubmitErrors(histogram_enum_name, + update_script_name, + source_enum_path, + start_marker, + end_marker, + strip_k_prefix=False, + histogram_value_reader=ReadHistogramValues): + """Extracts histogram enum values from a source file and checks for + violations. + + Enum values are extracted from |source_enum_path| using + |histogram_value_reader| function. The following presubmit violations are then + checked: + 1. Failure to update histograms.xml to match + 2. Introduction of duplicate values + + Args: + histogram_enum_name: The name of the XML attribute to update. + update_script_name: The name of an update script to run to update the UMA + mappings for the enum. + source_enum_path: A unix-style path, relative to src/, giving + the source file from which to read the enum. + start_marker: A regular expression that matches the start of the C++ enum. + end_marker: A regular expression that matches the end of the C++ enum. + strip_k_prefix: Set to True if enum values are declared as kFoo and the + 'k' should be stripped. + histogram_value_reader: A reader function that takes four arguments + (source_path, start_marker, end_marker, strip_k_prefix), and returns a + list of strings of the extracted enum names. The default is + ReadHistogramValues(), which parses the values out of an enum defined + in a C++ source file. + + + Returns: + A string with presubmit failure description, or None (if no failures). + """ + Log('Reading histogram enum definition from "{0}".'.format(source_enum_path)) + try: + source_enum_values = histogram_value_reader(source_enum_path, start_marker, + end_marker, strip_k_prefix) + except DuplicatedValue as duplicated_values: + return ('%s enum has been updated and there exist ' + 'duplicated values between (%s) and (%s)' % + (histogram_enum_name, duplicated_values.first_label, + duplicated_values.second_label)) + except DuplicatedLabel as duplicated_labels: + return ('%s enum has been updated and there exist ' + 'duplicated labels between (%s) and (%s)' % + (histogram_enum_name, duplicated_labels.first_value, + duplicated_labels.second_value)) + + (xml, new_xml) = _GetOldAndUpdatedXml(histogram_enum_name, source_enum_values, + source_enum_path, update_script_name) + if xml != new_xml: + return ('%s enum has been updated and the UMA mapping needs to be ' + 'regenerated. Please run %s in src/tools/metrics/histograms/ to ' + 'update the mapping.' % (histogram_enum_name, update_script_name)) + + return None + + +def UpdateHistogramFromDict(histogram_enum_name, source_enum_values, + source_enum_path, caller_script_name): + """Updates |histogram_enum_name| enum in histograms.xml file with values + from the {value: 'key'} dictionary |source_enum_values|. A comment is added + to histograms.xml citing that the values in |histogram_enum_name| were + sourced from |source_enum_path|, requested by |caller_script_name|. + """ + (xml, new_xml) = _GetOldAndUpdatedXml(histogram_enum_name, source_enum_values, + source_enum_path, caller_script_name) + with io.open(ENUMS_PATH, 'w', encoding='utf-8', newline='') as f: + f.write(new_xml) + + Log('Done.') + + +def UpdateHistogramEnum(histogram_enum_name, + source_enum_path, + start_marker, + end_marker, + strip_k_prefix=False, + calling_script=None): + """Reads a C++ enum from a .h file and updates histograms.xml to match. + + Args: + histogram_enum_name: The name of the XML attribute to update. + source_enum_path: A unix-style path, relative to src/, giving + the C++ header file from which to read the enum. + start_marker: A regular expression that matches the start of the C++ enum. + end_marker: A regular expression that matches the end of the C++ enum. + strip_k_prefix: Set to True if enum values are declared as kFoo and the + 'k' should be stripped. + """ + + Log('Reading histogram enum definition from "{0}".'.format(source_enum_path)) + source_enum_values = ReadHistogramValues(source_enum_path, + start_marker, end_marker, strip_k_prefix) + + UpdateHistogramFromDict(histogram_enum_name, source_enum_values, + source_enum_path, calling_script) + + +def UpdateHistogramEnumFromXML(histogram_enum_name, source_enum_path, + caller_script_name, element_name, + value_attribute, label_attribute): + """Reads a .xml file and updates histograms.xml to match. + + Args: + histogram_enum_name: The name of the XML attribute to update. + source_enum_path: A unix-style path, relative to src/, giving + the XML file from which to read the enum. + caller_script_name: Name of the script calling this function. + element_name: Name of elements in the given XML that would be used to + extract enums. + value_attribute: The attribute name in source XML that would be mapped to + |value| attributes in enums.xml. + label_attribute: The attribute name in source XML that would be mapped to + |label| attributes in enums.xml. + """ + + Log('Reading histogram enum definition from "{0}".'.format(source_enum_path)) + source_enum_values = ReadHistogramValuesFromXML( + source_enum_path, element_name, value_attribute, label_attribute) + + UpdateHistogramFromDict(histogram_enum_name, source_enum_values, + source_enum_path, caller_script_name) diff --git a/histograms/update_net_error_codes.py b/histograms/update_net_error_codes.py new file mode 100755 index 000000000000..d29b1576c9c4 --- /dev/null +++ b/histograms/update_net_error_codes.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python +# Copyright 2014 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Updates NetErrorCodes enum in histograms.xml file with values read + from net_error_list.h. + +If the file was pretty-printed, the updated version is pretty-printed too. +""" + +from __future__ import print_function + +import os.path +import re +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import path_util + +import update_histogram_enum + +NET_ERROR_LIST_PATH = 'net/base/net_error_list.h' + +POSITIVE_ERROR_REGEX = re.compile(r'^NET_ERROR\(([\w]+), -([0-9]+)\)') +NEGATIVE_ERROR_REGEX = re.compile(r'^NET_ERROR\(([\w]+), (-[0-9]+)\)') + +def ReadNetErrorCodes(filename, error_regex): + """Reads in values from net_error_list.h, returning a dictionary mapping + error code to error name. + """ + # Read the file as a list of lines + with open(path_util.GetInputFile(filename)) as f: + content = f.readlines() + + # Parse out lines that are net errors. + errors = {} + for line in content: + m = error_regex.match(line) + if m: + name = m.group(1) + code = int(m.group(2)) + + # CERT_END is not a real NET_ERROR and does not have a stable value. + # Don't include it. + if name == 'CERT_END': + continue + + errors[code] = name + + return errors + + +def main(): + if len(sys.argv) > 1: + print('No arguments expected!', file=sys.stderr) + sys.stderr.write(__doc__) + sys.exit(1) + + update_histogram_enum.UpdateHistogramFromDict( + 'NetErrorCodes', + ReadNetErrorCodes(NET_ERROR_LIST_PATH, POSITIVE_ERROR_REGEX), + NET_ERROR_LIST_PATH, + os.path.basename(__file__)) + + update_histogram_enum.UpdateHistogramFromDict( + 'CombinedHttpResponseAndNetErrorCode', + ReadNetErrorCodes(NET_ERROR_LIST_PATH, NEGATIVE_ERROR_REGEX), + NET_ERROR_LIST_PATH, + os.path.basename(__file__)) + +if __name__ == '__main__': + main() diff --git a/histograms/update_net_trust_anchors.py b/histograms/update_net_trust_anchors.py new file mode 100755 index 000000000000..0dec8b95065d --- /dev/null +++ b/histograms/update_net_trust_anchors.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Updates NetTrustAnchors enum in histograms.xml file with values read + from net/data/ssl/root_stores/root_stores.json. + +If the file was pretty-printed, the updated version is pretty-printed too. +""" + +from __future__ import print_function + +import json +import os.path +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import path_util + +import update_histogram_enum + +NET_ROOT_CERTS_PATH = 'net/data/ssl/root_stores/root_stores.json' + +def main(): + if len(sys.argv) > 1: + print('No arguments expected!', file=sys.stderr) + sys.stderr.write(__doc__) + sys.exit(1) + + with open(path_util.GetInputFile(NET_ROOT_CERTS_PATH)) as f: + root_stores = json.load(f) + + spki_enum = {} + spki_enum[0] = 'Unknown or locally-installed trust anchor' + for spki, spki_data in sorted(root_stores['spkis'].items()): + spki_enum[int(spki_data['id'])] = spki + + update_histogram_enum.UpdateHistogramFromDict( + 'NetTrustAnchors', spki_enum, NET_ROOT_CERTS_PATH, + os.path.basename(__file__)) + +if __name__ == '__main__': + main() diff --git a/histograms/update_permissions_policy_enum.py b/histograms/update_permissions_policy_enum.py new file mode 100755 index 000000000000..3a99b696eb94 --- /dev/null +++ b/histograms/update_permissions_policy_enum.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python +# Copyright 2018 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Updates the FeaturePolicyFeature enum in enums.xml file with +values read from permissions_policy_feature.mojom. + +If the file was pretty-printed, the updated version is pretty-printed too. +""" + +from __future__ import print_function + +import os +import sys + +from update_histogram_enum import UpdateHistogramEnum + +if __name__ == '__main__': + if len(sys.argv) > 1: + print('No arguments expected!', file=sys.stderr) + sys.stderr.write(__doc__) + sys.exit(1) + + source_file = 'third_party/blink/public/mojom/permissions_policy/' \ + 'permissions_policy_feature.mojom' + UpdateHistogramEnum(histogram_enum_name='FeaturePolicyFeature', + source_enum_path=source_file, + start_marker='^enum PermissionsPolicyFeature {', + end_marker='^};', + strip_k_prefix=True, + calling_script=os.path.basename(__file__)) diff --git a/histograms/update_policies.py b/histograms/update_policies.py new file mode 100644 index 000000000000..18bb357a6eaa --- /dev/null +++ b/histograms/update_policies.py @@ -0,0 +1,150 @@ +# Copyright 2013 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Updates EnterprisePolicies enum in histograms.xml file with policy +definitions read from policies.yaml. + +If the file was pretty-printed, the updated version is pretty-printed too. +""" + +from __future__ import print_function + +import os +import re +import sys + +from ast import literal_eval +from optparse import OptionParser +from xml.dom import minidom +sys.path.append(os.path.join(os.path.dirname(__file__), '../../../third_party')) +import pyyaml + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +from diff_util import PromptUserToAcceptDiff +import path_util + +import histogram_paths +import histogram_configuration_model + +ENUMS_PATH = histogram_paths.ENUMS_XML +POLICY_LIST_PATH = 'components/policy/resources/templates/policies.yaml' +POLICIES_ENUM_NAME = 'EnterprisePolicies' +POLICY_ATOMIC_GROUPS_ENUM_NAME = 'PolicyAtomicGroups' + +class UserError(Exception): + def __init__(self, message): + Exception.__init__(self, message) + + @property + def message(self): + return self.args[0] + + +def UpdatePoliciesHistogramDefinitions(policy_ids, doc): + """Sets the children of node in |doc| to + values generated from policy ids contained in |policy_templates|. + + Args: + policy_ids: A dictionary mapping policy ids to their names. + doc: A minidom.Document object representing parsed histogram definitions + XML file. + """ + # Find EnterprisePolicies enum. + for enum_node in doc.getElementsByTagName('enum'): + if enum_node.attributes['name'].value == POLICIES_ENUM_NAME: + policy_enum_node = enum_node + break + else: + raise UserError('No policy enum node found') + + # Remove existing values. + while policy_enum_node.hasChildNodes(): + policy_enum_node.removeChild(policy_enum_node.lastChild) + + # Add a "Generated from (...)" comment + comment = ' Generated from {0} '.format(POLICY_LIST_PATH) + policy_enum_node.appendChild(doc.createComment(comment)) + + # Add values generated from policy templates. + ordered_policies = [{ + 'id': id, + 'name': name + } for id, name in policy_ids.items() if name] + + ordered_policies.sort(key=lambda policy: policy['id']) + for policy in ordered_policies: + node = doc.createElement('int') + node.attributes['value'] = str(policy['id']) + node.attributes['label'] = policy['name'] + policy_enum_node.appendChild(node) + + +def UpdateAtomicGroupsHistogramDefinitions(atomic_group_ids, doc): + """Sets the children of node in |doc| to + values generated from policy ids contained in |policy_templates|. + + Args: + atomic_group_ids: A dictionary mapping atomic policy goupr ids to their + names. + doc: A minidom.Document object representing parsed histogram definitions + XML file. + """ + # Find EnterprisePolicies enum. + for enum_node in doc.getElementsByTagName('enum'): + if enum_node.attributes['name'].value == POLICY_ATOMIC_GROUPS_ENUM_NAME: + atomic_group_enum_node = enum_node + break + else: + raise UserError('No policy atomic group enum node found') + + # Remove existing values. + while atomic_group_enum_node.hasChildNodes(): + atomic_group_enum_node.removeChild(atomic_group_enum_node.lastChild) + + # Add a "Generated from (...)" comment + comment = ' Generated from {0} '.format(POLICY_LIST_PATH) + atomic_group_enum_node.appendChild(doc.createComment(comment)) + + # Add values generated from policy templates. + ordered_atomic_groups = [{ + 'id': id, + 'name': name + } for id, name in atomic_group_ids.items() if name] + ordered_atomic_groups.sort(key=lambda group: group['id']) + for group in ordered_atomic_groups: + node = doc.createElement('int') + node.attributes['value'] = str(group['id']) + node.attributes['label'] = group['name'] + atomic_group_enum_node.appendChild(node) + +def main(): + if len(sys.argv) > 1: + print('No arguments expected!', file=sys.stderr) + sys.stderr.write(__doc__) + sys.exit(1) + + with open(os.path.join(POLICY_LIST_PATH), encoding='utf-8') as f: + policy_list_content = pyyaml.safe_load(f) + + with open(ENUMS_PATH, 'rb') as f: + histograms_doc = minidom.parse(f) + f.seek(0) + xml = f.read().decode('utf-8') + + UpdatePoliciesHistogramDefinitions(policy_list_content['policies'], + histograms_doc) + UpdateAtomicGroupsHistogramDefinitions(policy_list_content['atomic_groups'], + histograms_doc) + new_xml = histogram_configuration_model.PrettifyTree(histograms_doc) + if PromptUserToAcceptDiff(xml, new_xml, 'Is the updated version acceptable?'): + with open(ENUMS_PATH, 'wb') as f: + f.write(new_xml.encode('utf-8')) + + +if __name__ == '__main__': + try: + main() + except UserError as e: + print(e.message, file=sys.stderr) + sys.exit(1) diff --git a/histograms/update_protocol_commands_enum.py b/histograms/update_protocol_commands_enum.py new file mode 100755 index 000000000000..7558df75fd95 --- /dev/null +++ b/histograms/update_protocol_commands_enum.py @@ -0,0 +1,149 @@ +#!/usr/bin/env python +# Copyright 2021 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import re +import sys +import hashlib +import ctypes + +from xml.dom import minidom + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import path_util + +sys.path.append( + os.path.join(os.path.dirname(__file__), '..', '..', '..', 'third_party', + 'inspector_protocol')) +import pdl + +import update_histogram_enum +import histogram_paths + + +def GetCommandUMAId(cdp_command): + """Generate a hash consistent with GetCommandUMAId() in ChromeDevToolsSession. + + Args: + cdp_command: A string containing a CDP command. + + Returns: + The hashed value for the CDP command. + """ + digest = hashlib.md5(cdp_command.encode('utf-8')).hexdigest() + first_eight_bytes = digest[:16] + long_value = int(first_eight_bytes, 16) + signed_32bit = ctypes.c_int(long_value).value + return signed_32bit + + +def ParseProtocolCommandsFromPDL(file_path): + """Parses a PDL file and returns a dictionary of all its commands and their + hashes. + + Args: + file_path: The path of the PDL file. + + Returns: + A dictionary with the hashes as keys and the CDP commands as values. + """ + file_name = path_util.GetInputFile(file_path) + input_file = open(file_name, "r") + pdl_string = input_file.read() + protocol = pdl.loads(pdl_string, file_name, False) + input_file.close() + + result = {} + for domain in protocol["domains"]: + if "commands" in domain: + for command in domain["commands"]: + command_name = domain["domain"] + "." + command["name"] + hashed_command = GetCommandUMAId(command_name) + if (hashed_command in result): + print('Hash collision between "{}" and "{}" in {} when '\ + 'generating CDPCommands for enums.xml' + .format(result[hashed_command], command_name, file_path)) + result[hashed_command] = command_name + + return result + + +def ParseProtocolCommandsFromXML(): + """Parses the 'CDPCommands' enum in enums.xml. + + Returns: + A dictionary with the hashes as keys and the CDP commands as values. + """ + document = minidom.parse( + path_util.GetInputFile(histogram_paths.ENUMS_XML_RELATIVE)) + result = {} + + # Get DOM of the node. + for enum_node in document.getElementsByTagName('enum'): + if enum_node.attributes['name'].value == 'CDPCommands': + break + else: + raise UserError('CDPCommands enum node not found in enums.xml') + + for child in enum_node.childNodes: + if child.nodeName == 'int': + enum_value = int(child.attributes['value'].value) + enum_label = str(child.attributes['label'].value) + result[enum_value] = enum_label + + return result + + +def CheckDictsForCollisions(first, second): + """Compares 2 dictionaries and prints an error message for each key which + is contained in both dics for which the corresponding value differs in the + 2 dicts. + + Args: + first: A dictionary. + second: A dictionary. + """ + for hashedValue in first.keys(): + if (hashedValue in second and second[hashedValue] != first[hashedValue]): + print( + 'Hash collision between "{}" and "{}" when generating CDPCommands '\ + 'for enums.xml' + .format(first[hashedValue], second[hashedValue])) + + +def MaybeUpdateEnumFromFile(file_path): + """Gets the results of parsing a pdl file and of enums.xml, and updates + enums.xml if necessary. + + Args: + file_path: Path of the pdl file to be parsed. + """ + print('Parsing {}'.format(file_path)) + pdl_dict = ParseProtocolCommandsFromPDL(file_path) + xml_dict = ParseProtocolCommandsFromXML() + CheckDictsForCollisions(pdl_dict, xml_dict) + files_for_enum_comment = '*.pdl files' + update_histogram_enum.UpdateHistogramFromDict('CDPCommands', pdl_dict, + files_for_enum_comment, + os.path.basename(__file__)) + + +def main(): + """Checks that the 'CDPCommands' enum in enums.xml matches the content of + the various pdl protocol definition files and updates the enum if necessary. + """ + + pdl_file_paths = [ + 'third_party/blink/public/devtools_protocol/browser_protocol.pdl', + 'v8/include/js_protocol.pdl', 'chrome/browser/devtools/cros_protocol.pdl', + 'components/viz/common/debugger/viz_debugger.pdl', + 'content/browser/native_profiling.pdl' + ] + for pdl_file_path in pdl_file_paths: + MaybeUpdateEnumFromFile(pdl_file_path) + + +if __name__ == '__main__': + main() diff --git a/histograms/update_scheduler_enums.py b/histograms/update_scheduler_enums.py new file mode 100755 index 000000000000..60e68e824330 --- /dev/null +++ b/histograms/update_scheduler_enums.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Updates the WebSchedulerTrackedFeature enum in enums.xml file with +values read from web_scheduler_tracked_feature.h. + +If the file was pretty-printed, the updated version is pretty-printed too. +""" + +from __future__ import print_function + +import os +import sys + +from update_histogram_enum import UpdateHistogramEnum + +if __name__ == '__main__': + if len(sys.argv) > 1: + print('No arguments expected!', file=sys.stderr) + sys.stderr.write(__doc__) + sys.exit(1) + + source_file = 'third_party/blink/public/common/scheduler/' \ + 'web_scheduler_tracked_feature.h' + UpdateHistogramEnum( + histogram_enum_name='WebSchedulerTrackedFeature', + source_enum_path=source_file, + start_marker='^enum class WebSchedulerTrackedFeature {', + end_marker='^kMaxValue', + strip_k_prefix=True, + calling_script=os.path.basename(__file__)) diff --git a/histograms/update_use_counter_css.py b/histograms/update_use_counter_css.py new file mode 100755 index 000000000000..530e587d6c79 --- /dev/null +++ b/histograms/update_use_counter_css.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 +# Copyright 2014 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Scans the Chromium source of UseCounter, formats the Feature enum for +histograms.xml and merges it. This script can also generate a python code +snippet to put in uma.py of Chromium Dashboard. Make sure that you review the +output for correctness. +""" + +import optparse +import os +import re +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import path_util + +import update_histogram_enum +import update_use_counter_feature_enum + + +USE_COUNTER_MOJOM_PATH = 'third_party/blink/public/mojom/use_counter/'\ + 'metrics/css_property_id.mojom' + + +def EnumToCssProperty(enum_name): + """Converts a camel cased enum name to the lower case CSS property.""" + # The first group also searches for uppercase letters to account for single + # uppercase letters, such as in "ZIndex" that need to convert to "z-index". + + # Special case total page measured for backward compat. + if enum_name == "TotalPagesMeasured": + return "Total Pages Measured" + + return re.sub(r'([a-zA-Z])([A-Z])', r'\1-\2', enum_name).lower() + + +def ReadCssProperties(filename): + # Read the file as a list of lines + with open(path_util.GetInputFile(filename)) as f: + content = f.readlines() + + # Looking for a single line like "kFontWeight = 10," + ENUM_REGEX = re.compile(r"""k(\w+)\s*= # capture the enum name + \s*(\d+),? # capture the id + """, re.VERBOSE) + + properties = {} + for line in content: + enum_match = ENUM_REGEX.search(line) + if enum_match: + enum_name = enum_match.group(1) + property_id = int(enum_match.group(2)) + # Properties with id = 0 are invalid. Skip them. + if property_id == 0: + continue + properties[property_id] = EnumToCssProperty(enum_name) + + return properties + + +if __name__ == '__main__': + parser = optparse.OptionParser() + parser.add_option('--for-dashboard', action='store_true', dest='dashboard', + default=False, + help='Print enum definition formatted for use in uma.py of ' + 'Chromium dashboard developed at ' + 'https://github.com/GoogleChrome/chromium-dashboard') + options, args = parser.parse_args() + + if options.dashboard: + enum_dict = ReadCssProperties(USE_COUNTER_MOJOM_PATH) + update_use_counter_feature_enum.PrintEnumForDashboard(enum_dict) + else: + update_histogram_enum.UpdateHistogramFromDict( + 'MappedCSSProperties', ReadCssProperties(USE_COUNTER_MOJOM_PATH), + USE_COUNTER_MOJOM_PATH, os.path.basename(__file__)) diff --git a/histograms/update_use_counter_feature_enum.py b/histograms/update_use_counter_feature_enum.py new file mode 100755 index 000000000000..b6c956a8b53f --- /dev/null +++ b/histograms/update_use_counter_feature_enum.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 +# Copyright 2014 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Scans the Chromium source of UseCounter, formats the Feature enum for +histograms.xml and merges it. This script can also generate a python code +snippet to put in uma.py of Chromium Dashboard. Make sure that you review the +output for correctness. +""" + +from __future__ import print_function + +import optparse +import os +import sys + +from update_histogram_enum import ReadHistogramValues +from update_histogram_enum import UpdateHistogramEnum + + +def PrintEnumForDashboard(dictionary): + """Prints dictionary formatted for use in uma.py of Chromium dashboard.""" + for key, value in sorted(dictionary.items()): + print(' %d: \'%s\',' % (key, value)) + + +if __name__ == '__main__': + parser = optparse.OptionParser() + parser.add_option('--for-dashboard', action='store_true', dest='dashboard', + default=False, + help='Print enum definition formatted for use in uma.py of ' + 'Chromium dashboard developed at ' + 'https://github.com/GoogleChrome/chromium-dashboard') + options, args = parser.parse_args() + + source_path = 'third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom' + + START_MARKER = '^enum WebFeature {' + END_MARKER = '^kNumberOfFeatures' + + if options.dashboard: + enum_dict = ReadHistogramValues(source_path, + START_MARKER, + END_MARKER, + strip_k_prefix=True) + PrintEnumForDashboard(enum_dict) + else: + UpdateHistogramEnum( + histogram_enum_name='FeatureObserver', + source_enum_path=source_path, + start_marker=START_MARKER, + end_marker=END_MARKER, + strip_k_prefix=True, + calling_script=os.path.basename(__file__)) diff --git a/histograms/validate_format.py b/histograms/validate_format.py new file mode 100755 index 000000000000..c4f774b5d877 --- /dev/null +++ b/histograms/validate_format.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 +# Copyright 2013 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Verifies that the histograms XML file is well-formatted.""" + +import logging +import sys +import xml.dom.minidom + +import extract_histograms +import histogram_paths +import merge_xml + +# The allowlist of namespaces (histogram prefixes, case insensitive) that are +# split across multiple files. +_NAMESPACES_IN_MULTIPLE_FILES = [ + 'ash', 'autocomplete', 'childprocess', 'chromeos', 'fcminvalidations', + 'graphics', 'launch' +] + + +def CheckNamespaces(): + namespaces = {} + has_errors = False + for path in histogram_paths.ALL_XMLS: + tree = xml.dom.minidom.parse(path) + + def _GetNamespace(node): + return node.getAttribute('name').lower().split('.')[0] + + namespaces_in_file = set( + _GetNamespace(node) for node in extract_histograms.IterElementsWithTag( + tree, 'histogram', depth=3)) + for namespace in namespaces_in_file: + if (namespace in namespaces + and namespace not in _NAMESPACES_IN_MULTIPLE_FILES): + logging.error( + 'Namespace %s has already been used in %s. it\'s recommended to ' + 'put histograms with the same namespace in the same file. If you ' + 'intentionally want to split a namespace across multiple files, ' + 'please add the namespace to the |_NAMESPACES_IN_MULTIPLE_FILES| ' + 'in the validate_format.py.' % (namespace, namespaces[namespace])) + has_errors = True + namespaces[namespace] = path + + return has_errors + + +def main(): + doc = merge_xml.MergeFiles(histogram_paths.ALL_XMLS, + should_expand_owners=True) + _, errors = extract_histograms.ExtractHistogramsFromDom(doc) + errors = errors or CheckNamespaces() + sys.exit(errors) + +if __name__ == '__main__': + main() diff --git a/histograms/validate_histograms_index.py b/histograms/validate_histograms_index.py new file mode 100755 index 000000000000..6dfd0322ee33 --- /dev/null +++ b/histograms/validate_histograms_index.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Verify the `histograms_index` file is up-to-date.""" + +import logging +import os +import sys + +import histogram_paths + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import path_util + + +def main(): + exit_code = 0 + with open(histogram_paths.HISTOGRAMS_INDEX, 'r') as f: + histograms_paths = [os.path.normpath(line.strip()) for line in f] + new_histograms_paths = [ + os.path.normpath(p) for p in histogram_paths.HISTOGRAMS_XMLS_RELATIVE + ] + if histograms_paths != new_histograms_paths: + exit_code = 1 + logging.error( + 'histograms_index.txt is not up-to-date. Please run ' + 'python histogram_paths.py to update it.') + + sys.exit(exit_code) + + +if __name__ == '__main__': + main() diff --git a/histograms/validate_prefix.py b/histograms/validate_prefix.py new file mode 100755 index 000000000000..d820691ca0ba --- /dev/null +++ b/histograms/validate_prefix.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python3 +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Checks that the histograms and variants at given xml have correct prefix.""" + +import logging +import os +import sys +import xml.dom.minidom + +import extract_histograms +import split_xml + + +def ValidatePrefixInFile(xml_path): + """Validates that all and are put in the correct file. + + Args: + xml_path: The path to the histograms.xml file. + + Returns: + A boolean that is True if at least a histogram has incorrect prefix, False + otherwise. + """ + prefix = os.path.basename(os.path.dirname(xml_path)) + has_prefix_error = False + tree = xml.dom.minidom.parse(xml_path) + + for node in extract_histograms.IterElementsWithTag(tree, 'variants', 3): + correct_dir = split_xml.GetDirForNode(node) + if correct_dir != prefix: + variants_name = node.getAttribute('name') + logging.error( + 'Variants of name %s is not placed in the correct directory, ' + 'please remove it from the metadata/%s directory ' + 'and place it in the metadata/%s directory.', variants_name, prefix, + correct_dir) + has_prefix_error = True + + for node in extract_histograms.IterElementsWithTag(tree, 'histogram', 3): + correct_dir = split_xml.GetDirForNode(node) + if correct_dir != prefix: + histogram_name = node.getAttribute('name') + logging.error( + 'Histogram of name %s is not placed in the correct directory, ' + 'please remove it from the metadata/%s directory ' + 'and place it in the metadata/%s directory.', histogram_name, prefix, + correct_dir) + has_prefix_error = True + + return has_prefix_error + + +def main(): + """Checks that the histograms at given path have prefix that is the dir name. + + Args: + sys.argv[1]: The relative path to xml file. + + Example usage: + validate_prefix.py metadata/Fingerprint/histograms.xml + """ + if len(sys.argv) != 2: + sys.stderr.write('Usage: %s ' % sys.argv[0]) + sys.exit(1) + + xml_path = os.path.join(os.getcwd(), sys.argv[1]) + prefix_error = ValidatePrefixInFile(xml_path) + + sys.exit(prefix_error) + + +if __name__ == '__main__': + main() diff --git a/md2xml.py b/md2xml.py new file mode 100755 index 000000000000..b5b2a959ba75 --- /dev/null +++ b/md2xml.py @@ -0,0 +1,196 @@ +#!/usr/bin/env python +# Copyright 2018 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Parses a markdown file, extracts documentation for UMA metrics from the doc, +and writes that into histograms.xml file. + +The syntax for the markdown this script processes is as follows: + . The first line for each UMA metric should be: '## [metric name]'. + . The following lines should include the additional information about the + metric, in a markdown list, in '[name]: [value]' format. For example: + + * units: pixels + * owners: first@chromium.org, second@example.com + + . The description, and explanation, of the metric should be after an empty + line after the list of attributes. + . Each UMA metric section should end with a line '---'. If there are non-UMA + sections at the beginning of the doc, then the first UMA section should be + preceeded by a '---' line. + +A complete example: + +=== sample.md +# A sample markdown document. +This is a sample markdown. It has some documentation for UMA metrics too. + +# Motivation +The purpose of this sample doc is to be a guide for writing such docs. + +--- +## ExampleMetric.First +* units: smiles +* owners: firstowner@chromium.org, second@example.org +* os: windows, mac +* added: 2018-03-01 +* expires: 2023-01-01 + +ExampleMetric.First measures the first example. +--- +## ExampleMetric.Second +* units: happiness + +This measures the second example. + +""" + +import datetime +import os +import re +import sys +import time +import xml.dom.minidom + +sys.path.append(os.path.join(os.path.dirname(__file__), 'common')) +import path_util + +sys.path.append(os.path.join(os.path.dirname(__file__), 'histograms')) +import pretty_print + +SupportedTags = [ + "added", + "expires", + "enum", + "os", + "owners", + "tags", + "units", +] + +def IsTagKnown(tag): + return tag in SupportedTags + + +def IsTagValid(tag, value): + assert IsTagKnown(tag) + if tag == 'added' or tag == 'expires': + if re.match('^M[0-9]{2,3}$', value): + return True + date = re.match('^([0-9]{4})-([0-9]{2})-([0-9]{2})$', value) + return date and datetime.date(int(date.group(1)), int(date.group(2)), + int(date.group(3))) + return True + + +class Trace: + def __init__(self, msg): + self.msg_ = msg + self.start_ = None + + def __enter__(self): + self.start_ = time.time() + sys.stdout.write('%s ...' % (self.msg_)) + sys.stdout.flush() + + def __exit__(self, exc_type, exc_val, exc_tb): + sys.stdout.write(' Done (%.3f sec)\n' % (time.time() - self.start_)) + + +def GetMetricsFromMdFile(mdfile): + """Returns an array of metrics parsed from the markdown file. See the top of + the file for documentation on the format of the markdown file. + """ + with open(mdfile) as f: + raw_md = f.read() + metrics = [] + sections = re.split('\n---+\n', raw_md) + tag_pattern = re.compile('^\* ([^:]*): (.*)$') + for section in sections: + if len(section.strip()) == 0: break + lines = section.strip().split('\n') + # The first line should have the header, containing the name of the metric. + header_match = re.match('^##+ ', lines[0]) + if not header_match: continue + metric = {} + metric['name'] = lines[0][len(header_match.group(0)):] + for i in range(1, len(lines)): + if len(lines[i]) == 0: + i += 1 + break + match = tag_pattern.match(lines[i]) + assert match + assert IsTagKnown(match.group(1)), 'Unknown tag: "%s".' % (match.group(1)) + assert IsTagValid(match.group(1), match.group(2)), 'Invalid value "%s" ' \ + 'for tag "%s".' % (match.group(2), match.group(1)) + metric[match.group(1)] = match.group(2) + assert i < len(lines), 'No summary found for "%s"' % metric['name'] + metric['summary'] = '\n'.join(lines[i:]) + assert 'owners' in metric, 'Must have owners for "%s"' % metric['name'] + assert 'enum' in metric or 'units' in metric, 'Metric "%s" must have ' \ + 'a unit listed in "enum" or "units".' % metric['name'] + metrics.append(metric) + return metrics + + +def CreateNode(tree, tag, text): + node = tree.createElement(tag) + node.appendChild(tree.createTextNode(text)) + return node + + +def main(): + """ + argv[1]: The path to the md file. + argv[2]: The relative path of the xml file to be added. + """ + if len(sys.argv) != 3: + sys.stderr.write('Usage: %s \n' % + (sys.argv[0])) + sys.exit(1) + + rel_path = sys.argv[2] + with Trace('Reading histograms.xml') as t: + xml_path = path_util.GetInputFile( + os.path.join('tools', 'metrics', 'histograms', rel_path)) + with open(xml_path, 'rb') as f: + raw_xml = f.read() + + with Trace('Parsing xml') as t: + tree = xml.dom.minidom.parseString(raw_xml) + histograms = tree.getElementsByTagName('histograms') + if histograms.length != 1: + sys.stderr.write('histograms.xml should have exactly one "histograms" ' + 'section.\n'); + sys.exit(1) + histograms = histograms[0] + + with Trace('Parsing md file %s' % (sys.argv[1])) as t: + metrics = GetMetricsFromMdFile(sys.argv[1]) + + with Trace('Adding parsed metrics') as t: + for metric in metrics: + node = tree.createElement('histogram') + node.setAttribute('name', metric['name']) + if 'units' in metric: + node.setAttribute('units', metric['units']) + elif 'enum' in metric: + node.setAttribute('enum', metric['enum']) + owners = metric['owners'].split(',') + for owner in owners: + node.appendChild(CreateNode(tree, 'owner', owner)) + node.appendChild(CreateNode(tree, 'summary', metric['summary'])) + # TODO(sad): This always appends the metric to the list. This should + # also update if there is an already existing metric, instead of adding a + # new one. + histograms.appendChild(node) + + with Trace('Pretty printing into histograms.xml') as t: + new_xml = pretty_print.PrettyPrintHistogramsTree(tree) + with open(xml_path, 'wb') as f: + f.write(new_xml) + + +if __name__ == '__main__': + main() diff --git a/metrics_python_tests.py b/metrics_python_tests.py new file mode 100755 index 000000000000..e6d97536376f --- /dev/null +++ b/metrics_python_tests.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import sys + +THIS_DIR = os.path.abspath(os.path.dirname(__file__)) +SRC_DIR = os.path.dirname(os.path.dirname(THIS_DIR)) +TYP_DIR = os.path.join(SRC_DIR, 'third_party', 'catapult', 'third_party', 'typ') + +if not TYP_DIR in sys.path: + sys.path.insert(0, TYP_DIR) + +import typ + + +def resolve(*paths): + return [os.path.join(THIS_DIR, *(p.split('/'))) for p in paths] + + +sys.exit( + typ.main( + tests=resolve( + 'actions/extract_actions_test.py', + + # TODO(crbug.com/1220251) - the test ordering is very sensitive due to + # potential name collisions between ukm/pretty_print.py and + # histograms/pretty_print.py and the implementation in typ. + # + # Until this issue is fixed, best to ensure that the 'histograms' files + # show up *after* the 'ukm' files (in order for the histograms + # directory to be added to sys.path *before* ukm), and that we run the + # tests in a single process (jobs=1, below). + 'ukm/codegen_test.py', + 'ukm/gen_builders_test.py', + 'ukm/ukm_model_test.py', + 'ukm/xml_validations_test.py', + 'histograms/expand_owners_unittest.py', + 'histograms/extract_histograms_test.py', + 'histograms/generate_expired_histograms_array_unittest.py', + 'histograms/pretty_print_test.py', + '../json_comment_eater/json_comment_eater_test.py', + '../json_to_struct/element_generator_test.py', + '../json_to_struct/struct_generator_test.py', + '../variations/fieldtrial_to_struct_unittest.py', + '../variations/fieldtrial_util_unittest.py', + '../variations/split_variations_cmd_unittest.py', + '../../components/variations/service/' + 'generate_ui_string_overrider_unittest.py', + ), + jobs=1)) diff --git a/structured/OWNERS b/structured/OWNERS new file mode 100644 index 000000000000..7c7e11aae141 --- /dev/null +++ b/structured/OWNERS @@ -0,0 +1,2 @@ +tby@chromium.org +jongahn@chromium.org diff --git a/structured/PRESUBMIT.py b/structured/PRESUBMIT.py new file mode 100644 index 000000000000..21fb32a313a2 --- /dev/null +++ b/structured/PRESUBMIT.py @@ -0,0 +1,50 @@ +# Copyright 2019 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Presubmit script for structured.xml. + +See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts +for more details on the presubmit API built into gcl. +""" + +USE_PYTHON3 = True + +STRUCTURED_XML = 'structured.xml' +STRUCTURED_OLD_XML = 'structured.old.xml' + + +def CheckChange(input_api, output_api): + """ Checks that structured.xml is pretty-printed and well-formatted. """ + errors = [] + + for file in input_api.AffectedTextFiles(): + path = file.AbsoluteLocalPath() + basename = input_api.basename(path) + if input_api.os_path.dirname(path) != input_api.PresubmitLocalPath(): + continue + + if basename == STRUCTURED_XML: + cwd = input_api.os_path.dirname(path) + exit_code = input_api.subprocess.call( + [input_api.python3_executable, 'pretty_print.py', '--presubmit'], + cwd=cwd) + if exit_code != 0: + errors.append( + output_api.PresubmitError( + STRUCTURED_XML + + ' is not prettified; run git cl format to fix.')) + elif basename == STRUCTURED_OLD_XML: + errors.append( + output_api.PresubmitError( + STRUCTURED_OLD_XML + + ' exists after formatting; please remove before upload.')) + + return errors + + +def CheckChangeOnUpload(input_api, output_api): + return CheckChange(input_api, output_api) + +def CheckChangeOnCommit(input_api, output_api): + return CheckChange(input_api, output_api) diff --git a/structured/codegen.py b/structured/codegen.py new file mode 100644 index 000000000000..ef50e2cf230b --- /dev/null +++ b/structured/codegen.py @@ -0,0 +1,344 @@ +# -*- coding: utf-8 -*- +# Copyright 2021 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Objects for describing template code to be generated from structured.xml.""" + +import hashlib +import os +import re +import struct + +import templates_validator as validator_tmpl + + +class Util: + """Helpers for generating C++.""" + + @staticmethod + def sanitize_name(name): + return re.sub('[^0-9a-zA-Z_]', '_', name) + + @staticmethod + def camel_to_snake(name): + pat = '((?<=[a-z0-9])[A-Z]|(?!^)[A-Z](?=[a-z]))' + return re.sub(pat, r'_\1', name).lower() + + @staticmethod + def hash_name(name): + # This must match the hash function in chromium's + # //base/metrics/metric_hashes.cc. >Q means 8 bytes, big endian. + name = name.encode('utf-8') + md5 = hashlib.md5(name) + return struct.unpack('>Q', md5.digest()[:8])[0] + + @staticmethod + def event_name_hash(project_name, event_name): + """Make the name hash for an event. + + This gets uploaded in the StructuredEventProto.event_name_hash field. It is + the sole means of recording which event from structured.xml a + StructuredEventProto instance represents. + + To avoid naming collisions, it must contain three pieces of information: + - the name of the event itself + - the name of the event's project, to avoid collisions with events of the + same name in other projects + - an identifier that this comes from chromium, to avoid collisions with + events and projects of the same name defined in cros's structured.xml + + This must use sanitized names for the project and event. + """ + event_name = Util.sanitize_name(event_name) + project_name = Util.sanitize_name(project_name) + # TODO(crbug.com/1148168): Once the minimum python version is 3.6+, rewrite + # this .format and others using f-strings. + return Util.hash_name('chrome::{}::{}'.format(project_name, event_name)) + + +class FileInfo: + """Codegen-related info about a file.""" + + def __init__(self, dirname, basename): + self.dirname = dirname + self.basename = basename + self.rootname = os.path.splitext(self.basename)[0] + self.filepath = os.path.join(dirname, basename) + + + # This takes the last three components of the filepath for use in the + # header guard, ie. METRICS_STRUCTURED_STRUCTURED_EVENTS_H_ + relative_path = os.sep.join(self.filepath.split(os.sep)[-3:]) + self.guard_path = Util.sanitize_name(relative_path).upper() + + +class ProjectInfo: + """Codegen-related info about a project.""" + + def __init__(self, project): + self.name = Util.sanitize_name(project.name) + self.namespace = Util.camel_to_snake(self.name) + self.name_hash = Util.hash_name(self.name) + self.validator = '{}ProjectValidator'.format(self.name) + self.validator_snake_name = Util.camel_to_snake(self.validator) + self.events = project.events + + # Set ID type. + if project.id == 'uma': + self.id_type = 'kUmaId' + elif project.id == 'per-project': + self.id_type = 'kProjectId' + elif project.id == 'none': + self.id_type = 'kUnidentified' + else: + raise ValueError('Invalid id type.') + + # Set ID scope + if project.scope == 'profile': + self.id_scope = 'kPerProfile' + elif project.scope == 'device': + self.id_scope = 'kPerDevice' + else: + raise ValueError('Invalid id scope.') + + # Set event type. This is inferred by checking all metrics within the + # project. If any of a project's metrics is a raw string, then its events + # are considered raw string events, even if they also contain non-strings. + self.event_type = 'REGULAR' + for event in project.events: + for metric in event.metrics: + if metric.type == 'raw-string': + self.event_type = 'RAW_STRING' + break + + # Check if event is part of an event sequence. Note that this goes after the + # raw string check since the type has higher priority. + if project.is_event_sequence_project: + self.is_event_sequence = 'true' + self.event_type = 'SEQUENCE' + else: + self.is_event_sequence = 'false' + + self.key_rotation_period = project.key_rotation_period + + def build_event_map(self) -> str: + event_infos = (EventInfo(event, self) for event in self.events) + + # Generate map entries. + validator_map_str = ',\n '.join( + '{{"{}", &{}}}'.format(event_info.name, event_info.validator_snake_name) + for event_info in event_infos) + return validator_tmpl.IMPL_PROJECT_EVENT_MAP_TEMPLATE.format( + project=self, event_validator_map=validator_map_str) + + def build_event_validators(self) -> str: + event_infos = (EventInfo(event, self) for event in self.events) + return '\n'.join(event.build_validator_init() for event in event_infos) + + def build_project_init(self) -> str: + return 'static {} {};'.format(self.validator, self.validator_snake_name) + + def build_validator_code(self) -> str: + return validator_tmpl.IMPL_PROJECT_VALIDATOR_TEMPLATE.format(project=self) + + +class EventInfo: + """Codegen-related info about an event.""" + + def __init__(self, event, project_info): + self.name = Util.sanitize_name(event.name) + self.name_hash = Util.event_name_hash(project_info.name, self.name) + self.validator_name = '{}EventValidator'.format(self.name) + self.validator_snake_name = Util.camel_to_snake(self.validator_name) + self.project_name = project_info.name + self.is_event_sequence = project_info.is_event_sequence + self.metrics = event.metrics + + def build_metric_hash_map(self) -> str: + metric_infos = (MetricInfo(metric) for metric in self.metrics) + return ',\n '.join( + '{{\"{}\", {{ Event::MetricType::{}, UINT64_C({})}}}}'.format( + metric_info.name, metric_info.type_enum, metric_info.hash) + for metric_info in metric_infos) + + def build_validator_init(self) -> str: + return ('static {} {};').format(self.validator_name, + self.validator_snake_name) + + def build_validator_code(self) -> str: + if len(self.metrics) > 0: + metadata_impl = validator_tmpl.IMPL_GET_METRICS_METADATA.format( + metric_hash_map=self.build_metric_hash_map()) + else: + metadata_impl = " return absl::nullopt;" + return validator_tmpl.IMPL_EVENT_VALIDATOR_TEMPLATE.format( + event=self, get_metrics_metadata_impl=metadata_impl) + + +class MetricInfo: + """Codegen-related info about a metric.""" + + def __init__(self, metric): + self.name = Util.sanitize_name(metric.name) + self.hash = Util.hash_name(metric.name) + + if metric.type == 'hmac-string': + self.type = 'std::string&' + self.setter = 'AddHmacMetric' + self.type_enum = 'kHmac' + self.base_value = 'base::Value(value)' + elif metric.type == 'int': + self.type = 'int64_t' + self.setter = 'AddIntMetric' + self.type_enum = 'kLong' + self.base_value = 'base::Value(base::NumberToString(value))' + elif metric.type == 'raw-string': + self.type = 'std::string&' + self.setter = 'AddRawStringMetric' + self.type_enum = 'kRawString' + self.base_value = 'base::Value(value)' + elif metric.type == 'double': + self.type = 'double' + self.setter = 'AddDoubleMetric' + self.type_enum = 'kDouble' + self.base_value = 'base::Value(value)' + else: + raise ValueError('Invalid metric type.') + + +class Template: + """Template for producing code from structured.xml.""" + + def __init__(self, model, dirname, basename, file_template, project_template, + event_template, metric_template): + self.model = model + self.dirname = dirname + self.basename = basename + self.file_template = file_template + self.project_template = project_template + self.event_template = event_template + self.metric_template = metric_template + + def write_file(self): + file_info = FileInfo(self.dirname, self.basename) + with open(file_info.filepath, 'w') as f: + f.write(self._stamp_file(file_info)) + + def _stamp_file(self, file_info): + project_code = ''.join( + self._stamp_project(file_info, p) for p in self.model.projects) + + return self.file_template.format(file=file_info, project_code=project_code) + + def _stamp_project(self, file_info, project): + project_info = ProjectInfo(project) + event_code = ''.join( + self._stamp_event(file_info, project_info, event) + for event in project.events) + return self.project_template.format(file=file_info, + project=project_info, + event_code=event_code) + + def _stamp_event(self, file_info, project_info, event): + event_info = EventInfo(event, project_info) + metric_code = ''.join( + self._stamp_metric(file_info, event_info, metric) + for metric in event.metrics) + return self.event_template.format(file=file_info, + project=project_info, + event=event_info, + metric_code=metric_code) + + def _stamp_metric(self, file_info, event_info, metric): + return self.metric_template.format(file=file_info, + event=event_info, + metric=MetricInfo(metric)) + + +class ValidatorHeaderTemplate: + """Template for generating header validator code from structured.xml.""" + + def __init__(self, dirname, basename): + self.dirname = dirname + self.basename = basename + + def write_file(self) -> None: + file_info = FileInfo(self.dirname, self.basename) + with open(file_info.filepath, 'w') as f: + f.write(self._stamp_file(file_info)) + + def _stamp_file(self, file_info) -> str: + return validator_tmpl.HEADER_FILE_TEMPLATE.format(file=file_info) + + +class ValidatorImplTemplate: + """Template for generating implementation validator code from structured.xml. + + The generated file will store a static map containing all the validators + mapped by event name. All validators are initialized statically. + + Almost everything is generated in an anonymous namespace as the generated map + should not be exposed. The generated code will be in the following order: + + 1) EventValidator class implementation. + 2) EventValidator static initialization. + 3) Project map initialization mapping event name to corresponding + EventValidator. + 4) Project class implementation. + 5) Project validator static initialization. + 6) Map initialization mapping project name to ProjectValidator. + """ + + def __init__(self, structured_model, dirname, basename): + self.structured_model = structured_model + self.dirname = dirname + self.basename = basename + self.projects = self.structured_model.projects + + def write_file(self) -> None: + file_info = FileInfo(self.dirname, self.basename) + with open(file_info.filepath, 'w') as f: + f.write(self._stamp_file(file_info)) + + def _stamp_file(self, file_info) -> str: + event_code = [] + event_validators = [] + project_event_maps = [] + project_code = [] + project_validators = [] + + for project in self.projects: + project_info = ProjectInfo(project) + event_infos = (EventInfo(event, project_info) for event in project.events) + project_event_code = '\n'.join(event_info.build_validator_code() + for event_info in event_infos) + + event_code.append(project_event_code) + event_validators.append(project_info.build_event_validators()) + project_event_maps.append(project_info.build_event_map()) + project_code.append(project_info.build_validator_code()) + project_validators.append(project_info.build_project_init()) + + # Turn all lists into strings. + events_code_str = ''.join(event_code) + event_validators_str = '\n'.join(event_validators) + project_event_maps_str = '\n'.join(project_event_maps) + project_code_str = ''.join(project_code) + project_validators_str = '\n'.join(project_validators) + + return validator_tmpl.IMPL_FILE_TEMPLATE.format( + file=file_info, + projects_code=project_code_str, + event_code=events_code_str, + event_validators=event_validators_str, + project_event_maps=project_event_maps_str, + project_validators=project_validators_str, + project_map=self._build_project_map()) + + def _build_project_map(self) -> str: + project_infos = (ProjectInfo(project) for project in self.projects) + project_map = ',\n '.join( + '{{"{}", &{}}}'.format(project.name, project.validator_snake_name) + for project in project_infos) + return validator_tmpl.IMPL_PROJECT_MAP_TEMPLATE.format( + project_map=project_map) diff --git a/structured/codegen_unittest.py b/structured/codegen_unittest.py new file mode 100755 index 000000000000..2c5d3f96422d --- /dev/null +++ b/structured/codegen_unittest.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2021 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Tests for codegen.py. +""" + +# TODO(crbug.com/1148168): Set up these tests to run on the tryjobs. + +import unittest +from codegen import Util + + +class CodegenTest(unittest.TestCase): + """Tests for codegen.py""" + + def test_sanitize_name(self): + self.assertEqual(Util.sanitize_name('My Metric.Or::Event/Or/Project_name'), + 'My_Metric_Or__Event_Or_Project_name') + + def test_camel_to_snake(self): + def check(camel, expected_snake): + self.assertEqual(Util.camel_to_snake(camel), expected_snake) + + check('already_snake_case', 'already_snake_case') + check('ConvertFromCamelCase', 'convert_from_camel_case') + check('HTTPAcronymAtStart', 'http_acronym_at_start') + check('AcronymInHTTPMiddle', 'acronym_in_http_middle') + check('AcronymAtEndHTTP', 'acronym_at_end_http') + + def test_hash_name(self): + # This was generated using the function in Chromium's + # //base/metrics/metrics_hashes.cc. + known_good_hash = 11096769389970233700 + self.assertEqual(Util.hash_name('known good hash'), known_good_hash) + + def test_event_name_hash(self): + # This was generated using the function in Chromium's + # //base/metrics/metrics_hashes.cc for the string + # chrome::TestProjectOne::TestEventOne + event_name_hash = 13593049295042080097 + project_name = 'TestProjectOne' + event_name = 'TestEventOne' + self.assertEqual(Util.event_name_hash(project_name, event_name), + event_name_hash) + + +if __name__ == '__main__': + unittest.main() diff --git a/structured/events.xml b/structured/events.xml new file mode 100644 index 000000000000..6002b8647cc5 --- /dev/null +++ b/structured/events.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/structured/gen_events.py b/structured/gen_events.py new file mode 100755 index 000000000000..95e59468abc9 --- /dev/null +++ b/structured/gen_events.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 +# Copyright 2021 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""A utility for generating classes for structured metrics events. + +Takes as input a structured.xml file describing all events and produces a C++ +header and implementation file exposing builders for those events. +""" + +import argparse +import sys + +import codegen +import model +import templates_events as templates + +parser = argparse.ArgumentParser( + description='Generate structured metrics events') +parser.add_argument('--input', help='Path to structured.xml') +parser.add_argument('--output', help='Path to generated files.') + + +def main(): + args = parser.parse_args() + data = model.Model(open(args.input).read()) + + codegen.Template( + data, + args.output, + 'structured_events.h', + file_template=templates.HEADER_FILE_TEMPLATE, + project_template=templates.HEADER_PROJECT_TEMPLATE, + event_template=templates.HEADER_EVENT_TEMPLATE, + metric_template=templates.HEADER_METRIC_TEMPLATE).write_file() + + codegen.Template(data, + args.output, + 'structured_events.cc', + file_template=templates.IMPL_FILE_TEMPLATE, + project_template=templates.IMPL_PROJECT_TEMPLATE, + event_template=templates.IMPL_EVENT_TEMPLATE, + metric_template=templates.IMPL_METRIC_TEMPLATE).write_file() + + return 0 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/structured/gen_validator.py b/structured/gen_validator.py new file mode 100755 index 000000000000..c609a78f39ca --- /dev/null +++ b/structured/gen_validator.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 +# Copyright 2021 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""A utility for generating the structured metrics validator. + +Takes as input a structured.xml file describing all events and produces a C++ +header and implementation file exposing validator function calls. +""" + +import argparse +import sys + +import codegen +import model + +parser = argparse.ArgumentParser( + description='Generate structured metrics validator') +parser.add_argument('--input', help='Path to structured.xml') +parser.add_argument('--output', help='Path to generated files.') + + +def main(): + args = parser.parse_args() + structured = model.Model(open(args.input).read()) + + codegen.ValidatorHeaderTemplate( + args.output, 'structured_metrics_validator.h').write_file() + + codegen.ValidatorImplTemplate(structured, args.output, + 'structured_metrics_validator.cc').write_file() + + return 0 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/structured/model.py b/structured/model.py new file mode 100644 index 000000000000..0beed77c887d --- /dev/null +++ b/structured/model.py @@ -0,0 +1,278 @@ +# -*- coding: utf-8 -*- +# Copyright 2021 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Model of a structured metrics description xml file. + +This marshals an XML string into a Model, and validates that the XML is +semantically correct. The model can also be used to create a canonically +formatted version XML. +""" + +import xml.etree.ElementTree as ET +import textwrap as tw +import model_util as util +import re + +# Default key rotation period if not explicitly specified in the XML. +DEFAULT_KEY_ROTATION_PERIOD = 90 + +# Project name for event sequencing. +# +# This project name should be consistent with the name in structured.xml as well +# as the server. +EVENT_SEQUENCE_PROJECT_NAME = 'CrOSEvents' + + +def wrap(text, indent): + wrapper = tw.TextWrapper(width=80, + initial_indent=indent, + subsequent_indent=indent) + return wrapper.fill(tw.dedent(text)) + + +# TODO(crbug.com/1148168): This can be removed and replaced with textwrap.indent +# once this is run under python3. +def indent(text, prefix): + return '\n'.join(prefix + line if line else '' for line in text.split('\n')) + + +class Model: + """Represents all projects in the structured.xml file. + + A Model is initialized with an XML string representing the top-level of + the structured.xml file. This file is built from three building blocks: + metrics, events, and projects. These have the following attributes. + + METRIC + - summary + - data type + + EVENT + - summary + - one or more metrics + + PROJECT + - summary + - id specifier + - one or more owners + - one or more events + + The following is an example input XML. + + + + owner@chromium.org + none + profile + My project. + + + My event. + + My metric. + + + + + + Calling str(model) will return a canonically formatted XML string. + """ + + OWNER_REGEX = r'^.+@(chromium\.org|google\.com)$' + NAME_REGEX = r'^[A-Za-z0-9_.]+$' + TYPE_REGEX = r'^(hmac-string|raw-string|int|double)$' + ID_REGEX = r'^(none|per-project|uma)$' + SCOPE_REGEX = r'^(profile|device)$' + KEY_REGEX = r'^[0-9]+$' + CROS_EVENTS_REGEX = r'(?i)(true|false|)$' + + def __init__(self, xml_string): + elem = ET.fromstring(xml_string) + util.check_attributes(elem, set()) + util.check_children(elem, {'project'}) + util.check_child_names_unique(elem, 'project') + + projects = util.get_compound_children(elem, 'project') + self.projects = [Project(p) for p in projects] + + def __repr__(self): + projects = '\n\n'.join(str(p) for p in self.projects) + + result = tw.dedent("""\ + + + {projects} + + """) + return result.format(projects=projects) + + +class Project: + """Represents a single structured metrics project. + + A Project is initialized with an XML node representing one project, eg: + + + owner@chromium.org + none + project + 60 + My project. + + + My event. + + My metric. + + + + + Calling str(project) will return a canonically formatted XML string. + """ + + def __init__(self, elem): + util.check_attributes(elem, {'name'}, {'cros_events'}) + util.check_children(elem, {'id', 'scope', 'summary', 'owner', 'event'}) + util.check_child_names_unique(elem, 'event') + + self.name = util.get_attr(elem, 'name', Model.NAME_REGEX) + self.id = util.get_text_child(elem, 'id', Model.ID_REGEX) + self.scope = util.get_text_child(elem, 'scope', Model.SCOPE_REGEX) + self.summary = util.get_text_child(elem, 'summary') + self.owners = util.get_text_children(elem, 'owner', Model.OWNER_REGEX) + + self.key_rotation_period = DEFAULT_KEY_ROTATION_PERIOD + cros_events_attr = util.get_optional_attr(elem, 'cros_events', + Model.CROS_EVENTS_REGEX) + if cros_events_attr: + self.is_event_sequence_project = cros_events_attr.lower() == 'true' + else: + self.is_event_sequence_project = False + + # Check if key-rotation is specified. If so, then change the + # key_rotation_period. + if elem.find('key-rotation') is not None: + self.key_rotation_period = util.get_text_child(elem, 'key-rotation', + Model.KEY_REGEX) + + self.events = [ + Event(e, self) for e in util.get_compound_children(elem, 'event') + ] + + def __repr__(self): + events = '\n\n'.join(str(e) for e in self.events) + events = indent(events, ' ') + summary = wrap(self.summary, indent=' ') + owners = '\n'.join(' {}'.format(o) for o in self.owners) + if self.is_event_sequence_project: + cros_events_attr = ' cros_events="true"' + else: + cros_events_attr = '' + + result = tw.dedent("""\ + + {owners} + {id} + {scope} + {key_rotation} + + {summary} + + + {events} + """) + return result.format(name=self.name, + cros_events_attr=cros_events_attr, + owners=owners, + id=self.id, + scope=self.scope, + summary=summary, + key_rotation=self.key_rotation_period, + events=events) + + +class Event: + """Represents a single structured metrics event. + + An Event is initialized with an XML node representing one event, eg: + + + My event. + + My metric. + + + + Calling str(event) will return a canonically formatted XML string. + """ + + def __init__(self, elem, project): + util.check_attributes(elem, {'name'}) + + if project.is_event_sequence_project: + expected_children = {'summary'} + else: + expected_children = {'summary', 'metric'} + + util.check_children(elem, expected_children) + + util.check_child_names_unique(elem, 'metric') + + self.name = util.get_attr(elem, 'name', Model.NAME_REGEX) + self.summary = util.get_text_child(elem, 'summary') + self.metrics = [ + Metric(m, project) for m in util.get_compound_children( + elem, 'metric', project.is_event_sequence_project) + ] + + def __repr__(self): + metrics = '\n'.join(str(m) for m in self.metrics) + metrics = indent(metrics, ' ') + summary = wrap(self.summary, indent=' ') + result = tw.dedent("""\ + + + {summary} + + {metrics} + """) + return result.format(name=self.name, summary=summary, metrics=metrics) + + +class Metric: + """Represents a single metric. + + A Metric is initialized with an XML node representing one metric, eg: + + + My metric. + + + Calling str(metric) will return a canonically formatted XML string. + """ + + def __init__(self, elem, project): + util.check_attributes(elem, {'name', 'type'}) + util.check_children(elem, {'summary'}) + + self.name = util.get_attr(elem, 'name', Model.NAME_REGEX) + self.type = util.get_attr(elem, 'type', Model.TYPE_REGEX) + self.summary = util.get_text_child(elem, 'summary') + + if self.type == 'raw-string' and ( + project.id != 'none' and project.name != EVENT_SEQUENCE_PROJECT_NAME): + util.error( + elem, 'raw-string metrics must be in a project with id type ' + "'none' or project name '{}', but {} has id type '{}'".format( + EVENT_SEQUENCE_PROJECT_NAME, project.name, project.id)) + + def __repr__(self): + summary = wrap(self.summary, indent=' ') + result = tw.dedent("""\ + + + {summary} + + """) + return result.format(name=self.name, type=self.type, summary=summary) diff --git a/structured/model_unittest.py b/structured/model_unittest.py new file mode 100755 index 000000000000..f20ad5f314b8 --- /dev/null +++ b/structured/model_unittest.py @@ -0,0 +1,324 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2021 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Tests for model.py.""" + +# TODO(crbug.com/1148168): Set up these tests to run on the tryjobs. + +import model +import unittest + +from model import Model + + +class ModelTest(unittest.TestCase): + """Tests for model.py""" + + def assert_project(self, project, name, id_, summary, owners, + key_rotation_period): + self.assertEqual(project.name, name) + self.assertEqual(project.id, id_) + self.assertEqual(project.summary.strip(), summary) + self.assertEqual(len(project.owners), len(owners)) + for actual, expected in zip(project.owners, owners): + self.assertEqual(actual, expected) + self.assertEqual(int(project.key_rotation_period), key_rotation_period) + + def assert_event(self, event, name, summary): + self.assertEqual(event.name, name) + self.assertEqual(event.summary.strip(), summary) + + def assert_metric(self, metric, name, type_, summary): + self.assertEqual(metric.name, name) + self.assertEqual(metric.type, type_) + self.assertEqual(metric.summary.strip(), summary) + + def assert_model_raises(self, xml): + raised = False + try: + Model(xml) + except ValueError: + raised = True + self.assertTrue(raised) + + def test_valid_xml(self): + xml = """\ + + + test1@chromium.org + test2@chromium.org + none + profile + Test project. + 65 + + + Test event. + + Test metric. + + + Test metric. + + + + + Test event. + + Test metric. + + + + + + test@chromium.org + uma + device + Test project. + + + Test event. + + Test metric. + + + + """ + + data = Model(xml) + + self.assertEqual(len(data.projects), 2) + project_one, project_two = data.projects + self.assert_project(project_one, 'ProjectOne', 'none', 'Test project.', + ('test1@chromium.org', 'test2@chromium.org'), 65) + self.assert_project(project_two, 'ProjectTwo', 'uma', 'Test project.', + ('test@chromium.org', ), + model.DEFAULT_KEY_ROTATION_PERIOD) + + self.assertEqual(len(project_one.events), 2) + self.assertEqual(len(project_two.events), 1) + event_one, event_two = project_one.events + event_three, = project_two.events + self.assert_event(event_one, 'EventOne', 'Test event.') + self.assert_event(event_two, 'EventTwo', 'Test event.') + self.assert_event(event_three, 'EventThree', 'Test event.') + + self.assertEqual(len(event_one.metrics), 2) + self.assertEqual(len(event_two.metrics), 1) + self.assertEqual(len(event_three.metrics), 1) + metric_one, metric_two = event_one.metrics + metric_three, = event_two.metrics + metric_four, = event_three.metrics + self.assert_metric(metric_one, 'MetricOne', 'int', 'Test metric.') + self.assert_metric(metric_two, 'MetricTwo', 'hmac-string', 'Test metric.') + self.assert_metric(metric_three, 'MetricThree', 'int', 'Test metric.') + self.assert_metric(metric_four, 'MetricFour', 'int', 'Test metric.') + + def test_owners_validation(self): + # No owner for project. + self.assert_model_raises("""\ + + + uma + Test project. + + Test event. + + Test metric. + + + + """) + + # Owner is username not email. + self.assert_model_raises("""\ + + + test@ + uma + Test project. + + Test event. + + Test metric. + + + + """) + + def test_id_validation(self): + # Missing ID + self.assert_model_raises("""\ + + + test@chromium.org + Test project. + + Test event. + + Test metric. + + + + """) + + # Invalid ID + self.assert_model_raises("""\ + + + test@chromium.org + invalid value + Test project. + + Test event. + + Test metric. + + + + """) + + def test_type_validation(self): + # Missing type + self.assert_model_raises("""\ + + + test@chromium.org + none + Test project. + + Test event. + + Test metric. + + + + """) + + # Invalid type + self.assert_model_raises("""\ + + + test@chromium.org + none + Test project. + + Test event. + + Test metric. + + + + """) + + def test_duplicate_summaries(self): + self.assert_model_raises("""\ + + + test@chromium.org + none + Test project. + Test project. + + Test event. + + Test metric. + + + + """) + + def test_duplicate_project_names(self): + # Two projects with name "Duplicate" + self.assert_model_raises("""\ + + + test@ + uma + Test project. + + Test event. + + Test metric. + + + + + test@ + uma + Test project. + + Test event. + + Test metric. + + + + """) + + def test_duplicate_event_names(self): + # Two events with name "Duplicate" + self.assert_model_raises("""\ + + + test@ + uma + Test project. + + Test event. + + Test metric. + + + + Test event. + + Test metric. + + + + """) + + def test_duplicate_metric_names(self): + # Two metrics with name "Duplicate" + self.assert_model_raises("""\ + + + test@ + uma + Test project. + + Test event. + + Test metric. + + + Test metric. + + + + """) + + def test_key_rotation_validation(self): + # Key rotation not a number. + self.assert_model_raises("""\ + + + uma + Test project. + test@chromium.org + NaN123 + + Test event. + + Test metric. + + + + """) + + +if __name__ == '__main__': + unittest.main() diff --git a/structured/model_util.py b/structured/model_util.py new file mode 100644 index 000000000000..7311a166b4bc --- /dev/null +++ b/structured/model_util.py @@ -0,0 +1,143 @@ +# -*- coding: utf-8 -*- +# Copyright 2021 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Utilities for parsing structured.xml. + +Functions in this module raise an error if constraints on the format of the +structured.xml file are not met. + +Functions use the concept of 'compound' and 'text' XML nodes. + - compound nodes can have attributes and child nodes, but no text + - text nodes can have text, but no attributes or child nodes +""" + +import collections +import re + + +def error(elem, msg): + """Raise a nicely formatted error with some context.""" + name = elem.attrib.get("name", None) + name = name + " " if name else "" + msg = "Structured metrics error, {} node {}: {}.".format(elem.tag, name, msg) + raise ValueError(msg) + + +def get_attr(elem, tag, regex=None): + """Get an attribute. + + Error if it is missing, optionally error if it doesn't match the provided + regex. + """ + attr = elem.attrib.get(tag, None) + if not attr: + error(elem, "missing attribute '{}'".format(tag)) + if regex and not re.match(regex, attr): + error(elem, ("has '{}' attribute '{}' which does " + "not match regex '{}'").format(tag, attr, regex)) + return attr + + +def get_optional_attr(elem, tag, regex=None): + """Get an attribute. + + Returns None if it doesn't exist. + """ + attr = elem.attrib.get(tag) + if not attr: + return None + if regex and not re.match(regex, attr): + error(elem, ("has '{}' attribute '{}' which does " + "not match regex '{}'").format(tag, attr, regex)) + return attr + + +def get_compound_children(elem, tag, allow_missing_children=False): + """Get all child nodes of `elem` with tag `tag`. + + Error if none exist, or a child is not a compound node. + """ + children = elem.findall(tag) + if not children and not allow_missing_children: + error(elem, "missing node '{}'".format(tag)) + for child in children: + if child.text and child.text.strip(): + error(child, "contains text, but shouldn't") + return children + + +def get_compound_child(elem, tag): + """Get the child of `elem` with tag `tag`. + + Error if there isn't exactly one matching child, or it isn't compound. + """ + children = elem.findall(tag) + if len(children) != 1: + error(elem, "needs exactly one '{}' node".format(tag)) + return children[0] + + +def get_text_children(elem, tag, regex=None): + """Get the text of all child nodes of `elem` with tag `tag`. + + Error if none exist, or a child is not a text node. Optionally ensure the + text matches `regex`. + """ + children = elem.findall(tag) + if not children: + error(elem, "missing node '{}'".format(tag)) + + result = [] + for child in children: + check_attributes(child, set()) + check_children(child, set()) + text = child.text.strip() + if not text: + error(elem, "missing text in '{}'".format(tag)) + if regex and not re.match(regex, text): + error(elem, ("has '{}' node '{}' which does " + "not match regex '{}'").format(tag, text, regex)) + result.append(text) + return result + + +def get_text_child(elem, tag, regex=None): + """Get the text of the child of `elem` with tag `tag`. + + Error if there isn't exactly one matching child, or it isn't a text node. + Optionally ensure the text matches `regex`. + """ + result = get_text_children(elem, tag, regex) + if len(result) != 1: + error(elem, "needs exactly one '{}' node".format(tag)) + return result[0] + + +def check_attributes(elem, expected_attrs, optional_attrs=None): + """Ensure `elem` has no attributes except those in `expected_attrs`.""" + actual_attrs = set(elem.attrib.keys()) + unexpected_attrs = actual_attrs - set(expected_attrs) + if optional_attrs: + unexpected_attrs = unexpected_attrs - set(optional_attrs) + if unexpected_attrs: + attrs = " ".join(unexpected_attrs) + error(elem, "has unexpected attributes: " + attrs) + + +def check_children(elem, expected_children): + """Ensure all children in `expected_children` are in `elem`.""" + actual_children = {child.tag for child in elem} + unexpected_children = set(expected_children) - actual_children + if unexpected_children: + children = " ".join(unexpected_children) + error(elem, "is missing nodes: " + children) + + +def check_child_names_unique(elem, tag): + """Ensure uniqueness of the 'name' of all children of `elem` with `tag`.""" + names = [child.attrib.get("name", None) for child in elem if child.tag == tag] + name_counts = collections.Counter(names) + has_duplicates = any(c > 1 for c in name_counts.values()) + if has_duplicates: + error(elem, "has {} nodes with duplicate names".format(tag)) diff --git a/structured/pretty_print.py b/structured/pretty_print.py new file mode 100755 index 000000000000..427fdb19f74f --- /dev/null +++ b/structured/pretty_print.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import sys + +import model + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import presubmit_util + +def main(argv): + dirname = os.path.dirname(os.path.realpath(__file__)) + xml = dirname + '/structured.xml' + old_xml = dirname + '/structured.old.xml' + presubmit_util.DoPresubmitMain(argv, xml, + old_xml, lambda x: repr(model.Model(x))) + + +if '__main__' == __name__: + sys.exit(main(sys.argv)) diff --git a/structured/structured.xml b/structured/structured.xml new file mode 100644 index 000000000000..52f8f56208a0 --- /dev/null +++ b/structured/structured.xml @@ -0,0 +1,869 @@ + + + + jackshira@chromium.org + chromeos-cross-device-eng@google.com + none + profile + 30 + + Metrics for the ChromeOS Fast Pair implementation. + + + + + The user is shown a notification which can start the pairing process. + + + + The pairing protocol of the discovered device. + + + + + The Fast Pair spec version the device implements. + + + + + The model ID of the discovered device. + + + + + The inquiry RSSI of the discovered device, recorded at the time of metrics + emission, with a range of -128 to 127. If inquiry RSSI is unknown, + we report -129. + + + + + The inquiry TxPower of the discovered device, recorded at the time of + metrics emission, with a range of -128 to 127. If inquiry TxPower is + unknown, we report -129. + + + + + + + The starting of the pairing process. + + + + The pairing protocol being started. + + + + + The Fast Pair spec version the device implements. + + + + + The model ID of the device being paired. + + + + + The inquiry RSSI of the pairing device, recorded at the time of metrics + emission, with a range of -128 to 127. If inquiry RSSI is unknown, + we report -129. + + + + + The inquiry TxPower of the pairing device, recorded at the time of metrics + emission, with a range of -128 to 127. If inquiry TxPower is + unknown, we report -129. + + + + + + + The end of the pairing process. + + + + The pairing protocol being started. + + + + + The Fast Pair spec version the device implements. + + + + + The model ID of the device being paired. + + + + + The inquiry RSSI of the paired device, recorded at the time of metrics + emission, with a range of -128 to 127. If inquiry RSSI is unknown, + we report -129. + + + + + The inquiry TxPower of the paired device, recorded at the time of metrics + emission, with a range of -128 to 127. If inquiry TxPower is + unknown, we report -129. + + + + + + + The pairing process failed for the provided reason. + + + + The pairing protocol being started. + + + + + The Fast Pair spec version the device implements. + + + + + The pairing failure reason. + + + + + The model ID of the device being paired. + + + + + + + charleszhao@chromium.org + tby@chromium.org + per-project + profile + 90 + + Project for recording CrOSActions. + + + + + Records whenever a file is opened in the File App on ChromeOS. + + + + The absolute path of the file. + + + + + The type of file open, defined in FileTaskObserver::OpenType. + + + + + Sequence of this action across all CrOSActionEvent. + + + + + Time in milliseconds since last CrOSActionLogging. + + + + + + + Records information about the launch of an item from ChromeOS launcher. + + + + The search query associated with this launch. + + + + + Which type of search provider the launched result was created by. + + + + + The ID of the launched result result. For example, the app ID for app + results, or the URL for omnibox results. + + + + + Sequence of this action across all CrOSActionEvent. + + + + + Time in milliseconds since last CrOSActionLogging. + + + + + + + Records when a setting is changed; only records quick settings for now. + + + + Value of the setting after the change. + + + + + Value of the setting before the change. + + + + + Sequence of this action across all CrOSActionEvent. + + + + + The setting id (in ash::ml::UserSettingsEvent::Event::SettingId) that + represents the type of the changed setting. + + + + + Enum that represents where the settings event originated from (in + ash::ml::UserSettingsEvent::Event::SettingType). + + + + + Time in milliseconds since last CrOSActionLogging. + + + + + + + Records a tab activity of navigating to a new url. + + + + The types of transition between pages. See more on ui::PageTransition. + + + + + Sequence of this action across all CrOSActionEvent. + + + + + Time in milliseconds since last CrOSActionLogging. + + + + + The URL of the current event. + + + + + The visibility of this url, see more on content::Visibility. + + + + + + + Records a tab activity of opening a new url with ctrl+click. + + + + Sequence of this action across all CrOSActionEvent. + + + + + Time in milliseconds since last CrOSActionLogging. + + + + + The URL of the current event. + + + + + The URL that is opened from the current url. + + + + + Enum that indicates where the new tab is opened, see more on + WindowOpenDisposition. + + + + + + + Records a tab activity of reactivating an existing tab. + + + + Sequence of this action across all CrOSActionEvent. + + + + + Time in milliseconds since last CrOSActionLogging. + + + + + The URL of the current event. + + + + + + + tby@chromium.org + per-project + profile + 90 + + See event summary. + + + + + Records information about the launch of an item (such as an app or a file) + from the ChromeOS launcher. One event is recorded for every launch + originating from any launcher UI component, and this is the only + circumstance that records events. + + + + App ID of the most-recently-opened app when this launch occured. This can be + an app ID of a Chrome app, Arc++ app, or PWA. + + + + + The most-recently-visited domain when this launch ocurred. + + + + + The hour of launch. This is the user's local time rounded to the nearest + hour, 0 to 23 inclusive. + + + + + Which type of search provider the launched result was created by. This comes + from the AppListSearchResultType enum. + + + + + The relevance score of the launched result. This is a double multiplied by + 1000 and cast to an int64. Results that don't have a score report 0. + + + + + The search query associated with this launch. Before hashing, the query is + the empty string if there was no search query. + + + + + String length of the search query associated with this launch. If there was + no query, this is zero. + + + + + The target item of this launch, eg. an app ID, filepath, or omnibox URL. + + + + + + + pdyson@chromium.org + per-project + device + 90 + + Project for recording events to monitor the creation of Neutrino Devices. + + + + + Records the client id being changed to a new value. This does not include + when the client id is cleared (see ClientIdCleared below). + + + + The client id before it is changed. + + + + + The client id after it is changed. + + + + + The time since installation. Recorded as the integer floor of the log + base 2 of the time duration measured in days. Negative values indicate + periods shorter than one day. + + + + + The time since metrics enabled. Recorded as the integer floor of the log + base 2 of the time duration measured in days. Negative values indicate + periods shorter than one day. + + + + + An integer indicating the location in the code. This can be used to perform + a partial stack trace to see which code was executed in the lead up to the + client id being changed. + + + + + The number of days since the key was rotated. + + + + + + + Records when the client id is cleared. + + + + The client id before it is changed. + + + + + The time since installation. Recorded as the integer floor of the log + base 2 of the time duration measured in days. Negative values indicate + periods shorter than one day. + + + + + The time since metrics enabled. Recorded as the integer floor of the log + base 2 of the time duration measured in days. Negative values indicate + periods shorter than one day. + + + + + + + Records the enrollment status, either managed or unmanaged. + + + + The client id. + + + + + An integer indicating the location in the code. This can be used to perform + a partial stack trace to see which code was executed in the lead up to the + client id being changed. + + + + + Whether the device is managed. 1: Managed, 0: Unmanaged. + + + + + Whether the metrics reporting policy is managed. 1: Managed, 0: + Unmanaged. + + + + + + + Records that execution reached a particular point in the code. + + + + The client id. + + + + + An integer indicating the location in the code. This can be used to perform + a partial stack trace to see which code was executed in the lead up to the + client id being changed. + + + + + + + jongahn@chromium.org + tby@chromium.org + per-project + device + 90 + + Structured Metrics is a logging framework for events. This project is used + for monitoring the framework itself. + + + + + Records metadata about initialization of Structured Metrics and will be + recorded immediately after initialization is successful. Will be sent once + per initialization during browser process initialization. + + + + The platform for which the client is initialized on. 0: Uninitialized, 1: + ASH_CHROME, 2: LACROS_CHROME. + + + + + + + jongahn@chromium.org + per-project + device + 120 + + Project used to record a sequence of events that are related to each other. + + + + + Recorded whenever a new app is installed on Chrome OS. + + + + Key that identifies an app. + + + + + The type of app that was installed (ie ARC, native, Crostini, etc.). + + + + + Origin from which the app was installed (ie launcher, playstore). + + + + + Reason for which the app was installed. + + + + + + + Recorded whenever a new app is launched on Chrome OS. + + + + Key that identifies an app. + + + + + The type of app that was installed (ie ARC, native, Crostini, etc.). + + + + + From where the app was launched from (ie launcher, shelf). + + + + + + + Recorded whenever an app is uninstalled on Chrome OS. + + + + Key that identifies an app. + + + + + The type of app that was installed (ie ARC, native, Crostini, etc.). + + + + + From where the app was uninstalled. + + + + + + + Recorded when a change in an app state has been detected. + + + + Key that identifies an app. + + + + + Denotes a change in an app state. 0 - INACTIVE, 1 - ACTIVE, 2 - CLOSED. + + + + + + + Event collected if the launcher is opened. This is recorded when a zero- + state query is initiated. + + + + + + + Event collected if a result iis opened in the launcher. + + + + Score that represents how close the initial query was to the app result + selected. A score of 1.0 represents an exact match. + + + + + App ID that identifies an app on the client. This will only be recorded if + the user has consented into app-sync. + + + + + Name of the app that was launched. Names are UTF-16 string encoding. + + + + + Enum representing the category of app the result is. This enum should map to + ash::SearchResultType. + + + + + + + An event to signify a user is using the system. + + + + + + + An event to signify a user explicitly logged out of the system. + + + + + + + An event to signify the system has gone to sleep. + + + + The reason the system was suspended, maps to the SuspendImminent::Reason. + + + + + + + Test event used for unit tests to ensure that the code-gen for the event + sequence project is working properly. + + + + Test metric1 + + + + + + + Test event for events without metrics. + + + + + + + tby@chromium.org + per-project + profile + 90 + + Project for unit testing, do not use. + + + + + Event for unit testing, do not use. + + + + A per-user keyed hashed value. + + + + + An unhashed value, recorded as-is. + + + + + + + tby@chromium.org + per-project + profile + 90 + + Project for unit testing, do not use. + + + + + Event for unit testing, do not use. + + + + A per-user keyed hashed value. + + + + + + + Event for unit testing, do not use. + + + + A per-user keyed hashed value. + + + + + + + tby@chromium.org + uma + profile + 90 + + Project for unit testing, do not use. + + + + + Event for unit testing, do not use. + + + + An unhashed value, recorded as-is. + + + + + + + tby@chromium.org + per-project + device + 90 + + Project for unit testing, do not use. + + + + + Event for unit testing, do not use. + + + + A per-device keyed hashed value. + + + + + + + tby@chromium.org + none + profile + 90 + + Project for unit testing, do not use. + + + + + Event for unit testing, do not use. + + + + A unhashed string value. + + + + + + + andrewbregger@google.com + none + profile + 90 + + Project for unit testing, do not use. + + + + + Event for unit testing, do not use. + + + + A floating point value. + + + + + + \ No newline at end of file diff --git a/structured/templates_events.py b/structured/templates_events.py new file mode 100644 index 000000000000..56e3535e8837 --- /dev/null +++ b/structured/templates_events.py @@ -0,0 +1,103 @@ +# -*- coding: utf-8 -*- +# Copyright 2021 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Templates for generating event builder classes for structured metrics.""" + +HEADER_FILE_TEMPLATE = """ +// Generated from gen_events.py. DO NOT EDIT! +// source: structured.xml + +#ifndef {file.guard_path} +#define {file.guard_path} + +#include +#include + +#include "components/metrics/structured/event.h" + +namespace metrics {{ +namespace structured {{ +namespace events {{ +namespace v2 {{ + +{project_code} + +}} // namespace v2 +}} // namespace events +}} // namespace structured +}} // namespace metrics + +#endif // {file.guard_path}\ +""" + +HEADER_PROJECT_TEMPLATE = """\ +namespace {project.namespace} {{ + +{event_code}\ +}} // namespace {project.namespace} + +""" + +HEADER_EVENT_TEMPLATE = """\ +class {event.name} final : public ::metrics::structured::Event {{ + public: + {event.name}(); + ~{event.name}() override; + + {metric_code}\ +}}; + +""" + +HEADER_METRIC_TEMPLATE = """\ + {event.name}& Set{metric.name}(const {metric.type} value); +""" + +IMPL_FILE_TEMPLATE = """\ +// Generated from gen_events.py. DO NOT EDIT! +// source: structured.xml + +#include "components/metrics/structured/{file.rootname}.h" + +#include "base/strings/string_number_conversions.h" +#include "base/values.h" + +namespace metrics {{ +namespace structured {{ +namespace events {{ +namespace v2 {{ + +{project_code} +}} // namespace v2 +}} // namespace events +}} // namespace structured +}} // namespace metrics\ +""" + +IMPL_PROJECT_TEMPLATE = """\ +namespace {project.namespace} {{ + +{event_code}\ +}} // namespace {project.namespace} + +""" + +IMPL_EVENT_TEMPLATE = """\ +{event.name}::{event.name}() : + ::metrics::structured::Event(\"{event.project_name}\", + \"{event.name}\", + {event.is_event_sequence}) {{}} +{event.name}::~{event.name}() = default; + +{metric_code}\ +""" + +IMPL_METRIC_TEMPLATE = """\ +{event.name}& {event.name}::Set{metric.name}(const {metric.type} value) {{ + AddMetric(\"{metric.name}\", Event::MetricType::{metric.type_enum}, + {metric.base_value}); + return *this; +}} + +""" diff --git a/structured/templates_validator.py b/structured/templates_validator.py new file mode 100644 index 000000000000..cd4548d97a66 --- /dev/null +++ b/structured/templates_validator.py @@ -0,0 +1,174 @@ +# -*- coding: utf-8 -*- +# Copyright 2021 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +HEADER_FILE_TEMPLATE = """\ +// Generated from gen_validator.py. DO NOT EDIT! +// source: structured.xml + +#ifndef {file.guard_path} +#define {file.guard_path} + +#include + +#include "components/metrics/structured/project_validator.h" +#include "third_party/abseil-cpp/absl/types/optional.h" + +namespace metrics {{ +namespace structured {{ +namespace validator {{ + +absl::optional + GetProjectValidator(const std::string& project_name); + +}} // namespace validator +}} // namespace structured +}} // namespace metrics + +#endif // {file.guard_path}\ +""" + +IMPL_FILE_TEMPLATE = """\ +// Generated from gen_validator.py. DO NOT EDIT! +// source: structured.xml + +#include "components/metrics/structured/structured_metrics_validator.h" + +#include +#include + +#include "base/containers/fixed_flat_map.h" +#include "base/strings/string_piece.h" +#include "components/metrics/structured/enums.h" +#include "components/metrics/structured/event.h" +#include "components/metrics/structured/event_validator.h" +#include "components/metrics/structured/project_validator.h" +#include "third_party/abseil-cpp/absl/types/optional.h" +#include "third_party/metrics_proto/structured_data.pb.h" + +namespace metrics {{ +namespace structured {{ + +namespace {{ + +//---------------------EventValidator Classes---------------------------------- +{event_code} +//---------------------EventValidator Declarations------------------------------ +{event_validators} +//---------------------EventValidator Maps-------------------------------------- +{project_event_maps} +//---------------------ProjectValidator Classes--------------------------------- +{projects_code} +//---------------------ProjectValidator Declarations---------------------------- +{project_validators} +//---------------------ProjectValidator Map------------------------------------- +{project_map} + +}} + +namespace validator {{ + +absl::optional + GetProjectValidator(const std::string& project_name) {{ + const auto it = kStructuredMetricsProjectValidatorMap.find(project_name); + if (it == kStructuredMetricsProjectValidatorMap.end()) + return absl::nullopt; + return it->second; +}} + +}} // namespace validator +}} // namespace structured +}} // namespace metrics\ +""" + +IMPL_PROJECT_VALIDATOR_TEMPLATE = """\ +class {project.validator} final : + public ::metrics::structured::ProjectValidator {{ + public: + {project.validator}(); + ~{project.validator}(); + + absl::optional GetEventValidator( + const std::string& event_name) const override; + + static constexpr uint64_t kProjectNameHash = UINT64_C({project.name_hash}); + static constexpr IdType kIdType = IdType::{project.id_type}; + static constexpr IdScope kIdScope = IdScope::{project.id_scope}; + static constexpr EventType kEventType = + StructuredEventProto_EventType_{project.event_type}; + static constexpr int kKeyRotationPeriod = + {project.key_rotation_period}; +}}; + +{project.validator}::{project.validator}() : + ::metrics::structured::ProjectValidator( + {project.validator}::kProjectNameHash, + {project.validator}::kIdType, + {project.validator}::kIdScope, + {project.validator}::kEventType, + {project.validator}::kKeyRotationPeriod +) + {{}} + +{project.validator}::~{project.validator}() = default; + +absl::optional {project.validator}::GetEventValidator( + const std::string& event_name) const {{ + const auto it = k{project.validator}EventMap.find(event_name); + if (it == k{project.validator}EventMap.end()) + return absl::nullopt; + return it->second; +}} +""" + +IMPL_PROJECT_EVENT_MAP_TEMPLATE = """\ +static constexpr auto k{project.validator}EventMap = base::MakeFixedFlatMap + ({{ + {event_validator_map} +}}); +""" + +IMPL_PROJECT_MAP_TEMPLATE = """\ +static constexpr auto kStructuredMetricsProjectValidatorMap = + base::MakeFixedFlatMap({{ + {project_map} +}}); +""" + +IMPL_EVENT_VALIDATOR_TEMPLATE = """\ +class {event.validator_name} final : + public ::metrics::structured::EventValidator {{ + public: + {event.validator_name}(); + ~{event.validator_name}() override; + + static constexpr uint64_t kEventNameHash = UINT64_C({event.name_hash}); + + absl::optional + GetMetricMetadata(const std::string& metric_name) const override; +}}; + +{event.validator_name}::{event.validator_name}() : + ::metrics::structured::EventValidator({event.validator_name}::kEventNameHash) + {{}} + +{event.validator_name}::~{event.validator_name}() = default; + +absl::optional +{event.validator_name}::GetMetricMetadata(const std::string& metric_name) +const {{ + {get_metrics_metadata_impl} +}} +""" + +IMPL_GET_METRICS_METADATA = """\ +static constexpr auto metric_hash_map = base::MakeFixedFlatMap< + base::StringPiece, EventValidator::MetricMetadata>({{ + {metric_hash_map} + }}); + const auto* it = metric_hash_map.find(metric_name); + if (it == metric_hash_map.end()) + return absl::nullopt; + return it->second; +""" diff --git a/ukm/.gitignore b/ukm/.gitignore new file mode 100644 index 000000000000..753bc09478f2 --- /dev/null +++ b/ukm/.gitignore @@ -0,0 +1 @@ +ukm.old.xml diff --git a/ukm/OWNERS b/ukm/OWNERS new file mode 100644 index 000000000000..64076caf6cb6 --- /dev/null +++ b/ukm/OWNERS @@ -0,0 +1,3 @@ +# Metrics changes should always be reviewed by owners. +per-file ukm.xml=file://tools/metrics/ukm/PRIVACY_OWNERS +per-file ukm.xml=set noparent diff --git a/ukm/PRESUBMIT.py b/ukm/PRESUBMIT.py new file mode 100644 index 000000000000..50a0ec5d1a39 --- /dev/null +++ b/ukm/PRESUBMIT.py @@ -0,0 +1,52 @@ +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Presubmit script for ukm.xml. + +See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts +for more details on the presubmit API built into gcl. +""" + +USE_PYTHON3 = True + +UKM_XML = 'ukm.xml' + + +def CheckChange(input_api, output_api): + """Checks that ukm.xml is pretty-printed and well-formatted.""" + for f in input_api.AffectedTextFiles(): + p = f.AbsoluteLocalPath() + if (input_api.basename(p) == UKM_XML + and input_api.os_path.dirname(p) == input_api.PresubmitLocalPath()): + cwd = input_api.os_path.dirname(p) + + exit_code = input_api.subprocess.call( + [input_api.python3_executable, 'pretty_print.py', '--presubmit'], + cwd=cwd) + if exit_code != 0: + return [ + output_api.PresubmitError( + '%s is not prettified; run git cl format to fix.' % UKM_XML), + ] + + exit_code = input_api.subprocess.call( + [input_api.python3_executable, 'validate_format.py', '--presubmit'], + cwd=cwd) + if exit_code != 0: + return [ + output_api.PresubmitError( + '%s does not pass format validation; run %s/validate_format.py ' + 'and fix the reported error(s) or warning(s).' % + (UKM_XML, input_api.PresubmitLocalPath())), + ] + + return [] + + +def CheckChangeOnUpload(input_api, output_api): + return CheckChange(input_api, output_api) + + +def CheckChangeOnCommit(input_api, output_api): + return CheckChange(input_api, output_api) diff --git a/ukm/PRIVACY_OWNERS b/ukm/PRIVACY_OWNERS new file mode 100644 index 000000000000..c09fedd0406d --- /dev/null +++ b/ukm/PRIVACY_OWNERS @@ -0,0 +1,10 @@ +# UKM metrics require additional privacy considerations, so they use +# a narrower set of reviewers than the rest of metrics codebase. +# +# Please make sure that your UKM collection proposal is approved by +# the privacy team before sending out your CL for review. + +asvitkine@chromium.org +jwd@chromium.org +rkaplow@chromium.org +yrsun@chromium.org diff --git a/ukm/builders_template.py b/ukm/builders_template.py new file mode 100644 index 000000000000..aa04be55790c --- /dev/null +++ b/ukm/builders_template.py @@ -0,0 +1,94 @@ +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Templates for generating builder classes for UKM entries.""" + +import codegen + +HEADER = codegen.Template(basename="ukm_builders.h", + file_template=""" +// Generated from gen_builders.py. DO NOT EDIT! +// source: ukm.xml + +#ifndef {file.guard_path} +#define {file.guard_path} + +#include + +#include "services/metrics/public/cpp/ukm_entry_builder_base.h" + +namespace ukm {{ +namespace builders {{ + +{event_code} + +}} // namespace builders +}} // namespace ukm + +#endif // {file.guard_path} +""", + event_template=""" +class {event.name} final : public ::ukm::internal::UkmEntryBuilderBase {{ + public: + explicit {event.name}(ukm::SourceId source_id); + explicit {event.name}(ukm::SourceIdObj source_id); + ~{event.name}() override; + + static const char kEntryName[]; + static constexpr uint64_t kEntryNameHash = UINT64_C({event.hash}); + +{metric_code} +}}; +""", + metric_template=""" + static const char k{metric.name}Name[]; + static constexpr uint64_t k{metric.name}NameHash = UINT64_C({metric.hash}); + {event.name}& Set{metric.name}(int64_t value); +""") + +IMPL = codegen.Template(basename="ukm_builders.cc", + file_template=""" +// Generated from gen_builders.py. DO NOT EDIT! +// source: ukm.xml + +#include "{file.dir_path}ukm_builders.h" + +namespace ukm {{ +namespace builders {{ + +{event_code} + +}} // namespace builders +}} // namespace ukm +""", + event_template=""" +const char {event.name}::kEntryName[] = "{event.raw_name}"; +const uint64_t {event.name}::kEntryNameHash; + +{event.name}::{event.name}(ukm::SourceId source_id) : + ::ukm::internal::UkmEntryBuilderBase(source_id, kEntryNameHash) {{ +}} + +{event.name}::{event.name}(ukm::SourceIdObj source_id) : + ::ukm::internal::UkmEntryBuilderBase(source_id, kEntryNameHash) {{ +}} + +{event.name}::~{event.name}() = default; + +{metric_code} +""", + metric_template=""" +const char {event.name}::k{metric.name}Name[] = "{metric.raw_name}"; +const uint64_t {event.name}::k{metric.name}NameHash; + +{event.name}& {event.name}::Set{metric.name}(int64_t value) {{ + SetMetricInternal(k{metric.name}NameHash, value); + return *this; +}} +""") + + +def WriteFiles(outdir, relpath, data): + HEADER.WriteFile(outdir, relpath, data) + IMPL.WriteFile(outdir, relpath, data) diff --git a/ukm/codegen.py b/ukm/codegen.py new file mode 100644 index 000000000000..24f410373430 --- /dev/null +++ b/ukm/codegen.py @@ -0,0 +1,90 @@ +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Objects for describing template code that can be generated from ukm.xml.""" + +import hashlib +import os +import re +import struct +from ukm_model import _EVENT_TYPE +from ukm_model import _METRIC_TYPE + + +def sanitize_name(name): + s = re.sub('[^0-9a-zA-Z_]', '_', name) + return s + + +def HashName(name): + # This must match the hash function in //base/metrics/metrics_hashes.cc. + # >Q: 8 bytes, big endian. + return struct.unpack('>Q', hashlib.md5(name.encode()).digest()[:8])[0] + + +class FileInfo(object): + def __init__(self, relpath, basename): + self.dir_path = relpath + self.guard_path = sanitize_name(os.path.join(relpath, basename)).upper() + + +class EventInfo(object): + def __init__(self, json_obj): + self.raw_name = json_obj['name'] + self.name = sanitize_name(json_obj['name']) + self.hash = HashName(json_obj['name']) + + +class MetricInfo(object): + def __init__(self, json_obj): + self.raw_name = json_obj['name'] + self.name = sanitize_name(json_obj['name']) + self.hash = HashName(json_obj['name']) + + +class Template(object): + """Template for producing code from ukm.xml.""" + + def __init__(self, basename, file_template, event_template, metric_template): + self.basename = basename + self.file_template = file_template + self.event_template = event_template + self.metric_template = metric_template + + def _StampMetricCode(self, file_info, event_info, metric): + return self.metric_template.format( + file=file_info, + event=event_info, + metric=MetricInfo(metric)) + + def _StampEventCode(self, file_info, event): + event_info = EventInfo(event) + metric_code = "".join( + self._StampMetricCode(file_info, event_info, metric) + for metric in event[_METRIC_TYPE.tag]) + return self.event_template.format( + file=file_info, + event=event_info, + metric_code=metric_code) + + def _StampFileCode(self, relpath, data): + file_info = FileInfo(relpath, self.basename) + event_code = "".join( + self._StampEventCode(file_info, event) + for event in data[_EVENT_TYPE.tag]) + return self.file_template.format( + file=file_info, + event_code=event_code) + + def WriteFile(self, outdir, relpath, data): + """Generates code and writes it to a file. + + Args: + relpath: The path to the file in the source tree. + rootdir: The root of the path the file should be written to. + data: The parsed ukm.xml data. + """ + output = open(os.path.join(outdir, self.basename), 'w') + output.write(self._StampFileCode(relpath, data)) + output.close() diff --git a/ukm/codegen_test.py b/ukm/codegen_test.py new file mode 100755 index 000000000000..a7731d6a03ff --- /dev/null +++ b/ukm/codegen_test.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python +# Copyright 2020 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest + +import codegen + + +class CodegenTest(unittest.TestCase): + def testHash(self): + # Must match those in //base/metrics/metrics_hashes_unittest.cc. + self.assertEqual(codegen.HashName('Back'), 0x0557fa923dcee4d0) + self.assertEqual(codegen.HashName('Forward'), 0x67d2f6740a8eaebf) + self.assertEqual(codegen.HashName('NewTab'), 0x290eb683f96572f1) + + +if __name__ == '__main__': + unittest.main() diff --git a/ukm/decode_template.py b/ukm/decode_template.py new file mode 100644 index 000000000000..0c57a7286acb --- /dev/null +++ b/ukm/decode_template.py @@ -0,0 +1,79 @@ +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""A template for generating hash decoding code.""" + +import codegen + +HEADER = codegen.Template( +basename="ukm_decode.h", +file_template=""" +// Generated from gen_builders.py. DO NOT EDIT! +// source: ukm.xml + +#ifndef {file.guard_path} +#define {file.guard_path} + +#include +#include + +namespace ukm {{ +namespace builders {{ + +typedef std::map MetricDecodeMap; +struct EntryDecoder {{ + const char* name; + const MetricDecodeMap metric_map; +}}; +typedef std::map DecodeMap; +DecodeMap CreateDecodeMap(); + +}} // namespace builders +}} // namespace ukm + +#endif // {file.guard_path} +""", +event_template="", +metric_template="") + +IMPL = codegen.Template( +basename="ukm_decode.cc", +file_template=""" +// Generated from gen_builders.py. DO NOT EDIT! +// source: ukm.xml + +#include "{file.dir_path}/ukm_decode.h" +#include "{file.dir_path}/ukm_builders.h" + +namespace ukm {{ +namespace builders {{ + +std::map CreateDecodeMap() {{ + return {{ + {event_code} + }}; +}} + +}} // namespace builders +}} // namespace ukm +""", +event_template=""" + {{ + UINT64_C({event.hash}), + {{ + {event.name}::kEntryName, + {{ + {metric_code} + }} + }} + }}, +""", +metric_template=""" + {{{event.name}::k{metric.name}NameHash, {event.name}::k{metric.name}Name}}, +""") + + +def WriteFiles(outdir, relpath, data): + HEADER.WriteFile(outdir, relpath, data) + IMPL.WriteFile(outdir, relpath, data) diff --git a/ukm/gen_builders.py b/ukm/gen_builders.py new file mode 100755 index 000000000000..dd14cb61905b --- /dev/null +++ b/ukm/gen_builders.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""A utility for generating builder classes for UKM entries. + +It takes as input a ukm.xml file describing all of the entries and metrics, +and produces a c++ header and implementation file exposing builders for those +entries and metrics. +""" + +import argparse +import sys + +import ukm_model +import builders_template +import decode_template + +parser = argparse.ArgumentParser(description='Generate UKM entry builders') +parser.add_argument('--input', help='Path to ukm.xml') +parser.add_argument('--output', help='Path to generated files.') + + +def main(argv): + args = parser.parse_args() + data = ReadFilteredData(args.input) + relpath = 'services/metrics/public/cpp/' + builders_template.WriteFiles(args.output, relpath, data) + decode_template.WriteFiles(args.output, relpath, data) + return 0 + + +def ReadFilteredData(path): + """Reads data from path and filters out any obsolete metrics. + + Parses data from given path and removes all nodes that contain an + tag. First iterates through nodes, then + nodes within them. + + Args: + path: The path of the XML data source. + + Returns: + A dict of the data not including any obsolete events or metrics. + """ + with open(path) as ukm_file: + data = ukm_model.UKM_XML_TYPE.Parse(ukm_file.read()) + event_tag = ukm_model._EVENT_TYPE.tag + metric_tag = ukm_model._METRIC_TYPE.tag + data[event_tag] = list(filter(ukm_model.IsNotObsolete, data[event_tag])) + for event in data[event_tag]: + event[metric_tag] = list( + filter(ukm_model.IsNotObsolete, event[metric_tag])) + return data + + +if '__main__' == __name__: + sys.exit(main(sys.argv)) diff --git a/ukm/gen_builders_test.py b/ukm/gen_builders_test.py new file mode 100755 index 000000000000..be807ad50da3 --- /dev/null +++ b/ukm/gen_builders_test.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python +# Copyright 2019 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest + +from codegen import EventInfo +from codegen import MetricInfo +from builders_template import HEADER as BUILDERS_HEADER_TEMPLATE +from builders_template import IMPL as BUILDERS_IMPL_TEMPLATE +from decode_template import HEADER as DECODE_HEADER_TEMPLATE +from decode_template import IMPL as DECODE_IMPL_TEMPLATE +import ukm_model +import gen_builders + + +class GenBuildersTest(unittest.TestCase): + def testFilterObsoleteMetrics(self): + data = gen_builders.ReadFilteredData('../../tools/metrics/ukm/ukm.xml') + for event in data[ukm_model._EVENT_TYPE.tag]: + self.assertTrue(ukm_model.IsNotObsolete(event)) + for metric in event[ukm_model._METRIC_TYPE.tag]: + self.assertTrue(ukm_model.IsNotObsolete(metric)) + + def testGenerateCode(self): + relpath = '.' + with open('../../tools/metrics/ukm/ukm.xml') as f: + data = ukm_model.UKM_XML_TYPE.Parse(f.read()) + event = data[ukm_model._EVENT_TYPE.tag][0] + metric = event[ukm_model._METRIC_TYPE.tag][0] + self.assertIsNotNone(event) + self.assertIsNotNone(metric) + eventInfo = EventInfo(event) + metricInfo = MetricInfo(metric) + + # Not using codegen.Template.WriteFile to avoid non-deterministic test + # behaviour after writing to disk. + builders_header_output = BUILDERS_HEADER_TEMPLATE._StampFileCode( + relpath, data) + self.assertIsNotNone(builders_header_output) + self.assertIn("// Generated from gen_builders.py. DO NOT EDIT!", + builders_header_output) + self.assertIn("namespace builders", builders_header_output) + self.assertIn( + """ +class {name} final : public ::ukm::internal::UkmEntryBuilderBase {{ + public: + explicit {name}(ukm::SourceId source_id); + explicit {name}(ukm::SourceIdObj source_id); + ~{name}() override; + + static const char kEntryName[]; + static constexpr uint64_t kEntryNameHash = UINT64_C({hash});""".format( + name=eventInfo.name, hash=eventInfo.hash), builders_header_output) + + self.assertIn( + """ + static const char k{metricName}Name[]; + static constexpr uint64_t k{metricName}NameHash = UINT64_C({metricHash}); + {eventName}& Set{metricName}(int64_t value); +""".format(eventName=eventInfo.name, + metricName=metricInfo.name, + metricHash=metricInfo.hash), builders_header_output) + + builders_impl_output = BUILDERS_IMPL_TEMPLATE._StampFileCode(relpath, data) + self.assertIsNotNone(builders_impl_output) + self.assertIn("// Generated from gen_builders.py. DO NOT EDIT!", + builders_impl_output) + self.assertIn("namespace builders", builders_impl_output) + self.assertIn( + """ +const char {name}::kEntryName[] = "{rawName}"; +const uint64_t {name}::kEntryNameHash; + +{name}::{name}(ukm::SourceId source_id) : + ::ukm::internal::UkmEntryBuilderBase(source_id, kEntryNameHash) {{ +}} + +{name}::{name}(ukm::SourceIdObj source_id) : + ::ukm::internal::UkmEntryBuilderBase(source_id, kEntryNameHash) {{ +}}""".format(name=eventInfo.name, rawName=eventInfo.raw_name), + builders_impl_output) + + self.assertIn( + """ +const char {eventName}::k{metricName}Name[] = "{metricRawName}"; +const uint64_t {eventName}::k{metricName}NameHash; + +{eventName}& {eventName}::Set{metricName}(int64_t value) {{ + SetMetricInternal(k{metricName}NameHash, value); + return *this; +}} +""".format(eventName=eventInfo.name, + metricName=metricInfo.name, + metricRawName=metricInfo.raw_name), builders_impl_output) + + decode_header_output = DECODE_HEADER_TEMPLATE._StampFileCode(relpath, data) + self.assertIsNotNone(decode_header_output) + self.assertIn("// Generated from gen_builders.py. DO NOT EDIT!", + decode_header_output) + self.assertIn("namespace builders", decode_header_output) + self.assertIn( + """typedef std::map MetricDecodeMap; +struct EntryDecoder { + const char* name; + const MetricDecodeMap metric_map; +}; +typedef std::map DecodeMap; +DecodeMap CreateDecodeMap();""", decode_header_output) + + decode_impl_output = DECODE_IMPL_TEMPLATE._StampFileCode(relpath, data) + self.assertIsNotNone(decode_impl_output) + self.assertIn("// Generated from gen_builders.py. DO NOT EDIT!", + decode_impl_output) + self.assertIn("namespace builders", decode_impl_output) + self.assertIn( + """ + {{{eventName}::k{metricName}NameHash, {eventName}::k{metricName}Name}},""" + .format(eventName=eventInfo.name, + metricName=metricInfo.name), decode_impl_output) + + +if __name__ == '__main__': + unittest.main() diff --git a/ukm/pretty_print.py b/ukm/pretty_print.py new file mode 100755 index 000000000000..309527fa8e3f --- /dev/null +++ b/ukm/pretty_print.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import sys + +import ukm_model +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import presubmit_util + + + +def main(argv): + presubmit_util.DoPresubmitMain(argv, 'ukm.xml', 'ukm.old.xml', + ukm_model.PrettifyXML) + + +if '__main__' == __name__: + sys.exit(main(sys.argv)) diff --git a/ukm/ukm.xml b/ukm/ukm.xml new file mode 100644 index 000000000000..e1ce4a0998f9 --- /dev/null +++ b/ukm/ukm.xml @@ -0,0 +1,26165 @@ + + + + + + + + olesiamarukhnno@google.com + + Recorded on each page info bubble open when "About this site" data + is fetched. + + + + The status of the "About this site" info, including if the data + is available and whether the proto is valid. See + |page_info::about_this_site_validation::AboutThisSiteStatus| for enum + elements. + + + + + + + + + + + + + + csharrison@chromium.org + yaoxia@chromium.org + + Obsolete. Various metrics recording experiences which are commonly used for + abusive purposes. + + + + True if the page attempted a tab-under navigation. + + + + + True if the page called window.open with an ad script in the stack. + + + + + True if the page called window.open() from an ad subframe. + + + + + + yaoxia@chromium.org + + + An enum that specifies the dismissal reason for JavaScript popup dialog + that can be triggered by window.alert(), window.confirm() or + window.prompt(). See JavaScriptDialogTabHelper::DismissalCause for the + enum elements. + + + + + + csharrison@chromium.org + + + True if the page attempted a tab-under navigation. + + + + + + yaoxia@chromium.org + + Recorded whenever window.open() is called when AdTagging is enabled. + + + + True if the page called window.open() with an ad script in the stack. + + + + + True if the page called window.open() from an ad subframe. + + + + + + dtseng@chromium.org + nektar@chromium.org + + Tracks automatic image descriptions provided to blind users. + + + + Whether the image description included a description. + + + + + + + + + + + + Whether the image already had label text before it was augmented with an + additional description. + + + + + + + + + + + + Whether the image description included OCR text. + + + + + + + + + + + + + aldietz@google.com + mschillaci@google.com + chrome-a11y-core@google.com + + Tracks usage of Page Zoom on Chrome for Android. Recorded each time the + slider is dismissed if the user changed the zoom level on this page before + dismissal. + + + + For users who changed the individual zoom level on this page, tracks what + zoom level has been set on the page at slider dismissal. There may be + multiple instances where the slider is opened on the same page, so there + may be multiple values logged per page. The value will be an integer + between 25 and 500, inclusive, bucketed in intervals of 5. + + + + + + + + + + + + + aleventhal@chromium.org + nektar@chromium.org + + Tracks the amount of time sending accessibility events from web renderers. + + + + The amount of time spent in + RenderAccessibilityImpl.SendPendingAccessibilityEvents + + + + + + + + + + + + + abigailbklein@google.com + rhalavati@google.com + kyungjunlee@google.com + + Records the time taken to distill a web page. + + + + The amount of time (ms) required to distill a web page if distillation + failed. + + + + + + + + + + + + The amount of time (ms) required to distill a web page if distillation + succeeded. + + + + + + + + + + + + + + Deprecated as of 12/2022. + + dullweber@chromium.org + eokoyomon@chromium.org + + Recorded when an action on the accuracy tip dialog is taken. + + + + Records an enum value representing which action in the accuracy tip was + taken. + + + + + + + + + + + + The amount of time spent on the dialog until it was closed. In seconds. + + + + + + + + + + + + + + Deprecated as of 12/2022. + + dullweber@chromium.org + eokoyomon@chromium.org + + Recorded on each page load when the AccuracyService determines whether an + accuracy tip should be shown or the reason why it was not shown. + + + + The accuracy tip status that was determined for a pageload. + + + + + + + + + + + + + johnidel@chromium.org + jkarlin@chromium.org + + Records metrics associated with a single ad frame for a page load. An ad + frame includes itself and all of its child frames. Only recorded for frames + with non-zero bytes. Recorded when a page is destroyed or when the app is + backgrounded on mobile. + + + + The peak percentage of CPU utilization attributed to the frame in any 30 + second window prior to user activation. Frames that exist for less than 30 + seconds still use 30 seconds as the denominator for the calculation. + + + + + Wall time of tasks attributed to the frame after the frame received user + activation. Measured in millseconds. + + + + + Total wall time of tasks attributed to the frame. Measured in + milliseconds. + + + + + The depth of this frame's frame tree. There is no set limit on a frame's + maximum depth. + + + + + Deprecated 09/2019. Replaced with Loading.CacheBytes2. + + + Bytes loaded from the cache for all resources loaded within the frame. + This is rounded down to the nearest exponential bucket (with a bucket + ratio of 1.3). + + + + + Bytes loaded from the cache for all resources loaded within the frame. + This includes bytes loaded from both the HTTP cache and memory cache. This + is rounded down to the nearest exponential bucket (with a bucket ratio of + 1.3). + + + + + Network bytes loaded for resources with an image mime type within the + frame. Includes header bytes. This is rounded down to the nearest + exponential bucket (with a bucket ratio of 1.3). + + + + + Network bytes loaded for resources with a javascript mime type within the + frame. Includes header bytes. This is rounded down to the nearest + exponential bucket (with a bucket ratio of 1.3). + + + + + Network bytes loaded for all resources within the frame. Includes header + bytes. This is rounded down to the nearest exponential bucket (with a + bucket ratio of 1.3). + + + + + Total number of resources loaded by the frame, including incomplete + resources. + + + + + Network bytes loaded for resources with a video/ mime type within the + frame. Includes header bytes. This is rounded down to the nearest + exponential bucket (with a bucket ratio of 1.3). + + + + + An enum representing whether the frame was Cross-Origin or Same-Origin to + its parent frame. See FrameData::OriginStatus. + + + + + An enum representing whether media was played in the frame. See + FrameData::MediaStatus. + + + + + An enum representing whether the frame received user activation. See + FrameData::UserActivationStatus. + + + + + Number of milliseconds before FirstContentfulpaint was reached in the + frame. This is relative to subframe navigation start. + + + + + Number of millseconds before Time-To-Interactive was reached in the frame. + This is relative to subframe navigation start. + + + + + Deprecated 07/2020. + + + Number of millseconds that the current web contents spent in the + foreground prior to the frame receiving user activation. + + + + + Last known height of the iframe in pixels. Not reported accurately when + "Visibility.Hidden" is true. This is rounded down to the nearest + exponential bucket (with a bucket ratio of 1.15). + + + + + Last known width of the iframe in pixels. Not reported accurately when + "Visibility.Hidden" is true. This is rounded down to the nearest + exponential bucket (with a bucket ratio of 1.15). + + + + + A 0 or 1 values representing whether the frame had a display=none styling + set. Records the last known value. + + + + + + johnidel@chromium.org + jkarlin@chromium.org + + Recorded when a page has loaded non-zero ad bytes, and the page is being + destroyed/navigated. + + + + Amount of network bytes used to load ad resource on the page. Includes + resources that did not finish, and top-level ads. Measured in kilobytes. + + + + + Deprecated 01/2020. + + + Amount of network bytes used to load ad resources on the page, per second + the page was alive after commit. Measured in kilobytes per second. + + + + + Deprecated 01/2020. + + + Amount of network bytes used to load ad resources on the page per second + after the page was interactive. Measured in kilobytes. + + + + + Amount of CPU wall time inside of ad iframes over the duration of a page + load, while the page is in the foreground. Measured in milliseconds. + + + + + Amount of network bytes used to load ad resources with a supported + javascript mime type on the page. Measured in kilobytes. + + + + + Amount of network bytes used to load ad resources with a video mime type + on the page. Measured in kilobytes. + + + + + Amount of network bytes used to load ad resources in the main frame. + Includes resources that did not finish but does not include resources in + subframes. Measured in bytes. This is rounded to the nearest exponential + bucket (with a bucket ratio of 1.3). + + + + + The estimated maximum density of ads on a page by area. Calculated as the + area of ads on the page * 100 / page area. This counts each overlapping + area once, it may be inaccurate due to updates and calculations being + throttled. + + + + + The estimated maximum density of ads on a page by height. Calculated as + the combined height of ads on the page * 100 / page height. This counts + each overlapping area once, it may be inaccurate due to updates and + calculations being throttled. + + + + + Amount of network bytes used to load resources on the page. Includes + resources that did not finish. Measured in kilobytes. + + + + + + + Removed 2022/10 in favor of AdPageLoadCustomSampling2 + + yaoxia@chromium.org + johnidel@chromium.org + jkarlin@chromium.org + + Recorded when a page has loaded non-zero ad bytes, and the page is being + destroyed/navigated away or when the app enters the background on mobile. + This is separate from the `AdPageLoad` event to allow a potentially + different sampling. + + + + The estimated average viewport ad density. Each density value is + calculated as the area of ads within the viewport * 100 / viewport area, + where each overlapping area is counted once. And this returns the average + of the densities accumulated over the page load time rounded to the + nearest integer. + + + + + The estimated kurtosis of the viewport ad density. Each density value is + calculated as the area of ads within the viewport * 100 / viewport area, + where each overlapping area is counted once. And this returns the kurtosis + of the densities accumulated over the page load time rounded to the + nearest exponential bucket integer with bucket spacing 1.3. For negative + values, the bucketing will be taken on its magnitude part. + + + + + The estimated skewness of the viewport ad density. Each density value is + calculated as the area of ads within the viewport * 100 / viewport area, + where each overlapping area is counted once. And this returns the skewness + of the densities accumulated over the page load time rounded to the + nearest exponential bucket integer with bucket spacing 1.3. For negative + values, the bucketing will be taken on its magnitude part. + + + + + The estimated variance of the viewport ad density. Each density value is + calculated as the area of ads within the viewport * 100 / viewport area, + where each overlapping area is counted once. And this returns the variance + of the densities accumulated over the page load time rounded to the + nearest exponential bucket integer with bucket spacing 1.3. For negative + values, the bucketing will be taken on its magnitude part. + + + + + + + Removed 2022/12 in favor of AdPageLoadCustomSampling3 + + yaoxia@chromium.org + johnidel@chromium.org + jkarlin@chromium.org + + Recorded when the page is being destroyed/navigated away or when the app + enters the background on mobile. This is separate from the `AdPageLoad` + event to allow it to be recorded on all pages (i.e. not only pages that have + loaded non-zero ad byte), and to allow a potentially different sampling. + + + + The estimated average viewport ad density. Each density value is + calculated as the area of ads within the viewport * 100 / viewport area, + where each overlapping area is counted once. And this returns the average + of the densities accumulated over the page load time rounded to the + nearest integer. + + + + + The estimated kurtosis of the viewport ad density. Each density value is + calculated as the area of ads within the viewport * 100 / viewport area, + where each overlapping area is counted once. And this returns the kurtosis + of the densities accumulated over the page load time rounded to the + nearest exponential bucket integer with bucket spacing 1.3. For negative + values, the bucketing will be taken on its magnitude part. + + + + + The estimated skewness of the viewport ad density. Each density value is + calculated as the area of ads within the viewport * 100 / viewport area, + where each overlapping area is counted once. And this returns the skewness + of the densities accumulated over the page load time rounded to the + nearest exponential bucket integer with bucket spacing 1.3. For negative + values, the bucketing will be taken on its magnitude part. + + + + + The estimated variance of the viewport ad density. Each density value is + calculated as the area of ads within the viewport * 100 / viewport area, + where each overlapping area is counted once. And this returns the variance + of the densities accumulated over the page load time rounded to the + nearest exponential bucket integer with bucket spacing 1.3. For negative + values, the bucketing will be taken on its magnitude part. + + + + + + yaoxia@chromium.org + johnidel@chromium.org + jkarlin@chromium.org + + Recorded when the page is being destroyed/navigated away or when the app + enters the background on mobile. This is separate from the `AdPageLoad` + event to allow it to be recorded on all pages (i.e. not only pages that have + loaded non-zero ad byte), and to allow a potentially different sampling. + Both iframe and img ads are covered. + + + + The estimated average viewport ad density. Each density value is + calculated as the area of (iframe and img) ads within the viewport * 100 / + viewport area, where each overlapping area is counted once. And this + returns the average of the densities accumulated over the page load time + rounded to the nearest integer. + + + + + The estimated kurtosis of the viewport ad density. Each density value is + calculated as the area of (iframe and img) ads within the viewport * 100 / + viewport area, where each overlapping area is counted once. And this + returns the kurtosis of the densities accumulated over the page load time + rounded to the nearest exponential bucket integer with bucket spacing 1.3. + For negative values, the bucketing will be taken on its magnitude part. + + + + + The estimated skewness of the viewport ad density. Each density value is + calculated as the area of (iframe and img) ads within the viewport * 100 / + viewport area, where each overlapping area is counted once. And this + returns the skewness of the densities accumulated over the page load time + rounded to the nearest exponential bucket integer with bucket spacing 1.3. + For negative values, the bucketing will be taken on its magnitude part. + + + + + The estimated variance of the viewport ad density. Each density value is + calculated as the area of (iframe and img) ads within the viewport * 100 / + viewport area, where each overlapping area is counted once. And this + returns the variance of the densities accumulated over the page load time + rounded to the nearest exponential bucket integer with bucket spacing 1.3. + For negative values, the bucketing will be taken on its magnitude part. + + + + + + orrb@google.com + chrome-ads-core@google.com + + Captures latency-relevant metrics associated with a single FLEDGE auction. + Many of these metrics are latency measurements, aggregated (mean/max) for + parts of the auction flow that happen multiple times in an auction, e.g. + calls to GenerateBid. Others are potentially latency-impacting measures of + the auction, e.g. the number of InterestGroups, buyers, component auctions, + bids that were scored either together or separately for the enforced and + non-enforced KAnon modes. Finally, some of these metrics look at points in + the auction flow where multiple inputs come together to assess which of + these inputs most frequently appears on the latency critical path. + + + + Time in ms between AdAuctionServiceImpl::RunAdAuction and + AdAuctionServiceImpl::OnAuctionComplete. Roughly equivalent to UMA metric, + Ads.InterestGroup.Auction.AuctionWithWinnerTime. + + + + + Indicates the KAnonymityBidMode used for this auction. + + + + + The latency in milliseconds between the initial call to + InterestGroupAuction::StartLoadInterestGroupsPhase (not the recursive + calls issued for component auctions in a multi-seller auction), and the + call to AuctionRunner::OnLoadInterestGroupsComplete. This is related to + UMA metric, Ads.InterestGroup.Auction.LoadGroupsTime, except that, in a + multi-seller auction, the UMA metric is recorded once per component + auction and then again for the top-level auction, whereas this metric is + recorded only once, for the top-level auction. This metric also isn't + limited to those cases where there were InterestGroups to load, Since we + can independently filter this based on the value of NumInterestGroups. + + + + + Aggregated across all components for a multi-seller auctions, this records + the max latency in millis between BuyerHelper::StartGeneratingBids and + BuyerHelper::OnGenerateBidComplete, counting each BidState once. As such, + this includes starting the BidderWorklet in that latency. This latency + window is intentionally terminated in OnGenerateBidComplete, and not in + OnGenerateBidCompleteInternal, so that this *excludes* bids filtered + during reprioritization, as well as those that failed because of some + fatal error, except that we explicitly *include* those that timed out. + + + + + Only for multi-seller auctions, this is the highest latency of the bidding + and scoring phase, observed across all of the component auctions. This + latency is measured as the time between the call to + StartBiddingAndScoringPhase and the call to OnComponentAuctionComplete. + This metric only has a value for entries that represent multi-seller + auctions, as indicated by a value for the NumSellersWithBidders metric of + two or greater. + + + + + Aggregated across all components for a multi-seller auctions, this records + the max latency in millis of calls to GenerateSingleBid. This is related + to UMA metric, Ads.InterestGroup.Auction.GenerateBidTime, except that it's + already aggregated across all GenerateSingleBid calls for this auction. + Like the UMA metric, this measures each distinct call to + GenerateSingleBid, for which there could be two for a given InterestGroup, + one that satisfies the kAnon threshold, and one that doesn't. + + + + + Aggregated across all components for a multi-seller auctions, this records + the mean latency in millis between BuyerHelper::StartGeneratingBids and + BuyerHelper::OnGenerateBidComplete, counting each BidState once. As such, + this includes starting the BidderWorklet in that latency. This latency + window is intentionally terminated in OnGenerateBidComplete, and not in + OnGenerateBidCompleteInternal, so that this *excludes* bids filtered + during reprioritization, as well as those that failed because of some + fatal error, except that we explicitly *include* those that timed out. + + + + + Only for multi-seller auctions, this is the mean latency of the bidding + and scoring phase, aggregated across each of the component auctions. This + latency is measured as the time between the call to + StartBiddingAndScoringPhase and the call to OnComponentAuctionComplete. + This metric only has a value for entries that represent multi-seller + auctions, as indicated by a value for the NumSellersWithBidders metric of + two or greater. + + + + + Aggregated across all components for a multi-seller auctions, this records + the mean latency in millis of calls to GenerateSingleBid. This is related + to UMA metric, Ads.InterestGroup.Auction.GenerateBidTime, except that it's + already aggregated across all GenerateSingleBid calls for this auction. + Like the UMA metric, this measures each distinct call to + GenerateSingleBid, for which there could be two for a given InterestGroup, + one that satisfies the kAnon threshold, and one that doesn't. + + + + + The number of distinct BidderWorklets. Interest groups with the same owner + can only share worklets if they have the same bidding script URL and KV + server URL. As such, we might observe a non-standard setup in which, for + example, a buyer has used a different bidding script URL for each + InterestGroup, causing performance issues because of the fragmentation of + BidderWorklets. BidderWorklets are shared across component auctions, and + this measure counts the number of distinct BidderWorklets used within the + scope of the scope of an entire auction, either single- or multi-seller. + This may imply that the number of BidderWorklets created in the context of + this auction is actually less than this number, because of reuse. However, + it also means that this metric can be compared against the + NumDistinctOwnersWithInterestGroups metric, which (unlike + NumOwnersWithInterestGroups) counts each buyer involved in a multi-seller + auction once, even if that buyer participates in multiple components. + + + + + Total number of bids aborted because the BidderWorklet encountered a fatal + error, such as a crash, a JS fetch error, or any other fatal error - + excluding timeouts, which are counted by the metric below - aggregated + across all Owners and component auctions. + + + + + Total number of InterestGroups aborted because the per-buyer cumulative + timeout was reached, aggregated across all Owners and component auctions. + + + + + Total number of InterestGroups filtered as per-buyer limits are applied, + aggregated across all Owners and component auctions. + + + + + Total number of InterestGroups filtered based on priority during the + loading of InterestGroups, aggregated across all Owners and component + auctions. This specifically excludes InterestGroups filtered during load + for other reasons, such as failing to satisfy requested seller + capabilities. + + + + + Total number of InterestGroups filtered during bid reprioritization, which + happens once bidding signals are available, aggregated across all Owners + and component auctions. Related to UMA metric, + Ads.InterestGroup.Auction.BidFiltered, except that it's aggregated. To + determine the fraction of bids filtered, compare this against the + NumInterestGroups metric. + + + + + The number of buyers with InterestGroups participating in an auction, + aggregated across all component auctions. This number excludes buyers with + no ads or no script URL, and also those filtered because the priority for + all InterestGroups calculated in the BuyerHelper constructor was negative. + Unlike NumOwnersWithInterestGroups, it only counts each buyer once, even + if it appears in multiple component auctions of a multi-seller auction. + Also unlike NumOwnersWithInterestGroups, this metric has a value even if + there are no bidders eligible to participate in this auction, though, in + this case, that value is likely to be zero. + + + + + Total number of InterestGroups aggregated across all owners and component + auctions, equivalent to UMA metric, + Ads.InterestGroup.Auction.NumInterestGroups. This is the number of + InterestGroups loaded, before per-buyer limits are applied. Excluded from + this (and all other metrics counting InterestGroups) are InterestGroups + that are incapable of participating in an auction, e.g. those with no + bidding logic URLs, or with no ads. No value is defined for this metric if + there are no bidders eligible to participate in this auction. + + + + + Number of instances in which the BidderWorklet doesn't bid, maybe because + it failed to load or crashed. Because there's no bid, ScoreAd won't be + called for these. + + + + + Number of instances in which the BidderWorklet only generates one bid. If + the KAnonymityBidMode is Simulate or Enforce, this means that the + InterestGroup's top generated bid didn't satisfy the kAnonymity threshold, + and no separate bid could be generated that did satisfy the kAnonymity + threshold. If the KAnonymityBidMode is None, this just means that a bid + was successfully generated. For each of these, ScoreAd will be called + once. + + + + + Number of instances in which an InterestGroup's top generated bid did + satisfy the kAnonymity threshold, and so no separate bid was needed. For + each of these, ScoreAd will be called once. If the KAnonymityBidMode is + None, this metric will be 0, because there won't be a separate kAnon bid. + + + + + Number of instances in which an InterestGroup's top generated bid didn't + satisfy the kAnonymity threshold, and a separate bid was generated that + did satisfy the kAnonymity threshold. For each of these, ScoreAd will be + called twice, once for each of these bids, which has latency and + performance implications. If the KAnonymityBidMode is None, this metric + will be 0, because there won't be a separate kAnon bid. + + + + + The number of buyers with InterestGroups participating in an auction, + aggregated across all component auctions. Equivalent to UMA metric, + Ads.InterestGroup.Auction.NumInterestGroups. This number excludes buyers + with no ads or no script URL, and also those filtered because the priority + for all InterestGroups calculated in the BuyerHelper constructor was + negative. However, it counts a buyer repeatedly for each component auction + that buyer participates in. No value is defined for this metric if there + are no bidders eligible to participate in this auction. + + + + + This is either the number of component auctions *plus one* for a + multi-seller auction, or 1 for a single-seller auction. Equivalent to UMA + metric, Ads.InterestGroup.Auction.NumSellersWithBidders. No value is + defined for this metric if there are no bidders eligible to participate in + this auction. + + + + + How the auction concluded, whether that's successfully selecting an ad to + be shown, or finding no InterestGroups to load, or getting no bids that + outbid the contextual bid, or any other outcome. + + + + + + yaoxia@google.com + chrome-ads-core@google.com + + Recorded after computing the subresource filter activation for a page at + process response time during navigation. This is only recorded when there + has previously been an ads intervention triggered on the page within the + site data's lifetime (currently 7 days). Clearing site data will reset + intervention information. + + + + Records the status of the ads intervention, whether the intervention lead + to subresource filter activation, measured during page load. + + + + + Records the last measured intervention recorded for the page, measured + during page load. + + + + + + sullivan@chromium.org + + + True if the page loaded in the main frame is an AMP document (has an amp + attribute in the html element). Will not be recorded for non-AMP frames. + Note that most AMP documents are loaded in a subframe from a reader like + Google Search; this metric measures sites that are using AMP as a + site-wide framework and not a reader experience. + + + + + The average value of user interaction latency above budget of a page load + in AMP subframes, in ms. For this metric, we measure the latency of user + interactions by Responsiveness.UserInteraction.MaxEventDuration and we + deduct a budget from the original value. If the latency value is below the + budget, it will be treated as 0 ms. Each type of interaction has its own + budget. + + + + + Removed March 2022 in favor of + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + The average value of user interaction latency above budget of a page load + in AMP subframes, in ms. For this metric, we measure the latency of user + interactions by Responsiveness.UserInteraction.TotalEventDuration and we + deduct a budget from the original value. If the latency value is below the + budget, it will be treated as 0 ms. Each type of interaction has its own + budget. + + + + + Removed July 2019 in favor of FirstInputDelay4. + + + Measures First Input Delay, the duration between the hardware timestamp + and the start of event processing on the main thread for the first + meaningful input per navigation, in the AMP subframe. See + https://goo.gl/tr1oTZ for a detailed explanation. In milliseconds. + + + + + Measures First Input Delay, the duration between the hardware timestamp + and the start of event processing on the main thread for the first + meaningful input per navigation, in the AMP subframe. See + https://goo.gl/tr1oTZ for a detailed explanation. In milliseconds. + + + + + The number of distinct user interactions in an AMP subframe. See + definition of user interaction: + https://web.dev/better-responsiveness-metric/#group-events-into-interactions + + + + + Removed March 2022 in favor of + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + An approximation of high percentile of user interaction latency above + budget of a page load in AMP subframes, in ms. For this metric, we measure + the latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + Removed March 2022 in favor of + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + An approximation of high percentile of user interaction latency above + budget of a page load in AMP subframes, in ms. For this metric, we measure + the latency of user interactions by + Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + An approximation of high percentile of user interaction latency above + budget of a page load in AMP subframes, in ms. For this metric, we measure + the latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + Removed March 2022 in favor of + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + An approximation of high percentile of user interaction latency above + budget of a page load in AMP subframes, in ms. For this metric, we measure + the latency of user interactions by + Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + The sum of user interaction latency above budget of a page load in AMP + subframes, in ms. For this metric, we measure the latency of user + interactions by Responsiveness.UserInteraction.MaxEventDuration and we + deduct a budget from the original value. If the latency value is below the + budget, it will be treated as 0 ms. Each type of interaction has its own + budget. + + + + + Removed March 2022 in favor of + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + The sum of user interaction latency above budget of a page load in AMP + subframes, in ms. For this metric, we measure the latency of user + interactions by Responsiveness.UserInteraction.TotalEventDuration and we + deduct a budget from the original value. If the latency value is below the + budget, it will be treated as 0 ms. Each type of interaction has its own + budget. + + + + + An approximation of a high percentile of user interaction latency of an + AMP subframe, in ms. For this metric, we measure the latency of user + interactions by Responsiveness.UserInteraction.MaxEventDuration. + + + + + The maximum value of high percentile of user interaction latency above + budget of a page load in AMP subframes, in ms. For this metric, we measure + the latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration. + + + + + Removed March 2022 in favor of + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + The maximum value of high percentile of user interaction latency above + budget of a page load in AMP subframes, in ms. For this metric, we measure + the latency of user interactions by + Responsiveness.UserInteraction.TotalEventDuration. + + + + + Removed March 2022 in favor of + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + The maximum value of user interaction latency above budget of a page load + in AMP subframes, in ms. For this metric, we measure the latency of user + interactions by Responsiveness.UserInteraction.MaxEventDuration and we + deduct a budget from the original value. If the latency value is below the + budget, it will be treated as 0 ms. Each type of interaction has its own + budget. + + + + + Removed March 2022 in favor of + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + The maximum value of user interaction latency above budget of a page load + in AMP subframes, in ms. For this metric, we measure the latency of user + interactions by Responsiveness.UserInteraction.TotalEventDuration and we + deduct a budget from the original value. If the latency value is below the + budget, it will be treated as 0 ms. Each type of interaction has its own + budget. + + + + + Deprecated 06/2021. + + + Measures the average cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a session window, in the AMP subframe. The gap between two + consecutive shifts in a window is not bigger than 5000ms. This metric's + integral value is 100x the fractional cumulative layout shift score + described in the explainer. + + + + + Deprecated as of 04/23. It is still reported, but most users should use + AmpPageLoad.SubFrame.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms. + + Measures the cumulative layout shift (bit.ly/lsm-explainer) that has + occurred during the session, in the AMP subframe. This metric's integral + value is 100x the fractional cumulative layout shift score described in + the explainer. + + + + + Measures the cumulative layout shift (bit.ly/lsm-explainer) that has + occurred in the AMP subframe, before any user input or document scroll. + This metric's integral value is 100x the fractional cumulative layout + shift score described in the explainer. + + + + + Deprecated 06/2021. + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a session window, in the AMP subframe. The gap between two + consecutive shifts in a window is not bigger than 1000ms. This metric's + integral value is 100x the fractional cumulative layout shift score + described in the explainer. + + + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a session window, in the AMP subframe. The gap between two + consecutive shifts in a window is not bigger than 1000ms and the maximum + window size is 5000ms. This metric's integral value is 100x the fractional + cumulative layout shift score described in the explainer. + + + + + Deprecated 06/2021. + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a session window, in the AMP subframe. The gap between two + consecutive shifts in a window is not bigger than 1000ms and the maximum + window size is 5000ms. We start a new window whenever there's a user + input. This metric's integral value is 100x the fractional cumulative + layout shift score described in the explainer. + + + + + Deprecated 06/2021. + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a 1000ms sliding window, in the AMP subframe. This + metric's integral value is 100x the fractional cumulative layout shift + score described in the explainer. + + + + + Deprecated 06/2021. + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a 300ms sliding window, in the AMP subframe. This metric's + integral value is 100x the fractional cumulative layout shift score + described in the explainer. + + + + + Removed July 2019 in favor of + SubFrame.LayoutInstability.CumulativeShiftScore. + + + Measures the amount of layout jank (bit.ly/lsm-explainer) that has + occurred during the session, in the AMP subframe. This metric's integral + value is 100x the fractional jank score described in the explainer. + + + + + Measures the time in milliseconds from the navigation in the main frame to + the navigation in the AMP subframe. Will be negative in cases where the + AMP subframe was prerendered. Will be positive in cases where the main + frame was a non-same-document navigation. Should be near-zero when the + main frame navigation is a same-document navigation and the AMP subframe + was not prerendered. + + + + + Deprecated 12/2022. + + + Whether the page allows the user to zoom in/out, in the AMP subframe. + + + + + Deprecated 12/2022. + + + Percentage of tap targets whose center position is within another tap + target (expanded by a margin), in the AMP subframe. The detail of the + algorithm is go/bad-tap-target-ukm. If evaluation time budget exceeded, + this will be is -2. + + + + + Deprecated 12/2022. + + + Percentage of small font text area in total text area, in the AMP + subframe. + + + + + Deprecated 12/2022. + + + Percentage of pixels of text and images horizontally outside the viewport, + relative to the frame width, in the AMP subframe. + + + + + Deprecated 12/2022. + + + Whether the width of the viewport is specified as device-width or not, in + the AMP subframe. + + + + + Deprecated 12/2022. + + + Specified hardcoded viewport width in CSS pixels, in the AMP subframe. + + + + + Deprecated 12/2022. + + + Specified initial viewport scaling, in the AMP subframe, multiplied by 10. + 1 means 0.1, 100 means 10. [1-100]. + + + + + Replaced by SubFrame.PaintTiming.NavigationToLargestContentfulPaint2 on + Oct 2020. + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the experimental largest + content (text or image) within viewport, in the AMP subframe. See + http://bit.ly/largest_contentful_paint_explainer for more details. Differs + from the non-experimental version in that removed content is still + considered a valid candidate. + + + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints content, in the AMP subframe. + A contentful paint includes a paint of text, image, SVG, or canvas. + + + + + Measures the time in milliseconds from navigation timing's navigation + start to the time the first paint is performed, in the AMP subframe. + + + + + Replaced by SubFrame.PaintTiming.NavigationToLargestContentfulPaint2. No + longer reported from Nov 2021. + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the largest content (text or + image) within viewport, in the AMP subframe. See + http://bit.ly/largest_contentful_paint_explainer for more details. Note: + Will be replaced by + SubFrame.PaintTiming.NavigationToLargestContentfulPaint2. + + + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the experimental largest + content (text or image) within viewport, in the AMP subframe. See + http://bit.ly/largest_contentful_paint_explainer for more details. Differs + from SubFrame.PaintTiming.NavigationToLargestContentfulPaint in that + removed content is still considered a valid candidate. + + + + + Deprecated 7/2019 + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the largest content (text or + image) within viewport, in the AMP subframe. See + http://bit.ly/largest_contentful_paint_explainer for more details. + + + + + True if the page loaded in any subframe is an AMP document (has an amp + attribute in the html element). Will not be recorded for non-AMP frames. + Note that most AMP documents are loaded in a subframe from a reader like + Google Search; this metric measures usage of such readers. + + + + + + nemco@google.com + wenyufu@chromium.org + + Recorded when the user changes auto-dark theming for a site through the app + menu. + + + + A boolean signaling that auto-dark theming has been disabled. + + + + + + + + + + + + + gangwu@chromium.org + fgorski@chromium.org + + Records when the activity enter or exit Android N+ multi-window mode. + + + + Enter or exit the multi-window mode. + + + + + + + + + + + + + gangwu@chromium.org + fgorski@chromium.org + + Records the multi window state when the activity is shown. + + + + The state of the multi-window mode, single or multi-window. + + + + + + + + + + + + + shuyng@google.com + twellington@chromium.org + + Records on each page load when the User Agent is overridden with site + exception. + + + + An enum that records the type of user agent. + + + + + + + + + + + + + gangwu@chromium.org + fgorski@chromium.org + + Records when a user rotates the device triggering a screen orientation + change. + + + + The orientation of the device rotated to. + + + + + + + + + + + + + gangwu@chromium.org + fgorski@chromium.org + + Records when a user pressed 'Request Desktop Site' in the app menu. + + + + An enum that records the type of user agent. + + + + + + + + + + + + + pdyson@chromium.org + + AppListAppClickData events contain click history metrics for an app. These + events are recorded when an app is launched from the launcher on ChromeOS, + but may be for an app different from the app launched. See event + AppListAppLaunch for more detail on the keys used. + + + + The ID of the app launch event. + + + + + The type of app. 1: CHROME, 2: PLAY, 3: PWA/Bookmark app. + + + + + Rank apps by total number of clicks. The app with the most clicks has rank + 1. + + + + + The number of clicks on this app in the current session that occurred + between 12:00am and 1:00am. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 1:00am and 2:00am. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 2:00am and 3:00am. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 3:00am and 4:00am. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 4:00am and 5:00am. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 5:00am and 6:00am. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 6:00am and 7:00am. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 7:00am and 8:00am. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 8:00am and 9:00am. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 9:00am and 10:00am. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 10:00am and 11:00am. Bucketing: values above 20 rounded down to + the nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 11:00am and 12:00pm. Bucketing: values above 20 rounded down to + the nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 12:00pm and 1:00pm. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 1:00pm and 2:00pm. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 2:00pm and 3:00pm. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 3:00pm and 4:00pm. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 4:00pm and 5:00pm. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 5:00pm and 6:00pm. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 6:00pm and 7:00pm. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 7:00pm and 8:00pm. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 8:00pm and 9:00pm. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 9:00pm and 10:00pm. Bucketing: values above 20 rounded down to the + nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 10:00pm and 11:00pm. Bucketing: values above 20 rounded down to + the nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the current session that occurred + between 11:00pm and 12:00am. Bucketing: values above 20 rounded down to + the nearest 10. Maximum value of 200. + + + + + The number of clicks on this app in the last 24 hours. Accurate to 15 + minutes. Bucketing: values above 20 rounded down to the nearest 10. + Maximum value of 200. + + + + + The number of clicks on this app in the last hour. Accurate to one minute. + Bucketing: values above 20 rounded down to the nearest 10. Maximum value + of 200. + + + + + Where the app was last launched from. 1: GRID, 2: SUGGESTED, 3: SHELF. + + + + + Index recording when in the sequence of app launch clicks the app was last + clicked on. 0: most recent app clicked on, 1: app clicked immediately + before the most recent, etc. + + + + + The sequence number of the AppListAppLaunch event that corresponds to this + AppListAppClickData event. There will be six AppListAppClickData events + for each sequence number. + + + + + Time since this app was last clicked on to launch. In seconds, bucketed: + [1, 59] to the nearest second, [60, 599] to the nearest minute, [600, + 1199] to the nearest 5 minutes, [1200, 3599] to the nearest 10 minutes, + [3600, 17999] to the nearest 30 minutes, [18000, 86400] to the nearest + hour. + + + + + Total number of clicks launching this app in this sesion. Bucketing: + values above 20 rounded down to the nearest 10. Maximum value of 200. + + + + + + pdyson@chromium.org + + Recorded when an app is launched from the launcher on ChromeOS. This can be + from the suggestion chip, or from the grid of apps. The UKM metrics are not + keyed by navigational urls. Instead, for Chrome apps the keys are based upon + the app id, for Play apps the keys are based upon a hash of the package name + and for PWAs the keys are the urls associated with the PWA. + + + + Total number of clicks launching logged apps in the last 24 hours. + Accurate to the nearest 15 minutes. Bucketing: values above 20 rounded + down to the nearest 10. Maximum value of 200. + + + + + Total number of clicks launching logged apps in the last hour. Accurate to + the nearest minute. Bucketing: values above 20 rounded down to the nearest + 10. Maximum value of 200. + + + + + The type of app. 1: CHROME, 2: PLAY, 3: PWA/Bookmark app. + + + + + Click method. 1: MOUSE, 2: TOUCH, 3: SYTLUS, 4: KEYBOARD. + + + + + An enum representing the day of the week that the data was logged in the + local time zone. Sunday = 0. + + + + + The mode of the device. 1: CLOSED_LID (Lid is closed), 2: LAPTOP (Lid is + open, tablet mode off or unsupported) , 3: TABLET (Lid is open, tablet + mode on or no lid at all). + + + + + The type of the device. 1: TABLET, 2: LAPTOP. + + + + + The hour of the day when the data is logged. Hours since midnight in the + local time zone. + + + + + Where the app was launched from. 1: GRID, 2: SUGGESTED, 3: SHELF. + + + + + The position of the app within the grid/suggested apps/shelf. 0 is the + first position. + + + + + Number of hours in the current session up to this event. Bucketing: + exponential buckets, increasing in size by 25%, rounded to the nearest + integer. i.e. 0, 1, 2, 3, 4, 5, 6, 7, 9, 12, 15, 18, 23, 28, 36, 44... + + + + + + + Deprecated March 2021. + + jiameng@chromium.org + thanhdng@chromium.org + tby@chromium.org + + Records details of impressions and launches of non-apps in the ChromeOS + launcher, such as files, omnibox results, and answer cards. + + + + The kind of launcher item. Corresponds to the value of + ChromeSearchResult::result_[sub]type. + + + + + The day of the week that the event was logged on, in the local time zone. + Sunday is 0. + + + + + The mode of the device. + + + + + An ID linking together events within a single set of launcher search + results. One of these may be a launch, and the rest impressions. + + + + + An enum representing the file extension if this event represents a local + or DriveFS file. + + + + + The hour of the day that the event was logged in. Hours measured from + midnight in the local timezone. + + + + + True if the item represented by this event was launched, false otherwise. + + + + + The number of launches within the last 24 hours at hour 0. Rounded down to + the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 1. Rounded down to + the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 2. Rounded down to + the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 3. Rounded down to + the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 4. Rounded down to + the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 5. Rounded down to + the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 6. Rounded down to + the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 7. Rounded down to + the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 8. Rounded down to + the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 9. Rounded down to + the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 10. Rounded down + to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 11. Rounded down + to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 12. Rounded down + to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 13. Rounded down + to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 14. Rounded down + to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 15. Rounded down + to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 16. Rounded down + to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 17. Rounded down + to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 18. Rounded down + to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 19. Rounded down + to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 20. Rounded down + to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 21. Rounded down + to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 22. Rounded down + to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The number of launches within the last 24 hours at hour 23. Rounded down + to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + How many times this item has been launched during this session. Rounded + down to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The index of this item in the search results list. Indices start at 0. + + + + + The length of the raw search query with whitespace trimmed. Rounded down + to the nearest exponential bucket, with a bucket ratio of 1.15. + + + + + The raw relevance score returned by the relevant search provider for this + item. + + + + + The hour when the previous launch of this item occurred. Hours measured + from midnight in the local timezone. This can be any value 0-23, as the + last launch could have been on a previous day. + + + + + Seconds since this item was last launched in this session. Rounded down to + the nearest exponential bucket, with a bucket ratio of 1.045. This makes + the bucket at 24 hour mark approximately 1 hour long. + + + + + + vidhanj@google.com + koerber@google.com + + Recorded after a form submission that either resulted in a save prompt for + addresses or in a silent update of an already existing profile. + + + + Logs if data was imported from a field that has autocomplete=UNRECOGNIZED. + + + + + Logs the import type of the storage prompt. An import type can be either + the import of a new profile, an update of an existing profile that results + in a confirmation dialog, or a silent update that only changes the + structure of an already stored address but does not affect any + settings-visible stored data. + + + + + Logs the count for the number of fields that have been edited by the user + in the storage dialog before the storage was confirmed. + + + + + Logs the phone number validity status based on whether the phone number + was imported in the profile or not or removed beforehand. + + + + + Logs the user decision based on the storage prompt. + + + + + + sebsg@chromium.org + + + Whether the upload was proposed to the user or the reasons why it was not. + The value is a bitmask of |CardUploadDecisionMetric|. + + + + + + schwering@google.com + + Recorded when a credit card form is autofilled. + + + + Logs the field types which Autofill would have filled if the credit card + on file was complete. + + + + + Logs a qualitative summary of the field types which Autofill would have + filled if the credit card on file was complete. + + + + + Logs the field types which Autofill would have filled into visible fields + if the credit card on file was complete. + + + + + Logs a qualitative summary of the field types which Autofill would have + filled into visible fields if the credit card on file was complete. + + + + + Logs the field types which Autofill would have filled if the credit card + on file was complete and there was no security policy. + + + + + Logs a qualitative summary of the field types which Autofill would have + filled if the credit card on file was complete and there was no security + policy. + + + + + Logs the field types which Autofill would have filled into visible fields + if the credit card on file was complete and there was no security policy. + + + + + Logs a qualitative summary of the field types which Autofill would have + filled into visible fields if the credit card on file was complete and + there was no security policy. + + + + + Logs the field types which Autofill actually filled. + + + + + Logs a qualitative summary of the field types which Autofill actually + filled. + + + + + Logs the field types which Autofill actually filled into visible fields. + + + + + Logs a qualitative summary of the field types which Autofill actually + filled into visible fields. + + + + + Logs the field types which Autofill would have filled if there was no + security policy. + + + + + Logs a qualitative summary of the field types which Autofill would have + filled if there was no security policy. + + + + + Logs the field types which Autofill would have filled into visible fields + if there was no security policy. + + + + + Logs a qualitative summary of the field types which Autofill would have + filled into visible fields if there was no security policy. + + + + + An approximately 10-bit hash of the form's actual signature. + + + + + Missing shared-autofill feature prevented a cross-origin credit-card field + from being filled. Shared-autofill is a policy-controlled feature by which + a frame can allow a child-frame to be autofilled across origin. + + + + + + jiahuiguo@google.com + + Recorded when we parse a form to log whether developer has used autocomplete + markup or UPI-VPA hints. The value is a bitmask of + |DeveloperEngagementMetric|. + + + + + The signature of the form. This is the hash identifier used to denote this + form for query and voting purposes. See + components/autofill/core/common/signatures_util.cc for more details. + + + + + Type of form. Stored as bitvector. A set ith bit implies enum FormType's + ith type was detected. Multiple types are possible. + + + + + True for credit card forms, false for address/profile forms. See + |FormStructure::IsCompleteCreditCardForm()|. + + + + + + koerber@google.com + battre@google.com + + Records when a user edits a value that was filled by autofill. + + + + The signature of the field. This is the hash identifier used to denote + this field for query and voting purposes. See + components/autofill/core/common/signatures_util.cc for more details. + + + + + The signature of the form. This is the hash identifier used to denote this + form for query and voting purposes. See + components/autofill/core/common/signatures_util.cc for more details. + + + + + Field's overall |ServerFieldType|. See: autofill::ServerFieldType + + + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + Recorded at the end of a Fast Checkout run. + + + + 1 if the form was filled by Fast Checkout, 0 otherwise. + + + + + An approximately 10-bit hash of the form's actual signature. + + + + + Type of form. Stored as bitvector. A set i-th bit implies enum FormType's + i-th type was detected. Multiple types are possible. + + + + + Unique run ID for linking to other UKM events. + + + + + + bwolfgang@google.com + jkeitel@google.com + vizcay@google.com + + Recorded at the end of a Fast Checkout run. + + + + Unique run ID for linking to other UKM events. + + + + + States if the run was successful or why it was not. + + + + + + rogerm@chromium.org + + Recorded when Chrome validates field type predictions (on submit, on leaving + a form, on receiving a form with autocomplete attributes). + + + + The signature of the field. This is the hash identifier used to denote + this field for query and voting purposes. See + components/autofill/core/common/signatures_util.cc for more details. + + + + + The signature of the form. This is the hash identifier used to denote this + form for query and voting purposes. See + components/autofill/core/common/signatures_util.cc for more details. + + + + + The field is currently autofilled. + + + + + Time since form parse. + + + + + The system which generated the prediction: heuristics, server, overall. + + + + + The event which triggered the validation: Submission, Left Form, Form has + Autocomplete attributes. + + + + + The field was autofilled and subsequently edited. + + + + + + rogerm@chromium.org + + Recorded when Chrome validates field type predictions (on submit, on leaving + a form, on receiving a form with autocomplete attributes). + + + + The observed type of the field. See: autofill::ServerFieldType + + + + + The signature of the field + + + + + The signature of the form. + + + + + Time since form parse. + + + + + The predicted type of the field. See: autofill::ServerFieldType + + + + + The system which generated the prediction: heuristics, server, overall. + + + + + The event which triggered the validation: Submission, Left Form, Form has + Autocomplete attributes. + + + + + + dlkumar@google.com + + Recorded when user interacted with autofill. + + + + Logs autofill form events funnel. See |FormEvent|. + + + + + Type of form. Stored as bitvector. A set ith bit implies enum FormType's + ith type was detected. Multiple types are possible. + + + + + Time since form parse. + + + + + + kazinova@google.com + + Records whether the form was successfully filled by Autofill on iOS. The + metric is used to measure silent renderer fails when the filling request is + executed successfully but the results reported in a callback are empty. + + + + A boolean indicating success or failure. + + + + + + jiahuiguo@google.com + + Recorded when user submits a form. + + + + Number of Autocomplete fills invoked by the user on the current form. + + + + + Describes the trigger source that invoked Autofill. Only recorded if + AutofillAssistantIntent was not undefined. + + + + + Number of Autofill fills invoked by the user on the current form. + + + + + Whether form's fields were all autofilled, some fields were autofilled, or + none of the field were autofilled. See |AutofillFormSubmittedState|. + + + + + Number of times a user focused on a form element and changed its value. + Consecutive value changes on the same form element are not counted, + neither are JS invoked changes. Also, re-focusing a form element and + changing its value is only counted if another form element's value was + changed in the meantime. + + + + + FormSignature is approximately 10 bit hash of form structure. + + + + + Type of form. Stored as bitvector. A set ith bit implies enum FormType's + ith type was detected. Multiple types are possible. + + + + + True for forms containing a UPI/VPA field. + + + + + True for credit card forms, false for address/profile forms. See + |FormStructure::IsCompleteCreditCardForm()|. + + + + + Time since form parse. + + + + + + parastoog@chromium.org + + Recorded while trying to fill or preview a hidden or a representational + field. + + + + Field's overall |ServerFieldType|. See |AutofillField.GetStorableType()|. + + + + + The signature of the field. This is the hash identifier used to denote + this field for query and voting purposes. See + components/autofill/core/common/signatures_util.cc for more details. + + + + + Field's |FieldTypeGroup|. See |AutofillType.group()|. + + + + + The signature of the form. This is the hash identifier used to denote this + form for query and voting purposes. See + components/autofill/core/common/signatures_util.cc for more details. + + + + + Field's |ServerFieldType| based on heuristics. See + |AutofillField.heuristic_type()|. + + + + + Whether the field's autocomplete hint specified 'billing' or 'shipping'. + See |AutofillField.html_mode()|. + + + + + Field's autocomplete field type hint. See |AutofillField.html_type()|. + + + + + True if the field was skipped while filling or previewing the form, + because it was hidden or representational, but not a 'select' one. + + + + + Field's |ServerFieldType| returned by server. See + |AutofillField.server_type()|. + + + + + + jiahuiguo@google.com + + Recorded when we parse a form to log form metadata and autofill settings + that apply to all subsequent events for this form. + + + + FormSignature is approximately 10 bit hash of form structure. + + + + + Type of form. Stored as bitvector. A set ith bit implies enum FormType's + ith type was detected. Multiple types are possible. + + + + + True for credit card forms, false for address/profile forms. + + + + + Number of local credit cards or local autofill profiles. + + + + + Number of masked and full server credit cards or server autofill profiles. + + + + + + battre@chromium.org + kolos@chromium.org + nepper@chromium.org + + These metrics are a clone of Autofill's UMA key metrics to measure Autofill + quality. They are recorded on navigation if a form was submitted before. + + + + Obsolete. Used to describe the trigger source that invoked Autofill. Was + only recorded if AutofillAssistantIntent was not undefined. + + + + + Number of Autofill fills invoked by the user on the current form. + + + + + Optional, only set if a form was filled by Fast Checkout. Unique ID of a + Fast Checkout run. + + + + + Has value 1 if user accepted the suggestion to fill values on a submitted + form, 0 otherwise. This is counted as 1 if the user accepted such a + suggestion at any time, regardless whether other suggestions were ignored + or whether the accepted suggestion was reverted afterwards. Only recorded + if suggestions were shown to the user. + + + + + Has value 1 if the user filled any fields via Autofill on a submitted + form, 0 otherwise. + + If the user reverts the filling, the form is still counted as filled. + + This metric is different from FillingAcceptance in the sense that the + latter is only recorded if the user has actually seen a prompt to fill + data. + + + + + Has value 1 for submitted and autofilled forms if user edited at least one + filled value before submitting the form, 0 otherwise. Only recorded if any + suggestion was filled. + + + + + Has value 1 for submitted forms when Chromium had any address or payments + data to fill, 0 otherwise. + + It does not matter whether the user actually requested to fill the data. + It does not matter either whether the data available for filling + corresponded to the submitted data. + + + + + Hashed GUID linking together multiple emissions of this event if emitted + within a 20 minutes timeframe. + + + + + Number of times a user focused on a form element and changed its value. + Consecutive value changes on the same form element are not counted, + neither are JS invoked changes. Also, re-focusing a form element and + changing its value is only counted if another form element's value was + changed in the meantime. + + + + + Type of form. Stored as bitvector. A set ith bit implies enum FormType's + ith type was detected. Multiple types are possible. + + + + + + parastoog@chromium.org + + Recorded when a field type predicted by server is rationalized because of + repetition. + + + + Field's overall |ServerFieldType| after rationalization. See + |AutofillField.GetStorableType()|. + + + + + Field's overall |ServerFieldType| before rationalization. See + |AutofillField.GetStorableType()|. + + + + + The signature of the field. This is the hash identifier used to denote + this field for query and voting purposes. See + components/autofill/core/common/signatures_util.cc for more details. + + + + + Field's |FieldTypeGroup|. See |AutofillType.group()|. + + + + + The signature of the form. This is the hash identifier used to denote this + form for query and voting purposes. See + components/autofill/core/common/signatures_util.cc for more details. + + + + + Field's |ServerFieldType| based on heuristics. See + |AutofillField.heuristic_type()|. + + + + + Whether the field's autocomplete hint specified 'billing' or 'shipping'. + See |AutofillField.html_mode()|. + + + + + Field's autocomplete field type hint. See |AutofillField.html_type()|. + + + + + Field's |ServerFieldType| returned by server. See + |AutofillField.server_type()|. + + + + + + fleimgruber@google.com + schwering@google.com + + Recorded after sectioning is performed when the server classification + arrived, and only when `AutofillUseParameterizedSectioning` is enabled. + + + + A 10-bit hash of the form's signature. + + + + + A 10-bit hash of the form's computed sections. + + + + + + + Deprecated 2/2019 + + jiahuiguo@google.com + + + Obsolete. + + Time since form parse. + + + + + + jiahuiguo@google.com + + Recorded when user selects a suggestion and we fill the form with that + suggestion. + + + + The signature of the field + + + + + The signature of the form. + + + + + True for credit card forms, false for address/profile forms. + + + + + Time since form parse. + + + + + Whether the suggestion was from a local card/autofill profile or from a + server card/autofill profile. + + + + + + jiahuiguo@google.com + + Recorded when a suggestion is shown to user. + + + + The signature of the field + + + + + The signature of the form. + + + + + Field's |ServerFieldType| based on heuristics. See + |AutofillField.heuristic_type()|. + + + + + Field's autocomplete field type hint. See |AutofillField.html_type()|. + + + + + Time since form parse. + + + + + Field's |ServerFieldType| returned by server. See + |AutofillField.server_type()|. + + + + + + jiahuiguo@google.com + + Recorded when user edits a text field. The text field may have been + autofilled. + + + + The signature of the field + + + + + Field's |FieldTypeGroup|. See |AutofillType.group()|. + + + + + The signature of the form. + + + + + Field's |ServerFieldType| based on heuristics. See + |AutofillField.heuristic_type()|. + + + + + Whether the field's autocomplete hint specified 'billing' or 'shipping'. + See |AutofillField.html_mode()|. + + + + + Field's autocomplete field type hint. See |AutofillField.html_type()|. + + + + + True if the field was autofilled. See |AutofillField.is_autofilled|. + + + + + True if the field was empty. See |AutofillField.IsEmpty()|. + + + + + Time since form parse. + + + + + Field's |ServerFieldType| returned by server. See + |AutofillField.server_type()|. + + + + + + battre@chromium.org + chrome-autofill-team@google.com + + All information about a specific field, recorded at form submission or form + destruction time (whatever comes first). + + + + Whether filling the field was skipped during autofill, and if it was + skipped, what the skipping reasons were. Recorded as a DenseSet of + |SkipStatus|. + + + + + A random variable assigned to a specific instance of a form control (e.g. + a HTML input element). This should be globally unique and suitable for + distinguishing fields. Two different users would have different values. + For the same user, the same field in the same form in two different tabs + would have two different values. + + + + + The signature of the field, a 10 bit hash value (0-1021) of the field name + and field type used to denote this field for query and voting purposes. + + + + + Whether the user modified a field after autofilling/autocompleting it. + + + + + A form control type of a web form-associated element. We only list the + very common ones that are seen in autofill, such as text, textarea, + checkbox, radio, select-one, see |autofill::FormControlType|. + + + + + A random variable assigned to a specific instance of a HTML form in a + specific renderer. This should be globally unique and suitable for + counting distinct forms. Two different users would have different values. + A single user loading the same form in two different tabs would have two + different values. This is used to link the fields to a form in + Autofill2.FormSummary. + + + + + Whether there was a value after user typed or autofilled in the field at + form submission or form destruction time. + + + + + Whether there was a value before autofill in the field. + + + + + There are multiple heuristic classification strategies working in + parallel. This type is predicted from the active pattern source. + + + + + The type of the field predicted from the source of local heuristics on the + client, which uses patterns applied for most users, the types are from + |autofill::ServerFieldType|. + + + + + The type of the field predicted from the heuristics that uses experimental + patterns, the types are from |autofill::ServerFieldType|. + + + + + The type of the field predicted from patterns whose stability is above + suspicion, the types are from |autofill::ServerFieldType|. + + + + + The type of the field predicted from the heuristics that uses patterns + only for non-user-visible metrics, one step before experimental, the types + are from |autofill::ServerFieldType|. + + + + + The mode according to the autocomplete attribute of a field. Only set if a + field has a valid autocomplete attribute. Currently this is used to + specify if the field is part of the billing or shipping address. See + autofill::mojom::HtmlFieldMode. + + + + + The field type specified in the autocomplete attribute of the field. Only + set if a field has a valid autocomplete attribute. See + autofill::mojom::HtmlFieldType. + + + + + Whether the field is focusable to the user. This is an approximation of + visibility with false positives. + + + + + The final field type from the list of |autofill::ServerFieldType| that we + choose after rationalization, which is used to determine the autofill + suggestion when the user triggers autofilling. + + + + + If multiple fields have the same signature, this indicates the position + within this set of fields. This allows us to understand problems related + to duplicated field signatures. + + + + + A single HTML form can consist of multiple sections. A section is a set of + fields that are filled together. For example a single form can contain a + shipping and a billing address. Each of those corresponds to one section. + The sections are mapped to consecutive natural numbers starting at 1. The + section IDs are unique per form. + + + + + The major source of predictions from the Autofill crowdsourced server, see + AutofillQueryResponse::FormSuggestion::FieldSuggestion::FieldPrediction::Source. + + + + + The additional source of predictions from the Autofill crowdsourced server + if there is an additional prediction, see + AutofillQueryResponse::FormSuggestion::FieldSuggestion::FieldPrediction::Source. + + + + + The type of the field predicted from the Autofill crowdsourced server from + majority voting (and some more complex stuff). The types are from + |autofill::ServerFieldType|. + + + + + The additional type of the field predicted from the Autofill crowdsourced + server if there is an additional prediction. The types are from + |autofill::ServerFieldType|. + + + + + This is an annotation for server predicted field types which indicates + that a manual override defines the server type. This allows us to assess + the impact of server overrides and detect possible problems with it. + + + + + Whether the suggestion was accepted. This is only set for a field where a + suggestion was shown and accepted by the user. It is not the same as + autofilled, which is true for all the fields that were filled. More than + one field can have an accepted suggestion because the form can be split + into multiple sections (e.g. shipping and billing address) or because the + user triggers autofill multiple times. + + + + + Whether there was a suggestion available for the field from user data. + This is only set for a field that was focused by the user. + + + + + Whether a suggestion popup was ever shown on this field (i.e. the field + had focus and user had data on file). + + + + + Whether the field's type was changed by running the rationalization. + + + + + Whether the user ever typed into the field (regardless of autofill). + + + + + Whether the field was ever filled by autofill. This applies to all the + fields that were autofilled, not just the field that was clicked. If a + fill operation did not change the value of a field because the old value + matches the filled value, this is still recorded as a WasAutofilled = + true. + + + + + Whether the user ever focused on the field. + + + + + Whether the form was refilled by autofill. + + + + + + battre@chromium.org + chrome-autofill-team@google.com + + Information recorded for a HTML form element on the HTML page, recorded at + form submission or form destruction time (whatever comes first). + + + + A bit vector of some autofill form events that records a funnel of this + autofill form. The autofill form events are from an enum list specifying + the possible status of the autofill forms, such as if a dropdown with + suggestions was shown, if the user interacted with a field in the form. + Some of the events are triggered separately for address and credit card + forms, e.g. if all the fillable fields in the credit card forms were + filled. New form events can be added over time and a form can have + multiple form events. This bit vector stored only events 0..63. + + + + + A bit vector of some autofill form events that records a funnel of this + autofill form. This contains the entries 64...127 shifted right by 64 + bits. + + + + + A random variable assigned to a specific instance of a HTML form in a + specific renderer. This should be globally unique and suitable for + counting distinct forms. Two different users would have different values. + A single user loading the same form in two different tabs would have two + different values. This is used to link the fields in this form in + Autofill2.FieldInfo. + + + + + The signature of the form, which is a 10-bit hash of the form's domain, + name and all the supported form fields (including empty names). + + + + + This indicates whether the form is located in the main frame or in an + iframe. A cross-origin autofill is prevented only because shared-autofill + is disabled in the field's frame. Shared-autofill is a policy-controlled + feature by which a frame can allow a child-frame to be autofilled across + origin. We record the url of the main frame not the iframe even if the + form is in the iframe. + + + + + The time interval from first interaction on the form to form submission in + ms in exponential buckets from |GetSemanticBucketMinForDurationTiming()|. + + + + + The time interval from form parse to form submission in ms in exponential + buckets from |GetSemanticBucketMinForDurationTiming()|. + + + + + A sampling rate is a precomputed positive integer and is applied to each + form and adaptive to the popularity of forms. The most popular forms are + classified into a `very popular` category and maybe apply a 1:100 sampling + while the less popular forms have a sampling of 1:1. If the sampling is + 1:X, this sample rate value stores the `X`. + + + + + Whether the form was submitted. + + + + + + altimin@chromium.org + hajimehoshi@chromium.org + + Recorded at a history commit for each reason passed to + BackForwardCache::DisableForRenderFrameHost. The source IDs match with the + source IDs of HistoryNavigation events. + + + + Deprecated as of 03/2021. Replaced with Reason2. + + + For history navigations, records the reason passed to + BackForwardCache::DisableForRenderFrameHost calls. + + The metric is recorded when a history navigation commits and emits a + sample for each reason. One history navigation can emit multiple reasons, + and these reasons are recorded as multiple events with the same source ID + based on the navigation ID. + + + + + For history navigations, records the reason passed to + BackForwardCache::DisableForRenderFrameHost calls. The reason is specified + as a 48-bit int representing the source (blink or an embedder) and a + source-specific 16-bit int representing the reason specific to that + source. + + The metric is recorded when a history navigation commits and emits a + sample for each reason. One history navigation can emit multiple reasons, + and these reasons are recorded as multiple events with the same source ID + based on the navigation ID. + + + + + + altimin@chromium.org + hajimehoshi@chromium.org + fergal@chromium.org + + Recorded at a history commit for each reason passed to + RenderFrameHost::IsInactiveAndDisallowActivation. The source IDs match with + the source IDs of HistoryNavigation events. + + + + For history navigations, records the reason passed to + RenderFrameHost::IsInactiveAndDisallowActivation. + + The metric is recorded when a history navigation commits and emits a + sample for each reason. One history navigation can emit multiple reasons, + and these reasons are recorded as multiple events with the same source ID + based on the navigation ID. + + + + + + nator@chromium.org + rayankans@chromium.org + peter@chromium.org + + A BackgroundFetch event is logged before a background fetch is started from + a document context. + + + + Boolean for whether the background fetch was denied due to permission. + This includes only the content setting permission. + + + + + The value of downloadTotal provided with the background fetch. This is the + number of bytes that the developer expects to be downloaded with the + background fetch. This number is exponentially bucketed for privacy + reasons, and uses the UKM GetExponentialBucketMin method with a value of + 2.0 for spacing. + + + + + Boolean for whether a title was provided with the background fetch. + + + + + Count of icons provided with the background fetch. + + + + + Number of requests in the background fetch. This number is exponentially + bucketed for privacy reasons, and uses the UKM GetExponentialBucketMin + method with a value of 2.0 for spacing. + + + + + Ratio of the ideal icon to the chosen icon size, times hundred. This will + be set to -1 if either ideal icon size is 0, or if none of the provided + icons are suitable. + + + + + + nator@chromium.org + rayankans@chromium.org + peter@chromium.org + + A BackgroundFetchDeletingRegistration event is logged when a background + fetch job is being deleted. + + + + Boolean for whether the background fetch job was cancelled from the UI. + + + + + + nator@chromium.org + rayankans@chromium.org + peter@chromium.org + + Logged when a Background Sync one-shot registration is completed. + + + + Integer value of the maximum number of allowed retries. + + + + + Integer value of the number of retries / sync events dispatched. + + + + + The enum value of the completion status, defined in + blink::ServiceWorkerStatusCode. + + + + + + nator@chromium.org + rayankans@chromium.org + peter@chromium.org + + Logged when a one-shot Background Sync registration is created. + + + + Boolean for whether a sync event can be immediately dispatched for this + registration. + + + + + Boolean for whether this is a duplicate registration. + + + + + + phillis@chromium.org + cmumford@chromium.org + + Metrics that measure the use of Badging API + + + + Logged when navigator.setAppBadge or navigator.clearAppBadge is called. + + + + + + + + + + + + + + chikamune@google.com + sisidovski@google.com + kouhei@google.com + + Records metrics for LazyAds and LazyEmbeds Interventions. LazyAds and + LazyEmbeds Interventions will automatically apply lazy loading to ad's + frames and embedded web applications so that we can automatically improve + Core Web Vitals for many sites. These metrics help us to know to what degree + these Interventions can improve Core Web Vitals when the sites are eligible + for LazyAds or LazyEmbeds. + + + + Records the total number of per-page ad frames that are eligible for the + LazyAds interventions by AutomaticLazyFrameLoadingToAds. The exponential + bucketing is applied for privacy reasons by using + ukm::GetExponentialBucketMinForCounts1000(). + + + + + Records the total number of per-page frames that are eligible for the + LazyEmbeds interventions by AutomaticLazyFrameLoadingToEmbeds. The + exponential bucketing is applied for privacy reasons by using + ukm::GetExponentialBucketMinForCounts1000(). + + + + + + + No longer recorded after August 2022 launch of the feature. + + flackr@chromium.org + blink-interactions-team@google.com + + Sent when a user long presses or right clicks a document (and that an image + is found). Requires that the `EnablePenetratingImageSelection` feature is + enabled together with a `logUkm` specific finch param. + + + + Emits an integer id for a selection corresponding to the + ImageSelectionOutcome enum defined in Blink's context_menu_controller.h. + + + + + + schenney@chromium.org + chrome-webdev-metrics@google.com + + Collects data for a subset of UseCounter features of interest to the Web + Platform Developer Metrics team due to their recent launch or potential for + spec changes. Features reported in this set should be rare, appearing in + fewer than 5% of page loads. + + + + Opt-in UseCounter feature, listed in + components/page_load_metrics/browser/observers/use_counter/webdev_metrics_ukm_features.cc + + + + + + + + + + + + Emits True(1) or False(0) to indicate whether the Feature recorded is in + the main frame or not. + + + + + + yigu@chromium.org + web-identity-eng@google.com + + Records performance metrics for FedCM(Federated Credential Management) API. + + + + Records whether the FedCM auto re-authn call is blocked because the auto + re-authn content settings permission is disabled. Records at most one + sample per FedCM API with auto re-authn enabled: some failures could occur + before this metric is recorded. + + + + + Records whether the FedCM auto re-authn call is blocked because the auto + re-authn is under embargo, i.e. due to cooldown. Records at most one + sample per FedCM API with auto re-authn enabled: some failures could occur + before this metric is recorded. + + + + + Records whether there was zero, one, or multiple returning accounts when a + site calls the FedCM API with autoReauthn: true. Records at most one + sample per failed API call: some failures could occur before this metric + is recorded. + + + + + Records whether auto re-authn checks succeeded or not. The count would + provide roughly the number of FedCM re-authn attempts, the true count + would provide the number of times the re-authn UI is shown to the user, + and the false count would provide the number of attempts where auto + re-authn was blocked for some non-network related reason. Records at most + one sample per FedCM API with auto re-authn enabled: some failures could + occur before this metric is recorded. + + + + + Records the amount of time that has passed from the time the FedCM auto + re-authn API was embargoed to the time in which the next call occurs. Only + records a sample when there is an auto re-authn FedCM API call which is + blocked due to embargo. Samples are exponentially bucketed, with a max + bucket of 10 minutes, the embargo duration (see + `kFederatedIdentityAutoReauthnEmbargoDuration`). + + + + + Records the session ID associated to the FedCM call for which this event + is recording metrics. Each FedCM call gets a random integer session id, + which helps group UKM events by the session id. + + + + + Records the status of a request id token call to the FedCM API. + + + + + Removed June 2022 with the removal of the revoke() method. + + + Records the status of a revoke call to the FedCM API. + + + + + Records the time (in milliseconds) from when the accounts dialog is shown + to when the user closes the dialog without selecting any account. + + + + + Records the time (in milliseconds) from when the accounts dialog is shown + to when the user presses the Continue button. + + + + + Records the time (in milliseconds) from when the user presses the Continue + button to when the id token response is received. + + + + + Records the time (in milliseconds) from when a call to the API was made to + when the accounts dialog is shown. + + + + + Records the overall time (in milliseconds) from when the API is called to + when the id token response is received. + + + + + + npm@chromium.org + web-identity-eng@google.com + + Records performance metrics for FedCM (Federated Credential Management) API. + Recorded when the web developer calls the FedCM API. Individual metrics are + recorded eagerly, whenever the value has been computed. + + This event uses the specific WEB_IDENTITY ukm_source_id which is generated + from the identity provider's origin. + + + + Records the session ID associated to the FedCM call for which this event + is recording metrics. Each FedCM call gets a random integer session id, + which helps group UKM events by the session id. + + + + + Records the status of a request id token call to the FedCM API. + + + + + Records whether user sign-in states between IDP and browser match after + browser receives an account list from IDP prior to showing UI. + + + + + Records the time (in milliseconds) from when the accounts dialog is shown + to when the user closes the dialog without selecting any account. + + + + + Records the time (in milliseconds) from when the accounts dialog is shown + to when the user presses the Continue button. + + + + + Records the time (in milliseconds) from when the user presses the Continue + button to when the id token response is received. + + + + + Records the time (in milliseconds) from when a call to the API was made to + when the accounts dialog is shown. + + + + + Records the overall time (in milliseconds) from when the API is called to + when the id token response is received. + + + + + + vmpstr@chromium.org + chrishtr@chromium.org + paint-dev@chromium.org + + Logged once per page; indicates the type of find-in-page behaviors users + utilizied. + + + + Boolean indicating that a find-in-page match was hidden but became visible + after the beforematch event was fired. + + + + + Boolean indicating whether there was an active match in content-visibility + unrendered elements. + + + + + Boolean indicating that find-in-page happened. + + + + + + schenney@chromium.org + dom-dev@chromium.org + + Logged once per page load, to capture information about invocation of the + HTMLDocumentParser for the initial document load. Does not include other + aspects of document parsing, such as style sheet parsing or script execution + during parsing. Also does not include innerText parsing. + + This event is not recorded on machines with low-resolution clocks. + + + + The number of chunks parsed while loading the page. Each chunk represents + a piece of the HTML content that can be loaded without blocking or + yielding. + + + + + The maximum time used to parse a single chunk before being blocked, + yielding or completing, in microseconds. + + + + + The minimum time used to parse a single chunk before being blocked, + yielding or completing, in microseconds. + + + + + The total amount of time spent in the HTMLDocumentParser parsing the page, + in microseconds. + + + + + The average number of tokens parsed across all chunks. + + + + + The maximum number of tokens parsed as a chunk. + + + + + The minimum number of tokens parsed as a chunk. + + + + + The total number of tokens parsed across all chunks. + + + + + The average time between parsing of two chunks, in microseconds. Will be + zero if only one chunk was parsed. + + + + + The minimum time between parsing of two chunks, in microseconds. Will be + zero if only one chunk was parsed. + + + + + The maximum time between parsing of two chunks, in microseconds. Will be + zero if only one chunk was parsed. + + + + + + schenney@chromium.org + paint-dev@chromium.org + + The aggregated time spent in each metric's component from creation of the + local frame view to the First Contentful Paint signal. The event is reported + once per page load when First Contentful Paint is signaled. + + This event is not recorded on machines with low-resolution clocks. + + + + The time spent in accessibility tree code, between navigation and First + Contentful Paint, in microseconds. + + + + + Time spent computing IntersectionObservations for anchor elements, in + microseconds. + + + + + The time spent in main frame animation, between navigation and First + Contentful Paint, in microseconds. + + + + + Obsolete as of http://crrev.com/794384 and M86. + + + The time spent in main thread compositing, between navigation and First + Contentful Paint, in microseconds. + + + + + No longer recorded after M97 with the launch of CompositeAfterPaint. + + + The time spent in main thread compositing assignments, between navigation + and First Contentful Paint, in microseconds. + + + + + The time spent committing main thread compositing results, between + navigation and First Contentful Paint, in microseconds. + + + + + The time spent in main thread compositing inputs, between navigation and + First Contentful Paint, in microseconds. + + + + + The time spent doing forced document updates due to update sub-document + content, between navigation and First Contentful Paint, in microseconds. + Includes SVG, Canvas and Plugins. + + + + + Time spent computing IntersectionObservations for + DisplayLockDocumentState, in microseconds. + + + + + The time spent in forced style recalc and layouts, between navigation and + First Contentful Paint, in microseconds. + + + + + The time spent in processing rAF-aligned input for the main frame, between + navigation and First Contentful Paint, in microseconds. + + + + + The time spent updating the document in preparation for a hit test for the + main frame, between navigation and First Contentful Paint, in + microseconds. + + + + + The time spent committing layer tree impl data in the compositor thread, + between navigation and First Contentful Paint, in microseconds. + + + + + The time spent computing intersection observer state, between navigation + and First Contentful Paint, in microseconds. + + + + + The total number of times a blink-internal IntersectionObservation was + recomputed between navigation and First Contentful Paint. + + + + + The total number of times a javascript-instantiated + IntersectionObservation was recomputed between navigation and First + Contentful Paint. + + + + + The time spent doing forced document updates due to generic Javascript API + requests, between navigation and First Contentful Paint, in microseconds. + Note this primarily captures Javascript that explicitly requires Style and + Layout, but not implicit requests such as through setting focus or scroll + position. + + + + + Time spent computing IntersectionObservations for javascript observers, in + microseconds. + + + + + The time spent in layout document lifecycle work, between navigation and + First Contentful Paint, in microseconds. + + + + + Time spent computing IntersectionObservations for lazy loading, in + microseconds. + + + + + The time spent in ProxyMain::BeginMainFrame, between navigation and First + Contentful Paint, in microseconds. + + + + + Time spent computing IntersectionObservations for media elements, in + microseconds. + + + + + The time spent in paint document lifecycle work, between navigation and + First Contentful Paint, in microseconds. + + + + + The time spent parsing style sheets. + + + + + The time spent in pre-paint document lifecycle work, between navigation + and First Contentful Paint, in microseconds. + + + + + Removed in M84 in favor of separate ImplCompositorCommit and WaitForCommit + metrics. + + + The time spent committing main thread to impl layer tree information, + between navigation and First Contentful Paint, in microseconds. + + + + + Merged into CompositingCommit in http://crrev.com/815947 in M88. + + + The time spent in ScrollingCoordinator, between navigation and First + Contentful Paint, in microseconds. + + + + + The time spent doing forced document updates due to browser requested + actions, such as accessibility, intersection observer or spell checking, + between navigation and First Contentful Paint, in microseconds. + + + + + The time spent in style document lifecycle work, between navigation and + First Contentful Paint, in microseconds. + + + + + Removed January 2020 in favor of separate Style and Layout metrics. + + + The time spent in layout and style document lifecycle work, between + navigation and First Contentful Paint, in microseconds. Will be obsolete + in M-82. + + + + + The time spent in for LayerTreeHost::UpdateLayers, between navigation and + First Contentful Paint, in microseconds. + + + + + Time spent computing internal geometry information about iframes, between + navigation and First Contentful Paint, in microseconds. + + + + + The time spent doing forced document updates due to a user action such as + input, find-in-page or printing, between navigation and First Contentful + Paint, in microseconds. + + As of 04/2023, updates for scrolling are included in this metric. + + + + + Time elapsed, in microseconds, between when an animation update is first + scheduled and when the resulting BeginMainFrame starts. + + + + + The time spent waiting for the compositor thread to begin processing a + commit, between navigation and First Contentful Paint, in microseconds. + + + + + + npm@chromium.org + sullivan@chromium.org + + Paint timing metrics recorded in Blink, usually used as debugging metrics + for PaintTiming metrics in the PageLoad event. + + + + Records whether a page has an image whose size equals the full viewport. + Recorded when the LCP algorithm has stopped. + + + + + + dom@chromium.org + chrome-loading@google.com + + Metrics associated with the async script count associated with a document, + recorded when the HTML parsing of a mainframe has completed. + + + + Deprecated 04/2022. + + + The total number of async scripts associated with a document at the time + parsing has finished. + + + + + + schenney@chromium.org + paint-dev@chromium.org + + Metrics that measure various update times in Blink. This includes paint, + compositing, and layout update times. This event is reported once in the + first main frame update after First Contentful Paint, with data from a + randomly chosen frame up to and including First Contentful Paint, and once + on LocalFrameView destruction with data from a random frame between + FirstContentfulPaint and shutdown. + + This event is not recorded on machines with low-resolution clocks. + + + + The time taken for accessibility for the main frame in microseconds during + the sampled frame. + + + + + + + + + + + + + The total main frame time used in accessibility, in microseconds. + + + + + Time spent computing IntersectionObservations for anchor elements, in + microseconds. + + + + + + + + + + + + + The total main frame time used to compute IntersectionObservations for + anchor elements, in microseconds. + + + + + The time taken for main frame animation in microseconds during the sampled + frame. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average time taken for main frame animation in microseconds in the + event period. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average over frames within the sample window of the ratio of time + taken for main frame animation to the total time for the main frame. An + int in the range [0,100]. + + + + + Deprecated as of 03/2019. + + + The longest single time taken for main frame animation in microseconds in + the event period. + + + + + Deprecated as of 03/2019. + + + The highest proportion of a frame ever used for main frame animation + within the sample window. An int in the range [0,100]. + + + + + The total main frame time used by by main thread animations, in + microseconds. + + + + + Deprecated as of 11/2020. Replaced with AnimateBeginMainFrame. + + + The percentage of the main frame time used by main thread animations. An + int in the range [0,100]. + + + + + Obsolete as of http://crrev.com/794384. + + + The time taken by the compositing phase in microseconds during the sampled + frame. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average time taken by the compositing phase in microseconds in the + event period. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average over frames within the sample window of the ratio of time + taken in the compositing phase to the total time for the main frame. An + int in the range [0,100]. + + + + + Deprecated as of 03/2019. + + + The longest single time taken by the compositing phase in microseconds in + the event period. + + + + + Deprecated as of 03/2019. + + + The highest proportion of a frame ever used by the compositing phase + within the sample window. An int in the range [0,100]. + + + + + No longer recorded after M97 with the launch of CompositeAfterPaint. + + + The time taken by compositing assignments in microseconds during the + sampled frame. + + + + + + + + + + + + + No longer recorded after M97 with the launch of CompositeAfterPaint. + + + The total main frame time used by the compositing assignments phase, in + microseconds. + + + + + Deprecated as of 11/2020. Replaced with + CompositingAssignmentsBeginMainFrame. + + + The percentage of the main frame time used by the compositing assignments + phase. An int in the range [0,100]. + + + + + The time taken by the compositing commit in microseconds during the + sampled frame. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average time taken by the compositing commit at the end of the blink + lifecycle, in microseconds in the event period. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average over frames within the sample window of the ratio of time + taken by the compositing commit at the end of the blink lifecycle to the + total time for the main frame. An int in the range [0,100]. + + + + + Deprecated as of 03/2019. + + + The longest single time taken by the compositing commit at the end of the + blink lifecycle, in microseconds in the event period. + + + + + Deprecated as of 03/2019. + + + The highest proportion of a frame ever taken by the compositing commit at + the end of the blink lifecycle to the total time for the main frame. An + int in the range [0,100]. + + + + + The total main frame time used by the compositing commit, in microseconds. + + + + + Deprecated as of 11/2020. Replaced with CompositingCommitBeginMainFrame. + + + The percentage of the main frame time used by the compositing commit. An + int in the range [0,100]. + + + + + The time taken by the compositing inputs phase in microseconds during the + sampled frame. + + + + + + + + + + + + + The total main frame time used by the compositing inputs phase, in + microseconds. + + + + + Deprecated as of 11/2020. Replaced with CompositingInputsBeginMainFrame. + + + The percentage of the main frame time used by the compositing inputs + phase. An int in the range [0,100]. + + + + + Obsolete as of http://crrev.com/794384. + + + The percentage of the main frame time used by the compositing phase. An + int in the range [0,100]. + + + + + The time spent doing forced document updates due to update sub-document + content, during a sampled frame, in microseconds. Includes SVG, Canvas and + Plugins. + + + + + The time spent doing forced document updates due to update sub-document + content, during the BeginMainFrame block of a sampled frame, in + microseconds. Includes SVG, Canvas and Plugins. + + + + + Time spent computing IntersectionObservations for + DisplayLockDocumentState, in microseconds. + + + + + + + + + + + + + The total main frame time used to compute IntersectionObservations for + DisplayLockDocumentState, in microseconds. + + + + + The time taken by forced style recalc and layouts in microseconds between + the end of the last main frame update and the current sampled frame, in + microseconds. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average time taken by all forced style recalcs and layouts in + microseconds in the event period. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average over frames within the sample window of the ratio of time + taken by forced style recalc and layouts at the end of the blink lifecycle + to the total time for the main frame. An int in the range [0,100]. + + + + + Deprecated as of 03/2019. + + + The longest single time taken by a forced style recalc and layout in + microseconds in the event period. + + + + + Deprecated as of 03/2019. + + + The highest proportion of a frame ever taken by forced style recalc and + layouts at the end of the blink lifecycle to the total time for the main + frame. An int in the range [0,100]. + + + + + The total main frame time used by forced style updates and layouts, in + microseconds. This metric may include time that is also included in the + AnimateBeginMainFrame metric. + + + + + Deprecated as of 11/2020. Replaced with + ForcedStyleAndLayoutBeginMainFrame. + + + The percentage of the main frame time used by forced style updates and + layouts during the main frame update (not including time outside of the + frame update. This metric may include time that is also included in the + AnimatePercentage metric. An int in the range [0,100]. + + + + + The time taken to process rAF-aligned input for the main frame in + microseconds during the sampled frame. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average time taken to process rAF-aligned input for the main frame in + microseconds in the event period. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average over frames within the sample window of the ratio of time + taken to process rAF-aligned input for the main frame to the total time + for the main frame. An int in the range [0,100]. + + + + + Deprecated as of 03/2019. + + + The longest single time taken to process rAF-aligned input for the main + frame in microseconds in the event period. + + + + + Deprecated as of 03/2019. + + + The highest proportion of a frame ever taken to process rAF-aligned input + for the main frame to the total time for the main frame. An int in the + range [0,100]. + + + + + The total main frame time used in processing rAF-aligned input, in + microseconds. + + + + + Deprecated as of 11/2020. Replaced with HandleInputEventsBeginMainFrame. + + + The percentage of the main frame time used in processing rAF-aligned + input. An int in the range [0,100]. + + + + + The time taken to perform hit test document updates for the main frame in + microseconds during the sampled frame. It does not compute the actual hit + test time, rather the style, layout, compositing, etc time to prepare for + the test. + + + + + + + + + + + + + The total main frame time used in performing hit test document updates, in + microseconds. + + + + + Deprecated as of 11/2020. Replaced with + HitTestDocumentUpdateBeginMainFrame. + + + The percentage of the main frame time used in performing hit test document + updates. An int in the range [0,100]. + + + + + The time spent committing layer tree impl data in the compositor thread, + in microseconds. + + + + + + + + + + + + + The total main frame time spent committing layer tree impl data in the + compositor thread, in microseconds. This should always match + ImplCompositorCommit and serves as a check. + + + + + Deprecated as of 11/2020. Replaced with + ImplCompositorCommitBeginMainFrame. + + + The percentage of the main frame time spent committing layer tree impl + data in the compositor thread. An int in the range [0,100]. + + + + + The time taken to compute intersection observer state for the main frame + in microseconds during the sampled frame. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average time taken to compute IntersectionObserver observations in + microseconds in the event period. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average over frames within the sample window of the ratio of time + taken compute IntersectionObserver observations to the total time for the + main frame. An int in the range [0,100]. + + + + + Deprecated as of 03/2019. + + + The longest single time taken to compute IntersectionObserver observations + in microseconds in the event period. + + + + + Deprecated as of 03/2019. + + + The highest proportion of a frame ever taken to compute + IntersectionObserver observations within the sample window. An int in the + range [0,100]. + + + + + The total main frame time used to compute IntersectionObserver + observations, in microseconds. + + + + + The number of blink-internal IntersectionObservations that were recomputed + during the sampled frame. + + + + + + + + + + + + The number of blink-internal IntersectionObservations that were recomputed + during the sampled frame. + + + + + The number of javascript-instantiated IntersectionObservations that were + recomputed during the sampled frame. + + + + + + + + + + + + The number of javascript-instantiated IntersectionObservations that were + recomputed during the sampled frame. + + + + + Deprecated as of 11/2020. Replaced with + IntersectionObservationBeginMainFrame. + + + The percentage of the main frame time used in computing intersection + observer state. An int in the range [0,100]. + + + + + The time spent doing forced document updates due to generic Javascript API + requests, during a sampled frame, in microseconds. Note this primarily + captures Javascript that explicitly requires Style and Layout, but not + implicit requests such as through setting focus or scroll position. + + + + + The time spent doing forced document updates due to generic Javascript API + requests, during the BeginMainFrame block of a sampled frame, in + microseconds. Note this primarily captures Javascript that explicitly + requires Style and Layout, but not implicit requests such as through + setting focus or scroll position. + + + + + Time spent computing IntersectionObservations for javascript observers, in + microseconds. + + + + + + + + + + + + + The total main frame time used to compute IntersectionObservations for + Javascript observers, in microseconds. + + + + + The time taken for layout for the main frame in microseconds during the + sampled frame. + + + + + + + + + + + + + The total main frame time used in layout, in microseconds. + + + + + Deprecated as of 11/2020. Replaced with LayoutBeginMainFrame. + + + The percentage of the main frame time used in layout work. An int in the + range [0,100]. + + + + + Time spent computing IntersectionObservations for lazy loading, in + microseconds. + + + + + + + + + + + + + The total main frame time used to compute IntersectionObservations for + lazy loading, in microseconds. + + + + + The time between a BeginMainFrame and the commit of paint results for the + sampled frame, in microseconds. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average time between a BeginMainFrame and the commit of paint results, + in microseconds. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The longest single time between a BeginMainFrame and the commit of paint + results, in microseconds. + + + + + True if the lifecycle update in this event occurred before FCP (First + Contentful Paint) was registered. + + + + + A bitfield representation of the reasons for a main frame update. The + fields are based on the FrameSequenceTrackerType enum, so bitwise and with + the following values to determine if a reason was present: + CompositorAnimation: 1, MainThreadAnimation: 2, PinchZoom: 4, RAF: 8, + TouchScroll: 16, Universal: 32, Video: 64 and WheelScroll: 128. + + + + + Time spent computing IntersectionObservations for media elements, in + microseconds. + + + + + + + + + + + + + The total main frame time used to compute IntersectionObservations for + media elements, in microseconds. + + + + + The time taken to paint for the main frame in microseconds during the + sampled frame. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average time taken by the paint phase in microseconds in the event + period. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average over frames within the sample window of the ratio of time + taken in the paint phase to the total time for the main frame. An int in + the range [0,100]. + + + + + Deprecated as of 03/2019. + + + The longest single time taken by the paint phase in microseconds in the + event period. + + + + + Deprecated as of 03/2019. + + + The highest proportion of a frame ever used by the paint phase within the + sample window. An int in the range [0,100]. + + + + + The total main frame time used in paint, in microseconds. + + + + + Deprecated as of 11/2020. Replaced with PaintBeginMainFrame. + + + The percentage of the main frame time used in paint. An int in the range + [0,100]. + + + + + The time spent parsing style sheets. + + + + + The total main frame time spent parsing style sheets. + + + + + The time taken for pre-paint for the main frame in microseconds during the + sampled frame. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average time taken by the pre-paint phase in microseconds in the event + period. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average over frames within the sample window of the ratio of time + taken in the pre-paint phase to the total time for the main frame. An int + in the range [0,100]. + + + + + Deprecated as of 03/2019. + + + The longest single time taken by the pre-paint phase in microseconds in + the event period. + + + + + Deprecated as of 03/2019. + + + The highest proportion of a frame ever used by the pre-paint phase within + the sample window. An int in the range [0,100]. + + + + + The total main frame time used in pre-paint, in microseconds. + + + + + Deprecated as of 11/2020. Replaced with PrePaintBeginMainFrame. + + + The percentage of the main frame time used in pre-paint. An int in the + range [0,100]. + + + + + Removed in M84 in favor of separate ImplCompositorCommit and WaitForCommit + metrics. + + + The time taken for the proxy to commit to the impl thread in microseconds + during the sampled frame. + + + + + + + + + + + + + Removed in M84 in favor of separate ImplCompositorCommit and WaitForCommit + metrics. + + + The percentage of the main frame time used to commit to the impl thread. + An int in the range [0,100]. + + + + + Merged into Blink.MainFrame.CompositingCommitRatio in + http://crrev.com/815947 in M88. + + + The time taken for scrolling coordinator for the main frame in + microseconds during the sampled frame. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average time taken by the style and layout phases in microseconds in + the event period. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average over frames within the event period of the ratio of time taken + to update the scrolling coordinator after painting to the total time for + the main frame, expressed as a percentage. An int in the range [0,100]. + + + + + Deprecated as of 03/2019. + + + The longest single time within the event period that was used to update + the ScrollingCoordinator after painting (in microseconds). + + + + + Deprecated as of 03/2019. + + + The highest proportion of a frame within the event period that was used to + update the ScrollingCoordinator after painting, expressed as a percentage. + An int in the range [0,100]. + + + + + Merged into Blink.MainFrame.CompositingCommitRatio in + http://crrev.com/815947 in M88. + + + The percentage of the main frame time used in scrolling coordinator. An + int in the range [0,100]. + + + + + The time spent doing forced document updates due to browser requested + actions, such as accessibility, intersection observer or spell checking, + during a sampled frame, in microseconds. + + + + + The time spent doing forced document updates due to browser requested + actions, such as accessibility, intersection observer or spell checking, + during the BeginMainFrame block of a sampled frame, in microseconds. + + + + + The time taken for style update for the main frame in microseconds during + the sampled frame. + + + + + + + + + + + + + Removed January 2020 in favor of separate Style and Layout metrics. + + + The time taken for style and layout for the main frame in microseconds + during the sampled frame. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average time taken by the style and layout phases in microseconds in + the event period. + + + + + + + + + + + + + Deprecated as of 03/2019. + + + The average over frames within the sample window of the ratio of time + taken to update style and layout to the total time for the main frame. An + int in the range [0,100]. + + + + + Deprecated as of 03/2019. + + + The longest single time taken by the style and layout phases in + microseconds in the event period. + + + + + Deprecated as of 03/2019. + + + The highest proportion of a frame ever used to compute style and layout + within the sample window. An int in the range [0,100]. + + + + + Removed January 2020 in favor of separate Style and Layout metrics. + + + The percentage of the main frame time used in style and layout work. An + int in the range [0,100]. + + + + + The total main frame time spent updating style information and building + the layout tree, in microseconds. + + + + + The percentage of the main frame time used in style work. An int in the + range [0,100]. + + + + + The time taken for LayerTreeHost::UpdateLayers in microseconds during the + sampled frame + + + + + + + + + + + + + The total main frame time spent in LayerTreeHost::UpdateLayer, in + microseconds. This should always match UpdateLayers and serves as a check. + + + + + Deprecated as of 11/2020. Replaced with UpdateLayersBeginMainFrame. + + + The percentage of the main frame time used by LayerTreeHost::UpdateLayers. + An int in the range [0,100]. + + + + + Time spent computing internal geometry information about iframes, in + microseconds. + + + + + + + + + + + + + The total main frame time used to compute internal geometry information + about iframes, in microseconds. + + + + + The time spent doing forced document updates due to a user action such as + input, find-in-page or printing, during a sampled frame, in microseconds. + + As of 04/2023, updates for scrolling are included in this metric. + + + + + The time spent doing forced document updates due to a user action such as + input, find-in-page or printing, during the BeginMainFrame block of a + sampled frame, in microseconds. + + As of 04/2023, updates for scrolling are included in this metric. + + + + + Time elapsed between when an animation update is first scheduled and when + the resulting BeginMainFrame starts. + + + + + Time elapsed between when an animation update is first scheduled and when + the resulting BeginMainFrame starts. + + + + + The time spent waiting for the compositor thread to begin processing a + commit, in microseconds. + + + + + + + + + + + + + The total main frame time spent waiting for the compositor thread to begin + processing a commit, in microseconds. This should always match + WaitForCommit and serves as a check. + + + + + Deprecated as of 11/2020. Replaced with WaitForCommitBeginMainFrame. + + + The percentage of the main frame time spent waiting for the compositor + thread to begin processing a commit. An int in the range [0,100]. + + + + + + chasej@chromium.org + + Collects data for a subset of UseCounter features where UMA UseCounter data + shows a behaviour that is rare but too common to blindly change. This metric + should be used to reason about whether a breaking change is acceptable or + not. + + Note: In M87, a number of use counters were removed from UKM reporting due + to being reported too frequently (high proportion across page loads). + + + + Opt-in UseCounter feature. + + + + + + + + + + + + Emits True(1) or False(0) to indicate whether the Feature recorded is in + the main frame or not. + + + + + + + Deprecated as of 03/2019. + + ulan@chromium.org + + Metrics related to a bloated renderer that is close to out-of-memory. They + are recorded only if the renderer process has a single page. + + + + The total physical size of V8's heap in MB. + + + + + The total size of allocated on V8's heap in MB. + + + + + The V8 heap limit in MB. + + + + + An enum that specifies how the near V8 heap limit event was handled. See + blink::NearV8HeapLimitHandling for the enum elements. + + + + + + + Deprecated 10/2022 in favor of + BrowsingTopics.DocumentBrowsingTopicsApiResult2 + + yaoxia@chromium.org + jkarlin@chromium.org + + The document.browsingTopics() result and other metadata. Recorded whenever + document.browsingTopics() is invoked from a context. If the API returns more + than 3 topics (e.g. due to custom configuration FeatureParam), only the + first 3 topics will be recorded. + + + + The reason why the API returns no topic. This metric won't be recorded if + the API returns any topic. + + + + + The returned topic ID at index 0. This metric won't be recorded if the API + returns no topics. + + + + + Whether `ReturnedTopic0` is a true top topic, as opposed to a randomly + padded topic. This metric won't be recorded if the API returns no topics. + + + + + The version of the model used to calculate `ReturnedTopic0`. This metric + won't be recorded if the API returns no topics. + + + + + The version of the taxonomy applicable to `ReturnedTopic0`. This metric + won't be recorded if the API returns no topics. + + + + + The returned topic ID at index 1. This metric won't be recorded if the API + returns no topics. + + + + + Whether `ReturnedTopic1` is a true top topic, as opposed to a randomly + padded topic. This metric won't be recorded if the API returns no topics. + + + + + The version of the model used to calculate `ReturnedTopic1`. This metric + won't be recorded if the API returns less than 2 topics. + + + + + The version of the taxonomy applicable to `ReturnedTopic1`. This metric + won't be recorded if the API returns less than 2 topics. + + + + + The returned topic ID at index 2. This metric won't be recorded if the API + returns no topics. + + + + + Whether `ReturnedTopic2` is a true top topic, as opposed to a randomly + padded topic. This metric won't be recorded if the API returns no topics. + + + + + The version of the model used to calculate `ReturnedTopic2`. This metric + won't be recorded if the API returns less than 3 topics. + + + + + The version of the taxonomy applicable to `ReturnedTopic2`. This metric + won't be recorded if the API returns less than 3 topics. + + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + The document.browsingTopics() result and other metadata. Recorded whenever + document.browsingTopics() is invoked from a context. If there are more than + 3 candidate topics (e.g. due to custom configuration FeatureParam), only the + first 3 candidate topics will be recorded. + + + + The candidate topic ID at index 0. This metric won't be recorded if no + topics were derived from the candidate epochs (which can be due to + insufficient epochs, failed epoch topics calculation, cleared history, or + cleared/blocked individual topics). + + + + + Whether `CandidateTopic0` is a true top topic (as opposed to a padded or + random one). This metric will be recorded iff `CandidateTopic0` is + recorded. + + + + + The version of the model used to calculate `CandidateTopic0`. This metric + will be recorded iff `CandidateTopic0` is recorded. + + + + + Whether `CandidateTopic0` should be filtered. This metric will be recorded + iff `CandidateTopic0` is recorded. + + + + + The version of the taxonomy applicable to `CandidateTopic0`. This metric + will be recorded iff `CandidateTopic0` is recorded. + + + + + The candidate topic ID at index 1. This metric won't be recorded if less + than 2 topics were derived from the candidate epochs (which can be due to + insufficient epochs, failed epoch topics calculation, cleared history, or + cleared/blocked individual topics). + + + + + Whether `CandidateTopic1` is a true top topic (as opposed to a padded or + random one). This metric will be recorded iff `CandidateTopic1` is + recorded. + + + + + The version of the model used to calculate `CandidateTopic1`. This metric + will be recorded iff `CandidateTopic1` is recorded. + + + + + Whether `CandidateTopic1` should be filtered. This metric will be recorded + iff `CandidateTopic1` is recorded. + + + + + The version of the taxonomy applicable to `CandidateTopic1`. This metric + will be recorded iff `CandidateTopic1` is recorded. + + + + + The candidate topic ID at index 2. This metric won't be recorded if less + than 3 topics were derived from the candidate epochs (which can be due to + insufficient epochs, failed epoch topics calculation, cleared history, or + cleared/blocked individual topics). + + + + + Whether `CandidateTopic2` is a true top topic (as opposed to a padded or + random one). This metric will be recorded iff `CandidateTopic2` is + recorded. + + + + + The version of the model used to calculate `CandidateTopic2`. This metric + will be recorded iff `CandidateTopic2` is recorded. + + + + + Whether `CandidateTopic2` should be filtered. This metric will be recorded + iff `CandidateTopic2` is recorded. + + + + + The version of the taxonomy applicable to `CandidateTopic2`. This metric + will be recorded iff `CandidateTopic2` is recorded. + + + + + The reason why the API access is not allowed. + + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + The epoch topics calculation result, including the top 5 topics and other + metadata. Recorded whenever the periodic (weekly) topics calculation has + finished. If the result has more than 5 topics (e.g. due to custom + configuration FeatureParam), only the first 5 topics will be recorded. + + + + The version of the model used to calculate the result topics. This metric + won't be recorded if the topics calculation failed in general. + + + + + The start index of the randomly padded top topics. This metric won't be + recorded if the topics calculation failed in general. If all topics are + real, `PaddedTopicsStartIndex` will equal the feature param + `kBrowsingTopicsNumberOfTopTopicsPerEpoch`. + + + + + The version of the taxonomy applicable to the result topics. This metric + won't be recorded if the topics calculation failed in general. + + + + + The top topic ID at index 0. This metric won't be recorded if the + candidate topic was blocked, or if the topics calculation failed in + general. + + + + + The top topic ID at index 1. This metric won't be recorded if the + candidate topic was blocked, or if the topics calculation failed in + general. + + + + + The top topic ID at index 2. This metric won't be recorded if the + candidate topic was blocked, or if the topics calculation failed in + general. + + + + + The top topic ID at index 3. This metric won't be recorded if the + candidate topic was blocked, or if the topics calculation failed in + general. + + + + + The top topic ID at index 4. This metric won't be recorded if the + candidate topic was blocked, or if the topics calculation failed in + general. + + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + PageLoad metrics for BrowsingTopics. Recorded when a page has Topics API + usages (that pass the user permission check), and the page is being + destroyed/navigated. + + + + The number of unique context domains have requested the topics. Rounded to + the nearest exponential bucket (with a bucket ratio of 1.15). + + + + + + thanhdng@chromium.org + + Records history of charge events including start time and duration of + charges. Can be used with other ChargeEventHistory to track the last 30 days + of charging events. If a "SmartCharging" event and a + "ChargeEventHistory" event has them same source ID and + "EventId", it means "ChargeEventHistory" is the charge + history when "SmartCharging" event is logged. ChargeEventHistory + records an array. Each ChargeEventHistory event records an item in the + array, specified by its index ChargeEventHistoryIndex. Items in the same + array will have same source ID and EventId. + + + + Duration of a history charge event. + + + + + Index of this event in the ChargeEventHistory array. Please see the event + summary for more details. + + + + + Number of items in ChargeEventHistory array. Please see the event summary + for more details. + + + + + Duration (in minutes) between start time of a charge event and logging + time. + + + + + A unique number that represent order of an event. Used combined with + "SmartCharging"'s EventId to reconstruct charge history. + + + + + + siakabaro@google.com + + Records the ChromeOS device management state. This event is recorded once + per UKM report and is not associated with a source URL. + + + + An enum value representing the enrollment status of a ChromeOS device. + + + + + + + + + + + + + nancylingwang@chromium.org + dominickn@chromium.org + + Records the amount of time that the focused and activated website was + accessed in last two hours on Chrome OS. This is logged each two hours, and + only when the website is not installed as a PWA or Chrome app. + + + + The milliseconds that the website was accessed in the focused tab and the + activated browser window. The accessing time is calculated each five + minutes, then the noise is applied, and sum the running time for five + minutes with noise to calculate the two hours accessing time. For example + the running time in the past 2 hours = time1 * noise1 + time2 * noise2 + + time3 * noise3.... + + + + + + + + + + + + Whether the metrics is read from the user pref on disk, recorded for the + last login. + + + + + + + + + + + + Whether the website can be an installable web app. + + + + + + + + + + + + Deprecated as of 01/2023. + + + The url content, e.g. full url, scope. + + + + + + + + + + + + An enum that records the user type and the device type. + + + + + + + + + + + + + nancylingwang@chromium.org + dominickn@chromium.org + + Records each five minutes in Chrome OS to log the input events happened on + the app window. This is logged only when the user allows app syncing or + allows sync of everything, and the user does not set up a sync passphrase. + + + + The number of the input events happened in each five minutes. + + + + + An enum that records the input event source. + + + + + An enum that records the app type. + + + + + + + + + + + + An enum that records the user type and the device type. + + + + + + + + + + + + + nancylingwang@chromium.org + dominickn@chromium.org + + Records the installed app in Chrome OS, only when the user allows app + syncing or allows sync of everything, and the user does not set up a sync + passphrase. Only ARC apps, Chrome apps and web apps(PWA), system web apps, + buildin apps are recorded. This is logged when the user installs a new app. + + + + An enum that records the app type. + + + + + + + + + + + + An enum that records the reason why the app was installed. + + + + + + + + + + + + Removed in M96. Replaced with InstallReason. + + + An enum that records how the app was installed. + + + + + + + + + + + + An enum that records where the app was installed. + + + + + + + + + + + + An enum that records when the app was installed. + + + + + + + + + + + + An enum that records the user type and the device type. + + + + + + + + + + + + + nancylingwang@chromium.org + dominickn@chromium.org + + Records a launched app in Chrome OS, only when the user allows app syncing + or allows sync of everything, and the user does not set up a sync + passphrase. Only ARC apps, Chrome apps and web apps(PWA), system web apps, + buildin apps are recorded. This is logged when an app is launched. + + + + An enum that records the app type. + + + + + + + + + + + + An enum that records where the app was launched. + + + + + + + + + + + + An enum that records the user type and the device type. + + + + + + + + + + + + + nancylingwang@chromium.org + dominickn@chromium.org + + Records the uninstalled app in Chrome OS, only when the user allows app + syncing or allows sync of everything, and the user does not set up a sync + passphrase. Only ARC apps, Chrome apps and web apps(PWA), system web apps, + buildin apps are recorded. This is logged when the user uninstalls an app. + + + + An enum that records the app type. + + + + + + + + + + + + An enum that records how the app was uninstalled. + + + + + + + + + + + + An enum that records the user type and the device type. + + + + + + + + + + + + + nancylingwang@chromium.org + dominickn@chromium.org + + Records the amount of time that the app were used in the last five minutes + on Chrome OS, only when the user allows app syncing or allows sync of + everything, and the user does not set up a sync passphrase. Only ARC apps, + Chrome apps and web apps(PWA), system web apps, buildin apps are recorded. + This is logged every five minutes. + + + + An enum that records the app type. + + + + + + + + + + + + The milliseconds that the app was used. + + + + + + + + + + + + An enum that records the user type and the device type. + + + + + + + + + + + + + nancylingwang@chromium.org + dominickn@chromium.org + + Records the amount of time that the app were used in the last five minutes + on Chrome OS, only when the user allows app syncing or allows sync of + everything, and the user does not set up a sync passphrase. Only ARC apps, + Chrome apps and web apps(PWA), system web apps, buildin apps are recorded. + This is logged every two hours. + + + + An enum that records the app type. + + + + + + + + + + + + The milliseconds that the app was used. + + + + + + + + + + + + An enum that records the user type and the device type. + + + + + + + + + + + + + dougarnett@chromium.org + + Metrics associated with user click input. In particular, captures when user + has a burst of clicks at the same location which may be a signal of user + unhappiness for an experiment if it differs from the baseline data for the + site. + + + + The count of the largest burst of click inputs for a page load. Only + recorded if it meets a minimum threshold to be considered a burst. + + + + + + arichiv@chromium.org + victortan@chromium.org + + Record when a Client Hint is requested in an ACCEPT_CH TLS Frame. + + + + Records an enum representing the specific Client Hint type that was + requested. + + + + + + + + + + + + + arichiv@chromium.org + victortan@chromium.org + + Record when a Client Hint is requested in a Accept-CH HTTP Response Header. + + + + Records an enum representing the specific Client Hint type that was + requested. + + + + + + + + + + + + + arichiv@chromium.org + victortan@chromium.org + + Record when a Client Hint is requested in a Accept-CH HTML Meta Tag. + + + + Records an enum representing the specific Client Hint type that was + requested. + + + + + + + + + + + + + arichiv@chromium.org + victortan@chromium.org + + Record when a Client Hint is requested in a Critical-CH HTTP Response + Header. + + + + Records an enum representing the specific Client Hint type that was + requested. + + + + + + + + + + + + + arichiv@chromium.org + victortan@chromium.org + + Record when a Client Hint is requested in a Delegate-CH HTML Meta Tag. + + + + Records an enum representing the specific Client Hint type that was + requested. + + + + + + + + + + + + + aaronhk@chromium.org + cwallez@chromium.org + enga@chromium.org + fserb@chromium.org + jdarpinian@chromium.org + juanmihd@chromium.org + kainino@chromium.org + kbr@chromium.org + shrekshao@google.com + + Metrics collecting types of rendering context created with + canvas/offscreencanvas. It also collects requests of GPU device via WebGPU + API. + + + + Type of rendering contexts created for HTMLCanvasElement. + + + + + + + + + + + + Type of rendering contexts created for HTMLCanvasElement that something + has actually been drawn to. For WebGL 1 and 2 context this means there is + at least one draw call issued. For other context types we leave the + implementation blank at this moment. + + + + + + + + + + + + Event fired when a GPUDevice from the WebGPU API is created. + + + + + Type of rendering contexts created for OffscreenCanvas. + + + + + + + + + + + + Type of rendering contexts created for OffscreenCanvas that something has + actually been drawn to. For WebGL 1 and 2 context this means there is at + least one draw call issued. For other context types we leave the + implementation blank at this moment. + + + + + + + + + + + + + shaktisahu@chromium.org + + Records metrics for the companion side panel. The events correspond to a + single page load in the main frame and the metrics are flushed when the page + navigates away. For most of the UI surfaces, only the last event (e.g. + displayed or clicked) is recorded. + + + + The number of child elements shown within the CQ suface, e.g. the number + of related queries in the related queries component. Clamped to a max + value of 10. + + + + + The last event on the CQ surface. + + + + + The last event on the PH surface. + + + + + The last event on the promo surface. + + + + + The number of times region search in the multimodal box was clicked. + + + + + + khushalsagar@chromium.org + + Metrics related to rendering in the compositor. + + + + The number of images checker-imaged and re-rasterized on this page. + + + + + + khushalsagar@chromium.org + + Metrics related to user interaction handled by the compositor. This includes + user gestures like scrolling, pinch-zoom and page-scale animations triggered + in response to a double-tap event. The length of the user interaction is + defined as the time the compositor is running an animation resulting from + user input. + + + + The number of visible pixels per frame checkerboarded during this + interaction. + + + + + The percentage of visible pixels per frame checkerboarded during this + interaction. This value should be between [0, 100]. + + + + + The number of images checker-imaged and re-rasterized during this + interaction. + + + + + The number of visible tiles per frame checkerboarded during this + interaction. + + + + + + finnur@chromium.org + peter@chromium.org + + Measures statistics about the contacts shared in the contacts picker (when + the Contacts Picker dialog is dismissed.) + + + + Measures the contact properties requested by the website (names, emails, + telephone numbers). Bit 1 - telephone numbers, bit 2 - emails, bit 3 - + names. + + + + + Measures the total number of contacts selected in the contacts picker. + + + + + Measures the percentage of contacts selected in the contacts picker. + + + + + + rayankans@chromium.org + + Collected when a new Content Index entry is registered. + + + + The type of the content registered. Corresponds to + blink.mojom.ContentCategory. + + + + + + rayankans@chromium.org + + Collected when a Content Index entry is deleted by the user from the + Downloads page. + + + + Always true. + + + + + + rayankans@chromium.org + + Collected when a Content Index entry is opened from the Downloads page. + + + + Whether the browser was offline when the content was opened. + + + + + + benwgold@google.com + twellington@chromium.org + + + Emits an integer id for a selection corresponding to the action enum + defined in ChromeContextMenuPopulator.java (within the ContextMenuUma + class). + + + + + + benwgold@google.com + twellington@chromium.org + + + Recorded when the context menu is constructed and logged if the search by + image option was displayed. + + + + + Recorded when the context menu is constructed and logged if the Lens + option was displayed. + + + + + Recorded when the context menu is constructed and logged if the Lens + shopping option was displayed. + + + + + Recorded when the context menu is constructed and logged if the Lens + shopping chip was displayed. + + + + + Recorded when the context menu is constructed and logged if the Lens + translate chip was displayed. + + + + + + + Deprecated as of 05/2022. + + donnd@chromium.org + + Metrics related to a Contextual Search Tap event on a page, for use with + Ranker. These metrics are recorded each time the user triggers the + Contextual Search UI via a tap gesture (when enabled). + + + + Emits a 1 or 0 to indicate whether the user has Opted-in to the privacy + conditions for Contextual Search or not. + + + + + Duration in MS between showing the UI and a subsequent scroll event, or + not recorded if there was no subsequent scroll. + + + + + Emits an integer in the range of 0 - N that represents the number of + impressions of an Entity that were shown in the Bar, aggregated in Android + device storage for this user, starting in M-69. + + + + + Emits an integer in the range of 0 - N that represents the number of times + an Entity was shown in the Bar and the panel was opened, aggregated in + Android device storage for this user, starting in M-69. + + + + + Emits a value from 0-10 representing the effective font size on the + screen. A value of 0 means the font size cannot be obtained. A value of 1 + represents a very small font and a value of 10 represents a large font. + + + + + Emits a 1 or 0 to indicate whether the word tapped appears to be part of + an entity, given simple English language rules that check capitalization + and punctuation. + + + + + Emits a 1 or 0 to indicate whether the IsEntity boolean ever had a chance + of being true or not. When we're dealing with languages other than ones + where our simple entity-detection can work this signal is false. + + + + + Emits a 1 or 0 to indicate whether the base page is HTTP (insecure). + + + + + Emits a 1 or 0 to indicate whether the language of the base page is a + mismatch from the list of languages the user knows, so they might want + translation. + + + + + Emits a 1 or 0 to indicate whether the word tapped was considered long (at + least 10 chars in length). + + + + + Emits a 1 or 0 to indicate whether the tap was an override of normal tap + suppression because it was considered a second tap on a word after the + first tap was suppressed. + + + + + Emits a 1 or 0 to indicate whether the word tapped was considered short + (less than 4 characters in length). + + + + + Emits a 1 or 0 to indicate whether the tap gesture was on the edge of a + word, rather than in the middle 50% of the word. + + + + + Emits an integer in the range of 0 - N that represents the total number of + times the user opened the panel, aggregated in Android device storage for + this user since M-69. + + + + + Emits a 1 or 0 to indicate whether Ranker was able to make a prediction. + + + + + Emits a 1 or 0 to indicate what Ranker's prediction was for this record. + Recorded only when OutcomeRankerDidPredict is true. + + + + + Emits a single-precision float to indicate the score for the Ranker + prediction for this record. Recorded only when OutcomeRankerDidPredict is + true. + + + + + Emits a 1 or 0 to indicate whether any Contextual Cards data was shown in + the Contextual Search Bar. + + + + + Emits a 1 or 0 to indicate whether the user opened the overlay panel. This + is the primary outcome metric. + + + + + Emits a 1 or 0 to indicate whether the user clicked within the overlay + panel when a Quick-Action was shown. This is a secondary outcome metric. + + + + + Emits a 1 or 0 to indicate whether the user could see a Quick-Answer + caption within the overlay panel. This is a tertiary outcome metric. + + + + + Emits an integer in the range 0-10 inclusive that expresses the portion of + the enclosing element that is the word tapped. A zero will be emitted if + the ratio cannot be calculated. A value of 10 means the word spans the + entire element, and a value of 1 means the word is 10% or less than the + entire element. + + + + + The CTR of the overlay panel for this user, aggregated in Android device + storage over a previous 28 day period, expressed as an integer between + 0-99, since M-60. + + + + + The count of views of the overlay panel for this user, aggregated in + Android device storage over a previous 28 day period, since M-60. + + + + + The CTR of the overlay panel for this user, aggregated in Android device + storage over the previous week, expressed as an integer between 0-99, + since M-60. + + + + + The count of views of the overlay panel for this user, aggregated in + Android device storage over the previous week, since M-60. + + + + + Emits an integer in the range of 0 - N that represents the total number of + times the user saw a quick action in the caption of the Bar, e.g. a phone + number to dial. Aggregated in Android device storage since M-69 for this + user. + + + + + Emits an integer in the range of 0 - N that represents the total number of + times the user ignored a quick action but opened the Bar instead, e.g. a + phone number was available but not dialed. Aggregated in Android device + storage starting at M-69. + + + + + Emits an integer in the range of 0 - N that represents the total number of + times the user activated a quick action by tapping on a quick action shown + in the Bar, e.g. dialed a phone number. Aggregated in Android device + storage since M-69 for this user. + + + + + Emits an integer in the range of 0 - N that represents the total number of + times the user saw a quick answer in the caption of the Bar. Typically + these quick answers represent an automatic translation of the selection. + Aggregated in Android device storage for all time for this user, since + M-57. + + + + + The location of the tap relative to the top of the screen, expressed in + DPs. + + + + + Emits an integer in the range of 0 - N that represents the total number of + taps that triggered the Bar, aggregated in Android device storage for this + user, since M-43. + + + + + The duration of the tap gesture expressed as an integer in milliseconds. + + + + + The location of the tap relative to the bottom of the screen, expressed as + an integer with 0 meaning not at the bottom and 1 meaning at the bottom. + + + + + + + This feature was deprecated in M74 + + donnd@chromium.org + fgorski@chromium.org + twellington@chromium.org + zea@chromium.org + + Metrics related to Contextual Suggestions shown in the Chrome Assistive + Surface, aka EoC shown in CAS. These metrics are recorded each time the + Contextual Suggestions UI is dismissed. Each record always contains a value + for every metric known at the time of the implementation. + + + + Emits an integer in the range 0-1 to indicate whether the user downloaded + any suggestions. + + + + + Emits an integer in the range 0-1 to indicate whether any suggestion link + was taken. + + + + + Emits an integer in the range 0-1 to indicate whether the peeking sheet + was closed by tapping on the close button. + + + + + Emits an integer in the range 0-1 to indicate whether the sheet was ever + opened. + + + + + Emits an integer in the range 0-7 to indicate the ending state of the data + fetcher and results returned. A value of 0 indicates not-started, a 7 + indicates fetch-completed with suggestions. See the code for details. + + + + + Emits an integer in the range 0-N to indicate the duration that the sheet + was shown before a positive or negative action was taken. A value of 0 + indicates that the UI was never shown. A value greater than 0 indicates + that some user interaction occurred taking at least the indicated number + of milliseconds, but less than twice that amount. This exponential + bucketing is done for privacy reasons, and uses the UKM + GetExponentialBucketMin method with a value of 2.0 for spacing. + + + + + Emits an integer in the range 0-2 to indicate whether the contextual + suggestions UI was ever triggered and how it was triggered. A value of 0 + indicates never-shown, a 1 indicates peeked in response to a + reverse-scroll (deprecated), and 2 indicates that the toolbar button was + shown (the only trigger currently supported). + + + + + + chrisha@chromium.org + siggi@chromium.org + + A CPU usage measurement that corresponds to a tick in a CPU usage + time-series. There is also some metadata stored to determine how faithful + the CPU usage measurement is (e.g. NumberOfCoresidentTabs). + + + + CPU usage measurement. This is in units of clock-cycles. For example, 1.2 + seconds of 100% CPU usage on a 2.5GHz CPU corresponds to a value of 1.2 x + 1.0 x 2.5e9 = 3e6. + + + + + The event associated with the measurement. This is an integer value + corresponding to the enum defined in + resource_coordinator::RenderProcessProbe. + + + + + Indicates if any frame hosted in this tab is visible at the moment the + measurement is taken. + + + + + Number of co-resident tabs in all of the render processes a tab is + associated with when the CPU usage measurement is taken. + + + + + The size of the observation window (time since last CPU measurement) in + milliseconds. + + + + + The uptime of the process being measured, in milliseconds. + + + + + + clamy@chromium.org + + Recorded when a subframe is embedded in a cross-origin context without + having a CSP frame-ancestor header or an XFO header. + + + + Mesaures the number of pages with subframes embedded in cross-origin + contexts without having a CSP frame-ancestor header or an XFO header. + + + + + + thanhdng@chromium.org + + Records daily summaries of charging. DailyChargeSummary summarizes charging + information (e.g. amount of time on full charge, amount of time on AC + adapter, etc) in a day. It can be used in combination with other + DailyChargeSummary events to get information about the last 30 days of + charging. If a "SmartCharging" event and a + "DailyChargeSummary" event has them same source ID and + "EventId", it means "DailyChargeSummary" is the summary + when "SmartCharging" event is logged. DailyChargeSummary records + an array. Each event records an item in the array, specified by its index + DailySummaryIndex. Items in the same array will have same source ID and + EventId. + + + + Amount of time (in minutes) the device was on AC charger and the charge + was hold due to adaptive charging, at an index specified by + DailySummaryIndex. + + + + + Index of this event in the array. Please see the event summary for more + details. + + + + + Distance in days bettwen current day and the day that the daily summary + was logged. + + + + + Number of items in array. Please see the event summary for more details. + + + + + Amount of time (in minutes) the device was keep on AC charger with full + battery (100%). + + + + + Amount of time (in minutes) the device was keep on AC charger. + + + + + A number that represent order of an event. Used combined with + "SmartCharging"'s EventId to reconstruct charge history. + + + + + + robertogden@chromium.org + + Data Reduction Proxy related metrics associated with a page load. See + //components/data_reduction_proxy/. + + + + A unique identifier of this page load to the proxy server. Recorded for + each navigation that uses the proxy. + + + + + The estimated number of bytes that would have been used if that proxy was + disabled on this page load. Recorded for each navigation that uses the + proxy. + + + + + + + Deprecated as of 01/2020. + + bartekn@chromium.org + + Metrics related to detached windows. + + + + Contains the UKM source id of the navigation as an integer. + + + + + The number of function calls in a window detached by closing/removal. + + + + + The number of function calls in a window detached by closing/removal, that + happened at least 10 seconds after detaching. + + + + + The number of function calls in a window detached by closing/removal, that + happened at least 1 minute after detaching. + + + + + The number of function calls in a window detached by navigating away. + + + + + The number of function calls in a window detached by navigating away, that + happened at least 10 seconds after detaching. + + + + + The number of function calls in a window detached by navigating away, that + happened at least 1 minute after detaching. + + + + + The number of function calls in a window detached by another reason. + + + + + The number of function calls in a window detached by another reason, that + happened at least 10 seconds after detaching. + + + + + The number of function calls in a window detached by another reason, that + happened at least 1 minute after detaching. + + + + + + rtarpine@google.com + dc-komics@google.com + + Recorded when DIPS judges a site to be an incidental party and deletes its + storage. + + + + Always set to true (only present because UKM events require at least one + metric). + + + + + + rtarpine@google.com + dc-komics@google.com + + Recorded on every HTTP redirect or client-side bounce, where a client-side + bounce is a non-user-initiated navigation starting soon after the previous + navigation committed. + + + + Populated for client redirects only. The time in seconds (capped at 10) + between the page committing and the redirect navigation starting. An int + in the range [0, 10]. + + + + + Whether the redirect read cookies, wrote cookies, both, or neither. + + + + + Populated for client redirects only. Whether the user ever interacted with + the page. (See the HTML spec for a definition.) + + + + + True when the site before the redirect chain is the same as the site at + the end of the chain. + + + + + True when the redirect site is the same as the site at the end of the + redirect chain. + + + + + True when the redirect site is the same as the site before the redirect + chain. + + + + + 0-based index of this individual redirect within its chain. + + + + + The length of the overall redirect chain. + + + + + The type of the redirect: client or server. + + + + + The site engagement level of the redirect URL, at the time the redirect + took place. + + + + + + kaklilu@google.com + dc-komics@google.com + + Recorded on a repeated interval when DIPS may want to clear site storage to + improve user privacy. These metrics will be used to determine which + triggering action is most appropriate for our use case. + + When these cases occur, the DIPS instance recording these metrics will keep + track of which triggering actions have already happened to prevent logging + duplicate metrics. + + + + True for sites that redirected the user since the last time the DIPS + instance attempted to clear site storage. + + + + + True for sites that redirected the user while accessing storage since the + last time the DIPS instance attempted to clear site storage. + + + + + True for sites wrote to the browser's storage since the last time the DIPS + instance attempted to clear site storage. + + + + + + + Removed January 2021 + + hajimehoshi@chromium.org + keishi@chromium.org + + Recorded when a Document object survives certain number of garbage + collections after detached. It is expected that regular Document objects are + destroyed soon after detached, and if a document outlives longer, probably + this can be leaked. + + + + Measures the numbers of garbarge collection after the document is + detached. This is recorded when the number reached certain numbers like 5 + or 10. + + + + + + beccahughes@chromium.org + + Recorded when a Document object is created and records the source ID of the + navigation and whether the document was in the main frame. This can be used + to link subframe UKM events to the parent document. + + + + Whether the document was in a cross origin iframe. This can either be 0 or + 1. + + + + + Whether the document was in a cross site iframe. This can either be 0 or + 1. + + + + + Whether the document was in the main frame. This is can either be 0 or 1. + + + + + Contains the UKM source id of the navigation as an integer. + + + + + + clank-downloads@google.com + + Metrics taken when a download completes. Its parent event is + Download.Started. + + + + The number of bytes that have been used in an excess (ie. download + restarting the middle of a download). + + + + + The id of the download that is used to associate separate events. + + + + + The size of the file that is downloaded, expressed in kilobytes with + exponentially growing buckets. + + + + + The difference in the time between when the download finished and when it + began, expressed in milliseconds. + + + + + + clank-downloads@google.com + + Metrics taken when a download is interrupted. Its parent event is + Download.Started. + + + + The number of bytes that have been used in an excess (ie. download + restarting the middle of a download). + + + + + The difference in the size of the file that is downloaded compared to the + initial reported size, expressed in kilobytes with exponentially growing + buckets. + + + + + The id of the download that is used to associate separate events. + + + + + The reason the download was interrupted, expressed as an enum defined in + DownloadInterruptReason. + + + + + The size of the file that is downloaded, expressed in kilobytes with + exponentially growing buckets. + + + + + The difference in the time between when the download interrupted and when + it began, expressed in milliseconds. + + + + + + clank-downloads@google.com + + Metrics taken when a download is resumed. Its parent event is + Download.Started. + + + + The id of the download that is used to associate separate events. + + + + + The mode by which the download was resumed, expressed as an enum defined + in ResumeMode. + + + + + The difference in the time between when the download resumed and when it + began, expressed in milliseconds. + + + + + + clank-downloads@google.com + + Metrics taken when a download begins. It has one Download.Ended and none to + multiple Download.Interrupted/Download.Resumed events associated with it. + + + + The state of the security of the final download URL and all the redirects + leading to it. Expressed as an enum defined in DownloadConnectionSecurity. + + + + + The id of the download that is used to associate separate events. + + + + + The source of the download, expressed as an enum defined in DownloadEntry. + + + + + The type of file that is downloaded, expressed as an enum defined in + DownloadContentType. + + + + + A boolean denoting if the final download URL is the same host as the + initiating frame (i.e., whether the initiating site likely controls the + download itself). + + + + + + nzolghadr@chromium.org + + Metrics related to first scroll action caused by the generated ScrollUpdate + gesture event. + + + + Whether the event is handled on the main thread or not. + + + + + The time in microseconds between initial creation of a touch event and the + first generated ScrollUpdate gesture event in a given scroll gesture event + sequence is handled on main/impl thread. If no swap was induced by the + ScrollUpdate gesture event, no recording is made. + + + + + The time in microseconds between initial creation of a touch event and the + start of the frame swap on the GPU service caused by the generated + ScrollUpdate gesture event if that ScrollUpdate is the first such event in + a given scroll gesture event sequence. If no swap was induced by the + event, no recording is made. + + + + + + + + + + + + + + + nzolghadr@chromium.org + + Metrics related to first scroll action caused by the generated ScrollUpdate + gesture event. + + + + Whether the event is handled on the main thread or not. + + + + + The time in microseconds between initial creation of a wheel event and the + first generated ScrollUpdate gesture event in a given scroll gesture event + sequence is handled on main/impl thread. If no swap was induced by the + ScrollBegin gesture event, no recording is made. + + + + + The time in microseconds between the initial creation of a wheel event and + the start of the frame swap on the GPU service caused by the generated + ScrollUpdate gesture event if that ScrollUpdate is the first such event in + a given scroll gesture event sequence. If no swap was induced by the + event, no recording is made. + + + + + + + + + + + + + + + nzolghadr@chromium.org + + Metrics related to a scroll action caused by the generated ScrollUpdate + gesture event. + + + + Whether the event is handled on the main thread or not. + + + + + The time in microseconds between initial creation of a touch event and the + generated ScrollUpdate gesture event is handled on main/impl thread. If no + swap was induced by the ScrollUpdate gesture event, no recording is made. + + + + + The time in microseconds between the initial creation of a touch event and + the start of the frame swap on the GPU service. If no swap was induced by + the event, no recording is made. The first GSU of every scrolling sequence + is excluded from this metric. + + + + + + + + + + + + + + + nzolghadr@chromium.org + tdresser@chromium.org + + Metrics related to a scroll action caused by the generated ScrollUpdate + gesture event. + + + + Whether the event is handled on the main thread or not. + + + + + The time in microseconds between initial creation of a wheel event and the + generated ScrollUpdate gesture event is handled on main/impl thread. If no + swap was induced by the ScrollUpdate gesture event, no recording is made. + The first GSU of every scrolling sequence is excluded from this metric. + + + + + The time in microseconds between the initial creation of a wheel event and + the start of the frame swap on the GPU service. If no swap was induced by + the event, no recording is made. The first GSU of every scrolling sequence + is excluded from this metric. + + + + + + + + + + + + + + + + Deprecated in Chrome 87 / September 2020 - it was not needed anymore since + CORS-for-content-scripts has successfully shipped in M85. + + lukasza@chromium.org + + This UKM event is logged when an extension which triggers a cross-origin + CORS-mode request from a content script if such a request results would be + allowed by CORB, but potentially blocked by CORS. The source-id URL + associated with the UKM event identifies the extension initiating such + request. + + Note that this data is only gathered if the + CorbAllowlistAlsoAppliesToOorCors feature is disabled. Also note that this + data is not gathered for extensions that are already on the allowlist. + + + + Always true - introduced to have non-zero number of metrics which should + make it easier to work with queries / dashboards for the overall + CrossOriginFetchFromContentScript3 event. + + + + + + + + + + + + + chikamune@chromium.org + yyanagisawa@chromium.org + sisidovski@chromium.org + hiroshige@chromium.org + kouhei@chromium.org + + Records the extension related metrics that might have negative impacts on + LCP. This is recorded when navigation is finished. + + + + The number of enabled extensions that have a DeclarativeNetRequestFeedback + permission. The exponential bucketing is applied for privacy reasons by + using ukm::GetExponentialBucketMin(value, 2). + + + + + + + + + + + + The number of enabled extensions that have a DeclarativeNetRequest + permission. The exponential bucketing is applied for privacy reasons by + using ukm::GetExponentialBucketMin(value, 2). + + + + + + + + + + + + The number of enabled extensions that have a + DeclarativeNetRequestWithHostAccess permission. The exponential bucketing + is applied for privacy reasons by using + ukm::GetExponentialBucketMin(value, 2). + + + + + + + + + + + + The number of enabled extensions that have a DeclarativeWebRequest + permission. The exponential bucketing is applied for privacy reasons by + using ukm::GetExponentialBucketMin(value, 2). + + + + + + + + + + + + The number of enabled extensions that are not themes nor apps nor + components. The exponential bucketing is applied for privacy reasons by + using ukm::GetExponentialBucketMin(value, 2). + + + + + + + + + + + + The number of enabled extensions that have host permissions for the + navigation target URL. The exponential bucketing is applied for privacy + reasons by using ukm::GetExponentialBucketMin(value, 2). + + + + + + + + + + + + The number of enabled extensions that inject content scripts. The + exponential bucketing is applied for privacy reasons by using + ukm::GetExponentialBucketMin(value, 2). + + + + + + + + + + + + The number of enabled extensions that have a WebRequestAuthProvider + permission. The exponential bucketing is applied for privacy reasons by + using ukm::GetExponentialBucketMin(value, 2). + + + + + + + + + + + + The number of enabled extensions that have a WebRequestBlocking + permission. The exponential bucketing is applied for privacy reasons by + using ukm::GetExponentialBucketMin(value, 2). + + + + + + + + + + + + The number of enabled extensions that have a WebRequest permission. The + exponential bucketing is applied for privacy reasons by using + ukm::GetExponentialBucketMin(value, 2). + + + + + + + + + + + + + yhirano@chromium.org + kinuko@chromium.org + + Whether and how keepalive requests are blocked. Recorded when a keepalive + request finishes. + + + + The number of redirects the request experienced. This is up to 21, as + specified at https://fetch.spec.whatwg.org/#http-redirect-fetch . + + + + + + + + + + + + The final state of the request. + + + + + + + + + + + + + mek@chromium.org + rhalavatigit@chromium.org + + Logged when a website requests accessing FileSystem API. + + + + Marks a request for a Persistent FileSystem. + + + + + Marks a request for a Temporary FileSystem. + + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + Whenever the floc is computed, this event will be recorded at the commit + time of the next page load. Caveat: if the browser is closed before the next + page load occurs (in a new session), the event won't be recorded. + + + + The user's floc id. This ignores any general or per-context access + permissions, and records the internal int64_t number directly. This metric + may still be skipped if the floc was not calculated or has been + invalidated. + + + + + + caraitto@chromium.org + pauljensen@chromium.org + privacy-sandbox-dev@chromium.org + + Records font family match attempts, broken down by system fonts and web + fonts. Multiple match attempts using the same font family name are + de-duplicated. Matching of @font-face src:local fonts isn't currently + supported. + + + + If the font family name was matched in a top-level frame, a sub-frame or a + worker. + + + + + The count of failed attempts to match @font-face src:local rules. + + + + + + + + + + + + + The count of successful attempts to match @font-face src:local rules. + + + + + + + + + + + + + The count of total attempts (failed + succeeded) to match @font-face + src:local rules. + + + + + + + + + + + + + The count of system font family match attempts that failed. + + + + + + + + + + + + + The count of system font family match attempts that succeeded. + + + + + + + + + + + + + Total count of system font family match attempts (succeeded + failed). + + + + + + + + + + + + + The count of web font family match attempts that failed. + + + + + + + + + + + + + The count of web font family match attempts that succeeded. + + + + + + + + + + + + + Total count of web font family match attempts (succeeded + failed). + + + + + + + + + + + + + + pjlee@google.com + cuicuiruan@google.com + arc-gaming@google.com + + An event that is logged when key mapping position is changed. + + + + Type about how the reposition is done. + + + + + + + + + + + + + pjlee@google.com + cuicuiruan@google.com + arc-gaming@google.com + + An event that is logged when key mapping position is changed. + + + + Window state type when the reposition is done. + + + + + + + + + + + + + pjlee@google.com + cuicuiruan@google.com + arc-gaming@google.com + + An event that is logged when button group position is changed. + + + + Type about how the reposition is done. + + + + + + + + + + + + + pjlee@google.com + cuicuiruan@google.com + arc-gaming@google.com + + An event that is logged when menu entry position is changed. + + + + Window state type when the reposition is done. + + + + + + + + + + + + + pjlee@google.com + cuicuiruan@google.com + arc-gaming@google.com + + An event for gaming input overlay that is logged when users enter into edit + mode. + + + + Whether the customization option was used. + + + + + + + + + + + + + pjlee@google.com + cuicuiruan@google.com + arc-gaming@google.com + + An event for gaming input overlay that is logged when the input overlay + feature itself changes state. + + + + Whether the gaming input overlay feature is in use. + + + + + + + + + + + + + pjlee@google.com + cuicuiruan@google.com + arc-gaming@google.com + + An event for gaming input overlay that is logged when the mapping hint state + is changed. + + + + Whether the mapping hint for gaming input overlay is on. + + + + + + + + + + + + + pjlee@google.com + cuicuiruan@google.com + arc-gaming@google.com + + An event that is logged when key mapping position is changed. + + + + Type about how the reposition is done. + + + + + + + + + + + + + pjlee@google.com + cuicuiruan@google.com + arc-gaming@google.com + + An event that is logged when menu entry position is changed. + + + + Window state type when the reposition is done. + + + + + + + + + + + + + ryansturm@chromium.org + avi@chromium.org + + Logged when the user navigated to their home page or their default search + engine. Recorded if the first URL or the final URL matches the pattern for + Default Search or matches the user's home page URL. Recorded upon commit + (even if the page was not foreground). + + + + If the navigation committed URL matches the template URL of the user's + Default Search Engine. + + + + + If the navigation committed URL matches the user's home page URL. Not + recorded on Android because home page is managed outside of Chrome. + + + + + If the navigation starting URL matches the template URL of the user's + Default Search Engine. + + + + + If the navigation starting URL (first URL in the redirect chain) matches + the user's home page URL. Not recorded on Android because home page is + managed outside of Chrome. + + + + + + rhalavati@chromium.org + chrome-privacy-core@google.com + + Logged when a website requests a shared resource from Google Docs Offline + Extension. Note that this is double counted for imports since it is done + once in preload and once in actual load. + + + + Marks a resource request from a website. + + + + + + + + + + + + + jonross@chromium.org + + Tracks the duration of stages in the rendering pipeline when processing a + single frame in response to an input event. To meet UKM goals for data + volume, a Poisson process with an exponential decay multiplier is used to + sample events for recporting. It will sample many reandomly distributed + events early during page load and initial interaction, then samples at an + exponentially decreasing rate to effectively cap the number of samples. All + times are in microseconds. + + + + The duration of the activation stage, in microseconds. + + + + + + + + + + + + + The time from when the Impl frame is started to when BeginMainFrame is + sent, in microseconds. + + + + + + + + + + + + + Deprecated as of 01/2021. Replaced with event dispatch breakdown metrics. + + + The time from when the event is created in the browser until the first + compositor stage after the event arrives in the renderer, in microseconds. + + + + + The duration of the commit stage, in microseconds. + + + + + + + + + + + + + The time from when an activation is complete to the next + SubmitCompositorFrame, in microseconds. + + + + + + + + + + + + + The time from when a commit is complete to the beginning of the next + activation, in microseconds. + + + + + + + + + + + + + Type of the input event. + + + + + + + + + + + + + The time from when the event is created until it arrives in the renderer + compositor, in microseconds. + + + + + + + + + + + + + Type of the input device for pinch events. + + + + + + + + + + + + The time from when the event processing is finished on the renderer + compositor until the beginning of the activation, in microseconds. This + metric is only reported if the event is handled on the renderer compositor + and the first compositor step after that is the beginning of the + activation. + + + + + + + + + + + + + The time from when the event processing is finished on the renderer + compositor until the compositor frame is started, in microseconds. This + metric is only reported if the event is handled on the renderer compositor + and compositor frame is started after that. + + + + + + + + + + + + + The time from when the event processing is finished on the renderer + compositor until the beginning of the commit, in microseconds. This metric + is only reported if the event is handled on the renderer compositor and + the first compositor step after that is the beginning of the commit. + + + + + + + + + + + + + The time from when the event processing is finished on the renderer + compositor until the end of the activation, in microseconds. This metric + is only reported if the event is handled on the renderer compositor and + the first compositor step after that is the end of the activation. + + + + + + + + + + + + + The time from when the event processing is finished on the renderer + compositor until the end of the commit, in microseconds. This metric is + only reported if the event is handled on the renderer compositor and the + first compositor step after that is the end of the commit. + + + + + + + + + + + + + The time from when the event processing is finished on the renderer + compositor until BeginMainFrame is sent, in microseconds. This metric is + only reported if the event is handled on the renderer compositor and the + first compositor step after that is SendBeginMainFrame. + + + + + + + + + + + + + The time from when the event processing is finished on the renderer + compositor until the compositor frame is submitted, in microseconds. This + metric is only reported if the event is handled on the renderer compositor + and the first compositor step after that is the submission of the + compositor frame. + + + + + + + + + + + + + The time spent in the renderer compositor to process the event, in + microseconds. This metric won't be reported if the renderer compositor + does not have a dedicated thread. + + + + + + + + + + + + + The time from when the event arrives in the renderer compositor until the + compositor starts processing it, in microseconds. This metric won't be + reported if the renderer compositor does not have a dedicated thread. + + + + + + + + + + + + + The time from when the processing of the event on the renderer compositor + is finished until the main thread starts processing the event, in + microseconds. If the renderer compositor does not have a dedicated thread, + the processing of the event on the renderer compositor is considered + finished as soon as the event arrives in the renderer compositor. This + metric won't be reported if the event is handled on the renderer + compositor. + + + + + + + + + + + + + The time from when the event processing is finished on the renderer main + until the beginning of the activation, in microseconds. This metric is + only reported if the event is handled on the renderer main and the first + compositor step after that is the beginning of the activation. + + + + + + + + + + + + + The time from when the event processing is finished on the renderer main + until the compositor frame is started, in microseconds. This metric is + only reported if the event is handled on the renderer main and compositor + frame is started after that. + + + + + + + + + + + + + The time from when the event processing is finished on the renderer main + until the beginning of the commit, in microseconds. This metric is only + reported if the event is handled on the renderer main and the first + compositor step after that is the beginning of the commit. + + + + + + + + + + + + + The time from when the event processing is finished on the renderer main + until the end of the activation, in microseconds. This metric is only + reported if the event is handled on the renderer main and the first + compositor step after that is the end of the activation. + + + + + + + + + + + + + The time from when the event processing is finished on the renderer main + until the end of the commit, in microseconds. This metric is only reported + if the event is handled on the renderer main and the first compositor step + after that is the end of the commit. + + + + + + + + + + + + + The time from when the event processing is finished on the renderer main + until BeginMainFrame is sent, in microseconds. This metric is only + reported if the event is handled on the renderer main and the first + compositor step after that is SendBeginMainFrame. + + + + + + + + + + + + + The time from when the event processing is finished on the renderer main + until the compositor frame is submitted, in microseconds. This metric is + only reported if the event is handled on the renderer main and the first + compositor step after that is the submission of the compositor frame. + + + + + + + + + + + + + The time spent in the main thread to process the event, in microseconds. + This metric won't be reported if the renderer compositor handles the + event. + + + + + + + + + + + + + Type of the input device for scroll events. + + + + + + + + + + + + The time from when the BeginMainFrame is sent to the beginning of the + commit, in microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on accessibility, in + microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on animations, in + microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent before starting main + thread work, in microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on composite commit, + in microseconds. + + + + + + + + + + + + + No longer recorded after M97 with the launch of CompositeAfterPaint. + + + The time portion of SendBeginMainFrameToCommit spent on updating + compositing assignments, in microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on updating + compositing inputs, in microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on handling input + events, in microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on layout update, in + microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on paint, in + microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on prepaint, in + microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on style update, in + microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on updating layers, + in microseconds. + + + + + + + + + + + + + The time from when a compositor frame is submitted to the display + compositor to when it is presented, in microseconds. + + + + + + + + + + + + + The time from when the target framebuffer is available to when the GPU has + finished drawing to it, in microseconds. + + + + + + + + + + + + + The time from when the target framebuffer is ready to be displayed to when + the buffer is latched on for presentation, in microseconds. + + + + + + + + + + + + + The time from when the target framebuffer is latched on to when the swap + ends, in microseconds. + + + + + + + + + + + + + The time from when a compositor frame is received to when it starts to + draw, in microseconds. + + + + + + + + + + + + + Deprecated 02/2020. Split into + SubmitCompositorFrameToPresentationCompositorFrame.StartDrawToSwapStart + and SubmitCompositorFrameToPresentationCompositorFrame.SwapStartToSwapEnd. + + + The time from when the a compositor frame is started to draw to when it + ends swap, in microseconds. + + + + + + + + + + + + + The time from when a compositor frame is started to draw to when it starts + swap, in microseconds. + + + + + + + + + + + + + The time from when a compositor frame is submitted to when it is received, + in microseconds. + + + + + + + + + + + + + The time from when a compositor frame ends swap to when it is presented, + in microseconds. + + + + + + + + + + + + + The time from when the compositor frame starts to swap to when the target + framebuffer becomes available, in microseconds. + + + + + + + + + + + + + The time from when a compositor frame starts swap to when it ends swap, in + microseconds. + + + + + + + + + + + + + The total time from when the event is created in the browser to when the + frame is presented, in microseconds. + + + + + + + + + + + + + Deprecated as of 01/2021. + + + The time from when the event is created in the browser to when the + gpu-swap is started, for scroll events, in microseconds. + + + + + + + + + + + + + Deprecated as of 07/2020. Replaced with TotalLatencyToSwapBegin which + measures what we actually intended to measure. + + + The time from when the event is created in the browser to when the + gpu-swap is completed, for scroll events, in microseconds. + + + + + + animations-dev@chromium.org + jonross@chromium.org + schenney@chromium.org + + Tracks the duration of stages in the rendering pipeline while processing a + single frame. All times are in microseconds. + + + + The duration of the activation stage, in microseconds. + + + + + + + + + + + + + The time from when the Impl frame is started to when BeginMainFrame is + sent, in microseconds. + + + + + + + + + + + + + True when a canvas animation was active this frame. + + + + + The duration of the commit stage, in microseconds. + + + + + + + + + + + + + True when a compositor-driven animation was active this frame. + + + + + The time from when an activation is complete to the next + SubmitCompositorFrame, in microseconds. + + + + + + + + + + + + + The time from when a commit is complete to the beginning of the next + activation, in microseconds. + + + + + + + + + + + + + True when a inline style animation was active this frame. + + + + + True when a main-thread-driven animation was active this frame. + + + + + True when the main frame missed its deadline for this frame. + + + + + + + + + + + + True when a pinch-to-zoom interaction was active this frame. + + + + + True when a rAF-driven animation was active this frame. + + + + + True when a scrollbar driven interaction was active this frame. + + + + + The time from when the BeginMainFrame is sent to the beginning of the + commit, in microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on accessibility, in + microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on animations, in + microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent before starting main + thread work, in microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on composite commit, + in microseconds. + + + + + + + + + + + + + No longer recorded after M97 with the launch of CompositeAfterPaint. + + + The time portion of SendBeginMainFrameToCommit spent on updating + compositing assignments, in microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on updating + compositing inputs, in microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on handling input + events, in microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on layout update, in + microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on paint, in + microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on prepaint, in + microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on style update, in + microseconds. + + + + + + + + + + + + + The time portion of SendBeginMainFrameToCommit spent on updating layers, + in microseconds. + + + + + + + + + + + + + The time from when the a compositor frame is submitted to the display + compositor to when it is presented, in microseconds. + + + + + + + + + + + + + The time from when the target framebuffer is available to when the GPU has + finished drawing to it, in microseconds. + + + + + + + + + + + + + The time from when the target framebuffer is ready to be displayed to when + the buffer is latched on for presentation, in microseconds. + + + + + + + + + + + + + The time from when the target framebuffer is latched on to when the swap + ends, in microseconds. + + + + + + + + + + + + + The time from when a compositor frame is received to when it starts to + draw, in microseconds. + + + + + + + + + + + + + Deprecated 02/2020. Split into + SubmitCompositorFrameToPresentationCompositorFrame.StartDrawToSwapStart + and SubmitCompositorFrameToPresentationCompositorFrame.SwapStartToSwapEnd. + + + The time from when the a compositor frame is started to draw to when it + ends swap, in microseconds. + + + + + + + + + + + + + The time from when a compositor frame is started to draw to when it starts + swap, in microseconds. + + + + + + + + + + + + + The time from when a compositor frame is submitted to when it is received, + in microseconds. + + + + + + + + + + + + + The time from when the a compositor frame ends swap to when it is + presented, in microseconds. + + + + + + + + + + + + + The time from when the compositor frame starts to swap to when the target + framebuffer becomes available, in microseconds. + + + + + + + + + + + + + The time from when a compositor frame starts swap to when it ends swap, in + microseconds. + + + + + + + + + + + + + The total time starting from BeginImplFrame to when + CompositorFramePresentation is done with updates from the MainThread (i.e. + the time it takes for BeginImplFrame, BeginMainFrame, Commit, Activate, + SubmitCompositorFrame and PresentCompositorFrame), in microseconds. + + + + + + + + + + + + + True when a touchscreen driven interaction was active this frame. + + + + + The time within a stage not attributed to any system, in microseconds. + + + + + + + + + + + + + True when video playback was active this frame. + + + + + True when a mouse driven scroll was active this frame. + + + + + + animations-dev@chromium.org + jonross@chromium.org + + Measures various normalizations for the smoothness metric. The metric is + measured by counting dropped frames, and various normalization strategies + are used. + + The metric is reported once per page-load, and when the page closes (e.g. + the user closes the tab, or navigates away to a different page). + + + + The number of fixed-duration sliding windows (as a percentage) where the + number of dropped frames are above a threshold. The specific threshold is + yet to be determined. + + + + + + + + + + + + This is trivially computable by counting the total number of dropped + frames and the total number of vsyncs the page has been visible for, + exposed as a percentage. + + + + + + + + + + + + + + + CompositorFocused metrics report the throughput of frames that include + compositor thread updates. The median dropped frames within a + fixed-duration sliding window (as a percentage). So out of all + PerecentDroppedFrames of sliding windows the median will be reported here. + + + + + + + + + + + + + + + CompositorFocused metrics report the throughput of frames that include + compositor thread updates. The 95-th percentile dropped frames within a + fixed-duration sliding window (as a percentage). So out of all + PerecentDroppedFrames of sliding windows the 95th percentile will be + reported here. + + + + + + + + + + + + + + + CompositorFocused metrics report the throughput of frames that include + compositor thread updates. The variance of percent dropped frames within a + fixed-duration sliding window. So out of all PerecentDroppedFrames of + sliding windows the variance will be reported here. + + + + + + + + + + + + + + + MainFocused metrics report the throughput of frames that include main + thread updates. The median dropped frames within a fixed-duration sliding + window (as a percentage). So out of all PerecentDroppedFrames of sliding + windows the median will be reported here. + + + + + + + + + + + + + + + MainFocused metrics report the throughput of frames that include main + thread updates. The 95-th percentile dropped frames within a + fixed-duration sliding window (as a percentage). So out of all + PerecentDroppedFrames of sliding windows the 95th percentile will be + reported here. + + + + + + + + + + + + + + + MainFocused metrics report the throughput of frames that include main + thread updates. The variance of percent dropped frames within a + fixed-duration sliding window. So out of all PerecentDroppedFrames of + sliding windows the variance will be reported here. + + + + + + + + + + + + + + + The median dropped frames within a fixed-duration sliding window (as a + percentage). So out of all PerecentDroppedFrames of sliding windows the + median will be reported here. + + + + + + + + + + + + + + + The 95-th percentile dropped frames within a fixed-duration sliding window + (as a percentage). So out of all PerecentDroppedFrames of sliding windows + the 95th percentile will be reported here. + + + + + + + + + + + + + + + ScrollFocused metrics reports the throughput with highest priority on + scroll interactions. The median dropped frames within a fixed-duration + sliding window (as a percentage) with highest priority given to scroll + throughput. So out of all PerecentDroppedFrames of sliding windows the + median will be reported here. + + + + + + + + + + + + + + + ScrollFocused metrics reports the throughput with highest priority on + scroll interactions. The 95-th percentile dropped frames within a + fixed-duration sliding window (as a percentage). So out of all + PerecentDroppedFrames of sliding windows the 95th percentile will be + reported here. + + + + + + + + + + + + + + + ScrollFocused metrics reports the throughput with highest priority on + scroll interactions. The variance of percent dropped frames within a + fixed-duration sliding window. So out of all PerecentDroppedFrames of + sliding windows the variance will be reported here. + + + + + + + + + + + + + + + The percentage of sliding windows with bad smoothness, or a + PercentDroppedFrames of 12% to 25%. + + + + + + + + + + + + + + + The percentage of sliding windows with good smoothness, or a + PercentDroppedFrames of 3% to 6%. + + + + + + + + + + + + + + + The percentage of sliding windows with okay smoothness, or a + PercentDroppedFrames of 6% to 12%. + + + + + + + + + + + + + + + The percentage of sliding windows with a subset of very bad smoothness, or + a PercentDroppedFrames of 25% to 50%. + + + + + + + + + + + + + + + The percentage of sliding windows with a subset of very bad smoothness, or + a PercentDroppedFrames of 50% to 75%. + + + + + + + + + + + + + + + The percentage of sliding windows with a subset of very bad smoothness, or + a PercentDroppedFrames of 75% to 100%. + + + + + + + + + + + + + + + The percentage of sliding windows with very good smoothness, or a + PercentDroppedFrames of 0% to 3%. + + + + + + + + + + + + + + + Removed July 2022 along with UMA metric, which are no longer needed. + + + The Time From FCP when the worst case happened + + + + + + + + + + + + + + + The variance of percent dropped frames within a fixed-duration sliding + window. So out of all PerecentDroppedFrames of sliding windows the + variance will be reported here. + + + + + + + + + + + + + + + The maximum number of dropped frames (as a percentage) within a + fixed-duration sliding window. So out of all PerecentDroppedFrames of + sliding windows the max percentile will be reported here. + + + + + + + + + + + + + + + The same as WorstCase metric, but only the sliding windows which starts 1 + second after first contentful paint will be taken into account. + + + + + + + + + + + + + + + The same as WorstCase metric, but only the sliding windows which starts 2 + second after first contentful paint will be taken into account. + + + + + + + + + + + + + + + The same as WorstCase metric, but only the sliding windows which starts 5 + second after first contentful paint will be taken into account. + + + + + + + + + + + + + + + + + Deprecated 02/2023. + + animations-dev@chromium.org + jonross@chromium.org + + Tracks the percent of dropped frames for a particular sequence of frames + such as during scroll or animation. PercentDroppedFrames is measured by + tracking the number of frames the sequence was expected to produce, and the + number of frames that were not displayed on screen (dropped). It is the + ratio of dropped over expected, converted to a percentage. + + + + Tracks the throughput of a particular sequence of frames for all + animations. This metric is reported for all animations (e.g. + comositor-driven animations, main-thread driven animations, and raf-driven + animations). + + + + + + + + + + + + + Tracks the throughput of a particular sequence of frames where a + user-input (e.g. scroll, pinch) is active. This metric is reported for all + sources of user-input (i.e. both touchscreen and touchpad/mouse-wheel). + + + + + + + + + + + + + Tracks the throughput of a particular sequence of frames. This metric is + reported for all animations and all interactions. + + + + + + + + + + + + + The throughput of the compositor thread during a compositor animation. + + + + + The throughput of the compositor thread during a main thread animation. + + + + + The throughput of the compositor thread during pinch-zoom interactions. + + + + + The throughput of the compositor thread during rAF callback driven + animation. + + + + + The throughput of the compositor thread during scrollbar scroll driven + interactions. + + + + + The throughput of the compositor thread during touchscroll driven + interactions. + + + + + Removed in 9/2020, due to over penalize smoothness. + + + The throughput of the compositor thread for all frame production. + + + + + The throughput of the compositor thread during video play. + + + + + The throughput of the compositor thread during mousewheel scroll driven + interactions. + + + + + The throughput of the main thread during canvas animation. + + + + + The throughput of the main thread during a compositor animation. + + + + + The throughput of the main thread during inline style animation. + + + + + The throughput of the main thread during a main thread animation. + + + + + The throughput of the main thread during pinch-zoom interactions. + + + + + The throughput of the main thread during rAF callback driven animation. + + + + + The throughput of the main thread during scrollbar scroll driven + interactions. + + + + + The throughput of the main thread during touchscroll driven interactions. + + + + + Removed in 9/2020, due to over penalize smoothness. + + + The throughput of the main thread for all frame production. + + + + + The throughput of the main thread during video play. + + + + + The throughput of the main thread during mousewheel scroll driven + interactions. + + + + + Removed in 9/2020, since no longer needed after 'Universal' metric was + deprecated. + + + The worse throughput of the main and the compositor thread during a + compositor animation. + + + + + + + + + + + + + Removed in 9/2020, since no longer needed after 'Universal' metric was + deprecated. + + + The worse throughput of the main and the compositor thread during a main + thread animation. + + + + + + + + + + + + + The worse throughput of the main and the compositor thread during + pinch-zoom interactions. + + + + + + + + + + + + + Removed in 9/2020, since no longer needed after 'Universal' metric was + deprecated. + + + The worse throughput of the main and the compositor thread during rAF + callback driven animation. + + + + + + + + + + + + + Removed in 9/2020, since no longer needed after 'Universal' metric was + deprecated. + + + The worse throughput of the main and the compositor thread during + scrollbar driven interactions. + + + + + + + + + + + + + Removed in 9/2020, since no longer needed after 'Universal' metric was + deprecated. + + + The worse throughput of the main and the compositor thread during + touchscroll driven interactions. + + + + + + + + + + + + + Removed in 9/2020, due to over penalize smoothness. + + + The worse throughput of the main and the compositor thread for all frame + production. + + + + + + + + + + + + + Removed in 9/2020, since no longer needed after 'Universal' metric was + deprecated. + + + The worse throughput of the main and the compositor thread during video + play. + + + + + + + + + + + + + Removed in 9/2020, since no longer needed after 'Universal' metric was + deprecated. + + + The worse throughput of the main and the compositor thread during + mousewheel scroll driven interactions. + + + + + + + + + + + + + + + Deprecated 02/2020. + + animations-dev@chromium.org + jonross@chromium.org + + As of 2020-02-12, this is deprecated in favor of + Graphics.Smoothness.PercentDroppedFrames. + + + + The throughput of the compositor thread during a compositor animation. + + + + + The throughput of the compositor thread during a main thread animation. + + + + + The throughput of the compositor thread during pinch-zoom interactions. + + + + + The throughput of the compositor thread during rAF callback driven + animation. + + + + + The throughput of the compositor thread during touchscroll driven + interactions. + + + + + The throughput of the compositor thread for all frame production. + + + + + The throughput of the compositor thread during video play. + + + + + The throughput of the compositor thread during mousewheel scroll driven + interactions. + + + + + The throughput of the main thread during a compositor animation. + + + + + The throughput of the main thread during a main thread animation. + + + + + The throughput of the main thread during pinch-zoom interactions. + + + + + The throughput of the main thread during rAF callback driven animation. + + + + + The throughput of the main thread during touchscroll driven interactions. + + + + + The throughput of the main thread for all frame production. + + + + + The throughput of the main thread during video play. + + + + + The throughput of the main thread during mousewheel scroll driven + interactions. + + + + + Removed in 9/2020, since no longer needed after 'Universal' metric was + deprecated. + + + The worse throughput of the main and the compositor thread during a + compositor animation. + + + + + Removed in 9/2020, since no longer needed after 'Universal' metric was + deprecated. + + + The worse throughput of the main and the compositor thread during a main + thread animation. + + + + + Removed in 9/2020, since no longer needed after 'Universal' metric was + deprecated. + + + The worse throughput of the main and the compositor thread during + pinch-zoom interactions. + + + + + Removed in 9/2020, since no longer needed after 'Universal' metric was + deprecated. + + + The worse throughput of the main and the compositor thread during rAF + callback driven animation. + + + + + Removed in 9/2020, since no longer needed after 'Universal' metric was + deprecated. + + + The worse throughput of the main and the compositor thread during + touchscroll driven interactions. + + + + + Removed in 9/2020, since no longer needed after 'Universal' metric was + deprecated. + + + The worse throughput of the main and the compositor thread for all frame + production. + + + + + Removed in 9/2020, since no longer needed after 'Universal' metric was + deprecated. + + + The worse throughput of the main and the compositor thread during video + play. + + + + + Removed in 9/2020, since no longer needed after 'Universal' metric was + deprecated. + + + The worse throughput of the main and the compositor thread during + mousewheel scroll driven interactions. + + + + + + chrome-memories@google.com + mcrouse@chromium.org + + Metrics that capture the iteractions with HistoryClusters, or Journeys, This + will be recorded once per visit to the HistoryClusters UI and logged when + the UI is closed or navigated away from. + + + + The final state, or outcome, of an interaction on the HistoryClusters UI. + + + + + The initial state that describes how an interaction with the + HistoryClusters UI was started. + + + + + The number of times the user performed a query on the HistoryClusters UI + during this interaction. This can include partial queries that occur due + to the UI's query timing. + + + + + The number of times the user toggled to the basic history page during this + interaction with the HistoryClusters UI. + + + + + + shivanisha@chromium.org + + Logged when an entry in the back-forward list is marked to be skipped on + subsequent back/forward button clicks as part of the history manipulation + intervention. This is logged when the entry is navigated away from. + + + + + altimin@chromium.org + arthursonzogni@chromium.org + hajimehoshi@chromium.org + + Metrics recorded each time we commit a history navigation, which are needed + to estimate benefits of back-forward cache. Except as otherwise noted, the + metrics are recorded for history navigations, but not for same-document + navigations. + + + + Deprecated 06/2021. + + + Measures the average cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a session window, after the page is restored from the + back-forward. The gap between two consecutive shifts in a window is not + bigger than 5000ms. This metric's integral value is 100x the fractional + cumulative layout shift score described in the explainer. + + + + + The average value of user interaction latency above budget of a page after + it is restored from the back-forward, in ms. For this metric, we measure + the latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + Deprecated March 2022 in favor of + SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration + + + The average value of user interaction latency above budget of a page after + it is restored from the back-forward, in ms. For this metric, we measure + the latency of user interactions by + Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + When navigating back to a page in the session history, this records what + blocklisted features were used when the page was loaded and prevented this + page from being stored in the back-forward cache. Multiple blocklisted + features can be recorded for the same page as a binary mask. + + + + + When navigating back to a page in the session history and the + BackForwardCache wasn't used because of the related browsing instances, + this records the reason why the browsing instance wasn't swapped. + + + + + The number of the reasons passed to + BackForwardCache::DisableForRenderFrameHost calls. + + + + + Boolean whether the now-restored page uses AMP (see https://amp.dev). If + the page wasn't restored from the back-forward cache, this metric will not + be populated. This metric will never be true when + BackForwardCache.IsServedFromBackForwardCache is false. + + + + + Boolean whether the page was restored from the back-forward cache or not. + + + + + Bitmask of the reasons why the page was not restored from the back-forward + cache. See contents::BackForwardCacheMetrics::NotRestoredReason for the + meaning of the individual bits. + + + + + Bitmask of features used by the cross origin subframes of the previous + page load. See blink::SchedulingPolicy::Feature for the meaning for the + individual features. + + + + + Deprecated as of 04/23. It is still reported, but most users should use + PageLoad.LayoutInstability.MaxCumulativeShiftScore.AfterBackForwardCacheRestore.SessionWindow.Gap1000ms.Max5000ms. + + Measures the cumulative layout shift (bit.ly/3fQz29y) that has occurred + during the session, after the page is restored from the back-forward + cache. This metric's integral value is 100x the fractional cumulative + layout shift score described in the explainer. + + + + + Measures First Input Delay, the duration between the hardware timestamp + and the start of event processing on the main thread for the first + meaningful input per navigation, after the page is restored from the + back-forward cache. + + + + + Measures the time duration between the page restore from back-forward + cache and the first requestAnimationFrame time in milliseconds. + + + + + For page loads that start in the foreground, measures the duration of time + in milliseconds until one of the following events occurs: the load of the + main resource fails, the page load is stopped, the tab hosting the page is + closed, the render process hosting the page goes away, a new navigation + which later commits is initiated in the same tab, or the tab hosting the + page is backgrounded. This metric has a very long tail, for pages that + spend a long period of time in the foreground. As such, use of the mean or + tail values are not recommended. + + + + + For history navigations and reloads, the source id of the previous + navigation which loaded the page we're trying to navigate back to. + + + + + Deprecated as of 01/2019. + + + + + Bitmask of features used by the main frames of the previous page load. See + blink::SchedulingPolicy::Feature for the meaning for the individual + features. + + + + + Deprecated 06/2021. + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a session window, after the page is restored from the + back-forward. The gap between two consecutive shifts in a window is not + bigger than 1000ms. This metric's integral value is 100x the fractional + cumulative layout shift score described in the explainer. + + + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a session window, after the page is restored from the + back-forward. The gap between two consecutive shifts in a window is not + bigger than 1000ms and the maximum window size is 5000ms. This metric's + integral value is 100x the fractional cumulative layout shift score + described in the explainer. + + + + + Deprecated 06/2021. + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a session window, after the page is restored from the + back-forward. The gap between two consecutive shifts in a window is not + bigger than 1000ms and the maximum window size is 5000ms. We start a new + window whenever there's a new user input. This metric's integral value is + 100x the fractional cumulative layout shift score described in the + explainer. + + + + + Deprecated 06/2021. + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a 1000ms sliding window, after the page is restored from + the back-forward. This metric's integral value is 100x the fractional + cumulative layout shift score described in the explainer. + + + + + Deprecated 06/2021. + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a 300ms sliding window, after the page is restored from + the back-forward. This metric's integral value is 100x the fractional + cumulative layout shift score described in the explainer. + + + + + Boolean for whether we navigated to the same navigation entry as the one + which was last visible. + + It can be false when subframes or same-document navigations are present. + For example, after navigating from http://foo to http://foo#bar and then + http://bar and then going back by 2 entries will mean we went to + http://foo while the last committed entry from this document was + http://foo#bar. + + It's expected to be rare, but might be problematic for back-forward cache. + + + + + Measures the time in milliseconds from navigation timing's navigation + start to the time the first paint is performed, after the page is restored + from the back-forward cache. + + + + + The number of distinct user interactions on a page after it is restored + from the back-forward cache. See definition of user interaction: + https://web.dev/better-responsiveness-metric/#group-events-into-interactions + + + + + The reason (as a |page_load_metrics::PageEndReason|) why the user + navigated away from the page after it was restored from the back-forward + cache. This includes navigations after which the page is stored in the + back-forward cache again, as well as other page-ending events. + + + + + Bitmask of features used by the same origin subframes of the previous page + load. See blink::SchedulingPolicy::Feature for the meaning for the + individual features. + + + + + Measures the time duration between the page restore from back-forward + cache and the second requestAnimationFrame time in milliseconds. + + + + + Deprecated March 2022 in favor of + SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration + + + An approximation of high percentile of user interaction latency above + budget of a page after it is restored from the back-forward, in ms. For + this metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + Deprecated March 2022 in favor of + SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration + + + An approximation of high percentile of user interaction latency above + budget of a page after it is restored from the back-forward, in ms. For + this metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + An approximation of high percentile of user interaction latency above + budget of a page after it is restored from the back-forward, in ms. For + this metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + Deprecated March 2022 in favor of + SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration + + + An approximation of high percentile of user interaction latency above + budget of a page after it is restored from the back-forward, in ms. For + this metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + The sum of user interaction latency above budget of a page after it is + restored from the back-forward, in ms. For this metric, we measure the + latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + Deprecated March 2022 in favor of + SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration + + + The sum of user interaction latency above budget of a page after it is + restored from the back-forward, in ms. For this metric, we measure the + latency of user interactions by + Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + Measures the time duration between the page restore from back-forward + cache and the third requestAnimationFrame time in milliseconds. + + + + + Time in milliseconds from the moment the current navigation stopped being + active to the start of the current navigation. + + This is clamped to hours for values greater than 3 hours, to minutes for + values greater than 3 minutes, to seconds for values greater than 5 + seconds. + + + + + An approximation of a high percentile of user interaction latency of a + page after it is restored from the back-forward cache, in ms. For this + metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration. + + + + + The maximum value of user interaction latency of a page after it is + restored from the back-forward, in ms. For this metric, we measure the + latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration. + + + + + Deprecated March 2022 in favor of + SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration + + + The maximum value of user interaction latency of a page after it is + restored from the back-forward, in ms. For this metric, we measure the + latency of user interactions by + Responsiveness.UserInteraction.TotalEventDuration. + + + + + Deprecated March 2022 in favor of + SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration + + + The maximum value of user interaction latency above budget of a page after + it is restored from the back-forward, in ms. For this metric, we measure + the latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration and we reduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + Deprecated March 2022 in favor of + SlowUserInteractionLatencyAfterBackForwardCacheRestore.HighPercentile2.MaxEventDuration + + + The maximum value of user interaction latency above budget of a page after + it is restored from the back-forward, in ms. For this metric, we measure + the latency of user interactions by + Responsiveness.UserInteraction.TotalEventDuration and we reduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + + antoniosartori@chromium.org + caraitto@chromium.org + mkwst@chromium.org + pauljensen@chromium.org + + Identifiability metrics are used to measure the diversity of web clients as + observed by individual web sites. + + Browser or device fingerprinting uses differences in behaviors of web APIs + as identifiers. The values collected under this event indicate the level of + identifiability of these differences. + + Metrics recorded under this event are keyed based on parameters determined + at runtime. Hence the metrics described in this file are not exhaustive. + + See + //third_party/blink/public/common/privacy_budget/identifiability/identifiability_metric_builder.h + for details on how the metrics hash is determined. + + + + An integer identifying the "generator" version for this record. + Some identifiability study samples are derived from multiple factors which + are run though a digest function to derive the int64_t value. If the set + of factors change or the method of combining them changes, then the + resulting statistics cannot be aggregated with those from a prior version. + + The name suffix (.926) was chosen so that the resulting metric hash as + determined by base::HashMetricName() has all 8 LSBs set to 0. Such a + metric hash does not collide with any other metric hash generated by + blink::IdentifiabilityMetricBuilder(). + + + + + An integer identifying the study "generation." In case the study + parameters need to be tweaked to the point where results cannot be + aggregated across study parameter sets, this value can be changed to + partition the results. + + The name suffix (.626) was chosen so that the resulting metric hash as + determined by base::HashMetricName() has all 8 LSBs set to 0. Such a + metric hash does not collide with any other metric hash generated by + blink::IdentifiabilityMetricBuilder(). + + + + + + mmocny@chromium.org + sullivan@chromium.org + speed-metrics-dev@chromium.org + + Metrics associated with user input events. This event is recorded in Blink + and may not be recorded for the same page visits as events like PageLoad. + Consumers of this event's metrics should be aware of this when making + comparisons between InputEvent metrics and PageLoad metrics. + + + + The Event Type of the input event. + + + + + + + + + + + + + + Measures Input Delay, the duration between the hardware timestamp and the + start of event processing on the main thread for the meaningful input. In + ms. (go/FirstInputDelay) + + + + + + + + + + + + + + Measures the time in ms from when the event handlers finish processing the + input event to the time when the next paint caused by the input event is + performed. + + + + + + + + + + + + + + Measures Input Event processing time, the duration of event handlers + processing the input event. In ms. + + + + + + + + + + + + + + + mehrab@google.com + + Metrics recording a summary of user interactions with Autocorrect feature. + The event is recorded whenever an autocorrect suggestion is shown or a user + interacted with a suggestion to accept or reject it. + + + + A summary of interactions with Physical Keyboard Autocorrect suggestions + for the purpose of identifying App Compatibility issues. + + + + + + + + + + + + A summary of interactions with Virtual Keyboard Autocorrect suggestions + for the purpose of identifying App Compatibility issues. + + + + + + + + + + + + + jiwan@chromium.org + + Recorded when an assistive action could be triggered according to the + surrounding text. + + + + The type of the assistive suggestion which is triggered. + + + + + + + + + + + + + jopalmer@google.com + essential-inputs-team@google.com + + Recorded when a user uses the long press diacritics feature to insert + diacritics via long press with a physical keyboard. + + + + Action taken by the user to interact with this feature. + + + + + + shend@chromium.org + + Metrics indicating what Input Method Editor (IME) operations are behaving + incorrectly on an input field. This event is recorded whenever an IME + operation is executed on the input field but the result does not match the + IME's expectations (e.g. IME wants to insert 'a' but the input field + inserted 'b' instead). + + + + The operation that behaved incorrectly. + + + + + + + + + + + + + rayankans@chromium.org + peter@chromium.org + + Recorded before resolving a call to navigator.getInstalledRelatedApps(). + + + + Always true. + + + + + + + Removed 12/2021. + + bmcquade@chromium.org + + Recorded for page loads where the document.write script block intervention + could apply. + + + + Records '1' if the document.write script block intervention could have + applied, but was disabled due to the page being reloaded. + + + + + Measures the time in milliseconds that the HTML parser spent blocked on + the execution of scripts inserted from document.write, for main frame + documents that finished parsing. + + + + + Measures the time in milliseconds that the HTML parser spent blocked on + the load of scripts inserted from document.write, for main frame documents + that finished parsing. + + + + + + thegreenfrog@chromium.org + michaeldo@chromium.org + + Logged when the FindInPage returns a user search request result. Starting + from M111, this is only logged at the end of the Find session i.e. when the + Find UI is dismissed. + + + + True if there were matches. + + + + + + + + + + + + + rkgibson@chromium.org + + As of iOS14, users will be able to set a default browser other than Safari. + When Chrome is the default browser, it will open all URL links, which is + likely to change certain stability metrics. Thus, it will be good to filter + those metrics by default browser status. This metrics records whether the + user was deemed to have set Chrome as the device's default browser. This + metric will be logged once per metrics log upload, and if the metric changes + mid-report, this just records the state at the very end of the report. Note: + this is tied to a source_id that is not going to be emitted. + + + + True if Chrome is set as default browser. + + + + + + thegreenfrog@chromium.org + + Logged when the user adds a page to the Reading List. + + + + True if the page was added by the user tapping on the Messages prompt to + save to Reading List. + + + + + + + + + + + + + thegreenfrog@chromium.org + + Logged when the Distilibility score of the current page is returned and the + Reading List Message is shown. Muliplied by 10X to get tenth digit + granularity. 0.1 granularity will be recorded for scores between 0.5 and + 1.5. Otherwise, the granularity will be 0.5. + + + + True if the user tapped on the Messages prompt to save the current page to + Reading List. + + + + + Distilibility score value indicating the "long readability" of + the page. + + + + + + + + + + + + Distilibility score value indicating the "readability" of the + page. + + + + + + + + + + + + + rkgibson@google.com + + Logged when the user changes their zoom level on iOS. + + + + The content size category the user is currently using. + + + + + + + + + + + + The overall zoom level. This is based on a combination of the user zoom + level and a multiplier from the user's content size category. + + + + + The current zoom multiplier (percentage-based, with 100 -> 100%) the + user has chosen. + + + + + + olivierrobin@chromium.org + + Logged when WKWebView process is reported gone. Metrics will give + information of the context in which some website present sad tabs. It will + help debug some renderer issues either in Chrome or in WebKit. + + + + The number of WKWebView alive in the last 2 seconds. + + + + + The number of WKWebView alive at the moment this renderer is gone. + + + + + Whether the app/tab was in foregound or background. 0: tab in foreground, + app in foreground, 1: tab in background, app in foreground, 2: tab in + foreground, app in background, 3: tab in background, app in background. + + + + + + + + + + + + Whether a memory warning was received less than 5 seconds before the + renderer process is gone. + + + + + + ajuma@chromium.org + gambard@chromium.org + + Logged when LegacyNavigationManager and KWKBasedNavigationManager have + different last committed URLs. This means that either old or new navigation + system has a URL spoofing bug. + + + + True if there was a mismatch. + + + + + + + + + + + + + houssein@chromium.org + npm@chromium.org + + Metrics stating whether the main frame of a page uses certain JavaScript + frameworks. This event is recorded when the page is going to be unloaded or + when the app enters the background on Android. The framework detection is + done when the document is loaded (similar to when load event is fired). If a + framework is used after this then it would not be detected. Note that a page + can use multiple frameworks at the same time, hence why this reports each + framework individually instead of a single enum. + + + + True if the page loaded in the main frame uses the Angular JavaScript + framework. + + + + + True if the page loaded in the main frame uses the Gatsby JavaScript + framework. + + + + + True if the page loaded in the main frame uses the Next.js JavaScript + framework. + + + + + True if the page loaded in the main frame uses the Nuxt.js JavaScript + framework. + + + + + True if the page loaded in the main frame uses the Preact JavaScript + framework. + + + + + True if the page loaded in the main frame uses the React JavaScript + framework. + + + + + True if the page loaded in the main frame uses the Sapper JavaScript + framework. + + + + + True if the page loaded in the main frame uses the Svelte JavaScript + framework. + + + + + True if the page loaded in the main frame uses the Vue JavaScript + framework. + + + + + True if the page loaded in the main frame uses the VuePress JavaScript + framework. + + + + + + + Obsolete as of 08/2021. + + beccahughes@chromium.org + media-dev@chromium.org + + Recorded every time the ViewportFit that is supplied by a frame changes or + the fullscreen state of a frame or its parent WebContents changes. + + + + Records '1' if the frame that triggered this event is the main frame. + + + + + Records whether each safe area was present. It will contain the first flag + (1) if the top safe area is present. Likewise the second for the left, the + third for the bottom and the forth for the right. If the safe area is + updated whilst we are allowed to extend into the cutout then we will use + the newest safe area values. + + + + + Contains the ViewportFit value that was applied by the WebContents. The + frame that is fullscreen will always propagate it's ViewportFit value. + This is stored as a ViewportFit enum (see display_cutout.mojom). + + + + + Records the reason why the ViewportFit value of this frame was not the + applied value. It will be '0' if the value was allowed. It will be '1' if + the ViewportFit value from the frame was blocked because the WebContents + was not fullscreen. It will be '2' flag if the ViewportFit value from the + frame was blocked because another frame is fullscreen. + + + + + Contains the ViewportFit value that was supplied by the frame that + triggered the event. This is stored as a ViewportFit enum (see + display_cutout.mojom). It can never be kAuto as we ignore events when the + page is not trying to use the viewport fit API. + + + + + + + Obsoleted December 2021. + + mcrouse@chromium.org + rajendrant@chromium.org + + Metrics that capture the state and result of the LiteVideo optimization. + This will be recorded once per frame when the associated render process + ends. Only for Lite mode users on Android. + + + + The reason that a navigation was blocklisted and will not have media + requests throttled. + + + + + The result for whether media requests associated with this navigation were + successfully throttled or stopped due to an opt-out event. + + + + + The decision for whether media requests associated with this frame will be + potentially throttled. + + + + + + fdoray@chromium.org + chrome-catan@google.com + + Counts loads of each type that occurred on a top-level document. Recorded + when a top-level document is unloaded. This can be used to diagnose changes + to the "Total pageloads" shown on stability dashboard. + + Exponential bucketing is applied to all counts. The bucketing function + preserves exact count up until 20. + + + + Number of main frame same-document loads that occurred while the page was + hidden. + + + + + Number of main frame same-document loads that occurred while the page was + visible. + + + + + Number of sub frame different-document loads that occurred while the page + was hidden. + + + + + Number of sub frame different-document loads that occurred while the page + was visible. + + + + + Number of sub frame same-document loads that occurred while the page was + hidden. + + + + + Number of sub frame same-document loads that occurred while the page was + visible. + + + + + + sophiechang@chromium.org + tbansal@chromium.org + + Metrics that reflect the accuracy of the predictions used by the Loading + Predictor. This event will be recorded once per page load on + DocumentOnLoadCompletedInPrimaryMainFrame(). + + + + The number of subresource origin preconnects that were initiated by the + Loading Predictor for the navigation and were actually used by the page + load, excluding the main frame URL's origin. If more than 100 subresource + origins were preconnected to and were actually used by the page load, this + will be capped at 100. + + + + + The number of subresource prefetches that were initiated by the Loading + Predictor for the navigation and were actually used by the page load. If + more than 100 subresources were prefetched and were actually used by the + page load, this will be capped at 100. + + + + + The number of subresource origins that were correctly predicted by the + local prediction database. This will be recorded if there is a prediction + available in the local prediction database and does not necessarily mean + that the prediction was used. If more than 100 subresource origins were + correctly predicted, this will be capped at 100. + + + + + The number of subresource origins that were predicted locally. This will + be recorded if there is a prediction available in the local prediction + database and does not necessarily mean that the prediction was used. If + more than 100 subresource origins were predicted, this will be capped at + 100. + + + + + The time (in milliseconds) that elapsed between navigation start and the + first subresource prefetch that was initiated based on these predictions. + + + + + The time (in milliseconds) that elapsed between navigation start and the + commit finished. + + + + + The time (in milliseconds) that elapsed between navigation start and the + optimization guide prediction arriving for the navigation. + + + + + The number of subresource origins that were correctly predicted by the + Optimization Guide. This will be recorded if the Optimization Guide was + consulted for the page load and the Optimization Guide had a prediction + for it. If more than 100 subresource origins were correctly predicted, + this will be capped at 100. + + + + + The number of subresources that were correctly predicted by the + Optimization Guide. This will be recorded if the Optimization Guide was + consulted for the page load and the Optimization Guide had a prediction + for it. If more than 100 subresources were predicted, this will be capped + at 100. + + + + + The decision coming from the Optimization Guide for whether there was a + prediction available for the Page Load. This will be recorded if the + Optimization Guide was consulted for the page load. + + + + + The number of subresource origins that were predicted by the Optimization + Guide. This will be recorded if the Optimization Guide was consulted for + the page load and the Optimization Guide had a prediction for it. If more + than 100 subresource origins were predicted, this will be capped at 100. + + + + + The number of subresources that were predicted by the Optimization Guide. + This will be recorded if the Optimization Guide was consulted for the page + load and the Optimization Guide had a prediction for it. If more than 100 + subresources were predicted, this will be capped at 100. + + + + + The number of subresource origins that were initiated by the Loading + Predictor and were preconnected to, excluding the main frame URL's origin. + If more than 100 subresource origins were preconnected to, this will be + capped at 100. + + + + + The number of subresource prefetches that were initiated by the Loading + Predictor for the navigation. If more than 100 subresources were + prefetched, this will be capped at 100. + + + + + + uthakore@chromium.org + invernizzi@chromium.org + + Metrics that describe the resource request behavior of pages for which + navigation successfully commits. A separate entry is generated for every + unique IP address or localhost port number to which the loaded page makes a + resource request. + + + + The count of requests made by the page to the given resource for which a + response is not received or a network error occurs (i.e. |net_error| != + |net::OK|) between the time navigation to the page commits and the time it + completes. + + + + + The count of requests made by the page to the given resource for which a + successful response is received (i.e. |net_error| == |net::OK|) between + the time navigation to the page commits and the time it completes. + + + + + An enum value representing the type of port for requests to localhost. The + enum is defined in |LocalNetworkRequestsPageLoadMetricsObserver|. Possible + values are 1 for common web server ports, 2 for common database server + ports, 4 for common print server ports, 8 for common development server + ports, and 0 for all other ports. + + + + + An enum value representing the type of resource requested. The enum is + defined in |LocalNetworkRequestsPageLoadMetricsObserver|. Possible values + are 0 for public resources requested by private pages, 1 for private + resources requested by public pages, 2 for private resources within the + same reserved IP space as the loaded private page, 4 for private resources + within a different reserved IP space than the loaded private page, 8 for + resources requested by public pages that are suspected to be routers, and + 16 for localhost resources. + + + + + + rajendrant@chromium.org + mcrouse@chromium.org + + Records the info about login detected for sites based on different + heuristics. + + + + An enum for representing the different ways of user login to a site, such + as via passwords, via OAuth, etc. Recorded for every page load. + + + + + + meacer@chromium.org + cthomp@chromium.org + + Metrics recorded when a navigated URL's domain name is visually similar to a + popular domain or a domain that the user engaged with. + + + + An enum value representing the type of the match (popular domain, engaged + domain, etc.). The enum is defined in |LookalikeUrlBlockingPage|. + + + + + A boolean representing whether or not the warning was triggered by the + first URL in the chain, or whether the warning was triggered by the final + (committed) URL. + + + + + An enum value representing the decision the user made when shown an + interstitial (ignored, suggestion_accepted, etc.). The enum is defined in + |LookalikeUrlBlockingPage|. + + + + + + + Deprecated as of 03/2019. + + yaoxia@chromium.org + + Measurement for top frame download. It is only recorded for downloads + originated from navigations or from HTML anchor download attributes. + + + + A boolean denoting whether the download involves a transient user gesture. + + + + + A boolean denoting whether the download occurs in a sandboxed browsing + context. + + + + + + thegreenfrog@chromium.org + + Metric associated with a main frame navigation. Currently implemented only + on iOS. + + + + Set to 1 if the navigation successfully committed. + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Event recorded when there is an attempt to autoplay (ie. no user gesture). + It will be recorded regardless of the result of this attempt. + + + + Whether the element had an audio track when autoplay was attempted. + + + + + Whether the document has a high media engagement. + + + + + Whether the element was muted when autoplay was attempted. + + + + + Source of the autoplay attempt: 0 for attribute; 1 for play(). + + + + + Whether a user gesture was required per autoplay rules at the time of + attempt. By definition there is no user gesture on the stack when the + attempt is registered. + + + + + Reflects the current status of user gesture/activation. This is a bit + field with the following values: - 0b0001 if there is a user gesture on + the stack; - 0b0010 if there was a user gesture on the page (ie. was + activated); - 0b0100 if there was a user gesture propagated after a + navigation. + + + + + Whether the element had a video track when autoplay was attempted. + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Records the AudioContext autoplay information. + + + + A boolean indicating if start() was called for any source node associated + to the AudioContext. + + + + + Status of this AudioContext when the autoplay policy applies. It will + match the values from AudioContext::AutoplayStatus. + + + + + How the AudioContext was unlocked if it was. It will match the values from + AudioContext::AutoplayUnlockType unless the AudioContext was never + unlocked in which case it will be equal to -1. + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Event recorded when there is an attempt to unmute an media that was + autoplaying following the rules of autoplay muted. + + + + 0 means that the unmute failed because it happened without a user gesture. + 1 means that it succeeded because it had a user gesture. + + + + + Similar to "Source" in "Media.Autoplay.Attempt" with + the addition of a value for both sources being used: 0 for attribute; 1 + for play(); 2 for both attempted. + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Core metrics associated with a media playback through WebMediaPlayerImpl. + Reported at the time of WatchTimeRecorder destruction or render process + termination; whichever comes first. There will be multiple entries for a + given playback; one for every PlaybackProperties change as well as one for + foreground and background. Records may be aggregated based on PlayerID and + correlated with the Media.WebMediaPlayerState event. + + + + media::AudioCodec enum value. Can be kUnknownAudioCodec even when HasAudio + is true because we don't always know the codec. + + + + + media::AudioCodecProfile enum value. Can be AudioCodecProfile::kUnknown + even when HasAudio is true because we don't always know the codec profile. + + + + + Enumeration of audio decoder implementations, zero if none or unknown + (Cast, HLS, etc). See AudioDecoderType (media/base/decoder.h) for expected + values. + + + + + media::EncryptionMode enum value. Can be kUnencrypted if IsEME is false or + if the audio track is unencrypted. + + + + + Boolean value indicating whether the initial playback was initiated via + autoplay. Multilpe chunk records of the same player should have the same + value. Autoplay is defined as a playback starting before there was a user + activation on the page or without a user initiated same-domain navigation. + + + + + Integer count of the number of times a previous rebuffer succeeded and + playback continued. + + + + + Sum in milliseconds of all completed rebuffering events. Only reported if + a rebuffering completion occurred. + + + + + Duration in milliseconds, rounded to the most significant digit, of the + media being played. May be missing if the duration is unknown or infinite. + + + + + Boolean value indicating the presence of audio. + + + + + Boolean value indicating the presence of video. + + + + + Boolean value indicating if this event is for a background playback. + + + + + Boolean value indicating if this event is for an EME playback. + + + + + Boolean value indicating if this event is for an MSE playback. If false it + means this was a SRC playback. + + + + + Boolean value indicating if this event is for a muted playback. + + + + + Flag indicating whether the report comes from the top frame or some inner + frame. For privacy, metrics from inner frames are recorded with the top + frame's origin, so this flag helps separate top frame vs. embedded + playbacks. + + + + + media::PipelineStatus enum value. Always 0 if the playback succeeded; all + other values indicate the playback ended in an error. + + + + + Average number of milliseconds between rebuffering events. Only reported + if a rebuffering event occurred. Computed by dividing total watch time by + the number of rebuffering events. + + + + + Enum value indicating the type of MediaStream if the playback is from a + MediaStream, or kNonMediaStream otherwise. + + + + + ID which corresponds to a given WebMediaPlayerImpl instance. May be linked + with Media.WebMediaPlayerState events to understand playback more deeply. + + + + + Integer count of the number of times playback experienced rebuffering. + + + + + media::VideoCodec enum value. Can be kUnknownVideoCodec even when HasVideo + is true because we don't always know the codec. + + + + + media::VideoCodecProfile enum value. Can be VIDEO_CODEC_PROFILE_UNKNOWN + even when HasVideo is true because we don't always know the codec profile. + + + + + Enumeration of video decoder implementations, zero if none or unknown + (Cast, HLS, etc). See VideoDecoderType (media/base/decoder.h) for expected + values. + + + + + media::EncryptionMode enum value. Can be kUnencrypted if IsEME is false or + if the video track is unencrypted. + + + + + Integer count of the video frames decoded in this record. + + + + + Integer count of the video frames dropped in this record. Should not + exceed VideoFramesDecoded. + + + + + Integer value indicating the natural height of the playback. + + + + + Integer value indicating the natural width of the playback. + + + + + Watch time in milliseconds for this playback. See Media.WatchTime UMA + metrics. + + + + + Watch time on AC power in milliseconds for this playback. See + Media.WatchTime UMA metrics. + + + + + Watch time on battery power in milliseconds for this playback. See + Media.WatchTime UMA metrics. + + + + + Watch time for fullscreen in milliseconds for this playback. See + Media.WatchTime UMA metrics. Only reported for foreground playbacks. + + + + + Watch time for inline display in milliseconds for this playback. See + Media.WatchTime UMA metrics. Only reported for foreground playbacks. + + + + + Watch time for picture in picture display in milliseconds for this + playback. See Media.WatchTime UMA metrics. Only reported for foreground + playbacks. + + + + + Watch time with no controls in milliseconds for this playback. See + Media.WatchTime UMA metrics. Only reported for foreground playbacks. + + + + + Watch time with native controls in milliseconds for this playback. See + Media.WatchTime UMA metrics. Only reported for foreground playbacks. + + + + + + xhwang@chromium.org + media-dev@chromium.org + + Event recorded when an Encrypted Media Extensions (EME) API promise is + rejected. In most cases this indicates a failure. + + + + The EME API for which the promise is rejected. + + + + + + + + + + + + The key system associated with the current CDM. + + + + + + + + + + + + A CDM specific code providing more details about the cause of rejection. + + + + + + + + + + + + Whether hardware secure codecs are required for the current CDM. + + + + + + + + + + + + + xhwang@chromium.org + media-dev@chromium.org + + Event recorded when createMediaKeys() is called as part of Encrypted Media + Extensions (EME) API. + + + + Whether the frame is an ad frame. + + + + + + + + + + + + Whether the frame is Cross-Origin to the main frame. + + + + + + + + + + + + Whether the frame is the main frame. + + + + + + + + + + + + The key system associated with this call. + + + + + + + + + + + + + frs@chromium.org + media-dev@chromium.org + + Event recorded when the EME API GetStatusForPolicy promise is resolved. + + + + Whether the frame is an ad frame. This is not set if the frame is null. + + + + + + + + + + + + The key system associated with the current CDM. + + + + + + + + + + + + The minimum HDCP version requested for EME API GetStatusForPolicy. + + + + + + + + + + + + Whether hardware secure codecs are required for the current CDM. + + + + + + + + + + + + + xhwang@chromium.org + media-dev@chromium.org + + Event recorded when RequestMediaKeySystemAccess() is called as part of + Encrypted Media Extensions (EME) API. + + + + Whether the frame is an ad frame. + + + + + + + + + + + + Whether the frame is Cross-Origin to the main frame. + + + + + + + + + + + + Whether the frame is the main frame. + + + + + + + + + + + + The key system passed in requestMediaKeySystemAccess() call. + + + + + + + + + + + + Whether there are any "videoCapabilities". + + + + + Whether there are any "videoCapabilities" with empty robustness. + + + + + Whether there are any "videoCapabilities" with robustness being + "HW_SECURE_ALL". + + + + + + + + + + + + + beccahughes@chromium.org + media-dev@chromium.org + + The Media Engagement index stores the number of significant media playbacks + per origin and the number of visits. From that we calculate a Media + Engagement Score. + + To tweak the scoring function we are logging the total number of significant + media playbacks, the total number of visits, the calculated engagement score + and the new number of significant media playbacks that occurred this visit. + + + + Whether the Media Engagement Service considers the score to be high (we + are using a two threshold approach so there is one threshold to be + considered high and another one to lose that status to reduce jitter). + + + + + Deprecated 8/19 as part of https://crbug.com/998685 + + + Whether the IsHigh bit changed during the current session. + + + + + Deprecated 8/19 as part of https://crbug.com/998685 + + + Counts of IsHigh changing (from 0 to 1 or 1 to 0). + + + + + Deprecated 8/19 as part of https://crbug.com/998685 + + + Whether the origin was preloaded (from the chrome://component) as a high + engagement origin. + + + + + The calculated Media Engagement score for the current origin. The score is + calculated by dividing the number of significant media playbacks by the + number of visits. If the number of visits is below 5 then the score will + be zero. This score is taken from MediaEngagementService. + + + + + Deprecated 8/19 as part of https://crbug.com/998685 + + + The total number of significant media playbacks on this origin that came + from WebAudio / AudioContext. + + + + + Deprecated 8/19 as part of https://crbug.com/998685 + + + The number of significant media playbacks on this origin during this + session (a visit to an origin on the same tab). A playback is determined + significant if it meets certain criteria such as a video size of at least + 200x140px, is not muted, is playing, etc. + + + + + Deprecated 8/19 as part of https://crbug.com/998685 + + + The total number of significant media playbacks on this origin that came + from media elements. + + + + + Deprecated 8/19 as part of https://crbug.com/998685 + + + The number of seconds between significant media playback on the last visit + and significant media playback on the current visit. If there was no + previous visit or significant media playback this visit it will be 0. + + + + + The total number of significant media playbacks on this origin. + + + + + The number of unique audio/video players on a page that was audible (made + sound) during a visit. + + + + + Deprecated 8/19 as part of https://crbug.com/998685 + + + The delta from above but instead of a single visit, the total of all + deltas for all visits on this origin. + + + + + The number of unique audio/video players on a page that was audible (made + sound) and considered significant (played for at least 7 seconds) during a + visit. + + + + + Deprecated 8/19 as part of https://crbug.com/998685 + + + The delta from above but instead of a single visit, the total of all + deltas for all visits on this origin. + + + + + The total number of visits to this origin. + + + + + + beccahughes@chromium.org + media-dev@chromium.org + + The Media Engagement index stores the number of significant media playbacks + per origin and the number of audible players. From that we calculate a Media + Engagement Score. + + Media with a short playback length is ignored so we are logging any time the + player is ignored with the length in msec. This will allow us to identify + whether sites are being penalized or there is abuse and allow us to tweak + the length considered "short". + + + + + + beccahughes@chromium.org + media-dev@chromium.org + + Media Feeds are out of band feeds of media recommendations that are fetched + by the browser. This records when we discover a feed that has been placed in + a meta tag on a website. + + + + Whether the site has a media feed. + + + + + + steimel@chromium.org + media-dev@chromium.org + + Records when a user presses a button in the Global Media Controls. Records + no more than 100 actions per source per session. Records which button was + pressed (e.g. play, pause, next track, picture-in-picture). + + + + The action of the button that was pressed (e.g. play, pause, next track, + picture-in-picture). + + + + + + + Deprecated as of 2020/12. + + beccahughes@chromium.org + media-dev@chromium.org + + Kaleidoscope is a media recommendations feature in Chrome. This event is + recorded when a user selects a media recommendation and there is a + navigation to the new site from Kaleidoscope. + + + + Whether the navigation was from Kaleiodscope. + + + + + + liberato@chromium.org + + A record of some predicted value vs. an observation. If the prediction is + for a regression-style task (e.g., "predict a number" rather than + "predict an enum value"), then the predicted and observed values + are the numeric values, scaled by default to be in the integer range 0-100. + + The exact scaling used depends on the particular regression problem. Please + see the LearningTask structure for the task of interest to find out how it + maps values into the [0, 100] output range. + + A record is created for every prediction separately. + + For example, in the MediaCapabilities experiments, each playback generates a + record. The predicted / observed values are the ratio of dropped to decoded + frames, expressed as a percentage scaled to 0-100. + + + + The learning task to which this record applies. This is a persistent hash + of the |name| field in the LearningTask. Presumably, you'll want to + include only records of a particular task when analyzing results. + + + + + Observed value for this sample, scaled into the range [0, 100]. The exact + scaling factor depends on the particular task. + + MediaCapabilities, for example, reports 100 * percentage_of_dropped_frames + in this field. + + + + + Predicted value for this sample, scaled into the range [0, 100]. The exact + scaling factor depends on the particular task. + + MediaCapabilities, for example, reports 100 * percentage_of_dropped_frames + in this field. + + + + + Number of training examples that were used to train this model. + + + + + Total weight of all examples that were used to train this model. + + + + + + steimel@chromium.org + media-dev@chromium.org + + Event recorded when a website tries to play audio but is muted by the sound + content setting. + + + + Enum value giving the reason the site was muted. Defined as + |SoundContentSettingObserver::MuteReason|. + + + + + + chcunningham@chromium.org + media-dev@chromium.org + + A record of decoding performance metrics from a video playback with the + given stream characteristics (profile, resolution, fps). Also includes what + Media Capabilities API would claim for such a stream as a means of assessing + the API's accuracy. + + + + Boolean signaling whether MediaCapabilities would classify streams with + these characteristics as power efficient prior to considering this latest + record. MediaCapabilities prediction is accurate when this value matches + RecordIsPowerEfficient. + + + + + Boolean signaling whether MediaCapabilities would classify streams with + these characteristics as smooth prior to considering this latest record. + MediaCapabilities prediction is accurate when this value matches + RecordIsSmooth. + + + + + Integer count of past video frames decoded for the given video type. + + + + + Integer count of past video frames dropped for the given video type. + + + + + Integer count of past video frames power efficient for the given video + type. + + + + + Boolean signaling whether MediaCapabilities would classify this isolated + playback record as power efficient. + + + + + Boolean signaling whether MediaCapabilities would classify this isolated + playback record as smooth. + + + + + Integer count of the video frames decoded in this record. + + + + + Integer count of the video frames dropped in this record. Should not + exceed VideoFramesDecoded. + + + + + Integer count of the video frames decoded via power efficient means in + this record. Should not exceed VideoFramesDecoded. + + + + + media::VideoCodecProfile enum value. Can be VIDEO_CODEC_PROFILE_UNKNOWN if + we don't know the video codec. + + + + + Name of the KeySystem used during for an encrypted (EME) playback. Will be + unset when EME is not used. + + + + + Boolean indicating whether content decryption module (CDM) was configured + to use hardware secure decoding. May be true or false for EME playbacks. + Will be unset for non-EME playbacks. + + + + + Integer representing video frames per second. This is the cadence of video + frames as described by stream timestamps multiplied by + HTMLMediaELement.playbackRate. + + + + + Flag indicating whether the record comes from the top frame or some inner + frame. For privacy, metrics from inner frames are recorded with the top + frame's origin, so this flag helps separate top frame vs. embedded + playbacks. + + + + + Integer representing height of video natural size. + + + + + Integer representing width of video natural size. + + + + + ID which corresponds to a given WebMediaPlayerImpl instance. May be linked + with Media.WebMediaPlayerState events to understand playback more deeply. + + + + + + + Deprecated 8/2017 in favor Media.BasicPlayback + + dalecurtis@chromium.org + + Watch time is defined as the amount of elapsed media time for audio+video + media aggregated per player instance. A minimum of 7 seconds of unmuted, + foreground media must be watched to start watch time monitoring. Watch time + is checked on a regular basis and reported upon one of the stop events + mentioned below or at player destruction if none occur prior. + + Any one of paused, hidden, or muted is sufficient to stop watch time metric + reports. Each of these has a hysteresis where if the state change is undone + within some time, the watch time will be counted as uninterrupted. + + Power events (on/off battery power) have a similar hysteresis, but unlike + the aforementioned properties, will not stop metric collection. + + Native controls events have a similar behavior than power events. + + Each seek event will result in a new watch time metric being started and the + old metric finalized as accurately as possible. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + hongchan@chromium.org + mjwilson@chromium.org + webaudio-dev@chromium.org + + Records the AudioContext audible time information. + + + + Audible time in milliseconds for this event. + + + + + Indicates whether the event is fired from main frame. + + + + + + dalecurtis@chromium.org + media-dev@chromium.org + + Final state of WebMediaPlayerImpl instance. Records only immutable playback + properties. Contains a PlaybackID which links to Media.BasicPlayback events. + + + + Encryption type of the audio stream such as whether audio is encrypted and + if so whether it has clear lead. + + + + + + + + + + + + media::container_names::MediaContainerName enum value. Only recorded for + !IsMSE src=URL playbacks, this is the container of the media being played + back; E.g., mp4, avi, mp3, etc. + + + + + media::PipelineStatus enum value. Always 0 if the playback succeeded; all + other values indicate the playback ended in an error. + + + + + Boolean value indicating if this event is for an EME playback. Note: EME + can be attached anytime during the lifecycle of a WebMediaPlayerImpl, but + once attached can't be removed. + + + + + Boolean value indicating whether the EME playback is using hardware secure + pipeline. For clear playback, this will always be false. + + + + + Boolean value indicating if this event is for an MSE playback. If false it + means this was a SRC playback. + + + + + Flag indicating whether the report comes from the top frame or some inner + frame. For privacy, metrics from inner frames are recorded with the top + frame's origin, so this flag helps separate top frame vs. embedded + playbacks. + + + + + For EME playback, this is the key system used. For clear playback, this + will always be the default value 0 (kUnknownKeySystemForUkm). + + + + + ID which corresponds to a given WebMediaPlayerImpl instance. May be linked + with Media.BasicPlayback events to understand a playback more deeply. + + + + + Type of media::Renderer used for the playback. In most cases we do not + support dynamically changing RendererType during one playback. + + + + + + + + + + + + Time in milliseconds from when WebMediaPlayerImpl starts loading until the + first video frame has been shown. + + + + + Time in milliseconds from when WebMediaPlayerImpl starts loading until + metadata is known. + + + + + Time in milliseconds from when WebMediaPlayerImpl starts loading until it + has buffered enough to start playback. + + + + + media::mojom::MediaURLScheme enum value. Only recorded for !IsMSE src=URL + playbacks, this is the scheme of that URL; E.g., http, https, filesystem, + etc. + + + + + Encryption type of the video stream such as whether video is encrypted and + if so whether it has clear lead. + + + + + + + + + + + + + rwkeane@chromium.org + openscreen-eng@google.com + + Records that the a resource has been loaded from the Media Router Component + Extension. + + + + A boolean signaling that the event has occurred; only records true values. + + + + + + muyaoxu@google.com + openscreen-eng@google.com + + Recorded whenever user starts a site-initiated mirroring session via Media + Router. + + + + Whether audio capture is allowed in the cast session. If allowed, audio + playback will happen on the receiver side. If not allowed, audio playback + will happen on the sender side. + + + + + + + + + + + + + takumif@chromium.org + openscreen-eng@google.com + + Recorded whenever user starts a tab mirroring session via Media Router. + + + + The audio playback state of the WebContents at the start of the tab + mirroring session. + + + + + + + + + + + + + erikchen@chromium.org + ssid@chromium.org + + Metrics associated with memory consumption, in MB. + + + + Measure of memory consumed by Array Buffer. + + + + + Measure of memory consumed by Oilpan. + + + + + Measure of memory consumed by live allocations made from Oilpan. + + + + + Measure of memory used due to CanvasResourceProvider's SkSurface. + + + + + Measure of memory consumed by GL command buffer. + + + + + Measure of memory consumed by Discardable memory service. + + + + + Measure of memory used by download service. + + + + + Measure of memory consumed by Key Value Store databases of extensions. + + + + + Measure of memory used by font platform and shape caches in renderer + process. + + + + + Measure of GPU memory used by Chrome. + + + + + Approximate measure of memory consumed by History service. + + + + + Indicates whether the tab is visible or not at the time of metric + collection. + + + + + Measure of memory consumed by java heap on Android. + + + + + Measure of memory consumed by unaccounted level databases. + + + + + Measure of memory allocated by malloc, that is not classified by other + metrics. + + + + + Measure of total memory used by objects allocated using malloc. + + + + + Deprecated as of 09/2021. + + + Measure of memory allocated by network sockets and caches. + + + + + Deprecated as of 09/2021. + + + Measure of memory allocated by all network requests. + + + + + The number of ad subframes that the associated renderer owns. + + + + + The number of arraybuffer contents that the associated renderer owns. + + + + + Deprecated as of 01/2020. + + + The number of function calls in a window detached by closing/removal. + + + + + Deprecated as of 01/2020. + + + The number of function calls in a window detached by closing/removal, that + happened at least 10 seconds after detaching. + + + + + Deprecated as of 01/2020. + + + The number of function calls in a window detached by closing/removal, that + happened at least 1 minute after detaching. + + + + + Deprecated as of 01/2020. + + + The number of function calls in a window detached by navigating away. + + + + + Deprecated as of 01/2020. + + + The number of function calls in a window detached by navigating away, that + happened at least 10 seconds after detaching. + + + + + Deprecated as of 01/2020. + + + The number of function calls in a window detached by navigating away, that + happened at least 1 minute after detaching. + + + + + Deprecated as of 01/2020. + + + The number of function calls in a window detached by another reason. + + + + + Deprecated as of 01/2020. + + + The number of function calls in a window detached by another reason, that + happened at least 10 seconds after detaching. + + + + + Deprecated as of 01/2020. + + + The number of function calls in a window detached by another reason, that + happened at least 1 minute after detaching. + + + + + The number of detached ScriptState that the associated renderer owns. + + + + + The number of documents that the associated renderer owns. + + + + + The number of extensions that are served from the associated renderer + process. + + + + + The number of frames that the associated renderer owns. + + + + + The number of layout objects that the associated renderer owns. + + + + + The number of mojo handles stored in HandleTable. + + + + + The number of nodes that the associated renderer owns. + + + + + The number of web media players in the associated renderer. + + + + + Measure of memory used due to URL indexing and autocomplete suggestions. + + + + + Measure of memory allocated by PartitionAlloc allocator. + + + + + Measure of total memory used by objects allocated using PartitionAlloc. + + + + + Measure of memory used by Array Buffer partition in PartitionAlloc. + + + + + Measure of memory used by Buffer partition in PartitionAlloc. + + + + + Measure of memory used by Fast Malloc partition in PartitionAlloc. + + + + + Measure of memory used by Layout partition in PartitionAlloc. + + + + + Measure of total private memory consumed by process. + + + + + + + + + + + + + Measure of private swap memory consumed by a process. Available on Linux + and Android. + + + + + Type of process (e.g. browser, renderer, GPU --- see + services/resource_coordinator/public/mojom/memory_instrumentation/memory_instrumentation.mojom) + of associated metrics. + + + + + + + + + + + + Size of process' working set. + + + + + Measure of total shared memory consumed by process. + + + + + Measure of memory used due to web storage APIs in browser process. + + + + + Measure of memory used by in-memory blob file API in browser process. + + + + + Measure of memory used due to IndexedDB API in browser process. + + + + + Measure of memory used due to Local Storage API in browser process. + + + + + Measure of memory used due to Session Storage API in browser process. + + + + + Measure of memory used by Skia. + + + + + Measure of memory used by Skia Glyph Cache. + + + + + Measure of memory used by Skia Resource Cache. + + + + + Measure of memory used by all sqlite databases. + + + + + Measure of memory used by Sync storage. + + + + + Approximate measure of memory used by Tab restore service. + + + + + The time in seconds since the Tab navigated. Only emitted for tabs that + are not sharing a process. + + + + + The time in seconds since the Tab changed visibility. Only emitted for + tabs that are not sharing a process. + + + + + Measure of total private memory consumed by all processes. + + + + + Measure of total shared memory consumed by all processes. + + + + + Measure of memory used by Android UI bitmaps. + + + + + Process uptime. + + + + + Measure of memory consumed by V8. + + + + + + + + + + + + + Measure of memory consumed by live objects in V8. + + + + + + + + + + + + + Measure of memory consumed by the main isolate of V8. + + + + + Measure of memory consumed by live objects in the main isolate of V8. + + + + + Measure of memory consumed by global handles in V8. + + + + + Measure of memory consumed by used global handles in V8. + + + + + Measure of memory consumed by the main heap of V8. + + + + + Measure of memory consumed by live objects in the main heap of V8. + + + + + Measure of memory consumed by the code large object space of the main heap + of V8. + + + + + Measure of memory consumed by live objects in the code large object space + of the main heap of V8. + + + + + Measure of memory consumed by the code space of the main heap of V8. + + + + + Measure of memory consumed by live objects in the code space of the main + heap of V8. + + + + + Measure of memory consumed by the large object space of the main heap of + V8. + + + + + Measure of memory consumed by live objects in the large object space of + the main heap of V8. + + + + + Measure of memory consumed by the map space of the main heap of V8. + + + + + Measure of memory consumed by live objects in the map space of the main + heap of V8. + + + + + Measure of memory consumed by the new large object space of the main heap + of V8. + + + + + Measure of memory consumed by live objects in the new large object space + of the main heap of V8. + + + + + Measure of memory consumed by the new space of the main heap of V8. + + + + + Measure of memory consumed by live objects in the new space of the main + heap of V8. + + + + + Measure of memory consumed by the old space of the main heap of V8. + + + + + Measure of memory consumed by live objects in the old space of the main + heap of V8. + + + + + Measure of memory consumed by the read-only space of the main heap of V8. + + + + + Measure of memory consumed by live objects in the read-only space of the + main heap of V8. + + + + + Measure of memory allocated by malloc in the main isolate of V8. + + + + + Measure of memory consumed by worker isolates of V8. + + + + + Measure of memory consumed by live objects in worker isolates of V8. + + + + + Measure of memory consumed by all resources in Blink Web Cache. + + + + + Measure of memory consumed by CSS Stylesheet resources in Blink Web Cache. + + + + + Measure of memory consumed by data URLs of Image resources in Blink Web + Cache. + + + + + Measure of memory consumed by Font resources in Blink Web Cache. + + + + + Measure of memory consumed by Image resources in Blink Web Cache. + + + + + Measure of memory consumed by other resources in Blink Web Cache. + + + + + Measure of memory consumed by Script resources in Blink Web Cache. + + + + + Measure of memory consumed by V8 code cache held by Script resources in + Blink Web Cache. + + + + + Measure of memory consumed by XSL Stylesheet resources in Blink Web Cache. + + + + + Measure of total memory used by media/webmediaplayer/audio. + + + + + Measure of total memory used by media/webmediaplayer/data_source. + + + + + Measure of total memory used by media/webmediaplayer/demuxer. + + + + + Measure of total memory used by media/webmediaplayer/video. + + + + + + tommckee@chromium.org + + Measure of memory used by the processes that host an instance of a tab. + Intended as a high-level metric for analyzing effective memory use of + individual sites. + + + + Measure of private memory, in MB, consumed by the render process dedicated + to hosting the main frame. Undefined if the main frame is hosted by a + render process used by other tabs. If this is undefined, TabPMF will be + undefined. + + + + + + + + + + + + Number of render processes that were blocked from contributing to + SubFrameProcessPMF.Total. A process can have its contribution blocked if + the process has responsibilities outside the scope of the relevant tab. If + this is non-zero, TabPMF will be undefined. + + + + + + + + + + + + Number of render processes that contributed to SubFrameProcessPMF.Total. + + + + + + + + + + + + Measure of total private memory, in MB, consumed by the render processes + dedicated to hosting sub-frames of the tab. Note that, if a render process + hosts frames of other tabs, it isn't considered to be 'dedicated' and so + it doesn't contribute to this total. + + + + + + + + + + + + Measure of private memory, in MB, consumed by all render processes + dedicated to hosting some part of a tab. Undefined if there are processes + responsible for hosting parts of this tab while hosting parts of other + tabs. + + + + + + + + + + + + + carlosil@chromium.org + + Status and Network error or HTTP response code for a resource request that + was autoupgraded to HTTPS as part of the mixed content autoupgrade + experiment. + + + + The HTTP response or network error code for an autoupgraded request. + + + + + An enum with 0 representing started, 1 failed, and 2 response received. + + + + + + kumagi@google.com + gaul@google.com + + + Whether the page allows the user to zoom in/out. + + + + + Deprecated 12/2022 in favor of MobileFriendliness.TappedBadTargets. + + + Percentage of tap targets whose center position is within another tap + target (expanded by a margin). The detail of the algorithm is + go/bad-tap-target-ukm. If evaluation time budget exceeded, this will be is + -2. + + + + + Percentage of small font text area in total text area. + + + + + Percentage of pixels of text and images horizontally outside the viewport, + relative to the frame width. + + + + + Whether the width of the viewport specified as device-width or not. + + + + + Specified hardcoded viewport width in CSS pixels. + + + + + Specified initial viewport scaling multiplied by 10. 1 means 0.1, 100 + means 10. [1-100]. + + + + + + kumagi@google.com + gaul@google.com + + + The distance from the center position of tapped target to display's edge + is less than 5mm. + + + + + Whether the page is manually 100%+ zoomed when tapped. + + + + + Whether the center of the tapped tap target is close less than 5mm to + other tap target's edge. + + + + + Whether the tapped tap target is small as both width and height is less + than 7mm. + + + + + Whether the page is manually 20%+ zoomed when tapped. + + + + + + sayman@chromium.org + + User pressed 'Share' in the app menu. The intent most recently used to share + was invoked directly. See also MobileMenu.Share. + + + + A boolean signaling that the event has occurred; only records true values. + + + + + + frechette@chromium.org + + User pressed 'Find in page' in the app menu. + + + + A boolean signaling that the event has occurred (typically only records + true values). + + + + + + sayman@chromium.org + + User pressed 'Share' in the app menu. A picker was shown. See also + MobileMenu.DirectShare. + + + + A boolean signaling that the event has occurred; only records true values. + + + + + + meacer@google.com + chrome-trusty-transport@google.com + + Recorded upon main frame navigations to hostnames that contain characters + that are treated differently between IDNA 2003 and IDNA 2008, aka deviation + characters. Ignores reload navigations. + + + + The deviation character in the URLs eTLD+1. Chrome's URL parsing code + normalizes deviation characters so the characters don't appear in the + recorded URL. This is recorded to make the deviation character + identification simpler. + + + + + + miketaylr@chromium.org + potassium-katabolism@google.com + + Recorded when the navigation receives a response from the networking layer. + Only recorded for main frames (i.e. top-level frames). + + + + A boolean value representing whether the navigation included the + processing of an ACCEPT_CH ALPS frame. + + + + + The duration (in milliseconds) for how long it took from the time the + navigation loader is created to the time the navigation loader receives + the response from the networking layer. + + + + + + ryansturm@chromium.org + + Metrics that describe an anchor element's data. This event is emitted at + most 10 times per page load, once for each of the top n URLs on a page, and + the order of the events is randomized. If there is no nth anchor element, no + value is returned. + + + + The index of the clicked-on anchor element in the tracked list. + + + + + The anchor element's href URL path is hashed, then bucketed using 10 + different buckets. The bucket ({0, 1, ..., 9}) the hash falls into is + logged in this field. + + + + + 1 if the anchor element contains an image. + + + + + The bucketed font size of the anchor element, according to its computed + style. 1 corresponds to a pixel font size in [0, 10), 2 corresponds to a + fonts size in [10, 18) and 3 is logged when the font size is 18 pixels or + larger. + + + + + 1 if the anchor element has an immediate text sibling, 0 otherwise. + + + + + 1 if the anchor's computed style's font-weight is greater than 500, 0 + otherwise. + + + + + 1 if the anchor element is in an iframe. + + + + + 1 if the anchor element's target URL and the document's source URL only + differ by one number, and the target URL increments that number in the + source URL by 1. + + + + + The time in ms between navigation start and the moment this entry was + logged. Exponentially bucketed using GetExponentialBucketMin a value of + 1.3. + + + + + The number of slashes in the anchor element's href URL path. Truncated at + 5. + + + + + The number of characters in the anchor element's href URL path. Buckets of + size 10, truncated at 100. + + + + + The percent of the total document area that this anchor element's + clickable area occupies. + + + + + How far down the document the top of the anchor element is, expressed as a + ratio with the total document height. + + + + + 1 if the anchor element's target URL and the document's source URL are the + same origin. + + + + + + ryansturm@chromium.org + + Sent on an in-page link click. + + + + An integer (0-indexed), corresponding to the index of that anchor element + in the list of top ten anchor elements on that page, sorted by their + navigation scores. If an anchor element is clicked that is not in + NavigationPredictorAnchorElementMetrics, -1 is returned. + + + + + 1 if the href of the anchor element at the time the click is handled is + the same as the href when the element was created. 0 if the href changed. + + + + + The time in milliseconds between the moment an entry for the anchor + element was logged to UKM and the moment the user clicked on it. + Exponentially bucketed, 1.3 factor. + + + + + + ryansturm@chromium.org + + Metrics that describe aggregate information about the links within a page. + Some anchor elements present on a page may not be represented in these + metrics, if they are outside the viewport or if their placement in the page + is after the 40th anchor element. This event is emitted at most once per + page load. Unless otherwise specified, each of the aggregate metrics is + bucketted with exponential buckets of size 1.3. + + + + The median vertical link location in the viewport, as a ratio of the + distance from the top of the link to the visible top of the page. + Bucketted with a linear bucket size of 10. + + + + + The total number of links in the page that are images. + + + + + The total number of links in the page in any iframe. + + + + + The total number of links in the page that point to the same origin as the + current page's origin. + + + + + The total number of links within a page. + + + + + The total number of links on the page, where each link only differs from + the current page's URL by a number, and that number is incremented by 1 in + the link. + + + + + The total clickable space in the entire page, expressed as a ratio of the + visible clickable region to the entire viewport region. + + + + + The height of the viewport, in pixels. + + + + + The width of the viewport, in pixels. + + + + + + ryansturm@chromium.org + domenic@chromium.org + isaboori@google.com + + This event records required data to assess and fine-tune the preloading + on-hover and on pointer down heuristics, and is submitted once per mouse + over, mouse out, mouse down and mouse up events for randomly selected anchor + elements. + + + + Duration that the user was hovering over the anchor element and it did not + result in a navigation to that link. Exponentially bucketed using + GetExponentialBucketMin with a spacing of 1.3. + + + + + Duration that the user was hovering over the anchor element and it + resulted in a navigation to that link. Exponentially bucketed using + GetExponentialBucketMin with a spacing of 1.3. + + + + + Time since the user pressed the left/middle mouse button over the anchor + element and that did not result in a navigation to that link. + Exponentially bucketed using GetExponentialBucketMin with a spacing of + 1.3. + + + + + Time since the user presses the left/middle mouse button over the anchor + element and that resulted in a navigation to that link. Exponentially + bucketed using GetExponentialBucketMin with a spacing of 1.3. + + + + + + + Removed in M91. + + robertogden@chromium.org + tbansal@chromium.org + + Internal feature metrics for a feature that decides whether to start a spare + renderer on pages where Chrome heuristically determines that a cross-origin + page load is likely to occur based on the anchor elements on the page being + cross-origin and/or whether the current page is a search engine result page. + + + + An int in the range [0, 100] to represent a percentage of the ratio of the + links on a page that are cross-origin to the source document. Recorded + when there are 1 or more links on a page. + + + + + A bool that is set if a spare renderer was started. Also set on + counter-factual arms when the same criteria were met. + + + + + A bitmask, recorded on every page when the feature flag is enabled. 0b0001 + - Set if the feature is in a cooldown period following the last renderer + warmup. 0b0010 - Set if the browser already had a spare renderer. 0b0100 - + Set if the device memory is below the experiment threshold. + + + + + A bool that is set if the page is a search result page for the browser's + default search engine + + + + + + ryansturm@chromium.org + isaboori@google.com + + Metrics that describe user interaction with an anchor element. This event is + emitted once per randomly selected anchor elements. + + + + The index of the anchor element in NavigationPredictor's |top_urls_|. + + + + + 1 if anchor element is in viewport, otherwise 0. + + + + + 1 if the pointer is hovering over the anchor element, otherwise 0. + + + + + Maximum time between the moment the anchor element entered the viewport + and the moment it left the viewport in milliseconds. Exponentially + bucketed using GetExponentialBucketMin a value of 1.3. + + + + + Maximum dwelltime of pointer hovering over the anchor element in + milliseconds. Exponentially bucketed using GetExponentialBucketMin a value + of 1.3. + + + + + How many times the pointer was hovering over the anchor element. + Exponentially bucketed using GetExponentialBucketMin a value of 1.3. + + + + + + ryansturm@chromium.org + chrome-brapp-loading@google.com + + Information recorded about a navigation throttle when a navigation is + deferred at any stage of the navigation. Only recorded for main frame + navigations that were deferred and later resumed. + + + + The duration from the start of the navigation deferral until the throttle + resumes the navigation recorded in milliseconds. + + + + + An enum representing each event that can cause deferral method + (WillFailRequest, WillProcessResponse, WillRedirectRequest, + WillStartRequest). See NavigationThrottleRunner::Event for enum details. + + + + + A (MD5) hash of the logging name string which represents a unique + navigation throttle class (subclass of NavigationThrottle). See + NavigationThrottle::GetNameForLogging(). + + + + + + nhiroki@chromium.org + chrome-loading@google.com + + Metrics associated with main frame navigation. + + + + Deprecated 09/2021 + + nhiroki@chromium.org + chrome-loading@google.com + + The time relative to navigation start that the headers of the 103 Early + Hints response are received in reply to the final HTTP request for the + main resource of a main frame navigation. + + + + + Deprecated 09/2021 + + nhiroki@chromium.org + chrome-loading@google.com + + The time relative to navigation start that the headers of the 103 Early + Hints response are received in reply to the first HTTP request for the + main resource of a main frame navigation. + + + + + The time relative to navigation start that a callback for the navigation + loader is last invoked for the main resource of a main frame navigation. + + + + + The time relative to navigation start that the final HTTP request is sent + for the main resource of a main frame navigation. + + + + + The time relative to navigation start that the headers of the final HTTP + response are received for the main resource of a main frame navigation. + + + + + The time relative to navigation start that a callback for the navigation + loader is first invoked for the main resource of a main frame navigation. + + + + + The time relative to navigation start that the first HTTP request is sent + for the main resource of a main frame navigation. + + + + + The time relative to navigation start that the headers of the first HTTP + response are received for the main resource of a main frame navigation. + + + + + The time relative to navigation start that navigation commit message for a + main frame navigation is sent to a renderer process. + + + + + + + Deprecated as of 2/2023. + + davidben@chromium.org + + Recorded when a resource is loaded using TLS 1.0 or TLS 1.1. + + + + Boolean value representing whether the request is for an ad resource. Only + set if IsSubresource is true. + + + + + Boolean value representing whether the request is in the main frame or not + (if false, the request is from a subframe). + + + + + Boolean value representing whether the request is for a subresource. If + false, then the request was a main frame page load. + + + + + + + Deprecated in Jan 2023 in favor of Network.CacheTransparency2. + + nidhijaju@chromium.org + ricea@chromium.org + + Metrics for Cache Transparency which aims to allow a list of pervasive + payloads to be specified and cached in a single-keyed cache to improve + loading performance. Recorded for each navigation and subresource load. + + + + Records whether a requested resource's URL matched with any of the URLs in + the Cache Transparency Pervasive Payloads List. + + + + + + + + + + + + Records the total bytes fetched by the network. + + + + + + nidhijaju@chromium.org + ricea@chromium.org + + Metrics for Cache Transparency which aims to allow a list of pervasive + payloads to be specified and cached in a single-keyed cache to improve + loading performance. Recorded for each navigation and subresource load. + + + + Records whether a requested resource's URL matched with any of the URLs in + the Cache Transparency Pervasive Payloads List. + + + + + + + + + + + + Records the number of bytes fetched by the network for pervasive payloads + on a page. + + + + + Records the total bytes fetched by the network. + + + + + + sophiechang@chromium.org + tiborg@chromium.org + + Metrics related to a History Clusters module shown on the New Tab Page. + Recorded for each History Clusters module shown on a 1P New Tab Page load, + which can be multiple for a page load. + + + + Cluster is of a boosted category. + + + + + Whether the user engaged with the module. + + + + + The layout type that was shown to the user for this module. + + + + + Minutes since the shown cluster's most recent visit, exponentially + bucketed using GetExponentialBucketMin with a spacing of 1.3. + + + + + Number of abandoned carts associated with the cluster. + + + + + Number of total visits in the same cluster including ones that are not + necessarily shown in the module. + + + + + Number of unique hosts represented in the cluster. + + + + + Number of visits with an image to show. + + + + + + tbansal@chromium.org + + Metrics related to NoStatePrefetch that are recorded using the same UKM IDs + as PageLoad. + + + + Final status of the nostate prefetch if one was recently attempted for + either the committed URL of this navigation or for any URL in the redirect + chain for the main frame resource for this navigation. page. Recorded as + enum PrerenderFinalStatus in //tools/metrics/histograms/enums.xml. + + + + + Triggering origin of the nostate prefetch if one was recently attempted + for either the committed URL of this navigation or for any URL in the + redirect chain for the main frame resource for this navigation. Recorded + as enum PrerenderOrigin in //tools/metrics/histograms/enums.xml. + + + + + Records the time (in milliseconds) from the start of the nostate prefetch + to the time of commit of this navigation. Metric is recorded down to the + nearest power of 2. Recorded only if a nostate prefetch was recently + attempted for either the committed URL of this navigation or for any URL + in the redirect chain for the main frame resource for this navigation. + + + + + + peter@chromium.org + + A notification event corresponds with the entire lifespan of a single + notification, and will be logged to UKM when the notification is deleted + from the notification database. + + + + Enum for how the notification was closed. {user, developer, unknown} + + + + + Boolean value representing whether a tag is present and a previously shown + notification has been replaced. For UKM logging, we treat a replacement + notification as a new notification. + + + + + Boolean value indicating whether the user accessed the Chrome provided + settings from the notification. + + + + + Boolean value representing if a badge URL was included. + + + + + Boolean value representing if an icon URL was included. + + + + + Boolean value representing if an image URL was included. + + + + + Boolean value representing whether default notification indicators (sound, + vibration, light) should be played again if the notification is replacing + an older notification. + + + + + Boolean value representing if a tag is present. + + + + + Boolean value representing whether default notification indicators (sound, + vibration, light) should be suppressed. + + + + + Number of clicks on developer provided action buttons. + + + + + Number of developer specified actions that can be taken. + + + + + Number of clicks, excluding action buttons. I.e. clicks on the + notification itself. + + + + + Boolean value representing whether the notification should remain onscreen + indefinitely, rather than being auto-minimized to the notification center + (if allowed by platform). + + + + + The length of time, in ms, between when the notification was triggered and + when it was closed. + + + + + + + + + + + + Time, in ms, between when the notification is shown and the first click. + + + + + Time, in ms, between when the notification is shown and the last click. + + + + + + + Removed M100. No longer used. + + curranmax@chromium.org + + Data collected by the OfflineMeasurementsBackgroundTask. At a regular + interval the background task checks the state of the system including how + the user is interacting with the system and whether the system is online or + offline. The data for each run of the background task is persisted to prefs. + Upon a successful navigation in Chrome, all data in prefs are logged to UKM + and then cleared. This means that the first page load of a session will have + a burst of events being recorded, but subsequent page loads will likely have + no events. The background task is scheduled when Chrome opens, and it will + continue to run even if Chrome is not running. + + + + The time, in milliseconds, since the last background task ran. This value + is bucketed using ukm::GetExponentialBucketMinForUserTiming. + + + + + Whether airplane mode was enabled when the background task ran. + + + + + Whether the device was roaming when the background task ran. This field is + only set if we can determine whether the network was roaming or not. This + means in cases where the HTTP probe was cancelled or we ecountered an + error while getting whether the network is roaming or not that this field + will be null. + + + + + The local hour when the background task ran. In the range of 0 to 23 + inclusive. + + + + + The result of the HTTP probe when the background task ran. + + + + + How the user is interacting with the device when the background task ran. + + + + + + + Deprecated 03/2019 + + petewil@chromium.org + + + Metrics that measure which URLs the user is requesting offline page copies + of, and whether they were requested from the foreground or background UI. + The value is 1 if requested from the foreground, 0 from background. + + + + + + nyquist@chromium.org + ssid@chromium.org + + User pressed 'Share' while viewing edit URL suggestions which shares the + current URL. + + + + A boolean signaling that the event has occurred; only records true values. + + + + + + meacer@chromium.org + + Recorded when a form is submitted on an HTTPS page. Used to understand any + regression introduced by updated omnibox security indicators. + + + + Placeholder metric, always true. + + + + + + sophiechang@chromium.org + + Optimization guide metrics associated with a page load. It is recorded when + the optimization guide was consulted in making a decision for the page load. + See //components/optimization_guide/. + + + + Obsolete as of 04/2020. + + + The timestamp, in seconds from epoch, that the server generated the hint + for the optimization applied on the page load. + + + + + Obsolete as of 04/2020. + + + The |optimization_guide::proto::HintSource| for the optimization that was + applied on the page load. + + + + + An enum value representing the status of a fetch attempt for the page load + and what it contains (i.e. hosts or URLs). Captured at the start of the + navigation. + + + + + The duration (in milliseconds) for how long it took from the request to go + out to when it was usable on the client. Only recorded if a fetch was + initiated for the navigation. Will be recorded as INT64_MAX if the request + did not complete successfully. + + + + + Obsolete as of 04/2020. + + + An enum value representing whether Chrome had a hint cached for the + navigation or had attempted to fetch a hint from the remote Optimization + Guide Service in the last 7 days. The enum is defined in + |optimization_guide::NavigationHostCoveredStatus|. + + + + + Obsolete as of 04/2021. + + + The score output after evaluating the painful page load model. If + populated, this is 100x the fractional value output by the model + evaluation. This will be a value between 0 and 100. + + + + + Obsolete as of 04/2021. + + + The server-generated version of the painful page load model that was + evaluated for the page load. + + + + + Obsolete as of 04/2021. + + + The |net::EffectiveConnectionType| at the time a prediction was requested. + Recorded once per page load. + + + + + Obsolete as of 04/2021. + + + Whether the current navigatation is the same origin as the previous one at + the time a prediction was requested. Recorded once per page load. + + + + + Obsolete as of 04/2021. + + + The average navigation to first contentful paint for the current session + at the time a prediction was requested. Recorded once per page load. + + + + + Obsolete as of 04/2021. + + + The standard deviation of navigation to first contentful paint for page + loads in the current session at the time a prediction was requested. + Recorded once per page load. + + + + + Obsolete as of 04/2021. + + + The |ui::PageTransition| of the current navigation at the time a + prediction was requested. Recorded once per page load. + + + + + Obsolete as of 04/2021. + + + The navigation to to first contentful paint for the previous page load at + the time a prediction was requested. Recorded once per page load. + + + + + Obsolete as of 04/2021. + + + The site engagement score of the host of the current navigation at the + time a prediction was requested. Recorded once per page load. + + + + + A bitmask of the optimization targets that were registered at the start of + the page load where each flipped bit corresponds to its int value in + |optimization_guide::proto::OptimizationTarget|. + + + + + A bitmask of the optimization types that were registered at the start of + the page load where each flipped bit corresponds to its int value in + |optimization_guide::proto::OptimizationTarget|. + + + + + + + Removed 8/2021. + + sophiechang@chromium.org + mcrouse@chromium.org + + Metrics associated with an autotuning event initiated by the Optimization + Guide. + + + + The |optimization_guide::proto::OptimizationType| that is being tuned. + + + + + The version of the tuning group for the optimization type that was served. + + + + + + + Removed in 10/2022. + + chrome-intelligence-core@google.com + mcrouse@chromium.org + + Metrics on the content annotations of the page, one record per page load + commit and has an annotation calculated on it. The metrics are recorded in a + RAPPOR-style with low-entropy so only aggregate analysis can be performed. + + + + Records a low entropy respresentation of the visibility score output by a + content annotations model. The low entropy value is calculated using a + RAPPOR-style calculation to enable analysis only on aggregated results. + The raw score is between 0 and 1, scaled to between 0 and 100. The score + is then placed into one of 16 linearly spaced buckets by dividing the + score by the bucket size and taking the floor. The resulting bucket value + has noise added with a probability of .5 where the noise is randomly + applied to each individual bit. + + + + + + chrome-intelligence-core@google.com + mcrouse@chromium.org + + Metrics on the content annotations of the page, one record per page load + commit and has an annotation calculated on it. The metrics are recorded in a + RAPPOR-style with low-entropy so only aggregate analysis can be performed. + + + + Records a low entropy respresentation of the visibility score output by a + content annotations model. The low entropy value is calculated using a + RAPPOR-style calculation to enable analysis only on aggregated results. + The raw score is between 0 and 1, scaled to between 0 and 100. The score + is then placed into one of 16 linearly spaced buckets by dividing the + score by the bucket size and taking the floor. The resulting bucket value + has noise added with a probability of .5 where the noise is randomly + applied to each individual bit. + + + + + + uthakore@chromium.org + invernizzi@chromium.org + + Metrics that describe the domain of pages that successfully commit. One + event is generated per page load that commits. Currently associated with + LocalNetworkRequests UKM metric collection. + + + + An enum value representing the type of domain of the loaded page. The enum + is defined in |LocalNetworkRequestsPageLoadMetricsObserver|. Possible + values are 0 for unknown (should never be logged), 1 for pages with public + domains, 2 for pages with private domains (IP addresses that are part of a + reserved IP space not including localhost), or 4 for localhost. + + + + + + sullivan@chromium.org + + Total time in foreground in milliseconds, recorded each time the page is + backgrounded. May be recorded multiple times for a single page visit. + + + + Total time in foreground in milliseconds, recorded each time the page is + backgrounded. + + + + + + + + + + + + + The number of Input Events, including click, tap, key press, cancellable + touchstart, or pointer down followed by apointer up. This metric gets + recorded each time the page is backgrounded. + + + + + + + + + + + + + + + + + sum(max(Input Delay - 50, 0)), recorded each time the page is + backgrounded. The Input Delay refers to the duration between the hardware + timestamp and the start of event processing on the main thread for the + meaningful input. In ms. + + + + + + + + + + + + + + + + + sum(Input Delay), recorded each time the page is backgrounded. The Input + Delay refers to the duration between the hardware timestamp and the start + of event processing on the main thread for the meaningful input. In ms. + + + + + + + + + + + + + + + + + + dullweber@chromium.org + chrome-privacy-core@google.com + + Recorded when an action on the Page Info Bubble (aka Origin Info Bubble or + WebsiteSettings Bubble) is taken. May be recorded multiple times for a + single page visit. + + + + Records an enum value representing which action on the Page Info Bubble + was taken. + + + + + + + + + + + + + + sullivan@chromium.org + chrome-metrics-team@google.com + + Core metrics associated with web page loads. + + + + Amount of CPU wall time over the duration of a page load, while the page + is in the foreground. Measured in milliseconds. + + + + + The day of the week when the page load was initiated. The time is measured + in the local time zone according to the system clock. Only collected for + page loads that start while on foreground. + + + + + Measures the time in milliseconds from navigation timing's navigation + start to the time the DOMContentLoaded event is fired, for main frame + documents. + + + + + + + + + + + + Measures the time in milliseconds from navigation timing's navigation + start to the time the load event is fired, for main frame documents. + + + + + + + + + + + + The duration since the last visit to this URL in seconds, if the user has + visited the URL before. Recorded as -1 if the user has not visited the URL + before, or if the History service is unavailable or slow to respond. Any + duration that exceeds 30 days will be recorded as 30 days, so in practice, + if this duration indicates 30 days, it can be anything from 30 to the + maximum duration that local history is stored. + + + + + Measures the time in milliseconds from when the OS level input event + occurred which triggered a navigation, until the navigation was started. + Only set if the code can trace back to the original input event. Some + known cases where it is missing: crbug.com/889223 crbug.com/893162 + crbug.com/897837 crbug.com/897840 + + + + + Measures the cumulative layout shift (bit.ly/lsm-explainer) that has + occurred on the page (including all subframes) until the first time the + page moves from the foreground to the background. This metric's integral + value is 100x the fractional cumulative layout shift score described in + the explainer. Stable since M98. Log of major changes: + http://bit.ly/chrome-speed-metrics-changelog. This metric is trying to + record the layout shift values which are not able to be recorded in + LayoutInstability.CumulativeShiftScore for some reasons. + + + + + + + + + + + + + + + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a session window until the first time the page moves from + the foreground to the background. The gap between two consecutive shifts + in a window is not bigger than 1000ms and the maximum window size is + 5000ms. This metric's integral value is 100x the fractional cumulative + layout shift score described in the explainer. This metric is trying to + record the layout shift values which are not able to be recorded in + LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms + for some reasons. + + + + + + + + + + + + True if this navigation was initiated by user input. For renderer + navigations, only true if the code can trace back to the original input + event. Some known cases where it is missing: crbug.com/889223 + crbug.com/897837 crbug.com/897840 + + + + + Removed 2/2020. Do not use Time to Interactive as a RUM metric. + + + Measures Time to Interactive, a metric based on main thread and network + heuristics to approximate the point in time when the page feels + interactive to the user. See https://goo.gl/TFw6xz for detailed + explanation. This histogram uses First Meaningful Paint as the lower bound + for quiescent windows. The unit of time is ms. + + + + + Renamed in 11/2021, use PageVisitFinalStatus instead. + + + Determines the PageLoadType for this page load. That is, records whether + the page was never foregrounded, was foregrounded but did not reach FCP, + or did reach FCP. The metric is recorded at the end of each page load. As + usual with PageLoad metrics, we consider app backgrounding on Android to + be the end of page load as well as the app could be evicted by Android + anytime after that happens. + + + + + Removed on 11/2022 + + + Measures the time in milliseconds from navigation timing's navigation + start to the first meaningful paint (http://bit.ly/ttfmp-doc), for main + frame documents. + + + + + + + + + + + + Deprecated 7/2019, replaced by + PaintTiming.NavigationToLargestContentfulPaint.MainFrame. + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the largest content (text or + image) within viewport. See http://bit.ly/fcp_plus_plus for more details. + + + + + Deprecated 7/2019, replaced by + PaintTiming.NavigationToLargestContentfulPaint + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the largest content (text or + image) within viewport. Compared with NavigationToLargestContentPaint, + this is the aggregate results from all frames, while + NavigationToLargestContentPaint is only for main frame. See + http://bit.ly/fcp_plus_plus for more details. + + + + + Removed on 01/2020 + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the largest image within + viewport after the image finishes loading. The value is recorded at the + end of each page load. See http://bit.ly/fcp_plus_plus for more details. + + + + + Deprecated 01/2019 + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the largest image within + viewport after the image finishes loading, before user input. See + http://bit.ly/fcp_plus_plus for more details. + + + + + Removed on 01/2020 + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the largest text within + viewport. The value is recorded at the end of each page load. See + http://bit.ly/fcp_plus_plus for more details. + + + + + Deprecated 01/2019 + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the largest text within + viewport, before user input. See http://bit.ly/fcp_plus_plus for more + details. + + + + + Deprecated on March 2019. This metric as a page load metric hasn't shown a + good correlation with user experience. + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the last image within + viewport after the image finishes loading. The value is recorded at the + end of each page load. See http://bit.ly/fcp_plus_plus for more details. + + + + + Deprecated on March 2019. This metric as a page load metric hasn't shown a + good correlation with user experience. + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the last Text within + viewport. The value is recorded at the end of each page load. See + http://bit.ly/fcp_plus_plus for more details. + + + + + Deprecated on November 2021, replaced by + PageTiming.TotalForegroundDuration. + + + The total amount of time the page spent in the foreground, in + milliseconds. Note that this metric adds all foreground durations + occurring for the page. For example: if the page starts foregrounded + during 1 second, then goes to the background for a while, then is + foregrounded again for 2 seconds, and then is unloaded, this metric + reports 3 seconds. To see metrics about consecutive foreground sessions, + see the PageForegroundSession event instead. This metric is recorded at + the end of each page load. As usual with PageLoad metrics, we consider app + backgrounding on Android to be the end of page load as well as the app + could be evicted by Android anytime after that happens. + + + + + The hour of the day when the page load was initiated. The time is measured + in the local time zone according to the system clock. Only collected for + page loads that start while on foreground. + + + + + The average value of user interaction latency above budget of a page load, + in ms. For this metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + Deprecated March 2022 for + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + The average value of user interaction latency above budget of a page load, + in ms. For this metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + Deprecated on January 2019 in favor of InteractiveTiming.FirstInputDelay2, + which correctly excludes some scrolling cases that were previously not + excluded from this metric. + + + Measures First Input Delay, the duration between the hardware timestamp + and the start of event processing on the main thread for the first + meaningful input per navigation. See https://goo.gl/tr1oTZ for a detailed + explanation. In ms. + + + + + Removed in January 2020 as the experiment is launched. + + + For comparing FirstInputDelay metrics in the SkipTouchEventFilter + experiment. Measures First Input Delay, the duration between the hardware + timestamp and the start of event processing on the main thread for the + first meaningful input per navigation. See https://goo.gl/tr1oTZ for a + detailed explanation. In ms. + + + + + Removed on February 2019 in favor of InteractiveTiming.FirstInputDelay3 + which brings the metric more in line with the EventTiming API. + + + Measures First Input Delay, the duration between the hardware timestamp + and the start of event processing on the main thread for the first + meaningful input per navigation. See https://goo.gl/tr1oTZ for a detailed + explanation. In ms. + + + + + Removed in July 2019 in favor of InteractiveTiming.FirstInputDelay4 which + includes events which were previously filtered. + + + Measures First Input Delay, the duration between the hardware timestamp + and the start of event processing on the main thread for the first + meaningful input per navigation. See https://goo.gl/tr1oTZ for a detailed + explanation. In ms. + + + + + + + + + + + + + Measures First Input Delay, the duration between the hardware timestamp + and the start of event processing on the main thread for the first + meaningful input per navigation. See https://goo.gl/tr1oTZ for a detailed + explanation. In ms. Log of major changes: + http://bit.ly/chrome-speed-metrics-changelog + + + + + + + + + + + + + + + + + Measures First Input Processing Time, the duration of event handlers + processing the first input event. In ms. + + + + + + + + + + + + + + + + + Deprecated on January 2019 in favor of + InteractiveTiming.FirstInputTimestamp2, which correctly excludes some + scrolling cases that were previously not excluded from this metric. + + + The duration between navigation start and the hardware timestamp of the + first meaningful input per navigation. See https://goo.gl/tr1oTZ for a + detailed explanation. In ms. + + + + + Removed in Jaunary 2020 as the experiment is launched. + + + The duration between navigation start and the hardware timestamp of the + first meaningful input per navigation. See https://goo.gl/tr1oTZ for a + detailed explanation. In ms. + + This metric is used for comparing FirstInputTimestamp metrics in the + SkipTouchEventFilter experiment. + + + + + Removed on February 2019 in favor of + InteractiveTiming.FirstInputTimestamp3 which brings the metric more in + line with the EventTiming API. + + + The duration between navigation start and the hardware timestamp of the + first meaningful input per navigation. See https://goo.gl/tr1oTZ for a + detailed explanation. In ms. + + + + + Removed in July 2019 in favor of InteractiveTiming.FirstInputTimestamp4 + which includes events which were previously filtered. + + + The duration between navigation start and the hardware timestamp of the + first meaningful input per navigation. See https://goo.gl/tr1oTZ for a + detailed explanation. In ms. + + + + + The duration between navigation start and the hardware timestamp of the + first meaningful input per navigation. See https://goo.gl/tr1oTZ for a + detailed explanation. In ms. + + + + + Measures the time, in milliseconds, from when a user starts scrolling + until the result shows up on screen if the scroll was the first scroll + since navigation. + + + + + + + + + + + + + + + + + The duration between navigation start and the timestamp of the first + scroll per navigation. In ms. This is rounded down to the nearest + exponential bucket. + + + + + Deprecated on January 2019 in favor of + InteractiveTiming.LongestInputDelay2, which correctly excludes some + scrolling cases that were previously not excluded from this metric. + + + Measures longest Input Delay, the longest duration between the hardware + timestamp and the start of event processing on the main thread for the + meaningful input per navigation. In ms. + + + + + Removed on February 2019 in favor of InteractiveTiming.LongestInputDelay3 + which brings the metric more in line with the EventTiming API. + + + Measures longest Input Delay, the longest duration between the hardware + timestamp and the start of event processing on the main thread for the + meaningful input per navigation. In ms. + + + + + Removed on September 2019 in favor of InteractiveTiming.LongestInputDelay4 + which includes events which otherwise would have been filtered. + + + Measures longest Input Delay, the longest duration between the hardware + timestamp and the start of event processing on the main thread for the + meaningful input per navigation. In ms. + + + + + + + + + + + + + Measures longest Input Delay, the longest duration between the hardware + timestamp and the start of event processing on the main thread for the + meaningful input per navigation. In ms. + + + + + + + + + + + + Deprecated on January 2019 in favor of + InteractiveTiming.LongestInputTimestamp2, which correctly excludes some + scrolling cases that were previously not excluded from this metric. + + + The duration between navigation start and the hardware timestamp of the + meaningful input with longest queuing delay per navigation. In ms. + + + + + Removed on February 2019 in favor of + InteractiveTiming.LongestInputTimestamp3 which brings the metric more in + line with the EventTiming API. + + + The duration between navigation start and the hardware timestamp of the + meaningful input with longest queuing delay per navigation. In ms. + + + + + Removed on February 2019 in favor of + InteractiveTiming.LongestInputTimestamp4 which includes inputs which would + have previously been filtered. + + + The duration between navigation start and the hardware timestamp of the + meaningful input with longest queuing delay per navigation. In ms. + + + + + The duration between navigation start and the hardware timestamp of the + meaningful input with longest queuing delay per navigation. In ms. + + + + + The number of Input Events, including click, tap, key press, cancellable + touchstart, or pointer down followed by a pointer up. + + + + + + + + + + + + The number of distinct user interactions. See definition of user + interaction: + https://web.dev/better-responsiveness-metric/#group-events-into-interactions + + + + + Deprecated March 2022 for + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + An approximation of a high percentile of user interaction latency above + budget of a page load, in ms. For this metric, we measure the latency of + user interactions by Responsiveness.UserInteraction.MaxEventDuration and + we deduct a budget from the original value. If the latency value is below + the budget, it will be treated as 0 ms. Each type of interaction has its + own budget. + + + + + Deprecated March 2022 for + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + An approximation of a high percentile of user interaction latency above + budget of a page load, in ms. For this metric, we measure the latency of + user interactions by Responsiveness.UserInteraction.TotalEventDuration and + we deduct a budget from the original value. If the latency value is below + the budget, it will be treated as 0 ms. Each type of interaction has its + own budget. + + + + + An approximation of a high percentile of user interaction latency above + budget of a page load, in ms. For this metric, we measure the latency of + user interactions by Responsiveness.UserInteraction.MaxEventDuration and + we deduct a budget from the original value. If the latency value is below + the budget, it will be treated as 0 ms. Each type of interaction has its + own budget. + + + + + Deprecated March 2022 for + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + An approximation of a high percentile of user interaction latency above + budget of a page load, in ms. For this metric, we measure the latency of + user interactions by Responsiveness.UserInteraction.TotalEventDuration and + we deduct a budget from the original value. If the latency value is below + the budget, it will be treated as 0 ms. Each type of interaction has its + own budget. + + + + + The sum of user interaction latency above budget of a page load, in ms. + For this metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + Deprecated March 2022 for + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + The sum of user interaction latency above budget of a page load, in ms. + For this metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + sum(max(Input Delay - 50, 0)). The Input Delay refers to the duration + between the hardware timestamp and the start of event processing on the + main thread for the meaningful input. In ms. + + + + + + + + + + + + sum(Input Delay). The Input Delay refers to the duration between the + hardware timestamp and the start of event processing on the main thread + for the meaningful input. In ms. + + + + + + + + + + + + Deprecated 10/2021. Replaced by + "InteractiveTiming.SumOfUserInteractionLatencyOverBudget.MaxEventDuration". + + + The sum of user interaction latency above budget of a page load, in ms. + For this metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + Deprecated 10/2021. Replaced by + "InteractiveTiming.SumOfUserInteractionLatencyOverBudget.TotalEventDuration". + + + The sum of user interaction latency above budget of a page load, in ms. + For this metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.TotalEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + An approximation of a high percentile of user interaction latency of a + page load, in ms. For this metric, we measure the latency of user + interactions by Responsiveness.UserInteraction.MaxEventDuration. + + + + + An approximation of a high percentile of user interaction latency of a + page load, in ms. For this metric, we measure the latency of user + interactions by Responsiveness.UserInteraction.MaxEventDuration. We record + it when a page is moved from the foreground to the background for the + first time. This metric is trying to record the INP values which are not + able to be recorded in + InteractiveTiming.UserInteractionLatency.HighPercentile2.MaxEventDuration + for some reasons. + + + + + The maximum value of user interaction latency of a page load, in ms. For + this metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration. Each type of interaction + has its own budget. + + + + + Deprecated March 2022 for + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + The maximum value of user interaction latency of a page load, in ms. For + this metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.TotalEventDuration. Each type of + interaction has its own budget. + + + + + Deprecated March 2022 for + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + The maximum value of user interaction latency above budget of a page load, + in ms. For this metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + Deprecated March 2022 for + SlowUserInteractionLatency.HighPercentile2.MaxEventDuration + + + The maximum value of user interaction latency above budget of a page load, + in ms. For this metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.TotalEventDuration and we reduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + altimin@chromium.org + arthursonzogni@chromium.org + + Whether the navigation resulted in the main frame being hosted in a + different renderer process than the current document or not. + + + + + Marked true if the page was already bookmarked when the navigation + committed. + + + + + Marked true if the page was already part of a tab group when the + navigation committed. + + + + + Roughly: measures if the page was newly bookmarked. Specifically: this is + marked true if the page was not bookmarked when the navigation committed, + and is bookmarked at the end of the page lifetime. + + Note, this means this boolean is mutually exclusive with + IsExistingBookmark. + + Also note, this means that a page that is bookmarked, and then + sebsequently un-bookmarked is counted as false. + + + + + Marked true if the page has been explicitly added (by the user) to the + list of custom links displayed in the NTP. Links added to the NTP by + History TopSites don't count for this. Always false on Android, because + Android does not have NTP custom links. + + + + + Roughly: measures if the page was added to a tab group. Specifically: this + is marked true if the page was not part of a tab group when the navigation + committed, and is part of a tab group at the end of the page lifetime. + + Note, this means this boolean is mutually exclusive with + IsExistingPartOfTabGroup. + + Also note, this means that a page that is added, and then sebsequently + removed from a tab group is counted as false. + + + + + Marked true if the page was eligible for a scoped search when the + navigation committed. + + + + + Migrated to the PageLoad.SignedExchange event. The presence of that event + indicates the associated source was served via signed exchange. + + + Set to 1 if the main resource is an inner response of a signed exchange. + + + + + Deprecated 06/2021. + + + Measures the average cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a session window. The gap between two consecutive shifts + in a window is not bigger than 5000ms. This metric's integral value is + 100x the fractional cumulative layout shift score described in the + explainer. + + + + + Deprecated as of 04/23. It is still reported, but most users should use + PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms. + + Measures the cumulative layout shift (bit.ly/lsm-explainer) that has + occurred on the page (including all subframes) during the session. This + metric's integral value is 100x the fractional cumulative layout shift + score described in the explainer. Stable since M79; previous versions are + experimental and subject to fluctuation between releases. Log of major + changes: http://bit.ly/chrome-speed-metrics-changelog + + + + + + + + + + + + + + + + + Measures the cumulative layout shift (bit.ly/lsm-explainer) that has + occurred on the page (including all subframes) during the session, before + any user input or scroll (in any frame). This metric's integral value is + 100x the fractional cumulative layout shift score described in the + explainer. + + + + + Measures the cumulative layout shift (bit.ly/lsm-explainer) that has + occurred in the main frame during the session. This metric's integral + value is 100x the fractional cumulative layout shift score described in + the explainer. + + + + + Measures the cumulative layout shift (bit.ly/lsm-explainer) that has + occurred in the main frame during the session, before any user input or + scroll. This metric's integral value is 100x the fractional cumulative + layout shift score described in the explainer. + + + + + Deprecated 06/2021. + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a session window. The gap between two consecutive shifts + in a window is not bigger than 1000ms. This metric's integral value is + 100x the fractional cumulative layout shift score described in the + explainer. + + + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a session window. The gap between two consecutive shifts + in a window is not bigger than 1000ms and the maximum window size is + 5000ms. This metric's integral value is 100x the fractional cumulative + layout shift score described in the explainer. + + + + + + + + + + + + Deprecated 06/2021. + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a session window. The gap between two consecutive shifts + in a window is not bigger than 1000ms or segmented by a user input. The + maximum window size is 5000ms. This metric's integral value is 100x the + fractional cumulative layout shift score described in the explainer. + + + + + + + + + + + + Deprecated 06/2021. + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a 1000ms sliding window. This metric's integral value is + 100x the fractional cumulative layout shift score described in the + explainer. + + + + + Deprecated 06/2021. + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred in a 300ms sliding window. This metric's integral value is + 100x the fractional cumulative layout shift score described in the + explainer. + + + + + Removed July 2019 in favor of LayoutInstability.CumulativeShiftScore. + + + Measures the amount of layout jank (bit.ly/lsm-explainer) that has + occurred on the page (including all subframes) during the session. This + metric's integral value is 100x the fractional jank score described in the + explainer. + + + + + Removed July 2019 in favor of + LayoutInstability.CumulativeShiftScore.MainFrame. + + + Measures the amount of layout jank (bit.ly/lsm-explainer) that has + occurred in the main frame during the session. This metric's integral + value is 100x the fractional jank score described in the explainer. + + + + + Removed July 2019 in favor of + LayoutInstability.CumulativeShiftScore.MainFrame.BeforeInputOrScroll. + + + Measures the amount of layout jank (bit.ly/lsm-explainer) that has + occurred in the main frame during the session, before any user input or + document scroll. This metric's integral value is 100x the fractional jank + score described in the explainer. + + + + altimin@chromium.org + arthursonzogni@chromium.org + + An id for the main frame's document associated with the current + navigation. It doesn't change for same-document navigations and when + navigating back to the same document. Unique during the browsing session. + + + + + The duration between the start of the connection establishment to the end + of the connection establishment to the origin of the main frame request. + In ms. + + + + + The duration between the start of the DNS resolution to the end for the + origin of the main frame request. In ms. + + + + + HTTP Protocol scheme of the connection using which the main frame response + was fetched. Recorded as HttpProtocolScheme enum in + tools/metrics/histograms/enum.xml. + + + + + The duration from the start of the navigation to the start of the response + headers being received. In ms. + + + + + The duration from the start of the navigation to the start of the main + frame request. This includes the time to process any redirects on the main + frame request. In ms. + + + + + The number of main frame redirects that occurred before commit. Unset if + there were no redirects. + + + + + A boolean indicating if any mainpage request in the redirect chain or + committed request had cookies set on it. Only set when a query result was + received from the cookie manager before event recording. + + + + + A boolean indicating if any mainpage resource has a 'Cache-control: + no-store' response header. Recorded only for main frame request. + + + + + The duration from when the request was started to the time when its + response headers were received. Recorded only for the main frame request. + In ms. + + + + + The duration from when the request was started to the time when its + request headers were sent. Recorded only for the main frame request. In + ms. + + + + + The duration from when the request headers were sent to when its response + headers were received. Recorded only for the main frame request. In ms. + + + + + True if the socket was reused when establishing connection to the origin + of the main frame request. + + + + + Deprecated May 2020 in favor of Navigation.PageEndReason2. + + + The |page_load_metrics::PageEndReason| for the main frame navigation of + this page load. + + + + + Deprecated Jan 2021 in favor of Navigation.PageEndReason3. + + + The |page_load_metrics::PageEndReason| for the main frame navigation of + this page load. Replaced Navigation.PageEndReason at the end of May 2020 + to reduce occurrences of page_load_metrics::PageEndReason::END_NONE by + setting the value to page_load_metrics::PageEndReason::END_HIDDEN when the + metric is recorded after the page became hidden. + + + + + The |page_load_metrics::PageEndReason| for the main frame navigation of + this page load. Replaced Navigation.PageEndReason2 on January 2021 to get + rid of END_HIDDEN and use END_APP_BACKGROUND on cases where the metrics + are flushed and the app enters the background. + + + + + The |ui::PageTransition| for the main frame navigation of this page load. + + + + altimin@chromium.org + arthursonzogni@chromium.org + + Difference between the last committed navigation entry index before and + after the commit of this navigation. + + + + + Deprecated 06/2019 in favor of Net.CacheBytes2. + + + The total number of body bytes loaded from cache for all resources on the + page. This is rounded down to the nearest exponential bucket (with a + bucket spacing factor of 1.3). + + + + + The total number of body bytes loaded from cache for all resources on the + page. This includes the http and memory cache. This is rounded down to the + nearest exponential bucket (with a bucket spacing factor of 1.3). + + + + tbansal@chromium.org + + The downstream throughput (in kilobits per second) for this page load, at + the time the navigation for this page load was initiated. + + + + + Deprecated 7/2017 in favor of + Net.EffectiveConnectionType2.OnNavigationStart. + + + The |net::EffectiveConnectionType| at the time the navigation for this + page load was initiated. + + + + + The |SystemProfileProto::Network::EffectiveConnectionType| at the time the + navigation for this page load was initiated. + + + + + The |net::Error| code for this page load. Only logged for failed + provisional navigations. + + + + + The HTTP response code (e.g., 200, 404, etc.) associated with the main + frame page load. + + + + + The HTTP round trip time estimate for this page load, at the time the + navigation for this page load was initiated. + + + + + Deprecated 09/2021 in favor of Net.ImageBytes2. + + + The total number of bytes loaded from the network for images on the page. + This is rounded down to the nearest exponential bucket (with a bucket + spacing factor of 1.3). On mobile this only records bytes up until the + page/app is backgrounded. + + + + + The total number of bytes loaded from the network for images on the page. + This is rounded down to the nearest exponential bucket (with a bucket + spacing factor of 1.3). On mobile this only records bytes up until the + page/app is backgrounded. + + + + + Deprecated 09/2021 in favor of Net.ImageSubframeBytes2. + + + The total number of bytes loaded from the network for images on the + subframes of the page. This is rounded down to the nearest exponential + bucket (with a bucket spacing factor of 1.3). On mobile this only records + bytes up until the page/app is backgrounded. + + + + + The total number of bytes loaded from the network for images on the + subframes of the page. This is rounded down to the nearest exponential + bucket (with a bucket spacing factor of 1.3). On mobile this only records + bytes up until the page/app is backgrounded. + + + + + Deprecated 09/2021 in favor of Net.JavaScriptBytes2. + + + The sum of decoded body lengths of all JavaScript resources that completed + loading on the page. This is rounded down to the nearest exponential + bucket (with a bucket spacing factor of 10). On mobile this only records + bytes up until the page/app is backgrounded. + + + + + The sum of decoded body lengths of all JavaScript resources that completed + loading on the page. This is rounded down to the nearest exponential + bucket (with a bucket spacing factor of 1.3). On mobile this only records + bytes up until the page/app is backgrounded. + + + + + Deprecated 09/2021 in favor of Net.JavaScriptMaxBytes2. + + + The max of decoded body lengths of all JavaScript resources that completed + loading on the page. This is rounded down to the nearest exponential + bucket (with a bucket spacing factor of 10). On mobile this only records + bytes up until the page/app is backgrounded. + + + + + The max of decoded body lengths of all JavaScript resources that completed + loading on the page. This is rounded down to the nearest exponential + bucket (with a bucket spacing factor of 1.3). On mobile this only records + bytes up until the page/app is backgrounded. + + + + + Deprecated 09/2021 in favor of Net.MediaBytes2. + + + The total number of bytes loaded from the network for media (video, audio) + on the page. This is rounded down to the nearest exponential bucket (with + a bucket spacing factor of 1.3). On mobile this only records bytes up + until the page/app is backgrounded. + + + + + The total number of bytes loaded from the network for media (video, audio) + on the page. This is rounded down to the nearest exponential bucket (with + a bucket spacing factor of 1.3). On mobile this only records bytes up + until the page/app is backgrounded. + + + + + Deprecated 03/2019 in favor of Net.NetworkBytes2. + + + The total number of body bytes loaded from the network for all resources + on the page. This is rounded down to the nearest exponential bucket (with + a bucket spacing factor of 1.3). + + + + + The total number of bytes loaded from the network for all resources on the + page, including incomplete resources and headers. This is rounded down to + the nearest exponential bucket (with a bucket spacing factor of 1.3). On + mobile this only records bytes up until the page/app is backgrounded. + + + + + The transport round trip time estimate for this page load, at the time the + navigation for this page load was initiated. + + + + + Marked true if the user copied the page's URL from the omnibox at any time + for this page load. + + + + + For page loads that start in the foreground, measures the duration of time + in milliseconds until one of the following events occurs: the load of the + main resource fails, the page load is stopped, the tab hosting the page is + closed, the render process hosting the page goes away, a new navigation + which later commits is initiated in the same tab, or the tab hosting the + page is backgrounded. This metric has a very long tail, for pages that + spend a long period of time in the foreground. As such, use of the mean or + tail values are not recommended. + + + + + Measures the time in milliseconds from navigation timing's navigation + start to the time the provisional load failed. Only measures provisional + loads that failed in the foreground. + + + + + The total amount of time the page spent in the foreground, in + milliseconds. Note that this metric adds all foreground durations + occurring for the page. For example: if the page starts foregrounded + during 1 second, then goes to the background for a while, then is + foregrounded again for 2 seconds, and then is unloaded, this metric + reports 3 seconds. To see metrics about consecutive foreground sessions, + see the PageForegroundSession event instead. This metric is recorded at + the end of each page load. As usual with PageLoad metrics, we consider app + backgrounding on Android to be the end of page load as well as the app + could be evicted by Android anytime after that happens. + + + + + When the page UserTiming mark API is called with the standard + 'mark_fully_loaded' name to mark that the page is fully loaded. If the + mark is called more than once, the last is used. + + + + + + + + + + + + When the page UserTiming mark API is called with the standard + 'mark_fully_visible' name to mark that the page is fully visible. If the + mark is called more than once, the last is used. + + + + + + + + + + + + When the page UserTiming mark API is called with the standard + 'mark_interactive' name to mark that the page is interactive. If the mark + is called more than once, the last is used. + + + + + + + + + + + + Determines the final status for this page load. That is, records whether + the page was never foregrounded, was foregrounded but did not reach FCP, + or did reach FCP. The metric is recorded at the end of each page load. As + usual with PageLoad metrics, we consider app backgrounding on Android to + be the end of page load as well as the app could be evicted by Android + anytime after that happens. + + + + + Measures the ratio of image file size (in bits) to displayed pixels for + the LCP candidate. Bucketed into roughly exponential intervals to account + for the wide range of encountered values (less than 1:100000 to greater + than 10000:1). This metric is recorded whenever the LCP candidate is an + image, and omitted when it is text. + + + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the LCP element(image) finishes loading. For + animated images, this is when the image resource finishes loading + completely, not the first frame time. See web.dev/optimize-lcp for more + details. This metric is not recorded when the LCP element is text or + video. + + + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the LCP element(image) starts loading. See + web.dev/optimize-lcp for more details. This metric is not recorded when + the LCP element is text or video. + + + + + Resource loading priority used for the LCP candidate. This metric is + recorded whenever the LCP candidate is an image, and omitted when it is + text or video. + + + + + Indicates that type of the LargestContentfulPaint candidate. This value is + a packed set of flags, defined in + third_party/blink/public/common/performance/largest_contentful_paint_type.h + + + + + Replaced by PaintTiming.NavigationToLargestContentfulPaint2 on Oct 2020. + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the largest content (text or + image) within viewport, across all frames. Differs from + PaintTiming.NavigationToLargestContentfulPaint in that this experimental + version includes content that has been removed. + + + + + + + + + + + + + + + + + Replaced by PaintTiming.NavigationToLargestContentfulPaint2.MainFrame on + Oct 2020. + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the largest content (text or + image) within viewport, in the main frame. Differs from + PaintTiming.NavigationToLargestContentfulPaint.MainFrame in that this + experimental version includes content that has been removed. + + + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints content. A contentful paint + includes a paint of text, image, SVG, or canvas. Log of major changes: + http://bit.ly/chrome-speed-metrics-changelog + + + + + + + + + + + + + + + + + + + + Measures the time in milliseconds from navigation timing's navigation + start to the time the first paint is performed. + + + + + + + + + + + + Replaced by PaintTiming.NavigationToLargestContentfulPaint2. No longer + reported from Nov 2021. + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the largest content (text or + image) within viewport, across all frames. See http://bit.ly/fcp_plus_plus + for more details. Stable since M79; previous versions are experimental and + subject to fluctuation between releases. Log of major changes: + http://bit.ly/chrome-speed-metrics-changelog Note: Will be replaced by + PaintTiming.NavigationToLargestContentfulPaint2. + + + + + + + + + + + + + + + + + Replaced by PaintTiming.NavigationToLargestContentfulPaint2.MainFrame. No + longer reported from Nov 2021. + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the largest content (text or + image) within viewport, in the main frame. See http://bit.ly/fcp_plus_plus + for more details. Note: Will be replaced by + PaintTiming.NavigationToLargestContentfulPaint2.MainFrame. + + + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the largest content (text or + image) within viewport, across all frames. See http://bit.ly/fcp_plus_plus + for more details. Log of major changes: + http://bit.ly/chrome-speed-metrics-changelog. Version 2 differs from the + first version in that it includes content that has been removed from the + page. + + + + + + + + + + + + + + + + + Similar to PaintTiming.NavigationToLargestContentfulPaint2, this measures + the time in milliseconds from the navigation start of the top-level frame + to the time when the page first paints the largest content (text or image) + in the cross-site subframe which is the top candidate of largest + contentful paint. This metric is computed separately from the page-level + LCP, it's recorded even in page loads where the page-level LCP is not that + cross-site LCP. + + + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the largest content (text or + image) within viewport, in the main frame. Includes content that has been + removed from the page. See http://bit.ly/fcp_plus_plus for more details. + + + + + Measures the time in milliseconds from navigation timing's navigation + start to the time when the page first paints the largest content (text or + image) within viewport, across all frames. Recorded at the point when a + page which has been opened in the foreground is moved to the background + for the first time. See http://bit.ly/fcp_plus_plus for more details. Log + of major changes: http://bit.ly/chrome-speed-metrics-changelog. This + metric is trying to record the LCP values which are not able to be + recorded in PaintTiming.NavigationToLargestContentfulPaint2 for some + reasons. + + + + + + + + + + + + + + + + + Measures the time in milliseconds from navigation timing's navigation + start to the time the parser started, for main frame documents. + + + + + Records whether the refresh rate is throttled (capped to 30Hz) by Power + Saver Mode for this Page Load, when the navigation starts. It is possible + but very unlikely for this to change mid navigation, for instance due to a + change by the user in settings or the battery being recharged above 20%. + + + + mcrouse@chromium.org + tbansal@chromium.org + + Measures the Site Engagement Score for the committed URL rounded to the + nearest 10. + + + + + Records how the main frame's site instance was assigned to a renderer + process. + + + + + + + + + + + + + + + Number of soft navigations detected by heuristics. See + https://bit.ly/soft-navigation + + Soft navigations are JS-driven same-document navigations that are using + the history API or the new Navigation API, triggered by a user gesture and + meaningfully modify the DOM, replacing the previous content with new one. + + + + dullweber@chromium.org + huanzhong@chromium.org + + Records whether third party cookie blocking was enabled for a site. Only + recorded for users who enabled the cookie controls ui. + + + + + + + + + + + + + Set to 1 if the main resource was served from cache. + + + + + Records whether the Page Load is the result of the page having previously + been discarded because of performance interventions or critical memory + pressure. + + + + + + nidhijaju@chromium.org + ricea@chromium.org + + Recorded for page loads where Cache Transparency is enabled. + + + + + sullivan@chromium.org + mushan@chromium.org + + Recorded for page loads that were navigated to via Google Search. + + + + Google Search mode used by the user. This corresponds to the tab (e.g. web + result, image results, video results, etc.) the user is on. This + information is extracted from the tbm query parameter on the Search URL. + + + + + + npm@chromium.org + speed-metrics-dev@chromium.org + + Debugging metrics for the PageLoad event that do not require the same amount + of sampling. + + + + Replaced by PaintTiming.LargestContentfulPaint.ContentType. No longer + reported from Nov 2021. + + + Records whether the page's experimental version of largest contentful + paint, whose timestamp is measured by + PageLoad.PaintTiming.NavigationToLargestContentfulPaint, comes from text + or image. This value is sampled and not on the PageLoad event, so it is + not always recorded whenever + PageLoad.PaintTiming.NavigationToLargestContentfulPaint is recorded. + + + + + Replaced by PaintTiming.LargestContentfulPaint.TerminationState. No longer + reported from Nov 2021. + + + Records the state of the experimental largest contentful paint algorithm + at the time in which the browser attempts to record + PageLoad.PaintTiming.NavigationToLargestContentfulPaint. This state + depends on whether there was an experimental largest contentful paint + candidate or not and the foreground state of the page. This value is + sampled and not on the PageLoad event, so it is not always recorded + whenever the browser attempts to record + PageLoad.PaintTiming.NavigationToLargestContentfulPaint. + + + + + Records whether the page's largest contentful paint, whose timestamp is + measured by PageLoad.PaintTiming.NavigationToLargestContentfulPaint2, + comes from text or image. This value is sampled and not on the PageLoad + event, so it is not always recorded whenever + PageLoad.PaintTiming.NavigationToLargestContentfulPaint2 is recorded. + + + + + Records the state of the largest contentful paint algorithm at the time in + which the browser attempts to record + PageLoad.PaintTiming.NavigationToLargestContentfulPaint2. This state + depends on whether there was a largest contentful paint candidate or not + and the foreground state of the page. This value is sampled and not on the + PageLoad event, so it is not always recorded whenever the browser attempts + to record PageLoad.PaintTiming.NavigationToLargestContentfulPaint2. + + + + + + nidhijaju@chromium.org + ricea@chromium.org + + Recorded for page loads where the pervasive payloads list is inputted to + Chrome. + + + + + wanderview@chromium.org + asamidoi@chromium.org + + Recorded for page loads controlled by a service worker. + + + + + horo@chromium.org + + Recorded for page loads which main resource is an inner response of a signed + exchange. + + + + Set to 1 if the main resource was served from Google's cache server. + + + + + + + Deprecated as of 3/2019. + + ryansturm@chromium.org + + Metrics related to PageLoadCapping that are recorded using the same UKM IDs + as PageLoad. + + + + Set to 1 when the InfoBar was shown, but not acted upon. Set to 2 when the + page was paused, but not resumed. Set to 3 when the page was resumed. If + the InfoBar was not shown, this metrics is not recorded. + + + + + + yaoxia@chromium.org + jkarlin@chromium.org + + Metrics about the initiator context of a page load (e.g. whether certain + condition was true and/or what triggered the page load). Recorded when a + page commits. The metrics are specific to ad related conditions or purposes. + + + + Whether the page was opened due to a click on an ad. + + + + + Whether the navigation occurred due to a user action. This includes + omnibox navigations as well as renderer initiated navigations with user + activation. + + + + + + battre@chromium.org + + Metrics about websites that contain password forms and the user's + interactions with them. No events are created for pages that don't contain + password forms. + + + + Records whether Chrome was sufficiently aware of forms during various + stages of saving a credential on the site, or whether saving was aborted + due to absence of the corresponding form manager. Values correspond to the + enum PasswordManagerMetricsRecorder::FormManagerAvailable. + + + + + Records if the user interacts with the password manager in a way that + cannot (reliably) be attributed to a specific PasswordFormManager. Values + correspond to the enum + PasswordManagerMetricsRecorder::PageLevelUserAction. + + + + + Records a provisional save failure in case the password manager cannot + offer to save a credential. Recorded values correspond to the enum + PasswordManagerMetricsRecorder::ProvisionalSaveFailure. + + + + + Records a 1 for every page on which a user has modified a password text + field - regardless of how many password fields a page contains or the user + modifies. + + + + + + ckitagawa@chromium.org + fredmello@chromium.org + mahmoudi@chromium.org + vollick@chromium.org + + Metrics related to the performance of capturing Paint Previews. + + + + The amount of time spent painting in Blink to record a Paint Preview of + the main frame. + + + + + The compressed on-disk size in KB of the captured artifacts. This is + rounded down to the nearest exponential bucket (with a bucket ratio of + 1.3). + + + + + + battre@chromium.org + + Metrics about password forms on websites and the user's interactions with + them. A separate event is generated for each password form discovered on a + site. + + + + Records a low entropy hash of the form signature in order to be able to + distinguish two forms on the same site. + + + + + Records a bitmask of password form changes after the first time this form + is seen by Password Manager. Recorded once per a form when the form is + removed from DOM. Bit 0 - changes in number of fields, bit 1 - changes in + fields renderer ids, bit 2 - changes in autocomplete attributes, bit 3 - + changes in form control types, bit 4 - changes in field names. + + + + + Records whether the PasswordAutofillAgent in the renderer manages to fill + credentials as instructed by the browser or records a failure reason + otherwise. Only the outcome of the first attempt to fill is recorded. + + This is replicated as PasswordManager.FirstFillingResultInRenderer in UMA. + + + + + This metric records why the browser instructs the renderer not to fill the + credentials on page load but to wait for the user to confirm the + credential to be filled. Only the value of the first decision to fill is + recorded. + + This is replicated as PasswordManager.FirstWaitForUsernameReason in UMA. + + + + + Deprecated in November 2018, because the decision this metric supported + was made. Records the comparison of the old and new decision about filling + a form on load. Should only be logged for fillig with non-PSL matched + credentials, in non-Incognito mode. Values are from + password_manager::PasswordFormMetricsRecorder::FillOnLoad. + + + + + Records '1' if the user has generated a password on this form. + + + + + Records '1' if the user has modified a generated a password on this form. + + + + + Records an entry if (and only if) a popup was shown. + + + + + Deprecated 09/2019. + + + Reports the priority of a PasswordGenerationRequirementsSpec for a + generated password. This can be used for debugging as a 0 means that no + spec was used, a 10 means that the spec came from autofill and was crowd + sourced, a 20 means that it was overridden per domain and a 30 means that + is was overridden for the form. + + + + + Records for each password form (and HTTP auth), whether the password + manager has filled/provided credentials. Recorded values correspond to the + enum ManagerAutofillEvent. + + + + + Records for each successful submission the degree to which the user has + been assisted by the password manager. + + This is replicated as PasswordManager.FillingAssistance in UMA. + + + + + Deprecated 09/2019. + + + Records comparison result of old and new password form parsing algorithms. + Metric is recorded on a password form detection. Recorded values + correspond to the enum + password_manager::PasswordFormMetricsRecorder::ParsingComparisonResult. + + + + + Deprecated 09/2019. + + + Records the comparison of the old and new password form parsing for + saving. Multiple values from the + password_manager::PasswordFormMetricsRecorder::ParsingOnSavingDifference + bitmask can be combined. + + + + + Records the readonly status encoded with parsing success after parsing for + filling. The |value| is constructed as follows: The least significant bit + says whether parsing succeeded (1) or not (0). The rest, shifted by one + bit to the right is the FormDataParser::ReadonlyPasswordFields + representation of the readonly status. + + + + + Records the readonly status encoded with parsing success after parsing for + creating pending credentials. The |value| is constructed the same way as + for ReadonlyWhenFilling. + + + + + Records how the user interacted with a saving prompt. + + + + + Records, for each password form seen by the password manager, whether the + user was shown a prompt that asked for permission to save new credentials. + In case a store() via the Credential Management API, a virtual password + form is created, for which this metric is recorded. + + + + + Records the trigger of each password save bubble that was shown to the + user to ask for permission to save new credentials. + + + + + Records if a manual fallback for saving option was shown to the user (on + Android this is recorded, even though the UI does not exist at the + moment). This is a bit mask. 1 means a prompt was shown, 2 means the + prompt was due to a generated password, 4 means the prompt was due to an + update. + + + + + Records the event that led the password manager to believe the submission + was successful. Metrics is recorded only when the password is saved. + + + + + Records whether a submission of a password form has been observered. The + values 0 and 1 correspond to false and true respectively. + + + + + Records the outcome of a password form submission. + + + + + Records the classification of a form at submission time. + + This is replicated as PasswordManager.SubmittedFormType in UMA. + + + + + Deprecated 03/2019. + + + Records, for each password form seen by the password manager, whether + there were `suppressed` credentials, meaning stored credentials that were + not filled, that were suppressed because they were stored for an HTTPS + origin while the password form was seen on an HTTP origin. If there were + such credentials, the histogram also records whether the username and + password of such suppressed credentials matched those submitted. This + recording happens only for credentials that were originally auto-generated + (as opposed to user typed). Recorded values correspond to the enum + SuppressedAccountExistence. + + + + + Deprecated 03/2019. + + + Records, for each password form seen by the password manager, whether + there were `suppressed` credentials, meaning stored credentials that were + not filled, that were suppressed because they were for an origin that was + only PSL-matching the origin of the observed form (see the suffix + description for the possible classes of such near-matches). If there were + such credentials, the histogram also records whether the username and + password of such suppressed credentials matched those submitted. This + recording happens only for credentials that were originally auto-generated + (as opposed to user typed). Recorded values correspond to the enum + SuppressedAccountExistence. + + + + + Deprecated 03/2019. + + + Records, for each password form seen by the password manager, whether + there were `suppressed` credentials, meaning stored credentials that were + not filled, that were suppressed because they were for an origin that was + only matching the visited origin if the TLD is stripped. If there were + such credentials, the histogram also records whether the username and + password of such suppressed credentials matched those submitted. This + recording happens only for credentials that were originally auto-generated + (as opposed to user typed). Recorded values correspond to the enum + SuppressedAccountExistence. + + + + + Deprecated 03/2019. + + + Records, for each password form seen by the password manager, whether + there were `suppressed` credentials, meaning stored credentials that were + not filled, that were suppressed because they were stored for an HTTPS + origin while the password form was seen on an HTTP origin. If there were + such credentials, the histogram also records whether the username and + password of such suppressed credentials matched those submitted. This + recording happens only for credentials that were originally entered by the + user (as opposed to auto-generated). Recorded values correspond to the + enum SuppressedAccountExistence. + + + + + Deprecated 03/2019. + + + Records, for each password form seen by the password manager, whether + there were `suppressed` credentials, meaning stored credentials that were + not filled, that were suppressed because they were for an origin that was + only PSL-matching the origin of the observed form (see the suffix + description for the possible classes of such near-matches). If there were + such credentials, the histogram also records whether the username and + password of such suppressed credentials matched those submitted. This + recording happens only for credentials that were originally entered by the + user (as opposed to auto-generated). Recorded values correspond to the + enum SuppressedAccountExistence. + + + + + Deprecated 03/2019. + + + Records, for each password form seen by the password manager, whether + there were `suppressed` credentials, meaning stored credentials that were + not filled, that were suppressed because they were for an origin that was + only matching the visited origin if the TLD is stripped. If there were + such credentials, the histogram also records whether the username and + password of such suppressed credentials matched those submitted. This + recording happens only for credentials that were originally entered by the + user (as opposed to auto-generated). Recorded values correspond to the + enum SuppressedAccountExistence. + + + + + Records how the user interacted with an updating prompt. + + + + + Records, for each password form seen by the password manager, whether the + user was shown a prompt that asked for permission to update existing + credentials. + + + + + Records the trigger of each password update bubble that was shown to the + user to ask for permission to update existing credentials. + + + + + Deprecated. Use new user actions ("User.Action....") instead. + + + Records what the user does with all UI entry points of the password + manager UI, like bubbles, context menus, forms, form fields, etc. in + relation to a given form. Recorded values correspond to the enum + PasswordFormMetricsRecorder::DetailedUserAction. In contrast to + User.ActionSimplified, this metric is intended to be extended over time. + + + + + Counts how many times the user corrected a username in a password form. + This is only populated if events happened. + + + + + Counts how many times the user edited a username in a password save/update + bubble. This is only populated if events happened. + + + + + Counts how many times the user selected a different password in a + save/update bubble. This is only populated if events happened. + + + + + Counts how many times the user triggered the manual fallback for password + saving. This is only populated if events happened. + + + + + Deprecated. Use TriggeredManualFallbackForSaving instead. + + + Counts how many times the user triggered the manual fallback for password + updating. This is only populated if events happened. + + + + + Deprecated as of 12/11/2019. + + + Records what the user does with a form. Recorded values correspond to the + enum password_manager::UserAction. + + + + + + jkeitel@google.com + chrome-duplex@google.com + + Metrics related to leak warnings shown on login and password reset. Leak + warning dialogs in Chrome aim to inform users about leaked credentials and + advise to change them. We collect type of the dialog that is shown and the + response of the user to it. + + + + Records the response to the password leak dialog. + + + + + Records the type of the password leak dialog. + + + + + + kolos@chromium.org + jkeitel@google.com + + Metrics related to password change flows. Chrome offers users several entry + points for password change flows, e.g. from Password Checkup in Settings or + on a leak warning dialog during sign in with compromised credentials. We + collect the duration of and the success rate of such password change flows. + + + + The time that passed during the start of the flow and the end of the flow + in seconds. + + + + + Records how the flow was ended, e.g. whether it ended with a generated + password from a manual flow, a password reset link, etc. + + + + + Records the entry point of the password change flow, e.g. whether it was + from settings or during login. + + + + + Records how the flow was started, e.g. whether it was a manual from + settings, a manual flow will a well-known/.change-password URL, etc. + + + + + + brunobraga@google.com + chrome-duplex@google.com + + Metrics related to password change. The Password Checkup in Chrome Settings + aims to help users find their leaked passwords. After getting list of + compromised passwords, user can trigger password change. + + + + Records what type of password change the user triggers. + + + + + + theocristea@google.com + kazinova@google.com + vsemeniuk@google.com + + Records password filling for IOS. The metric records whether the password + filling is successful upon suggestion click. + + + + A boolean indicating success or failure. + + + + + + kazinova@google.com + vasilii@chromium.org + + Metrics related to the usage and support of .well-known/change-password. The + .well-known/change-password standard is defined to redirect to the sites + change password form. We collect whether a site supports the standard or + not. https://wicg.github.io/change-password-url/ + + + + Records if a site supports .well-known/change-password and if a url + override was used or not. + + + + + + + + + + + + + rouslan@chromium.org + web-payments-team@google.com + + Records checkout events as well as completion status for the invoked payment + app when its origin is shown inside the payment handler modal window. This + metric uses the specific PAYMENT_APP_ID ukm_source_id which is generated + from the app's origin. + + + + How the Payment Request ended. This metric will only get recorded if a + non-autofill payment app gets invoked to handle the request. + + + + + Bitfield representing the events that occurred during the Payment Request. + This metric will only get recorded if a non-autofill payment app gets + invoked to handle the request. Values defined in the Event enum of + components/payments/core/journey_logger.h. + + + + + The 2.0 version of Events. Bitfield representing the events that occurred + during the Payment Request. This metric will only get recorded if a + non-autofill payment app gets invoked to handle the request. Values + defined in the Event2 enum of components/payments/core/journey_logger.h. + + + + + + rouslan@chromium.org + web-payments-team@google.com + + + How the Payment Request ended. Values defined in the CompletionStatus enum + of components/payments/core/journey_logger.h. + + + + + Bitfield representing the events that occurred during the Payment Request. + Values defined in the Event enum of + components/payments/core/journey_logger.h. + + + + + The 2.0 version of Events. Bitfield representing the events that occurred + during the Payment Request. Values defined in the Event2 enum of + components/payments/core/journey_logger.h. + + + + + + rouslan@chromium.org + web-payments-team@google.com + + + Tranaction size can be zero, micro, or regular. Values defined in the + TransactionSize enum of components/payments/core/journey_logger.h. + + + + + Whether the transaction has been triggered or completed. + + + + + + raymes@chromium.org + + Event recorded when a flash instance connects to the broker, resulting in a + channel being opened to the broker process. + + + + + + Implementation for these experiments were removed in M94. + + dom@chromium.org + chrome-loading@google.com + + Metrics recorded for the various Perfect Heuristics experiments being run. + + + + Set to 1 when blink::ScriptRunner sees an async script before the + associated document has finished parsing. + + + + + Set to 1 when blink::ResourceLoadScheduler delays competing low priority + requests. See https://crbug.com/1112515 for details. + + + + + + nrosenthal@chromium.org + + This event is associated with the LongAnimationFrame Web Platform API. The + metrics are recorded when a long animation frame is detected and reported to + the page. For more details see https://crbug.com/1392685. + + + + True if there was a pause (sync XHR, dialog) during the long frame. + + + + + A positive or negative duration in milliseconds, representing the time + between the desired time for rendering the frame and rendering it in + practice. Positive means delayed, negative means deferred. + + + + + + + + + + + + The duration in milliseconds, representing the time the LoAF was blocking. + + + + + + + + + + + + The total duration of long-script JS compilation, in milliseconds. + + + + + + + + + + + + The total duration of long-script JS execution, not including compilation, + in milliseconds. + + + + + + + + + + + + The total duration spent in event listeners (e.g. onclick). + + + + + + + + + + + + The total duration spent in promise resolve/reject tasks. + + + + + + + + + + + + The total duration spent in script blocks (script element, import) + + + + + + + + + + + + The total duration spent in user callbacks (e.g. requestAnimationFrame). + + + + + + + + + + + + The total duration of forced style and layout in long scripts. + + + + + + + + + + + + The total duration of the style and layout lifecycle phase, not including + forced style and layout. + + + + + + + + + + + + The duration of the long animation frame in milliseconds. Mirrors the + value reported in PerformanceEntry.duration. + + + + + + + + + + + + + hpayer@chromium.org + mlippautz@chromium.org + ulan@chromium.org + + This event is associated with the LongTask Web Platform API. The metrics are + recorded when a long task is detected and reported to the page. For more + details see the design doc linked in https://crbug.com/1173527. + + + + The duration of the long task in microseconds. Mirrors the value reported + in PerformanceEntry.duration. + + + + + + + + + + + + The total time in microseconds that is V8 spent in main-thread V8, + including JS-time, but without time spent in callbacks to blink. + + + + + + + + + + + + The total time in microseconds that V8 spent collecting garbage within the + long task. + + + + + + + + + + + + The total time in microseconds that V8 spent in the atomic pause of the + full garbage collector within the long task. + + + + + + + + + + + + The total time in microseconds that V8 spent in the incremental pause of + the full garbage collector within the long task. + + + + + + + + + + + + The total time in microseconds that V8 spent in the young garbage + collector within the long task. + + + + + + + + + + + + The duration in millseconds between the document navigation start and the + long task start. Mirrors the value reported in PerformanceEntry.startTime. + + + + + + + + + + + + + hpayer@chromium.org + mlippautz@chromium.org + ulan@chromium.org + + This event is associated with the performance.measureUserAgentSpecificMemory + API. The metrics are recorded when the memory measurement is reported to the + page. All values represent memory consumption in KB. + + + + The total DOM memory measured in KB. + + + + + + + + + + + + The total JavaScript memory measured in KB. + + + + + + + + + + + + The total JavaScript memory in the DedicatedWorker scope measured in KB. + + + + + + + + + + + + The total shared memory measured in KB. + + + + + + + + + + + + + hpayer@chromium.org + mlippautz@chromium.org + ulan@chromium.org + + This event is associated with the performance.memory API. The metrics are + recorded when the memory measurement is reported to the page. All values + represent memory consumption in KB. + + + + The JavaScript memory (usedJSHeapSize) measured in KB. + + + + + + + + + + + + + anthonyvd@chromium.org + joenotcharles@google.com + + Metrics detailing the estimated resources used by pages. The resources of a + renderer process are allocated to all pages hosted in that process using the + algorithm in performance_manager::ProcessMetricsDecorator. An event is + collected for each open page every 5 minutes. + + + + The estimated private footprint of the page, in kilobytes. + + + + + The estimated resident set size of the page, in kilobytes. + + + + + + anthonyvd@chromium.org + spvw@chromium.org + + Metrics detailing the lifecycle state of tabs over the course of the + execution of the browser. One slice is collected on a heartbeat every approx + 100 minutes on average (but dependent on PRNG). A slice is a collection of + PageTimelineState UKM events. One PageTimelineState is recorded for each + browser tab when a slice is collected. + + + + True if Batter Saver Mode is enabled at the time this event is recorded. + + + + + True if this page has been observed to change its favicon or title when in + the background. + + + + + The state the tab was in when the slice was recorded. + + + + + True if this page has been granted the notification permission. + + + + + True if High Efficiency Mode is enabled at the time this event is + recorded. + + + + + True if this page is the active tab in its tab strip. + + + + + True if this page is capturing media (audio/video/screen). + + + + + True if this page is connected to a BT or USB device. + + + + + True if this page is playing audio. + + + + + The total memory footprint of this page at the moment the sample was + recorded, in kilobytes. + + + + + The total resident set size of this page at the moment the sample was + recorded, in kilobytes. + + + + + A strictly increasing ID used to order slices in relation to each other. + This is not zero for the first slice, but rather is a randomly chosen + number to make it more difficult to derive exact browser uptime. + + A "slice" is a collection of PageTimelineStates recorded at the + same time. + + + + + A monotonically increasing generated id assigned to a tab, enabling + analysis of a tab's lifecycle across several slices. This is necessary + because a URL isn't sufficient to identify a tab: multiple tabs can be + open for the same URL, and a tab containing foo.com and be closed, with + another re-opened between two slice snapshots. + + + + + The time in milliseconds spent in the current state. Exponentially + bucketed. + + + + + Time in milliseconds since this tab was created. Exponentially bucketed. + + + + + The time in milliseconds since the last slice was recorded. Exponentially + bucketed. + + + + + Cumulative time in milliseconds spent in foreground by this tab since its + creation. Exponentially bucketed. + + + + + + nator@chromium.org + rayankans@chromium.org + peter@chromium.org + + A website can register to periodically update itself in the background using + a service worker. Updates can be done in response to the periodicsync event. + Logged when a periodicsync event completes and returns a status. We collect + information about retries of this event. + + + + Integer value of the maximum number of allowed retries. + + + + + + + + + + + + Integer value of the number of retries / sync events dispatched. + + + + + + + + + + + + The enum value of the completion status, defined in + blink::ServiceWorkerStatusCode. + + + + + + nator@chromium.org + rayankans@chromium.org + peter@chromium.org + + A website can register to periodically update itself in the background using + a service worker. Updates can be done in response to the periodicsync event + after a periodic Background Sync registration has been created. Logged when + a periodic Background Sync registration is created. We collect information + about this registration request. + + + + Boolean for whether a registration with this tag has already been created. + + + + + Integer value of the minimum interval, in milliseconds, of periodicsync + events requested by the origin for this registration. This number is + exponentially bucketed and uses the UKM GetExponentialBucketMin method + with a value of 2.0 for spacing. + + + + + + timloh@chromium.org + + Metrics for a user's permission actions, logged when a permission prompt is + resolved or when a permission is revoked. Grouped (microphone+camera) + permission prompts are reported separately. + + + + An enum of type PermissionAction. One of GRANTED, DENIED, DISMISSED or + IGNORED. + + + + + An enum of type PermissionRequestGestureType, whether the prompt was + initiated by a user gesture. + + + + + An enum of type PermissionAutoRevocationHistory, representing whether the + permission has been automatically revoked in the past at least once. + + + + + An enum of type ContentSettingsType. + + + + + An enum of type PermissionUmaUtil::PredictionGrantLikelihood describing + the likelihood returned by the Web Permission Predictions Service, if the + service was successfully queried. + + + + + A boolean that records whether the response by the permissions prediction + service was held back. + + + + + The number of dismissed prompts for the given (origin, permission) pair, + capped at 10 dismissals. + + + + + The number of ignored prompts for the given (origin, permission) pair, + capped at 10 ignores. + + + + + An enum of type PermissionPromptDisposition. The UI used to display a + permission prompt, if any. + + + + + An enum of type PermissionPromptDispositionReason. The reason why the + particular prompt disposition was used, if any. + + + + + A bitmask consisting of flags defined in enum type AdaptiveTriggers. A bit + is set if the corresponding adaptive triggering condition has been + satisfied at least once in the past for the user. This metric is not + recorded for users who don't have the activation dry run enabled. + + + + + An enum of type PermissionSourceUI. The UI surface for this action. + + + + + Total number of prompts shown to the user in the last 28 days. The count + is bucketed. The bucket minimums being 20, 15, 12, 10, 9, 8, 7, 6, 5, 4 + and 0. The correct bucket is the first one that is smaller or equal to the + prompt count. + + + + + What percentage of prompts from the last 28 days did the user deny. + Aggregated across all origins, all PermissionTypes and all + PromptDisposition. Rounded to the nearest 10%. + + + + + What percentage of prompts from the last 28 days did the user dismiss. + Aggregated across all origins, all PermissionTypes and all + PromptDisposition. Rounded to the nearest 10%. + + + + + What percentage of prompts from the last 28 days did the user grant. + Aggregated across all origins, all PermissionTypes and all + PromptDisposition. Rounded to the nearest 10%. + + + + + What percentage of prompts from the last 28 days did the user ignore. + Aggregated across all origins, all PermissionTypes and all + PromptDisposition. Rounded to the nearest 10%. + + + + + Total number of prompts shown to the user in the last 28 days for the + currently requested permission type. The count is bucketed. The bucket + minimums being 20, 15, 12, 10, 9, 8, 7, 6, 5, 4 and 0. The correct bucket + is the first one that is smaller or equal to the prompt count. + + + + + What percentage of prompts from the last 28 days did the user deny. + Aggregated across all origins, the current requested PermissionType and + all PromptDisposition. Rounded to the nearest 10%. + + + + + What percentage of prompts from the last 28 days did the user dismiss. + Aggregated across all origins, the current requested PermissionType and + all PromptDisposition. Rounded to the nearest 10%. + + + + + What percentage of prompts from the last 28 days did the user grant. + Aggregated across all origins, the current requested PermissionType and + all PromptDisposition. Rounded to the nearest 10%. + + + + + What percentage of prompts from the last 28 days did the user ignore. + Aggregated across all origins, the current requested PermissionType and + all PromptDisposition. Rounded to the nearest 10%. + + + + + Total number of loud UI prompts shown to the user in the last 28 days. The + count is bucketed. The bucket minimums being 20, 15, 12, 10, 9, 8, 7, 6, 5 + ,4 and 0. The correct bucket is the first one that is smaller or equal to + the prompt count. + + + + + What percentage of prompts from the last 28 days did the user deny. + Aggregated across all origins, all PermissionTypes and loud UI + PromptDispositions only. Rounded to the nearest 10%. + + + + + What percentage of prompts from the last 28 days did the user dismiss. + Aggregated across all origins, all PermissionTypes and loud UI + PromptDispositions only. Rounded to the nearest 10%. + + + + + What percentage of prompts from the last 28 days did the user grant. + Aggregated across all origins, all PermissionTypes and loud UI + PromptDispositions only. Rounded to the nearest 10%. + + + + + What percentage of prompts from the last 28 days did the user ignore. + Aggregated across all origins, all PermissionTypes and loud UI + PromptDispositions only. Rounded to the nearest 10%. + + + + + Total number of loud UI prompts shown to the user in the last 28 days for + the currently requested permission type. The count is bucketed. The bucket + minimums being 20, 15, 12, 10, 9, 8, 7, 6, 5, 4 and 0. The correct bucket + is the first one that is smaller or equal to the prompt count. + + + + + What percentage of prompts from the last 28 days did the user deny. + Aggregated across all origins, currently requested PermissionType and loud + UI PromptDispositions only. Rounded to the nearest 10%. + + + + + What percentage of prompts from the last 28 days did the user dismiss. + Aggregated across all origins, currently requested PermissionType and loud + UI PromptDispositions only. Rounded to the nearest 10%. + + + + + What percentage of prompts from the last 28 days did the user grant. + Aggregated across all origins, currently requested PermissionType and loud + UI PromptDispositions only. Rounded to the nearest 10%. + + + + + What percentage of prompts from the last 28 days did the user ignore. + Aggregated across all origins, currently requested PermissionType and loud + UI PromptDispositions only. Rounded to the nearest 10%. + + + + + Time (in milliseconds) taken by the user to make a decision on a + permission prompt after it was displayed, if at all. Ignoring a prompt + doesn't count as a decision. + + + + + + engedy@chromium.org + ravjit@chromium.org + permissions-dev@chromium.org + + Metrics for usage of capabilities gated behind permission prompts. One event + is recorded per permission type for each page load that uses that permission + type. + + + + An enum of type ContentSettingsType. + + + + + + tommycli@chromium.org + + Recorded when a Flash object instance is created. + + + + + csharrison@chromium.org + jkarlin@chromium.org + + A popup window was closed. + + + + The time (in ms, rounded down to the nearest power of 2) a popup + WebContents is visible / foregrounded, until it is closed. Keyed by the + popup opener's URL (not the URL of the popup). + + + + + Integer value representing how many mouse down, touch start user, or raw + key down interactions the popup had. This is capped at 50. + + + + + Integer value representing how many gesture scroll begin user interactions + the popup had. This is capped at 50. + + + + + Integer value representing how many user interactions the popup had. This + is capped at 100. See IsUserInteractionInputType in web_contents_impl for + what an interaction is. Currently it is a mouse, scroll begin, touch + start, or raw key down event. + + + + + The number of redirects taken by the pop-up's initial navigation. This + does not include javascript navigations initiated by the opening document + for the pop-up. + + + + + The site's safe browsing status if the pop-up's navigation commits. + + + + + Boolean value representing whether the popup was opened via some trusted + event (e.g. context menu, ctrl-click, etc). + + + + + Boolean value to represent whether the popup was closed by user gesture. + + + + + The UI window open disposition used when creating the web contents of the + pop-up. Set by the browser process when the pop up tracker is created. + + + + + + justinmiron@google.com + + Page level pop-up statistics. + + + + Whether a user has, explicitly, allowed all popups on the last committed + url of a page. The user's site level popup content setting is queried when + a page that opened a popup is destroyed. Only emitted when at least one + popup has been opened and the last committed page url is valid. + + + + + + + + + + + + + lfg@chromium.org + + A portal was activated. A portal activation enables a seamless transition + between different pages. See the portals explainer for more details: + https://github.com/WICG/portals/blob/master/README.md. + + + + When this page load happened inside a Portal, this metrics records the + time in milliseconds between the portal activation and the first paint + after activation. + + + + + Measures the time between LCP and the portal activation. Uses exponential + bucketing with a spacing of 2, with the units in milliseconds. + + + + + Indicates whether the portal activation happened before or after the + largest contentful paint. + + + + + + arichiv@chromium.org + miketaylr@chromium.org + + A top level frame received an incoming postMessage event from another top + level frame with a different storage key and a different origin. + + + + The UKM source ID of the postMessage event's source frame, as an integer. + + + + + + arichiv@chromium.org + miketaylr@chromium.org + + A top level frame received an incoming postMessage event from another top + level frame with the same storage key. + + + + The UKM source ID of the postMessage event's source frame, as an integer. + + + + + + arichiv@chromium.org + miketaylr@chromium.org + + A child frame received an incoming postMessage event from a top level frame + with a different storage key and a different origin. + + + + The UKM source ID of the postMessage event's source frame, as an integer. + + + + + + arichiv@chromium.org + miketaylr@chromium.org + + A child frame received an incoming postMessage event from a top level frame + with a different storage key and the same origin. + + + + The UKM source ID of the postMessage event's source frame, as an integer. + + + + + + arichiv@chromium.org + miketaylr@chromium.org + + The frame received an incoming postMessage event. This is recorded only for + postMessage events sent between frames in the same renderer process. + + + + The UKM source ID of the postMessage event's source frame, as an integer. + + + + + + arichiv@chromium.org + miketaylr@chromium.org + + A frame received an incoming postMessage event from another frame where + either of their origins or top level origins are opaque. + + + + The UKM source ID of the postMessage event's source frame, as an integer. + + + + + + arichiv@chromium.org + miketaylr@chromium.org + + A frame on the page received an incoming postMessage event. This is recorded + only for postMessage events sent between frames in different renderer + processes. + + + + The UKM source ID of the postMessage event's source page, as an integer. + + + + + + arichiv@chromium.org + miketaylr@chromium.org + + A top level frame received an incoming postMessage event from a child frame + with a different storage key and a different origin. + + + + The UKM source ID of the postMessage event's source frame, as an integer. + + + + + + arichiv@chromium.org + miketaylr@chromium.org + + A top level frame received an incoming postMessage event from a child frame + with a different storage key and the same origin. + + + + The UKM source ID of the postMessage event's source frame, as an integer. + + + + + + arichiv@chromium.org + miketaylr@chromium.org + + A child frame received an incoming postMessage event from another child + frame with a different storage key and a different origin. + + + + The UKM source ID of the postMessage event's source frame, as an integer. + + + + + + arichiv@chromium.org + miketaylr@chromium.org + + A child frame received an incoming postMessage event from another child + frame with a different storage key and the same origin. + + + + The UKM source ID of the postMessage event's source frame, as an integer. + + + + + + arichiv@chromium.org + miketaylr@chromium.org + + A child frame received an incoming postMessage event from another child + frame with the same storage key. + + + + The UKM source ID of the postMessage event's source frame, as an integer. + + + + + + fdoray@chromium.org + sebmarchand@chromium.org + chrome-catan@google.com + + Metrics to measure power consumption in key usage scenarios, as well as the + time spent in each scenario. These metrics are reported for a fixed interval + of time, the duration of this interval is recorded in the + IntervalDurationSeconds metric. + + The events aren't tied to a specific URL, a timer independent of any load + event runs in Chrome and report these events at regular intervals. All the + metrics associated to this event are for the last interval. The URL attached + to the event is the one that has been visible for the longest time during + the interval, the exact visibility duration for this URL during the interval + is reported in the URLVisibilityTimeSeconds metric. + + e.g., at T-0 an interval ends and this event is emitted, a new interval then + starts. During the interval the users spends 75% of his time watching a + fullscreen video on https://foo.com with 10 tabs opened in background. Just + before the end of the interval the user closes all the tabs but one. An + event will be emitted for https://foo.com at T+X with the following metrics: + IntervalDurationSeconds: X in seconds; URLVisibilityTimeSeconds: 0.75 * X in + seconds; FullscreenVideoSingleMonitorSeconds: 0.75 * X in seconds; + MaxTabCount: 10; TabClosed: 9; ... (not all metrics are listed here because + it'd be too long, but in practice all the metrics are reported for each + interval). + + This is reported on Mac and Windows. See go/chrome_power_use_per_scenario + for more details. + + + + Battery discharge mode describing whether BatteryDischargeRate could be + reported or not, and why. Recorded as enum BatteryDischargeMode in + //tools/metrics/histograms/enums.xml. + + + + + Battery discharge rate per minute, with 1/10000 of full charge resolution, + example: - Battery capacity = 4000 mAh; - Battery charge at the beginning + of the interval: 3900 mAh; - Battery charge at the end of the interval: + 3700 mAh; - Discharge proportion: (3900-3700) / 4000 = 0.05 - Reported + value: 500. + + + + + Indicates if the browser is shutting down when this event is reported. + + + + + The CPU time spent executing code, across all Chrome processes in the + interval. This can exceed 100% in multi-thread processes running on + multi-core systems. + + + + + Whether or not the device has been sleeping at any point during the + interval. + + + + + Sum of the energy impact score for all Chrome processes (Mac-only). + + + + + Time spent playing video in fullscreen, single-monitor. In seconds. This + includes video for any tabs during the interval. + + + + + Sum of idle-wakeups for all Chrome processes (Mac-only). + + + + + The interval duration, in seconds. + + + + + Removed 02/2022 because it's not actively used. + + + The brightness of the main screen in percent or -1 if not available. + Samples have a 20% granularity, e.g. 65% will report as 60%. + + + + + The maximum number of tabs that existed at the same time during the + interval. + + + + + The maximum number of windows that have been visible at the same time. + + + + + The visibility time for the origin of the URL associated with this event, + in seconds. This can differ from URLVisibilityTimeSeconds if there's + multiple tabs loaded with the same URL that are visible during the + interval. E.g. if there's one tab loaded with foo.com/a visible for 1 + second during the interval and one loaded with foo.com/b visible for 2 + seconds the report will have URLVisibilityTimeSeconds = 2 seconds and + OriginVisibilityTimeSeconds = 3 seconds. This can also exceed the interval + duration (e.g. 2 visibles tab with loaded the same origin during the + entire interval). + + + + + Sum of package exits from all Chrome processes (Mac-only). + + + + + The time spent playing audio in at least one tab, in seconds. + + + + + The number of tabs that have been closed during the interval. + + + + + The time spent playing video in at least one visible tab, in seconds. + + + + + The time since the last interaction with the browser when this event gets + recorded, in seconds. + + + + + The time since the last interaction with the system when this event gets + recorded, in seconds. + + + + + The time spent with at least one opened WebRTC connection, in seconds. + + + + + Number of main frame different-document navigations. + + + + + Elapsed time since Chrome has started, in seconds. + + + + + The visibility time for the URL associated with this event, in seconds. + + + + + Number of user interaction (scroll, click or typing) during the interval. + + + + + The time spent capturing video in at least one tab, in seconds. + + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Metrics related to the privacy-preserving prefetch proxy. + + + + Deprecated March 2022. + + + The number of CSS or JS files that were loaded from the cache before first + contentful paint, with a maximum of 10. Always set when this event is + recorded. + + + + + Deprecated March 2022. + + + The number of CSS or JS files that were loaded from the network before + FCP, with a maximum of 10. Always set when this event is recorded. + + + + + The number of days since the user has last visited any page on this + origin, either during a redirect or a committed page. Records -1 if the + origin has never been visited before. Metrics for origins that have been + visited before are capped at 180 then exponentially bucketed into 10 + buckets with values (1,2,3,5,9,15,25,42,70,119). Only set when a query + result was received from the history service before event recording. + + + + + Replaced by PageLoad.MainFrameResource.RequestHadCookies in M92. + + + A boolean indicating if any mainpage request in the redirect chain or + committed request had cookies set on it. Only set when a query result was + received from the cookie manager before event recording. + + + + + Deprecated March 2022. + + + Which links on the Google Search Page were eligible to be prefetched where + the Nth-LSB is set if the Nth page is eligible. + + + + + The number of pages on the Google Search Result Page that were attempted + to be prefetched. + + + + + The number of pages on the Google Search Result page that were eligible to + be prefetched. + + + + + The number of pages on the Google Search Result Page that were + successfully prefetched. + + + + + Replaced by PrefetchProxy.AfterSRPClick.SRPClickPrefetchStatus in M84. + + + This enum records if a cached prefetch page was used, and its probe + status, when the user navigates off the Google Search Result Page. Not set + if there was no prefetch. Values: Prefetch used, no probe = 0. Prefetch + used, successful probe = 1. Prefetch not used, failed probe = 2. + + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Metrics related to the privacy-preserving prefetch proxy on the page load + after the SRP. Recorded only for eligible users on the first mainframe + user-initiated page load immediately after a Google Search Result Page (SRP) + which Chrome parsed and may have prefetched links. + + + + When a user clicks on a Google SRP link, this int records which position + the clicked link was in. Recorded only when the user navigates to a Google + SRP link. + + + + + Time between the prefetch request was sent and the time the response + headers were received. Unset if the headers have not been received by the + time the user navigated to the current page. + + + + + This is 1 if the prefetched resource was prefetched via the private + prefetch proxy. This is not logged otherwise. + + + + + How long the network probe blocked commit in milliseconds. Recorded only + when a probe was required. + + + + + This is 1 if the page load matching the prefetch was in the same + WebContents as the page that triggerd the prefetch. This is not logged + otherwise. + + + + + The outcome of the prefetch eligibility check and possible attempt to + prefetch the resource. The prefetched url is always the committed URL of + the page. See |PrefetchProxyPrefetchStatus| for a mapping of enum values + and their meanings. + + + + + The number of links from the SRP page (the previous page load) that were + eligible for prefetch. Always set when this event is recorded. + + + + + + curranmax@chromium.org + ryansturm@chromium.org + spelchat@chromium.org + + Each event corresponds to a single resource, either mainframe or + subresource, that was prefetched during an Isolated Prerender. Logged one or + many times on a Google Search Result Page for eligible users. + + + + The bucketed number of bytes that transited the network to prefetch this + resource. Only set when the resource was prefetched. + + + + + The number of milliseconds that the prefetch took from start to + completion. Only set when the resource was prefetched. + + + + + How ISP filtering interacted with the mainframe resource if it was + navigated to. Only set when LinkClicked is true. + + + + + Whether the mainframe was navigated to. Always set when the event is + recorded, even on subresources which take the value from their + corresponding mainframe. + + + + + The location in the original navigation prediction of where the mainframe + url was. Always set when the event is recorded, even on subresources which + take the value from their corresponding mainframe. + + + + + The number of milliseconds between the start of the navigation and the + start of the prefetch request. Only set when the resource was attempted to + be prefetched. + + + + + The type of resource that was prefetched, either mainframe or subresource. + Always set when the event is recorded. + + + + + The outcome of the prefetch eligibility check and possible attempt to + prefetch the resource and reuse it. See |PrefetchProxyPrefetchStatus| for + a mapping of enum values and their meanings. Always set when the event is + recorded. + + + + + + jacobstanley@google.com + curranmax@chromium.org + chrome-brapp-loading@google.com + + Logged once for each preconnection request sent to the browser in response + to the user interacting with an anchor element. Associated with the Source + ID of the page triggering the preconnection. + + + + One event for each preload operation that was triggered on the current + page. + + + + + + sreejakshetty@chromium.org + spelchat@chromium.org + chrome-brapp-loading@google.com + + This event is logged for each preloading attempt i.e., for preloading + features like Preresolve, Preconnect, Prerender, Prefetch, and others when + the user navigates or when the WebContents is being destroyed. + + Associated with the Source ID of the page user navigates to. Contains + information about the type of attempt, its eligibility, triggering outcome, + failure reason and whether the attempt was triggered accurately or not. + + Note that this event is sampled based on the PreloadingConfig feature + configuration (in addition to the normal UKM sampling mechanism). The + sampling rate for each event (which may vary for different preloading + features) is logged in the SamplingLikelihood field. + + + + Whether the preloading operation was triggered accurately for the + predicted URL (regardless of the eligibility, failures, etc.). Set to true + if the user navigated to the predicted URL. + + + + + Eligibility status of preloading operation for the prediction. Values are + from the Chrome enum content::PreloadingEligibility. + + + + + Reason why the preloading operation failed. Values are from the enum + specific to the preloading type. + + + + + The outcome of the holdback check. This is not part of eligibility status + to make clarify that this check needs to happen after we are done + verifying the eligibility of a preloading attempt. In general, eligibility + checks can be reordered, but the holdback check always needs to come after + verifying that the preloading attempt was eligible. + + + + + The type of preloading predictor which made the prediction. Values are + from the Chrome enum content::PreloadingPredictor or + ChromePreloadingPredictor. + + + + + The type of preloading operation used for the preloading attempt. Values + are from the Chrome enum content::PreloadingType. + + + + + The amount of time the attempt took to reach a state in which it is ready + to be used for the next navigation, in milliseconds. Note: currently only + Prefetch, Prerender and NoStatePrefetch have a ready state. This field is + only meaningful to these three types of preloading. + + + + + The sampling rate of this particular event multiplied by 1,000,000 + (because we cannot log floating point values in UKM). A value of 1,000,000 + means that the event had a 100% chance of being sampled, whereas a value + of one means that the event had a one-in-a-millon chance of being sampled. + The sampling rate for preloading attempts is set via field trial through + the PreloadingConfig feature. The logged value just represents the + configuration used for that preloading attempt. + + + + + The amount of time the attempt took to reach the next navigation, in + milliseconds. This can happen multiple times, but only the first is + recorded. + + + + + Specifies whether the preloading attempt triggered and was used for the + next navigation. Values are from the Chrome enum + content::PreloadingTriggeringOutcome. + + + + + + sreejakshetty@chromium.org + spelchat@chromium.org + chrome-brapp-loading@google.com + + This is same as Preloading.Attempt but UKM is associated with the primary + triggering page (if exists) and logged when the user navigates away or when + the WebContents is being destroyed. + + Associated with the Source ID of the WebContents primary page where the + preloading attempt is triggered (user navigates from). All the metrics data + are similar to Preloading.Attempt and please see the comments for more + details. + + Note that this event is sampled based on the PreloadingConfig feature + configuration (in addition to the normal UKM sampling mechanism). The + sampling rate for each event (which may vary for different preloading + features) is logged in the SamplingLikelihood field. + + + + Whether the preloading operation was triggered accurately (regardless of + the eligibility, holdback, failures, etc.). + + Set to true if the user navigated to the predicted URL. + + + + + Eligibility status of preloading operation for the prediction. + + + + + Reason why the preloading operation failed. + + + + + The outcome of the holdback check. This is not part of eligibility status + to make clarify that this check needs to happen after we are done + verifying the eligibility of a preloading attempt. In general, eligibility + checks can be reordered, but the holdback check always needs to come after + verifying that the preloading attempt was eligible. + + + + + The type of predictor that made the prediction. Values are from either + content::PreloadingPredictor or ChromePreloadingPredictor. + + + + + The type of preloading operation used for the preloading attempt. + + + + + The amount of time the attempt took to reach a state in which it is ready + to be used for the next navigation, in milliseconds. Note: currently only + Prefetch, Prerender and NoStatePrefetch have a ready state. This field is + only meaningful to these three types of preloading. + + + + + The sampling rate of this particular event multiplied by 1,000,000 + (because we cannot log floating point values in UKM). A value of 1,000,000 + means that the event had a 100% chance of being sampled, whereas a value + of one means that the event had a one-in-a-millon chance of being sampled. + The sampling rate for preloading attempts is set via field trial through + the PreloadingConfig feature. The logged value just represents the + configuration used for that preloading attempt. + + + + + The amount of time the attempt took to reach the next navigation, in + milliseconds. This can happen multiple times, but only the first is + recorded. + + + + + Specifies whether the preloading triggered and was used for the next + navigation. + + + + + + sreejakshetty@chromium.org + spelchat@chromium.org + chrome-brapp-loading@google.com + + This event is logged for each preloading prediction and metrics related to + the preloading predictors like OmniboxDirectURLInput, Speculation Rules and + others when the navigation is finished or when the WebContents is being + destroyed. + + Associated with the Source ID of the page user navigates to. Contains + information about the type of the predictor, its confidence value and + whether the prediction ended up being correct. + + + + Whether the user navigated to the predicted URL. + + + + + The confidence percentage of predictor's correct prediction for + preloading. + + + + + The type of preloading predictor that made the prediction. Values are from + content::PreloadingPredictor or ChromePreloadingPredictor. + + + + + The amount of time the prediction took to reach the next navigation, in + milliseconds. This can happen multiple times, but only the first is + recorded. + + + + + + sreejakshetty@chromium.org + spelchat@chromium.org + chrome-brapp-loading@google.com + + This is the same as Preloading.Prediction but UKM is associated with the + WebContents primary triggering page (if exists) and logged when the user + navigates away or when the WebContents is being destroyed. + + Associated with the Source ID of the primary page where the preloading + prediction is triggered (user navigates from). All the metrics data are + similar to Preloading.Prediction and please see the comments for more + details. + + + + Whether the user navigated to the predicted URL. + + + + + The confidence percentage of predictor's correct prediction for + preloading. + + + + + The type of preloading predictor which made the preloading prediction. + Values are from content::PreloadingPredictor or ChromePreloadingPredictor. + + + + + The amount of time the prediction took to reach the next navigation, in + milliseconds. This can happen multiple times, but only the first is + recorded. + + + + + + ksakamoto@chromium.org + nhiroki@chromium.org + + Metrics related to Prerender2 + (https://docs.google.com/document/d/1P2VKCLpmnNm_cRAjUeE-bqLL0bslL_zKqiNeCzNom_w/edit?usp=sharing). + + + + A status of a prerendering attempt. Recorded as enum + PrerenderHostFinalStatus in //tools/metrics/histograms/enums.xml. + + This is replicated as Prerender.Experimental.PrerenderHostFinalStatus.* in + UMA. + + + + + + + + + + + + The average value of user interaction latency above budget of a + prerendered page after it is successfully activated, in ms. For this + metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration and we deduct a budget + from the original value. If the latency value is below the budget, it will + be treated as 0 ms. Each type of interaction has its own budget. + + + + + The duration between the hardware timestamp and the start of event + processing on the main thread for the first meaningful input. Recorded on + the prerender activation. + + + + + The number of distinct user interactions on a prerendered page after it is + successfully activated. See definition of user interaction: + https://web.dev/better-responsiveness-metric/#group-events-into-interactions + + + + + An approximation of a high percentile of user interaction latency of a + prerendered page after it is successfully activated, in ms. For this + metric, we measure the latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration. + + + + + + + + + + + + + + + + + The maximum value of user interaction latency of a prerendered page after + it is successfully activated, in ms. For this metric, we measure the + latency of user interactions by + Responsiveness.UserInteraction.MaxEventDuration. + + + + + Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that + has occurred on the prerendered page that is successfully activated in a + session window. The gap between two consecutive shifts in a window is not + bigger than 1000ms and the maximum window size is 5000ms. This metric's + integral value is 100x the fractional cumulative layout shift score + described in the explainer. + + + + + A boolean indicating if any prerender activation page load mainpage + resource has a 'Cache-control: no-store' response header. Recorded only + for main frame request. + + + + + Removed March 2023. + + + The |page_load_metrics::PageEndReason| for the prerender's activation. + + + + + + + + + + + + The duration in milliseconds from time of activation navigation start to + the time when the page first paints content. A contentful paint includes a + paint of text, image, SVG, or canvas. + + + + + + + + + + + + The duration in milliseconds from time of activation navigation start to + the time when the page first paints the largest content (text or image) + within viewport, across all frames. + + + + + + + + + + + + The duration in milliseconds from the start of initial prerendering + navigation to the start of activation navigation. This corresponds to the + activationStart attribute of PerformanceNavigationTiming. + + + + + A boolean that is set to true if the page triggered prerendering. + + Unlike other PrerenderPageLoad metrics, this is recorded not for + prerendered page loads, but for page loads that initiated prerender. + + + + + A boolean that is set to true if the page was prerendered and later + activated. Cancelled prerender page loads are not logged. + + + + + + muyaoxu@google.com + openscreen-eng@google.com + + Records when users start a Presentation and receive a response from the + receiver. Android only. The following failures are not recorded because they + don't represent an actual error: (1) + PresentationErrorType::PRESENTATION_REQUEST_CANCELLED This error is created + when users close the dialog without starting a Presentation. (2) + PresentationErrorType::NO_PRESENTATION_FOUND This error might happen when a + website implementing CastSDK try to join a route every time the page loads. + + + + Records whether the users' request to start a Presentation with a + "cast:" presentation URL succeed. + + + + + Records whether the users' request to start a Presentation through + RemotePlayback succeed. + + + + + + + Obsoleted 01/2022. + + ryansturm@chromium.org + + Previews related metrics associated with a page load. See + //components/previews/. + + + + Deprecated June 2019 + + + Set to 1 when a user is shown a client lo-fi image in a page load. + + + + + Replaced by the PreviewsCoinFlip event in M78. + + + Set to 0 if there was no attempted preview for this page load, or the coin + flip holdback is disabled in this session. Set to 1 if a preview was + attempted and was allowed to proceed by the coin flip. Set to 2 if a + preview would have been attempted but was held back by the coin flip. Note + that a non-zero value in this field implies previews_likely. + + + + + Deprecated Feb 2021. + + + Set to 1 when a user is shown a DeferAllScript preview on a page load. + + + + + Deprecated Feb 2021. + + + Set to the value of the last known reason a DeferAllScript preview was not + eligible on this page load. The value of this metric corresponds to the + PreviewsEligibilityReason enum. This metric is only set when it is + non-zero. + + + + + Set to 1 when a user is shown a lite page in page load. + + + + + Removed in M84. + + + Set to 1 when a user is shown a lite page redirect in page load. + + + + + Removed in M84. + + + Set to the value of the last known reason a Lite Page Redirect preview was + not eligible on this page load. The value of this metric corresponds to + the PreviewsEligibilityReason enum. This metric is only set when it is + non-zero. + + + + + Feature removed in M79. + + + Set to the number of milliseconds spent restarting navigations when a Lite + Page Redirect preview is attempted, whether or not it is committed, during + the page load. + + + + + Deprecated December 2020. + + + Set to 1 when a user is shown a NoScript preview on a page load. + + + + + Deprecated December 2020. + + + Set to the value of the last known reason a NoScript preview was not + eligible on this page load. The value of this metric corresponds to the + PreviewsEligibilityReason enum. This metric is only set when it is + non-zero. + + + + + Deprecated December 2020. + + + Set to the value of the last known reason an Offline preview was not + eligible on this page load. The value of this metric corresponds to the + PreviewsEligibilityReason enum. This metric is only set when it is + non-zero. + + + + + Deprecated December 2020. + + + Set to 1 when a user is shown an offline preview page in page load. + + + + + Deprecated Feb 2021. + + + Set to 1 when a user clicks "Show Original" on a preview page + load using the infobar. Set to 2 when a user opts out of a Preview using + the omnibox. + + + + + Deprecated Feb 2021. + + + Set to 1 when previews were enabled but no preview was attempted because + the origin provided a Cache-Control:no-transform header in the main frame + response. This is a directive from the origin to not perform any + transformation so in the context of the Previews feature, it is an opt-out + by the origin site (rather than the user). + + + + + Deprecated Feb 2021. + + + Set to 1 when a preview will be attempted for this page load. Otherwise + this is not set. This does not imply that a preview will be committed, + only that one will be attempted. This is set to 1 even if this page load + is impacted by the coin flip holdback. + + + + + Deprecated Feb 2021. + + + Set to the value of the last known reason a Data Reduction Proxy Lite Page + preview was not eligible on this page load. The value of this metric + corresponds to the PreviewsEligibilityReason enum. This metric is only set + when it is non-zero. + + + + + Deprecated December 2020. + + + Set to 1 when a user is shown a resource loading hints based preview on a + page load. + + + + + Deprecated December 2020. + + + Set to the value of the last known reason a Resource Loading Hints preview + was not eligible on this page load. The value of this metric corresponds + to the PreviewsEligibilityReason enum. This metric is only set when it is + non-zero. + + + + + Set to 1 if the data saver feature was enabled in Chrome at the time of + the page commit. + + + + + Deprecated June 2019 + + + Set to 1 when a user is shown a server lo-fi image in a page load. + + + + + + + Deprecated Feb 2021. + + robertogden@chromium.org + + Coin flip experiment metrics associated with a Preview page load. See + //components/previews/. This is recorded as a separate event from Previews + so that it can be recorded earlier than commit which happens in some cases. + + + + Deprecated Feb 2021. + + + Set to 0 if there was no attempted preview for this page load, or the coin + flip holdback is disabled in this session. Set to 1 if a preview was + attempted and was allowed to proceed by the coin flip. Set to 2 if a + preview would have been attempted but was held back by the coin flip. Note + that a non-zero value in this field implies previews_likely. + + + + + + + Deprecated Feb 2021. + + dougarnett@chromium.org + + Metrics associated with the intervention of deferring the execution of + synchronous script (typically due to a DeferAllScript Preview). This is + recorded when the HTML parsing of a mainframe has completed. + + + + Deprecated Feb 2021. + + + The total number of mainframe scripts (inline and external) whose + execution was force deferred (i.e., that otherwise would have been render + blocking). + + + + + Deprecated Feb 2021. + + + The total number of mainframe external scripts whose execution was force + deferred (i.e., that otherwise would have been render blocking). + + + + + + + Deprecated Feb 2021. + + jegray@chromium.org + + Metrics associated with loading a resource loading hints based preview. This + is recorded when the URL's document finishes loading. See + //components/previews/. + + + + The number of high priority resource requests that were blocked by the + resource loading hints based preview while the URL's document was loading. + + + + + The number of low priority resource requests that were blocked by the + resource loading hints based preview while the URL's document was loading. + + + + + The number of medium priority resource requests that were blocked by the + resource loading hints based preview while the URL's document was loading. + + + + + The number of very high priority resource requests that were blocked by + the resource loading hints based preview while the URL's document was + loading. + + + + + The number of very low priority resource requests that were blocked by the + resource loading hints based preview while the URL's document was loading. + + + + + The total number of patterns to block included in the resource loading + hints based preview. + + + + + The number of patterns that blocked at least one resource request in the + resource loading hints based preview while the URL's document was loading. + + + + + + + Obsoleted 01/2022. + + rajendrant@chromium.org + mcrouse@chromium.org + + Records coverage metrics for https image compression. The network data use + of images is recorded with breakdown of whether the image was compressible + by redirecting to optimized version, or if not the reason for its + ineligblity is recorded. The bytes are rounded down to the exponential + bucket with factor of 1.3. + + + + Total image bytes that can be compressed, by redirecting to optimized + versions to save data. + + + + + Total bytes of images that were ineligible to be compressed due to the + image hint list was not retrieved in time before the image fetch started, + and the image URL was not in the hint list as well, which finished + fetching later. + + + + + Total bytes of images that were ineligible to be compressed due to the + image hint list was not retrieved in time before the image fetch started, + but the image URL was found in the hint list, which finished fetching + later. + + + + + Total bytes of images that were ineligible to be compressed due to the + image hint list was not retrieved within within certain time limit of + navigation start. + + + + + Total bytes of images that were ineligible to be compressed due to the + image URL not exist in the image hint list. + + + + + Total bytes of images that were ineligible to be compressed due to other + reasons not listed here, such as subframe images, non img element, + javascript initiated image, etc. + + + + + + + Obsoleted Jan 2022. + + rajendrant@chromium.org + mcrouse@chromium.org + + Records image loading and network data use metrics for https image + compression. Recorded when an image request completes with successful + compression or fails and fetches original image. The bytes are rounded down + to the exponential bucket with factor of 1.3. + + + + The compression percent of this image recorded if the image has been + compressed: (1-compressed_bytes/original_bytes)*100% + + + + + The duration in milliseconds from time of navigation start to the time the + image request was sent to the origin or compression server. + + + + + The duration in milliseconds from time of navigation start to the time the + image request started. + + + + + The duration in milliseconds from time of navigation start to the time the + image response headers were received. + + + + + The original size of the image before compression. For compressed images + this is the original size retrieved from response headers. For + non-compressed images this is the network bytes. + + + + + Enumerates the different results possible for subresource redirection, + such as redirectable or different reasons of ineligibility. + + + + + The duration in milliseconds to fetch the robots rules. Recorded for each + image that goes through the robots rules check. + + + + + + yfriedman@chromium.org + hartmanng@chromium.org + pkotwicz@chromium.org + + PWA usage metrics recorded during a user's interaction with the site. + + + + Launch source of the WebAPK (tap from homescreen, WebShareTarget, + deeplink, etc). + + + + + + + + + + + + + + + Recorded every time a non-installed "WebAPKable" site is + visited. + + + + + + + + + + + + + + + + gilmanmh@google.com + kjbooker@google.com + dtseng@chromium.org + + Recorded after a user activates Reader Mode for a given page. + + + + Whether the user activated Reader Mode via the omnibox badge. + + + + + + + + + + + + + + gilmanmh@google.com + kjbooker@google.com + dtseng@chromium.org + + Recorded when the Reader Mode badge receives a result from the + distillability service. + + + + Whether the distillability service determined the page to be distillable, + i.e. likely to render well in Reader Mode. + + + + + + + + + + + + + + altimin@chromium.org + + Sampled task from the renderer main thread. Sample rate is controlled + dynamically. See + blink::scheduler::MainThreadSchedulerImpl::ShouldRecordTaskUkm. + + + + Frame status of the frame associated with the context of this task. See + blink::scheduler::FrameStatus for the values of this enum. + + + + + Whether the frame which the task is associated with is an out-of-process + iframe. Boolean encoded as an integer (0/1). + + + + + Number of page schedulers in this process. If the value equals one, global + per-process tasks can be attributed to the URL. + + + + + Type of the task queue which this task was posted to. See + blink::scheduler::MainThreadTaskQueue::TaskType for the values of this + enum. + + + + + Whether renderer was playing audio when this task was completed. Boolean, + encoded as an integer (0/1). + + + + + Whether renderer was backgrounded when this task was completed. Boolean, + encoded as an integer (0/1). + + + + + Whether renderer was hidden when this task was completed. Boolean, encoded + as an integer (0/1). + + + + + Seconds since the renderer was backgrounded, recorded when the task was + completed. Only set if the renderer is backgrounded. + + + + + CPU duration of this task in microseconds. + + + + + Duration of this task in microseconds. + + + + + blink::TaskType for the current task. + + + + + blink::ThreadType for the thread the current task was executed on. + + + + + MainThreadSchedulerImpl's UseCase when this task was completed. See + blink::scheduler::UseCase for the values of this enum. + + + + + The version of this metric, which is used to track the actual set of + values present across different builds and channels. Hardcoded into the + binary and incremented each time a new field is added or existing is + changed. Integer. + + + + + + juanmojica@google.com + benwgold@google.com + + Metric recorded when a context menu item is selected. This is currently only + recorded for Lens context menu items. + + + + The menu item selected by the user on the context menu. + + + + + + mmocny@chromium.org + sullivan@chromium.org + speed-metrics-dev@chromium.org + + Metrics that are associated with user interactions and recorded when users + interact with web pages. Currently we are interested in keyboard, tap, click + and drag. A user interaction often encompasses multiple input events. For + keyboard interactions, we only care about keydown and keyup. For tap, click + and drag, we only measure pointerdown, pointerup and click. + + + + The type of the user interaction that triggered input event sequence, not + the input event type. It can be keyboard, tap, click or drag. + + + + + The longest input event duration within the user interaction. The unit of + duration is ms. For example, if a user pressed a key, we can get a keydown + and a keyup. If the duration(keydown) > duration(keyup), the value of + this metric will be duration(keydown). + + + + + The sum of input event durations within the user interaction without + double counting the overlap. The unit of duration is ms. For example, if a + user pressed a key, we can get a keydown and a keyup. The value of this + metric will be duration(keydown) + duration(keyup) - + duration(intersection(keydown, keyup)). + + + + + + npm@chromium.org + tdresser@chromium.org + + Responsiveness metrics recorded once every 5 seconds. + + + + Removed June 2020. + + + Duration in MS for expected task queueing duration. The metric reflects + the responsiveness of a tab. A lower value means the tab will respond to + inputs faster. This metric is equal to + RendererScheduler.ExpectedTaskQueueingDuration of the main frame process. + + + + + + chrome-intelligence-core@google.com + tbansal@chromium.org + + Metrics on the salient image of the page, one record per page load commit + and has an annotation calculated on it. + + + + Records whether salient image was available or not for this page, the + source of the salient image and why it was unavailable. + + + + + + bingler@chromium.org + + + Removed Apr 2020 as this metric doesn't capture the correct information. + https://crbug.com/1066231 + + + An enum that records the type of same-site context if a cookie marked with + SameSite=Lax or SameSite=Strict is sent across schemes on a request. E.x.: + An http site making a request to an https site. + + + + + + bingler@chromium.org + + + Removed Apr 2020 as this metric doesn't capture the correct information. + https://crbug.com/1066231 + + + An enum that records the type of same-site context if a cookie marked with + SameSite=Lax or SameSite=Strict is set across schemes on a response. E.x.: + An http site returning a response to an https site. + + + + + + bingler@chromium.org + + A collection of metrics which are recorded for cookies whose inclusion would + be changed if the redirect chain was considered in their same-site + calculation. This change in inclusion is because the same-site context would + "downgrade" from a more permissive context to a less permissive + context, one which may not allow a cookie's inclusion. + + + + Records the age of the cookies, in minutes, for cookies which are being + read (on a requset or via JS). The value rounded down to the exponential + bucket with factor of 2.0. + + + + + Records the SameSite value of the cookie for cookies which are being read + (on a request or via JS). + + + + + Records the SameSite value of the cookie for cookies which are being + written (on a response or via JS). + + + + + + bingler@chromium.org + + + An enum which records the type of schemeful same-site downgrade applied to + a cookie which is being sent on a request along with the secureness of the + origin the cookie is attempting to be sent to. This is recorded once per + cookie when the cookie is included in the request or if the cookie + excluded due to insufficient same-site context only. Cookies that meet the + above conditions but without a downgrade warning are not recorded. + + + + + An enum which records the type of schemeful same-site downgrade applied to + a cookie which is being set by a response along with the secureness of the + origin that is attempting to set the cookie. This is recorded once per + cookie when the cookie is allowed to be set or if the cookie is ignored + due to insufficient same-site context only. Cookies that meet the above + conditions but without a downgrade warning are not recorded. + + + + + + pdyson@chromium.org + + Collects metrics periodically and on screen brightness change. + + + + Percentage of battery, rounded down to a multiple of 5%, i.e. [0, 5%) is + mapped to 0, [5%, 10%) is mapped to 5 etc. + + + + + Screen percentage brightness. between 0 and 100. + + + + + An enum representing the of the week that the data was logged, defined in + |ash::power::ml::ScreenBrightnessEvent::Features::ActivityData:: + DayOfWeek|. + + + + + An enum representing the mode of the device, defined in + |ash::power::ml::ScreenBrightnessEvent::Features::EnvData:DeviceMode| + + + + + The hour of the day when the data is logged. Hours since midnight in the + local time zone. + + + + + Boolean value to represent whether the auto click is currently enabled. + + + + + Boolean value to represent whether the braille display is currently + enabled. + + + + + Boolean value to represent whether the caret highlight is currently + enabled. + + + + + Boolean value to represent whether the cursor highlight is currently + enabled. + + + + + Boolean value to represent whether the focus highlight is currently + enabled. + + + + + Boolean value to represent whether the high contrast is currently enabled. + + + + + Boolean value to represent whether the large cursor is currently enabled. + + + + + Boolean value to represent whether the full screen magnifier is currently + enabled. + + + + + Boolean value to represent whether the mono audio is currently enabled. + + + + + Boolean value to represent whether select to speak is currently enabled. + + + + + Boolean value to represent whether the spoken feedback is currently + enabled. + + + + + Boolean value to represent whether Switch Access is currently enabled. + + + + + Boolean value to represent whether video is currently playing. + + + + + Boolean value to represent whether the virtual keyboard is currently + enabled. + + + + + Time between the last activity and when the data was logged. A duration + timestamp in seconds. + + + + + The temperature percentage of night light screen color adjustment when + night light is on. Ranges from 0 to 100. + + + + + The number of keyboard events in the last hour. + + + + + The number of mouse events in the last hour. + + + + + The number of stylus events in the last hour. + + + + + The number of touch events in the last hour. + + + + + Boolean value to represent whether the device is currently on battery + power. + + + + + The brightness of the screen prior to the time at which the current event + was logged. + + + + + The reason that the event is logged. Values are enumerated in + |ash::power::ml::ScreenBrightnessEvent::Event::Reason|. + + + + + How long the user has been active. A duration timestamp in seconds. + + + + + The ID of this event in the current session. + + + + + Time in seconds since last time an event was logged. + + + + + + jdeblasio@chromium.org + enamelites@google.com + beggs@google.com + + Collected when any safety tip heuristic triggers, regardless of whether the + Safety Tip UI is shown. + + + + How the user interacted with the UI, if applicable. + + + + + The final reported Safety Tip status. + + + + + Whether the sensitive keywords heuristic triggered. + + + + + Whether the lookalike keywords heuristic triggered. + + + + + Whether the server-side blocklist heuristic triggered. + + + + + Whether the user had already ignored a safety tip warning for this page in + the past, meaning no tip was shown. + + + + + + cthomp@chromium.org + enamelites@google.com + + Site engagement score behavior for a page with a given Security Level. + + + + The final SecurityLevel of the page before it is closed or another + navigation occurs. Based on the enum security_state::SecurityLevel. + + + + + + + + + + + + + The initial SecurityLevel of the page when the navigation commits. Based + on the enum security_state::SecurityLevel. + + + + + + + + + + + + + The Safety Tip status of the page when the navigation commits, after the + reputation check finishes. + + + + + + + + + + + + + The change in Site Engagement score for the page before it is closed or + another navigation occurs compared to the score from when the navigation + committed. Score is between 0.0 and 100.0; delta is between -100.0 and + 100.0. Rounded to the nearest integer. + + + + + The final Site Engagement score for the page before it is closed or + another navigation occurs. Score is between 0.0 and 100.0; this metric is + rounded down to a multiple of 10 to limit granularity. + + + + + + nyquist@chromium.org + qinmin@chromium.org + ssid@chromium.org + + Input and output tensors for executing the ML model identified by + optimization targets and version. The input tensors can come from UMA or + UKM, with or without aggregation. Check model metadata for more information + about each tensor. Since all the ML tensors are floats, they are encoded + into int64 and will be decoded later during model training. This metric is + recorded after an ML model is executed, and the actual result is collected. + + + + UMA or UKM metrics related to the features affected by the ML model, with + or without aggregation, after running the features as instructed by the ML + model. For example, this can be the 7 day total button clicks after an ML + model decides to show it. No encoding is used as this is normally a count + or sum of a UMA/UKM metric. + + + + + The 2nd UMA or UKM metrics related to the features affected by the ML + model, with or without aggregation, after running the features as + instructed by the ML model. No encoding is used. + + + + + The 3rd UMA or UKM metrics related to the features affected by the ML + model, with or without aggregation, after running the features as + instructed by the ML model. No encoding is used. + + + + + The 4th UMA or UKM metrics related to the features affected by the ML + model, with or without aggregation, after running the features as + instructed by the ML model. No encoding is used. + + + + + The 5th UMA or UKM metrics related to the features affected by the ML + model, with or without aggregation, after running the features as + instructed by the ML model. No encoding is used. + + + + + The 6th UMA or UKM metrics related to the features affected by the ML + model, with or without aggregation, after running the features as + instructed by the ML model. No encoding is used. + + + + + The input tensor at index 0 represented in IEEE 754 double precision. + + + + + The input tensor at index 1 represented in IEEE 754 double precision. + + + + + The input tensor at index 10 represented in IEEE 754 double precision. + + + + + The input tensor at index 11 represented in IEEE 754 double precision. + + + + + The input tensor at index 12 represented in IEEE 754 double precision. + + + + + The input tensor at index 13 represented in IEEE 754 double precision. + + + + + The input tensor at index 14 represented in IEEE 754 double precision. + + + + + The input tensor at index 15 represented in IEEE 754 double precision. + + + + + The input tensor at index 16 represented in IEEE 754 double precision. + + + + + The input tensor at index 17 represented in IEEE 754 double precision. + + + + + The input tensor at index 18 represented in IEEE 754 double precision. + + + + + The input tensor at index 19 represented in IEEE 754 double precision. + + + + + The input tensor at index 2 represented in IEEE 754 double precision. + + + + + The input tensor at index 20 represented in IEEE 754 double precision. + + + + + The input tensor at index 21 represented in IEEE 754 double precision. + + + + + The input tensor at index 22 represented in IEEE 754 double precision. + + + + + The input tensor at index 23 represented in IEEE 754 double precision. + + + + + The input tensor at index 24 represented in IEEE 754 double precision. + + + + + The input tensor at index 25 represented in IEEE 754 double precision. + + + + + The input tensor at index 26 represented in IEEE 754 double precision. + + + + + The input tensor at index 27 represented in IEEE 754 double precision. + + + + + The input tensor at index 28 represented in IEEE 754 double precision. + + + + + The input tensor at index 29 represented in IEEE 754 double precision. + + + + + The input tensor at index 3 represented in IEEE 754 double precision. + + + + + The input tensor at index 30 represented in IEEE 754 double precision. + + + + + The input tensor at index 31 represented in IEEE 754 double precision. + + + + + The input tensor at index 32 represented in IEEE 754 double precision. + + + + + The input tensor at index 33 represented in IEEE 754 double precision. + + + + + The input tensor at index 34 represented in IEEE 754 double precision. + + + + + The input tensor at index 35 represented in IEEE 754 double precision. + + + + + The input tensor at index 36 represented in IEEE 754 double precision. + + + + + The input tensor at index 37 represented in IEEE 754 double precision. + + + + + The input tensor at index 38 represented in IEEE 754 double precision. + + + + + The input tensor at index 39 represented in IEEE 754 double precision. + + + + + The input tensor at index 4 represented in IEEE 754 double precision. + + + + + The input tensor at index 40 represented in IEEE 754 double precision. + + + + + The input tensor at index 41 represented in IEEE 754 double precision. + + + + + The input tensor at index 42 represented in IEEE 754 double precision. + + + + + The input tensor at index 43 represented in IEEE 754 double precision. + + + + + The input tensor at index 44 represented in IEEE 754 double precision. + + + + + The input tensor at index 45 represented in IEEE 754 double precision. + + + + + The input tensor at index 46 represented in IEEE 754 double precision. + + + + + The input tensor at index 47 represented in IEEE 754 double precision. + + + + + The input tensor at index 48 represented in IEEE 754 double precision. + + + + + The input tensor at index 49 represented in IEEE 754 double precision. + + + + + The input tensor at index 5 represented in IEEE 754 double precision. + + + + + The input tensor at index 6 represented in IEEE 754 double precision. + + + + + The input tensor at index 7 represented in IEEE 754 double precision. + + + + + The input tensor at index 8 represented in IEEE 754 double precision. + + + + + The input tensor at index 9 represented in IEEE 754 double precision. + + + + + The version of the ML model used for execution. May not be a counter int. + + + + + The OptimizationTarget associated with the ML model. This is an enum for + classifying different ML models. It represents what an model is trying to + optimize. + + + + + The time from last segment selection to when the UKM is recorded, in + seconds. + + + + + Predicted result from executing the ML model. This is normally a score for + determining whether to show a particular feature. The value is a floating + number between 0 to 1 and encoded into IEEE 754 double precision here. + This is being deprecated. Use PredictionResult1 instead. Will add + deprecated flag once all the code are start using PredictionResult1. + + + + + The 1st output when inferencing the ML model with input data. The value is + a floating number between 0 to 1 and encoded into IEEE 754 double + precision here. + + + + + The 10th output when inferencing the ML model with input data. The value + is a floating number between 0 to 1 and encoded into IEEE 754 double + precision here. + + + + + The 2nd output when inferencing the ML model with input data. The value is + a floating number between 0 to 1 and encoded into IEEE 754 double + precision here. + + + + + The 3rd output when inferencing the ML model with input data. The value is + a floating number between 0 to 1 and encoded into IEEE 754 double + precision here. + + + + + The 4th output when inferencing the ML model with input data. The value is + a floating number between 0 to 1 and encoded into IEEE 754 double + precision here. + + + + + The 5th output when inferencing the ML model with input data. The value is + a floating number between 0 to 1 and encoded into IEEE 754 double + precision here. + + + + + The 6th output when inferencing the ML model with input data. The value is + a floating number between 0 to 1 and encoded into IEEE 754 double + precision here. + + + + + The 7th output when inferencing the ML model with input data. The value is + a floating number between 0 to 1 and encoded into IEEE 754 double + precision here. + + + + + The 8th output when inferencing the ML model with input data. The value is + a floating number between 0 to 1 and encoded into IEEE 754 double + precision here. + + + + + The 9th output when inferencing the ML model with input data. The value is + a floating number between 0 to 1 and encoded into IEEE 754 double + precision here. + + + + + The OptimizationTarget of the last selected segment before UKM is + recorded. Some features might have several ML models with them. This + metric records which model is currently selected for the feature. + + + + + + yyanagisawa@chromium.org + chrome-worker@google.com + + Events taken at the end of the loading pages controlled by the service + workers. It means that the metrics is recorded only if the loading is + successfully completed. + + + + True if there are network fallback sub-resources of audios in the page. + (boolean value. true: 1 or false: 0) + + + + + True if there are service workers handling sub-resource loads of audios in + the page. (boolean value. true: 1 or false: 0) + + + + + True if there are network fallback sub-resources of CSSStyleSheet in the + page. (boolean value. true: 1 or false: 0) + + + + + True if there are service workers handling sub-resource loads of + CSSStyleSheet in the page. (boolean value. true: 1 or false: 0) + + + + + True if there are network fallback sub-resources of CSSStyleSheet in the + page. (boolean value. true: 1 or false: 0) + + + + + True if there are service workers handling sub-resource loads of fonts in + the page. (boolean value. true: 1 or false: 0) + + + + + True if there are network fallback sub-resources of images in the page. + (boolean value. true: 1 or false: 0) + + + + + True if there are service workers handling sub-resource loads of images in + the page. (boolean value. true: 1 or false: 0) + + + + + True if there are network fallback sub-resources of link prefetches in the + page. (boolean value. true: 1 or false: 0) + + + + + True if there are service workers handling sub-resource loads of link + prefetches in the page. (boolean value. true: 1 or false: 0) + + + + + Enum value to represent how main / sub resource are loaded. + + + + + True if there are network fallback sub-resources of manifests in the page. + (boolean value. true: 1 or false: 0) + + + + + True if there are service workers handling sub-resource loads of manifests + in the page. (boolean value. true: 1 or false: 0) + + + + + True if there are network fallback sub-resources of CSSStyleSheet in the + page. (boolean value. true: 1 or false: 0) + + + + + True if there are service workers handling sub-resource loads of scripts + in the page. (boolean value. true: 1 or false: 0) + + + + + True if there are network fallback sub-resources of speculation rules in + the page. (boolean value. true: 1 or false: 0) + + + + + True if there are service workers handling sub-resource loads of + speculation rules in the page. (boolean value. true: 1 or false: 0) + + + + + An integer ratio (0 - 100) to represent the ratio of network fallbacks + from the total subresource load. + + + + + True if there are network fallback sub-resources of SVG documents in the + page. (boolean value. true: 1 or false: 0) + + + + + True if there are service workers handling sub-resource loads of SVG + documents in the page. (boolean value. true: 1 or false: 0) + + + + + True if there are network fallback sub-resources of text tracks in the + page. (boolean value. true: 1 or false: 0) + + + + + True if there are service workers handling sub-resource loads of text + tracks in the page. (boolean value. true: 1 or false: 0) + + + + + The number of network fallbacks during sub resource load. This is rounded + down to the nearest exponential bucket (with a bucket ratio on 1.15). + + + + + The number of all sub resource load of the page controlled by the service + worker. This is rounded down to the nearest exponential bucket (with a + bucket ratio on 1.15). + + + + + True if there are network fallback sub-resources of videos in the page. + (boolean value. true: 1 or false: 0) + + + + + True if there are service workers handling sub-resource loads of videos in + the page. (boolean value. true: 1 or false: 0) + + + + + True if there are network fallback sub-resources of XSLStyleSheet in the + page. (boolean value. true: 1 or false: 0) + + + + + True if there are service workers handling sub-resource loads of + XSLStyleSheet in the page. (boolean value. true: 1 or false: 0) + + + + + + jeffreycohen@chromium.org + chrome-creation@google.com + + Event representing the user action of selecting a piece of text on a page + and selecting the option to create a link which would contain the necessary + text fragment information to link back to this specific part of the page. + + + + Record the type of error which prevented a successful link generation. + Only recorded if the link creation failed. + + + + + Whether the generation of a link with text fragments was successful or + not. + + + + + + jeffreycohen@chromium.org + chrome-creation@google.com + + Event representing the user action of selecting a piece of text on a page + and selecting the option to create a link which would contain the necessary + text fragment information to link back to this specific part of the page. + + + + Record the type of error which prevented offering link to text to user. + Only recorded if the link was not offered to the user. + + + + + Whether the link with text fragments was successful offered to the user or + not. + + + + + + jeffreycohen@chromium.org + chrome-creation@google.com + + Event representing the browser action of highlighting (incl. scroll-to) text + fragments that were part of the URL. This happens only once during page + load. + + + + Record the type of source for the current navigation, which has text + fragments. At the moment, this maps to identifying whether the source is a + known search engine or not. + + + + + Whether the highlighting of a set of text fragments was a complete success + or not. + + + + + + knollr@chromium.org + + Collected when a user finishes a Click to Call journey. + + + + Specifies the entry point of the user journey (i.e. left click, right + click, text selection). + + + + + Boolean value indicating whether any (>0) apps are available that the + call could be sent to. + + + + + Boolean value indicating whether any (>0) devices are available that + the call could be sent to. These belong to the same account and are + running Android. + + + + + Whether the user selected a device, an app or nothing (i.e. dismissal) in + the user interface. For some entry points this might always be the same + value (e.g. right clicks always select devices). + + + + + + wychen@chromium.org + yuezhanggg@chromium.org + + Metrics related to DOM-based AddToCart button detection in ChromeCart. + + + + Logged when DOM-based AddToCart button detection heuristic is executed and + records the execution time. This is expressed in microseconds. + + + + + + wychen@chromium.org + yuezhanggg@chromium.org + + Metrics related to performance of cart content extraction in ChromeCart. + + + + Logged when cart content extraction is executed for ChromeCart and records + the elapsed time within the JavaScript, so script parsing/compilation time + is excluded. Shopping.CartExtraction.ExtractionExecutionTime is measured + in native, and is the end-to-end elapsed time. This is expressed in + milliseconds. + + + + + Logged when cart content extraction is executed for ChromeCart and records + the elapsed time between the start and the end of the extraction + JavaScript request execution. This includes script parsing/compilation + time and sleeping time. This is expressed in milliseconds. + + + + + Logged when cart content extraction is executed for ChromeCart and records + the time span of the longest task blocking the main thread of the renderer + process. This is expressed in milliseconds. + + + + + Logged when cart content extraction is executed for ChromeCart and records + whether the cart content extraction has timed out. + + + + + Logged when cart content extraction is executed for ChromeCart and records + the time spent on execution, excluding sleeping time. This is expressed in + milliseconds. + + + + + + wychen@chromium.org + yuezhanggg@chromium.org + + Metrics related to Chrome cart module in Chrome NTP. + + + + Always true. Recorded when users have visited cart page from Chrome cart + module. + + + + + + wychen@chromium.org + yuezhanggg@chromium.org + + Recorded when user submits a form. + + + + Whether the form submission is a shopping transaction. This has 50% chance + randomized. + + + + + + zhiyuancai@chromium.org + ayman@chromium.org + + Recorded when user finishes a navigation while the merchant trust data is + available. + + + + A boolean signaling that data is available. Only records true values. + + + + + + zhiyuancai@chromium.org + ayman@chromium.org + + Recorded when a merchant trust message is clicked by the user. + + + + A boolean signaling that message is clicked. Only records true values. + + + + + + zhiyuancai@chromium.org + ayman@chromium.org + + Recorded when a merchant trust message is displayed to the user. + + + + A boolean signaling that message is displayed. Only records true values. + + + + + + zhiyuancai@chromium.org + ayman@chromium.org + + Recorded when a store info row in trusted surface is clicked by the user. + + + + A boolean signaling that store info row is clicked. Only records true + values. + + + + + + zhiyuancai@chromium.org + ayman@chromium.org + + Recorded when a store info row in trusted surface is displayed to the user. + + + + A boolean signaling that store info row is displayed. Only records true + values. + + + + + + wychen@chromium.org + yuezhanggg@chromium.org + + Recorded when an XHR is about to be sent. + + + + Whether the XHR is to add a product to a shopping cart. This has 50% + chance randomized. + + + + + + + Removed in June 2019 / M77. Some old data has been saved in a + Google-internal doc at go/xsdb-ukm-results (ask owners below for access). + + creis@chromium.org + chrome-site-isolation@google.com + + Resource request response was blocked by the cross-site document blocking + logic in the browser process. + + + + Classification of the Content-Type HTTP response header into one of the + blockable document flavours: html, xml, json, plain. + + + + + ContentLengthWasZero=1 if Content-Length was available and equal to 0. + ContentLengthWasZero=0 otherwise. + + + + + content::ResourceType of the blocked resource (e.g. image / script / xhr / + etc.). + + + + + The HTTP response code (e.g. 200 or 404) associated with the blocked + resource request. + + + + + Whether the HTTP response needed sniffing to confirm its MIME type. + + + + + + thanhdng@chromium.org + jiameng@chromium.org + + Records user activities that are related to charging such as battery + percentage, time, device type, etc. + + + + Percentage of the battery. + + + + + The percentage of the battery at the beginning of the last charge. + + + + + The percentage of the battery that the last charge reached. + + + + + Event's day of the month (e.g. 1-31) in local time zone. + + + + + Event's day of the week in local time zone. Sunday is 0. + + + + + Mode of the device (e.g. closed lid, tablet). + + + + + Type of the device (e.g. laptop, tablet). + + + + + Duratioin of the last time the device was charged in minutes. + + + + + Duration of audio playing in the last 30 minutes (bucketized and in + minutes). + + + + + Duration of video playing in the last 30 minutes (bucketized and in + minutes). + + + + + A unique number that represent order of an event. + + + + + Whether there's any shutdown/suspend actions between the last charge and + current event. + + + + + Whether the device is being charged or not. + + + + + Event's month (e.g. Jan-Dec) in local time zone. January is 1. + + + + + Number of key events in past 30 minutes. + + + + + Number of mouse events in past 30 minutes. + + + + + Number of stylus events in past 30 minutes. + + + + + Number of touch events in past 30 minutes. + + + + + Reason for the logging of an event. + + + + + Brightness of the screen in percent. + + + + + Time of the event in minutes since midnight in the local time zone. + + + + + Time since the last time user unplugged the charger in minutes. + + + + + Timezone difference from the last charge. It is equal to current_timezone + - timezone_from_last_charge. The valid range of time zone value will be + -12 (UTC -12:00) to +14 (UTC +14:00). + + + + + Charge voltage in mV. + + + + + + goto@chromium.org + reillyg@chromium.org + ayui@chromium.org + yigu@chromium.org + + Records performance metrics for SMSReceiver API. + + + + Flag indicating whether the report comes from a cross-origin frame or not. + + + + + Records the result of a call to the SmsReceiver API. + + + + + Records the status of parsing an incoming SMS when using the WebOTP API. + It records one sample per incoming SMS. + + + + + Records the duration from when the API is called to when an SMS has been + successfully received. + + + + + Records the duration from when the API is called to when the user presses + "Allow" to pass the incoming SMS to the site and proceed with + the SMS verification flow. + + + + + Records the duration from when the API is called to when the user presses + "Deny" to terminate the SMS verification flow. + + + + + + + Replaced by SSL.MixedContentShown2. Removed in 03/2021. + + carlosil@chromium.org + + Logged when mixed content is displayed on a site. + + + + A value of the MixedContentType enum, detailing the type of mixed content + included on the site. + + + + + + carlosil@chromium.org + estark@chromium.org + + Logged when mixed content is loaded, differentiated by blockable, + optionally-blockable mixed content, and mixed forms. Also tracks when a site + with a valid certificate loads a subresource with an invalid certificate. + Replaced SSL.MixedContentShown. + + + + A value of the MixedContentType enum, detailing the type of mixed content + included on the site. + + + + + + + Deprecated as of 03/2019. + + yaoxia@chromium.org + + Measurement for subframe download. It is only recorded for downloads + originated from navigations or from HTML anchor download attributes. + + + + A boolean denoting whether the download involves a transient user gesture. + + + + + A boolean denoting whether the download occurs in a sandboxed browsing + context. + + + + + A boolean denoting whether the download occurs in an ad subframe. + + + + + A boolean denoting whether the download occurs in a subframe x-origin to + the top frame. + + + + + + csharrison@chromium.org + + Recorded for page loads where subresource filtering policy was evaluated. + + + + Enum that records the policy decision to activate subresource filtering + for a page load. 0 = Unknown, 1 = Activated, 2 = Disabled, 3 = Deprecated + value, 4 = URL whitelisted, 5 = Activation conditions not met. 'Activated' + indicates that subresource filtering was activated. All other reasons + indicate that subresource filtering was not activated. + + + + + Records '1' if subresource filtering was activated in dry run mode. In dry + run mode, subresource filtering policy is evaluated against resources + loaded on the page, but subresource filtering is not actually applied. + + + + + An enum denoting where in the redirect chain there was a URL that matched + one of the subresource_filter activation lists, and wasn't marked as + warning. See subresource_filter::RedirectPosition for values. + + + + + + rajendrant@chromium.org + mcrouse@chromium.org + + Records coverage information for src videos. Recorded once for every src + video that is fetched from network. + + + + The full content length of the video retrieved from the first range + request for the resource. This full content length represents the total + bytes when the entire video is played. The bytes are rounded down to the + exponential bucket with factor of 1.3. + + + + + Enumerates the different results possible for subresource redirection, + such as redirectable or different reasons of ineligibility. + + + + + + ssid@chromium.org + + Metrics about renderer OOM, recorded for each detected OOM of renderer + process. + + + + Duration in MS from when the main frame navigation was triggered to when + the tab crashed with OOM. Recorded only on Windows, Android and Chrome OS. + We do not have a way to detect OOMs reliably on Linux and Mac. + + + + + + sayman@chromium.org + + User took one or more screenshots of a page. + + + + A boolean signaling that the event has occurred; only records true values. + + + + + + chrisha@chromium.org + lpy@chromium.org + + Collects the duration in MS from when the tab is backgrounded to when a + JavaScript alert is fired. Only recorded when the tab is in the background. + + + + Indicates whether the alert is fired from main frame. + + + + + Duration in MS from when the tab is backgrounded to when alert is fired. + + + + + + chrisha@chromium.org + lpy@chromium.org + + Collects the duration in MS from when the tab is backgrounded to when audio + starts to play. Only recorded when the tab is in the background. + + + + Indicates whether the audio stream belongs to the main frame. + + + + + Duration in MS from when the tab is backgrounded to when audio starts to + play. + + + + + + chrisha@chromium.org + lpy@chromium.org + + Collects the duration in MS from when the tab is backgrounded to when the + favicon is updated. Only recorded when the tab is in the background. + + + + Duration in MS from when the tab is backgrounded to when the favicon is + updated. + + + + + + chrisha@chromium.org + lpy@chromium.org + + + + Indicates whether the notification creation is from the main frame. + + + + + Duration in MS from when the tab is backgrounded to when a non-persistent + notification is created. + + + + + + chrisha@chromium.org + lpy@chromium.org + + Collects the duration in MS from when the tab is backgrounded to when the + title is updated. Only recorded when the tab is in the background. + + + + Duration in MS from when the tab is backgrounded to when the title is + updated. + + + + + + chrisha@chromium.org + + Collects the duration in MS from when the tab is backgrounded to when it is + brought to foreground or closed. + + + + Boolean value indicating whether or not the tab is discarded since it was + backgrounded. + + + + + Boolean value indicating whether or not it's triggered because the tab is + brought to foreground again. + + + + + An int64 random number generated when TabManager.TabMetric is logged. The + same number is also logged here, so that feature label can be paired. + + + + + Deprecated 10/2019 in favor MRUIndex in TabMetrics. + + + Index of the tab in most-recently-used order. A value of N means there are + N tabs more recently used than the one that is being foregrounded or + closed. + + + + + Deprecated 11/2018 in favor LabelId. + + + This metric is obsolete in 11/2018 in favor of LabelId for pairing with + Tabmanager.TabMetrics event. The sequence of this event and + TabManager.TabMetrics event in the current session. Incremented by 1 each + time one of the two events is logged to provide an ordering of events. + + + + + Duration in MS from when the tab is backgrounded to when it is brought to + foreground or closed. + + + + + Deprecated 10/2019 in favor TotalTabCount in TabMetrics. + + + Total number of tabs open across all non-incognito browser windows. Helps + contextualize the MRUIndex value. + + + + + + + Removed June 2020. + + chrisha@chromium.org + + Collects the expected queueing duration of tasks and metadata for the + foreground tab during a background tab opening session (the duration of time + from when the browser starts to open background tabs until the time the + browser has finished loading those tabs or otherwise decided to stop loading + them). The event is not recorded when the session overlaps with session + restore. This event is sampled when there is only one backgrounded loading + or pending tab and all events are collected when there are 2 or more + backgrounded loading or pending tabs. In this way, we cap the volume while + keeping all interesting data. Therefore, aggregated tab counts over multiple + events are invalid. + + + + Number of background tabs that are loading. + + + + + The ID of this background tab opening session. + + + + + Number of background tabs that are pending. + + + + + Duration in MS for expected task queueing duration. The metric reflects + the responsiveness of a tab. A lower value means the tab will respond to + inputs faster. This metric is equal to + RendererScheduler.ExpectedTaskQueueingDuration. It is emitted once for all + tasks in each 1000-ms window. + + + + + The ID of this event's sequence in current background tab opening session. + + + + + Number of all tabs of the system, which includes all browser windows. + + + + + + + Removed 11/2022 because it wasn't actively used. + + zhenw@chromium.org + + Collects data when a tab is switched to from another tab and then finishes + loading in the foreground during a background tab opening session (the + duration of time from when the browser starts to open background tabs until + the time the browser has finished loading those tabs or otherwise decided to + stop loading them). The event is only recorded when a tab is switched to + from another tab within the same tabstrip. As a result, the initial + foreground tab is not included in this event since it was not switched to + from another tab. The event is not recorded when the session overlaps with + session restore. + + + + Number of background tabs that are loading. + + + + + The ID of this background tab opening session. + + + + + Number of background tabs that are pending. + + + + + The ID of this event's sequence in current background tab opening session. + + + + + Number of all tabs of the system, which includes all browser windows. + + + + + Tab switch load time in MS. It is defined as the time between when the + user switches to a backround tab, and the time when that tab finishes + loading in the foreground. If the user switches away before the tab + finishes loading, a metric will not be recorded unless the user switches + back, in which case the tab switch load time is measured from that point + in time. + + + + + + + Removed 11/2022 because it wasn't actively used. + + zhenw@chromium.org + + Collects the tab counts for the foreground tab page load during session + restore. The event is not recorded when the session overlaps with background + tab opening. This event should be combined with PageLoad event for analysis. + + + + Number of tabs that are restored. + + + + + Number of all tabs of the system, which includes all browser windows. + + + + + + zhenw@chromium.org + + Collects data when a tab is switched to from another tab and then finishes + loading in the foreground during session restore The event is only recorded + when a tab is switched to from another tab within the same tabstrip. As a + result, the initial foreground tab is not included in this event since it + was not switched to from another tab. The event is not recorded when the + session overlaps with background tab opening. + + + + The ID of this event's sequence in current session restore session. + + + + + The ID of this session restore session. + + + + + Number of tabs that are restored. + + + + + Number of all tabs of the system, which includes all browser windows. + + + + + Tab switch load time in MS. It is defined as the time between when the + user switches to a background tab, and the time when that tab finishes + loading in the foreground. If the user switches away before the tab + finishes loading, a metric will not be recorded unless the user switches + back, in which case the tab switch load time is measured from that point + in time. + + + + + + chrisha@chromium.org + fdoray@chromium.org + + Collects information about when and why a lifecycle state change was + attempted, and information about the outcome of the attempt. + + + + Deprecated 06/2020. Replaced with FailureGlobalDisallowlist. + + + Boolean indicating that the tab was explicitly opted out of the + intervention via the global disallowlist. + + + + + Boolean indicating that the tab was explicitly opted out of the + intervention via the global disallowlist. + + + + + Boolean indicating that the intervention was disallowed because the origin + has historically been observed emitting audio while in the background. + + + + + Boolean indicating that the intervention was disallowed because the origin + has historically been observed updating its favicon while in the + background. + + + + + Boolean indicating that the site is still being observed locally in order + to determine which features are in use. In the meantime, it is protected + from this intervention. + + + + + Boolean indicating that the intervention was disallowed because the origin + has historically been observed making use of notifications while in the + background. + + + + + Boolean indicating that the intervention was disallowed because the origin + has historically been observed updating its tab title while in the + background. + + + + + Boolean indicating that the browser was explicitly opted out of the + intervention via enterprise policy. + + + + + Deprecated 08/2019. Replaced with FailureOriginTrialOptOut. + + + Boolean indicating that the tab explicitly opted out of the intervention + via feature policy. + + + + + Boolean indicating that the intervention was disallowed because the tab is + currently capturing user media (making use of webcam or microphone, for + example). + + + + + Boolean indicating that the intervention was disallowed because the tab is + currently capturing a window or screen. + + + + + Boolean indicating that the intervention was disallowed because the tab is + currently using DevTools. + + + + + Boolean indicating that the intervention was disallowed by an extension. + + + + + Boolean indicating that the intervention was disallowed because the tab + currently contains text form entry. + + + + + Boolean indicating that the intervention was disallowed because the tab + has the permission to use notifications. + + + + + Boolean indicating that the intervention was disallowed because the tab is + currently hosting a PDF. + + + + + Boolean indicating that the intervention was disallowed because the tab is + currently being mirrored (casting its contents, for example). + + + + + Boolean indicating that the intervention was disallowed because the tab is + currently playing audio. + + + + + Boolean indicating that the intervention was disallowed because the tab is + sharing its BrowsingInstance with at least one other tab. + + + + + Boolean indicating that the intervention was disallowed because the tab is + currently connected to at least one bluetooth device. + + + + + Boolean indicating that the intervention was disallowed because the tab is + currently holding at least one IndexedDB lock. + + + + + Boolean indicating that the intervention was disallowed because the tab is + currently holding at least one WebLock. + + + + + Boolean indicating that the intervention was disallowed because the tab is + currently using WebSockets. + + + + + Boolean indicating that the intervention was disallowed because the tab is + currently using WebUSB. + + + + + Boolean indicating that the intervention was disallowed because the tab is + currently visible. + + + + + Boolean indicating that the intervention was disallowed because the tab is + a web application window. + + + + + Boolean indicating that the tab explicitly opted out of the intervention + via origin trial. + + + + + Boolean indicating that the tab did not report its origin trial + opt-in/opt-out yet. + + + + + The reason the lifecycle state change was attempted. This corresponds to + the LifecycleStateChangeReason enumeration in lifecycle_unit_state.mojom. + + + + + The lifecycle state the tab will be in after the state change. Corresponds + to a value from the LifecycleUnitState enum defined in + lifecycle_unit_state.mojom. + + + + + The lifecycle state the tab was in prior to the state change. Corresponds + to a value from the LifecycleUnitState enum defined in + lifecycle_unit_state.mojom. + + + + + Whether or not the state change was successful. The various Failure and + Success booleans encode the actual reasons for this outcome. Note that + multiple success and failure reasons may be encoded for a single decision. + The presence of any failure bit indicates a negative outcome. If only + success bits are present the outcome is positive. + + + + + Boolean indicating that the tab was explicitly opted in to the + intervention via the global allowlist. + + + + + Deprecated 06/2020. Replaced with SuccessGlobalAllowlist. + + + Boolean indicating that the tab was explicitly opted in to the + intervention via the global allowlist. + + + + + Boolean indicating that the tab was deemed safe for the intervention via + local observations and heuristics. + + + + + Deprecated 08/2019. Replaced with SuccessOriginTrialOptIn. + + + Boolean indicating that the tab explicitly opted in to the intervention + via feature policy. + + + + + Boolean indicating that the tab explicitly opted in to the intervention + via origin trial. + + + + + The time elapsed (in milliseconds) since the top-level navigation was + committed that loaded this tab's content. + + + + + The amount of time that has passed (in milliseconds) since the last + visibility state change. + + + + + This is set if the transition to the new lifecycle state was forced by the + browser because the content took too long to respond to the lifecycle + event. + + + + + The current visibility state. This is an integer value corresponding to + the enumeration in content/public/browser/visibility.h. + + + + + + zhenw@chromium.org + + Collects the expected queueing duration of tasks and metadata for the + foreground tab during session restore. The event is not recorded when the + session overlaps with background tab opening. The event is not recorded when + there is only one restored tab, in which case, there is no background + restored tab and we are not interested at that. In this way, we cap the + volume while keeping all interesting data. + + + + Duration in MS for expected task queueing duration. The metric reflects + the responsiveness of a tab. A lower value means the tab will respond to + inputs faster. This metric is equal to + RendererScheduler.ExpectedTaskQueueingDuration. It is emitted once for all + tasks in each 1000-ms window. + + + + + The ID of this event's sequence in current session restore session. + + + + + The ID of this session restore session. + + + + + Number of tabs that are restored. + + + + + Number of all tabs of the system, which includes all browser windows. + + + + + + chrisha@chromium.org + + Collected when a tab is closed, at most once per source. + + + + The time when the tab was closed, expressed as the amount of time in MS + that has elapsed since the main frame navigation providing the content of + the tab. + + + + + + michaelpg@chromium.org + + Collects tab information for a tab after navigations, activations and close + events. + + + + Obsolete. Enumeration for the MIME type of the page. Values are enumerated + in metrics::TabMetricsEvent::ContentType. + + + + + Obsolete. Schemes that a page from this page's origin is the default + protocol handler for, meaning the user has chosen to accept (or the + handler was preinstalled by Chrome). The metric is repeated, occurring for + each such protocol handler, and uses values from + metrics::TabMetricsEvent::Scheme. + + + + + Boolean value indicating whether the page has a beforeunload JavaScript + event handler. + + + + + Boolean value indicating whether the page has any user-input text. + + + + + Obsolete. True if an extension has marked this tab as non-discardable via + the chrome.tabs.update() extension API. + + + + + Boolean value indicating whether the tab is pinned in the tabstrip. + + + + + Number of key events that were sent to the page. + + + + + An int64 random number generated at logging time. The same number will + also be logged to the TabManager.Background.ForegroundedOrClosed event, so + that feature label can be paired. + + + + + Number of mouse events that were sent to the page. + + + + + Index of the tab in most-recently-used order. A value of N means there are + N tabs more recently used than the one that is being foregrounded or + closed. + + + + + Number of navigation entries in the tab's NavigationController. + Corresponds to the size of the tab's back/forward list. + + + + + Number of reactivations that this tab had till now. + + + + + Type of the page transition for this navigation. Uses the core values from + ui::PageTransition. + + + + + True if the page transition came from interacting with the address bar, + such as by typing a URL or performing a search. + + + + + True if the page transition type is a redirect, in which case the + PageTransition type may not be accurate. + + + + + An int64 random number generated at query time of + TabManager::GetSortedLifecycleUnitsFromTabRanker. Tabs with the same + QueryId will be later on combined in one full list for further analysis. + + + + + Deprecated 11/2018 in favor LabelId. + + + This metric is obsolete in 11/2018 in favor of LabelId for pairing with + Tabmanager.ForegroundedOrClosed event. The sequence of this event and + TabManager.ForegroundedOrClosed event in the current session. Incremented + by 1 each time one of the two events is logged to provide an ordering of + events. + + + + + Site engagement score in the range [0, 100], rounded down to a multiple of + 10 to limit granularity. + + + + + Duration in MS from when the tab is backgrounded to when it is brought to + foreground or closed. + + + + + Total number of tabs open across all non-incognito browser windows. Helps + contextualize the MRUIndex value. + + + + + Number of touch events that were sent to the page. + + + + + Boolean value indicating whether the tab has played audio within the last + two seconds. + + + + + Deprecated 11/2018 in favor of putting window features directly in this + event. + + + WindowId of the WindowMetrics entry corresponding to the browser window + containing this tab. This metrics is not populated from 11/2018 because we + don't need to join this event with other WindowMetrics any more. + + + + + Boolean value indicating whether the window is the active (frontmost) + window. + + + + + Enumeration of the window show state, such as fullscreen or minimized. + Values are enumerated in metrics::WindowMetricsEvent::ShowState. + + + + + Number of tabs in the tab strip. Rounded down to the nearest exponential + bucket (with a bucket spacing factor of 1.5). Will be 1 for windows with + only one top-level WebContents, such as app windows. + + + + + Enumeration for the type of the window. Values are enumerated in + metrics::WindowMetricsEvent::Type. + + + + + + michaelpg@chromium.org + + Collects information about a browser or app window to associate with the + TabManager.TabMetrics entries for tabs in that window. + + + + Whether the window is the active (frontmost) window. + + + + + Enumeration of the window show state, such as fullscreen or minimized. + Values are enumerated in metrics::WindowMetricsEvent::ShowState. + + + + + Number of tabs in the tab strip. Rounded down to the nearest exponential + bucket (with a bucket spacing factor of 1.5). Will be 1 for windows with + only one top-level WebContents, such as app windows. + + + + + Enumeration for the type of the window. Values are enumerated in + metrics::WindowMetricsEvent::Type. + + + + + Session ID of the browser or app window this entry represents, unique for + the browsing session. + + + + + + nyquist@chromium.org + ssid@chromium.org + + User pressed the 'Share' in the top toolbar, which shares the current URL. + + + + A boolean signaling that the event has occurred; only records true values. + + + + + + kazinova@google.com + fhorschig@chromium.org + kolos@chromium.org + + Recorded when a user takes an action on the Touch To Fill sheet. + + + + The action a user took when interacting with the Touch To Fill sheet. + + + + + + kolos@chromium.org + fhorschig@chromium.org + + Recorded when the Touch To Fill sheet is shown to the user. + + + + A given form's state (e.g. there are empty fields in the form, or there + are only two fields and they both are filled by Chrome) that indicates + whether the form is ready for submission. Recorded when a Touch To Fill + sheet is shown for that form. + + + + + + kolos@chromium.org + fhorschig@chromium.org + + Recorded when a successful login is detected after filling by the Touch To + Fill. + + + + The time in milliseconds between filling by the Touch To Fill and a + successful submission (To ensure filling and submitting correspond to each + other, the usernames should coincide and the timestamps should be within + one minute. A successful login after a failed submission or manual typing + is not reported). Used to compare the times when automated submission is + enabled and disabled. Thus, we measure the time saved for a user. Recorded + when the password manager detects that the login was successful. + + + + + + hamelphi@chromium.org + + Metrics related to a Translate event. These metrics are described in + TranslateEventProto. + + + + + + + + + + + + + + curranmax@chromium.org + megjablon@chromium.org + chrome-language@google.com + + Summary of the user's interaction with Translate from the beginning of the + page load to when the event is recorded. This event is recorded when a page + load is completed and every time that Chrome is backgrounded during the + course of the page load. This means we can record multiple events for a + single page load, but it guarantees that we will still record data in + instances where the user backgrounds then kills Chrome. + + + + The source language at the time the event is recorded. In most cases this + will match the initial source language, but the user can change the source + language manually if they want. Note that the semantic_type attribute is + included in order to remain consistent with the previous Translate UKM + proto. + + + + + At the time this event is recorded, the state of Translate. This includes + whether the page is translated or not and if no UI is shown, just the + omnibox icon is shown, or the full translate UI is shown. + + + + + The target language at the time the event is recorded. In most cases this + will match the initial target language, but the user can change the target + language manually if they want. Note that the semantic_type attribute is + included in order to remain consistent with the previous Translate UKM + proto. + + + + + The first error to occur within Translate for this page load. + + + + + The user's first interaction with the Translate UI. + + + + + The HTML language content attribute specified by the document. Note that + the semantic_type attribute is included in order to remain consistent with + the previous Translate UKM proto. + + + + + The HTML language attribute specified by the document. Note that the + semantic_type attribute is included in order to remain consistent with the + previous Translate UKM proto. + + + + + The initial source language that Translate determines for the page. Note + that the semantic_type attribute is included in order to remain consistent + with the previous Translate UKM proto. + + + + + Whether or not the initial source language is in the user's never + translate language list. By default the UI language, languages the user + has translated to, and languages added to the content languages are on the + never tranlsate list. However, users can add or remove languages manually + as well. + + + + + At the beginning of the page load, the state of Translate. This includes + whether the page is translated or not and if no UI is shown, just the + omnibox icon is shown, or the full translate UI is shown. + + + + + The initial target language that Translate thinks it should translate to. + Note that the semantic_type attribute is included in order to remain + consistent with the previous Translate UKM proto. + + + + + Across all translations during this page load, the maximum amount of time + (in milliseconds) it took to translate the page. + + + + + The language that was estimated by the language model based on the page's + content. Note that the semantic_type attribute is included in order to + remain consistent with the previous Translate UKM proto. + + + + + The score, or confidence, of the language detection model's prediction + about the language of the page content. The score is between 0 and 100, + higher means more confident. + + + + + The number of times a translation was reverted. + + + + + The number of times that the target language was changed by the user over + the course of this page load. + + + + + The number of errors to occur within Translate for this page load. + + + + + The number of times the page was translated. + + + + + The number of times that the user interacts with the Translate UI. + + + + + Decision of the Ranker whether to show the UI or not. + + + + + Version of Ranker used for this page load. + + + + + In case multiple events are logged for one page load, we track the + sequence in the order each event is logged. + + + + + The amount of time (in seconds) this page was in the foreground and not + translated. + + + + + The amount of time (in seconds) this page was in the foreground and + translated. + + + + + The highest priority trigger that determined the initial state of + Translate for this page load. + + + + + Whether the page content used to detect the page language was empty or + not. + + + + + + eirage@chromium.org + peconn@chromium.org + + Records when a site running in Trusted Web Activity requests geolocation. + + + + Whether the Trusted Web Activity client app enrolled location delegation. + + + + + + + + + + + + + peconn@chromium.org + + Collected when a page is opened in a Trusted Web Activity. + + + + A boolean signaling that the event has occurred (typically only records + true values). + + + + + + + + + + + + + eirage@chromium.org + peconn@chromium.org + + Records when Trusted Web Activity launches or navigates to a site that + violates the quality criteria. + + + + An enum that records the type of the quality criteria. + + + + + + + + + + + + + kdillon@chromium.org + + Metrics associated with a unloading in preparation for a navigation. + + + + Measures the time in milliseconds of running the beforeunload handlers for + a page. If the beforeunloads are dispatched from the browser, this reports + the longest running one since these handlers will be run in parallel when + the page has frames in different processes. If the navigation is renderer + initiated, it will be the duration of running beforeunload handlers in the + navigating frame and its local descendants in the renderer plus any + latency caused by dispatching beforeunloads to remote frames from the + browser. + + + + + + + + + + + + Measures the time in milliseconds from when the browser sends the request + to run beforeunload to the renderer to when the renderer begins + dispatching the handlers. For browser-initiated navigations, we report the + queueing duration of the beforeunloads that took the longest since they + are dispatched in parallel to remote and local frames. For renderer- + initiated navigations this metric will only be filled in if we dispatched + beforeunloads from the browser to remote frames which we had to wait on. + + + + + + + + + + + + Measures the time in milliseconds from when the browser sends the request + to dispatch before unload handlers (for browser-intitated navigations) or + from when the renderer started running before unload handlers (for + renderer-initiated navigations) to when the commit navigation was sent to + the renderer process. For cross-process navigations this represents the + total amount of time the navigation is blocked since it was initiated. + + + + + + + + + + + + Measures the time in milliseconds from when the browser sends the request + to dispatch before unload handlers (for browser-intitated navigations) or + from when the renderer started running before unload handlers (for + renderer-initiated navigations) to when the navigation was committed. For + same-process navigations this represents the total amount of time the + navigation is blocked since it was initiated. + + + + + + + + + + + + Measures the time in milliseconds to run the unload handlers in the old + document where the navigation was committed. Only records for same-process + navigations since there are no unload handlers to be run in the new + process during a cross-process navigation. + + + + + + + + + + + + Measures the time in milliseconds from when the browser sends the commit + navigation request to the renderer to when the renderer dispatches unload + events. Only records for same-process navigations since unload handlers + are run in a different process for cross-process navigations. + + + + + + + + + + + + + jiameng@chromium.org + + Collects user activity events after staying idle for a short period of time. + + + + Percentage of battery, bucketed to 5 percents, i.e. [0, 5%) is mapped to + 0, [5%, 10%) is mapped to 5 etc. + + + + + An enum representing whether the device is managed, defined in + |ash::power::ml::UserActivityEvent::Features::ManagementType|. + + + + + An enum representing the mode of the device, defined in + |ash::power::ml::UserActivityEvent::Features::DeviceMode| + + + + + An enum representing the type of the device, defined in + |ash::power::ml::UserActivityEvent::Features::DeviceType| + + + + + Time taken in seconds from when we start logging the features to the + moment when the event type is known and we finish logging the complete + event. + + + + + An enum representing the reason of the event, defined in + |ash::power::ml::UserActivityEvent::Event::Reason|. + + + + + An enum representing the type of the event, defined in + |ash::power::ml::UserActivityEvent::Event::Type|. + + + + + The number of key events reported as user activity in the last hour. This + is bucketized so that it is recorded precisely when it is in [0, 99], + rounded to nearest 100 when it is in [100, 999] and rounded to nearest + 1000 when it is in [1000, 9999]. It is capped at 10000. + + + + + An enum representing the last activity day of the week, defined in + |ash::power::ml::UserActivityEvent::Features::DayOfWeek|. + + + + + Last activity time as hours since midnight in the local time zone. + + + + + Last user activity time as hours since midnight in the local time zone. + + + + + A boolean value whether model prediction is applied in the screen-dim + decision. False means powerd dims the screen regardless of the model + prediction. + + + + + A threhold in the range of [0, 100]. Higher threshold makes screen-dim + less likely. + + + + + Probability that user will remain inactive as predicted by the model. It + is in the range of [0, 100]. If score is less than the decision threshold, + dim will be deferred. + + + + + Whether the model recommends the screen dim should be deferred (NO_DIM) or + allowed (DIM), or encountered an error (MODEL_ERROR). + + + + + The number of mouse events reported as user activity in the last hour. + This is bucketized so that it is recorded precisely when it is in [0, 99], + rounded to nearest 100 when it is in [100, 999] and rounded to nearest + 1000 when it is in [1000, 9999]. It is capped at 10000. + + + + + Boolean value to represent whether the device is currently on battery + power. + + + + + Number of times user reactivated, not including the current event. + + + + + Number of times user has remained idle, not including the current event. + + + + + Duration of activity in seconds up to last activity. + + + + + Recent video playing time in seconds. + + + + + Delay after which the screen will be dimmed in seconds. + + + + + Whether screen was dimmed at the start of the event. + + + + + Whether screen dim occurred due to inactivity timeout. + + + + + Delay after which the screen will be turned off in seconds, as measured + from screen is dimmed. If dim is disabled, it is the delay from the start + of inactivity. + + + + + Whether screen was locked at the start of the event. + + + + + Whether screen lock occurred. + + + + + Whether screen was off at the start of the event. + + + + + Whether screen off occurred due to inactivity timeout. + + + + + The ID of this event in the current session. + + + + + Time from last key event in seconds. + + + + + Time from last mouse event in seconds. + + + + + Time from last touch event in seconds. + + + + + Time from the end of the last video playing in seconds. + + + + + The number of touch events reported as user activity in the last hour. + This is bucketized so that it is recorded precisely when it is in [0, 99], + rounded to nearest 100 when it is in [100, 999] and rounded to nearest + 1000 when it is in [1000, 9999]. It is capped at 10000. + + + + + + jiameng@chromium.org + + Records an activity that happened while a page was open. + + + + The ID of the activity that happened while a page was open. + + + + + Enumeration for the MIME type of the page. Values are enumerated in + metrics::TabMetricsEvent::ContentType. + + + + + Boolean value indicating whether the page has any user-input text. + + + + + Boolean value representing whether this tab is selected in its containing + browser. + + + + + Boolean value representing whether the containing browser is in focus. + + + + + Boolean value representing whether the containing browser is visible. + + + + + Boolean value representing whether the containing browser is the topmost + one on the screen. + + + + + Site engagement score in the range [0, 100], rounded down to a multiple of + 10 to limit granularity. + + + + + + djw@chromium.org + altimin@chromium.org + + Metrics related to a page visit as a user perceives it, regardless of how + the page was visited. More metrics may be associated with a particular page + visit, these can be found in specific UKM events with the same UKM source + ID. Currently the methods of visiting a page that will populate this event + are: 'normal' page load (more metrics in the PageLoad event), Back-Forward + Cache Restore (more metrics in the HistoryNavigation event), and AMP + documents (more metrics in the AmpPageLoad event) + + + + Determines if this page visit event should be counted towards calculations + involving Core Web Vitals. If true, this page visit event should not be + counted. If false or NULL, the page visit event should be considered. + Currently this is determined by checking the mime-type of the page visit + event. + + + + + Determines the final status for this page visit. That is, records whether + the page was never foregrounded, was foregrounded but did not reach FCP, + or did reach FCP. The metric is recorded at the end of each page visit. + App backgrounding on Android to is considered to be the end of page visit + as well, as the app could be evicted by Android anytime after that + happens. + + + + + True if this page visit was initiated by user input. For renderer + navigations, only true if the code can trace back to the original input + event - there are cases where this known not to be possible. + + + + + + + Removed 3/2023 + + wrong@chromium.org + jiameng@chromium.org + + Contains information about user activities relating to settings changes. + + + + The accessibility setting that was changed. + + + + + Battery percentage from 0 to 100. + + + + + Country ID at install, corresponding to the value used by + src/components/country_codes/country_codes.h. + + + + + Value of the setting after the change. + + + + + Day of the week of the settings change. + + + + + The current device mode, such as clamshell or tablet. + + + + + The current orientation of the device. + + + + + Randomly generated ID that links together settings events that occurred at + the same time. + + + + + A boolean indicating whether the user has set up a night light schedule. + + + + + A boolean indicating whether or not the current wifi network has security. + Only populated upon connection to a wifi network. + + + + + Time in hours since midnight in the local time zone. + + + + + A boolean, true if it is after sunset and before sunrise in the local + time. + + + + + A boolean indicating whether the device is charging. + + + + + A boolean indicating whether or not search was used to navigate to the + setting. + + + + + A boolean indicating whether or not the current bluetooth device was + already paired. Only populated upon connection to a bluetooth device. + + + + + A boolean indicating whether the device is playing audio. + + + + + A boolean indicating whether the device is playing video. + + + + + A boolean indicating whether the device has been in fullscreen mode in the + last 5 minutes. + + + + + A boolean indicating whether the device has been presenting in the last 5 + minutes. + + + + + Internet connection status of the device. + + + + + Value of the setting before the change. + + + + + The setting that was changed. + + + + + Where the settings event originated from. + + + + + The signal strength for the connected network. Only populated upon + connection to a wifi or cellular network. + + + + + Time in minutes since the last settings change. + + + + + A boolean indicating whether the user has connected to a cellular network + in the current session. + + + + + + ecmziegler@chromium.org + + Records information on baseline compilation of WebAssembly modules and its + resource consumption. + + + + The compilation was running asynchronously. + + + + + + + + + + + + + The compilation was re-using already cached native module code instead of + JIT compiling it. + + + + + + + + + + + + + The size of the native module code in bytes after baseline compilation + finished. + + + + + + + + + + + + + The compilation was deserializing the native module code from the disk + cache instead of JIT compiling it. + + + + + + + + + + + + + The lazy compilation flag was enabled and therefore not all functions + might have been compiled. + + + + + + + + + + + + + The number of functions that Liftoff could not compile and that therefore + needed to be compiled by TurboFan. + + + + + + + + + + + + + The wire bytes were streamed while compiling. + + + + + + + + + + + + + The module was successfully compiled. + + + + + + + + + + + + + + The total time the compilation took in microseconds. + + + + + + + + + + + + + Removed 11/2020 + + + The total time the compilation took in microseconds. + + + + + + + + + + + + + + ecmziegler@chromium.org + + Records information on WebAssembly modules included in websites. + + + + Number of declared functions in this module. + + + + + + + + + + + + + The size of the wire bytes of the module. + + + + + + + + + + + + + The wire bytes were streamed while decoding. + + + + + + + + + + + + + The module was successfully decoded. + + + + + + + + + + + + + + The total time the decoding took in microseconds. + + + + + + + + + + + + + Removed 11/2020 + + + The total time the compilation took in microseconds. + + + + + + + + + + + + + + ecmziegler@chromium.org + + Records information on instantiation of WebAssembly modules and its resource + consumption. + + + + The number of functions imported by the module. + + + + + + + + + + + + + The module was successfully instantiated. + + + + + + + + + + + + + + The total time the instantiation took in microseconds. + + + + + + + + + + + + + Removed 11/2020 + + + The total time the compilation took in microseconds. + + + + + + + + + + + + + + ecmziegler@chromium.org + + Records information on top-tier compilation of WebAssembly modules and its + resource consumption. + + + + The size of the native module code in bytes after top-tier compilation + finished. + + + + + + + + + + + + + The lazy compilation flag was enabled and therefore not all functions + might have been compiled. + + + + + + + + + + + + + The total time the compilation took in microseconds. + + + + + + + + + + + + + Removed 11/2020 + + + The total time the compilation took in microseconds. + + + + + + + + + + + + + + marja@chromium.org + v8-loading@google.com + + Data about which JavaScript functions are compiled. The collected data is + obfuscated to not reveal script URLs. The data is split into separate + int64s. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + shend@chromium.org + + Collects the used input types with the Virtual Keyboard. + + + + Type of a input field which the user is trying to use the Virtual Keyboard + on. + + + + + + + + + + + + + + yfriedman@chromium.org + hartmanng@chromium.org + pkotwicz@chromium.org + + WebAPK usage metrics recorded on Install. + + + + WebAPK app version that the user is installing. + + + + + + + + + + + + + + + + Distribution source of the WebAPK (browser, device policy, etc). + + + + + + + + + + + + + + + Recorded when this WebAPK is installed. + + + + + + + + + + + + + + + + + yfriedman@chromium.org + hartmanng@chromium.org + pkotwicz@chromium.org + + WebAPK usage metrics recorded when the WebAPK is backgrounded. + + + + WebAPK app version that the user has installed. + + + + + + + + + + + + + + + + Distribution source of the WebAPK (browser, device policy, etc). + + + + + + + + + + + + + + + How long the user spent inside the WebAPK, in milliseconds. This will use + exponential bucketing (ie, count in 10s of milliseconds at first, then + 100s, then seconds, 10s of seconds, minutes, 10 minutes, hours, 10 hours, + days, weeks, years.) + + + + + + + + + + + + + + + + + yfriedman@chromium.org + hartmanng@chromium.org + pkotwicz@chromium.org + + WebAPK usage metrics recorded on Uninstall. + + + + WebAPK app version that the user has installed. + + + + + + + + + + + + + + + + Distribution source of the WebAPK (browser, device policy, etc). + + + + + + + + + + + + + + + How long between Install and Uninstall of a particular WebAPK, in seconds. + This will use exponential bucketing (ie, count in seconds at first, then + 10s of seconds, minutes, 10 minutes, hours, 10 hours, days, weeks, years.) + + + + + + + + + + + + + + + + Records how many times the WebAPK was launched between install and + uninstall (in coarse buckets). + + + + + + + + + + + + + + + + Recorded when this WebAPK is uninstalled. + + + + + + + + + + + + + + + + + yfriedman@chromium.org + hartmanng@chromium.org + pkotwicz@chromium.org + + WebAPK usage metrics recorded during a user's interaction with the site. + + + + WebAPK app version that the user has installed. + + + + + + + + + + + + + + + + Distribution source of the WebAPK (browser, device policy, etc). + + + + + + + + + + + + + + + Recorded every time this WebAPK is launched. + + + + + + + + + + + + + + + + Launch source of the WebAPK. + + + + + + + + + + + + + + + + + eirage@chromium.org> + hartmanng@chromium.org + mwi-team-core@google.com + + A2HS usage metrics recorded when users started the add to home screen flow + on Android. + + + + Records the display mode of the added Webapp. + + + + + + + + + + + + Record whether `start_url` for the Shortcuts is the same as the current + page url. + + + + + + + + + + + + Record an StatusCode for why this site is not WebAPK compatible. + + + + + + + + + + + + + glenrob@chromium.org + benwells@chromium.org + + Features of a web app recorded at most once per day if a user interacted + with the web app. Recorded for installed and/or promotable (installable) web + apps unless noted otherwise on the metric. Keyed by start_url of the app. + Note: Changed in Feb 2023 to only record when App sync is enabled. + + + + Records the total duration (seconds, bucketed) that the app was open in + the background in the last calendar day. Summed during the day and emitted + if the date changes. Recorded only for installed web apps that are + currently open in a web app window, and all preinstalled web apps. + + + + + + + + + + + + + + + Whether the user has enabled link capturing to open in-scope links in the + app window. Recorded only for installed web apps that are currently open + in a web app window, and all preinstalled web apps. + + + + + + + + + + + + + + + Effective display mode of the web app (may be set by a manifest and + manifest may be overridden by the user). + + + + + + + + + + + + + + + Records the total duration (seconds, bucketed) that the app was open in + the foreground in the last calendar day. Summed during the day and emitted + if the date changes. Recorded only for installed web apps that are + currently open in a web app window, and all preinstalled web apps. + + + + + + + + + + + + + + + Whether the web app is installed. + + + + + + + + + + + + + + + Install source of the web app (omnibox, menu item, policy, etc). + + + + + + + + + + + + + + + Records the total number of times the app was focused in the foreground in + the last calendar day. Recorded only for installed web apps that are + currently open in a web app window, and all preinstalled web apps. + + + + + + + + + + + + + + + Records whether the user has launched this preinstalled app before the + preinstalled app window vs tab experiment started. Recorded only if the + user was eligible for the experiment, which is new Chrome OS users. + + + + + + + + + + + + + + + Records the user group that the user is in, for an experiment on opening + preinstalled apps in windows vs tabs. Recorded only if the user was + eligible for the experiment, which is new Chrome OS users. + + + + + + + + + + + + + + + Whether the web app is currently considered 'promotable' (passes Chrome + checks to be considered an installable web app). + + + + + + + + + + + + + + + Records that the web app was used. Always true (or the event would not + have been emitted for this WebApp). + + + + + + + + + + + + + + + + yigu@chromium.org + goto@chromium.org + web-identity@google.com + + Records in the browser process when a document is destroyed. + + + + Records whether a document collected phone number, and/or used WebOTP, + and/or used OneTimeCode (OTC) during its lifecycle. + + + + + + hta@chromium.org + + Collects usage patterns that may indicate attempts to gather users' IP + addresses. A heuristic in the webrtc library tries to detect usages that may + indicate attempts to gather users' IP addresses rather than setting up + communication via WebRTC, and reports possible attempts. + + + + The usage pattern detected (an int encoding bit values). The bits are + defined in third_party/webrtc/pc/peerconnection.h, in the + "PeerConnection::UsageEvent" enum. + + + + + + hbos@chromium.org + guidou@chromium.org + + Logged when an application uses complex SDP in a WebRTC PeerConnection or + experiences an error attempting to parse SDP. Such cases will result in + errors if the application assumes the wrong default SDP format. This is an + important concern during the transition of the default SDP format from Plan + B to Unified Plan. + + + + A value that represents how complex/unparsable SDP is used. The categories + are defined in blink::ComplexSdpCategory. + + + + + + cfredric@google.com + + Recorded when a client connects to an existing SharedWorker or + ServiceWorker; records the source IDs of the client (which may be a document + or another worker), and the type of the worker being connected to. In the + case of a ServiceWorker, this is recorded for each worker-client pair that + could communicate (whether or not they actually do) and this is only + recorded once the client is execution ready. Note also that emission can be + caused by the creation of a new ServiceWorker or a new ServiceWorker client. + + + + The UKM source ID of the connecting client, as an integer. + + + + + The type of the worker that was connected to. + + + + + + + Removed 2/2020 + + xr-dev@chromium.org + + Records properties of page use in XR, including VR browsing and WebXR + presentation. + + + + The approximate amount of time the user spends on a page in XR in seconds. + Times are reported accurately when low, for example, under a minute, and + get rounded to minutes and then hours as they get larger. This is done by + SessionTracker::GetRoundedDurationInSeconds. + + + + + + + + + + + + A boolean that is set to 1 if the user requested fullscreen while in XR on + some element on the page. + + + + + + + + + + + + An enum that indicates that the user entered VR on this page and what + triggered the entry into VR, where 1 means VR was entered through headset + activation, and 2 means that request presentation triggered the entry into + VR. + + + + + + + + + + + + Deprecated. + + + Deprecated. + + + + + A boolean that is set to 1 if this page was entered into the omnibox, + either manually or using autocomplete. + + + + + + + + + + + + A boolean that is set to 1 if this page was specifically requested and + recognized by a voice search. + + + + + + + + + + + + + billorr@chromium.org + xr-dev@chromium.org + + Records information about WebXR methods that were used in a single + navigation. The event will be recorded as the WebXR functions are called - + since the event is singular, the data that will eventualy be sent will + contain a union of metrics that were set in an event. + + + + Deprecated in M75. + + + Boolean value that indicates that the Gamepad API was used on a WebXR + site. + + + + + Boolean value that indicates that the WebXR input API was used. + + + + + + + + + + + + Boolean value that indicates that the API to enumerate devices was called. + This API is only exposed through WebVR. + + + + + + + + + + + + Boolean value that indicates that poses were requested. + + + + + + + + + + + + Boolean value that indicates that presentation was requested. + + + + + + + + + + + + Boolean value that indicates that the WebXR Device API was used. + + + + + + + + + + + + Boolean value that indicates that a device was returned by the API to + enumerate devices. This API is only exposed through WebVR. + + + + + + + + + + + + Boolean value that indicates that a device was returned by the API to + enumerate devices, and that the device supports presentation. + + + + + + + + + + + + + + Deprecated 5/2019 + + xr-dev@chromium.org + + Records data for a presentation session, where WebXR is running an exclusive + presentation to some device. + + + + The approximate amount of time the user spends in presentation in seconds. + Times are reported accurately when low, for example, under a minute, and + get rounded to minutes and then hours as they get larger. This is done by + SessionTracker::GetRoundedDurationInSeconds. + + + + + An enum value to track specifically how the user got into XR presentation. + See `vr::PresentationStartAction` for enum type declaration. 0: Other, + catch all. 1: RequestFrom2DBrowsing, the page requested presentation while + Chrome was in 2D mode. 2: RequestFromVRBrowsing, the page requested + presentation while Chrome was in VR browsing mode. 3: HeadsetActivation, + the user activated the VR headset while in 2D browsing on the page, which + listens for headset activations to request presentation. 4: DeepLinkedApp + (Obsolete), The page was launched in Chrome from the VR system home (e.g., + Daydream Home) and requested presentation. + + + + + + billorr@chromium.org + bialpio@chromium.org + xr-dev@chromium.org + cassew@google.com + + When session ends, records data for a WebXR / WebVR session. + + + + The approximate amount of time (in seconds) that elapsed from session + creation to session end. Times are reported accurately when low, for + example, under a minute, and get rounded to minutes and then hours as they + get larger. This is done by SessionTracker::GetRoundedDurationInSeconds. + For inline sessions, this might get pretty large. + + + + + + + + + + + + State of the 'bounded-floor' feature request. + + + + + State of the 'local' feature request. + + + + + State of the 'local-floor' feature request. + + + + + State of the 'unbounded' feature request. + + + + + State of the 'viewer' feature request. + + + + + Whether the 'bounded-floor' feature was used during this session, + regardless of whether it was used successfully. + + + + + Whether the 'local' feature was used during this session, regardless of + whether it was used successfully. + + + + + Whether the 'local-floor' feature was used during this session, regardless + of whether it was used successfully. + + + + + Whether the 'unbounded' feature was used during this session, regardless + of whether it was used successfully. + + + + + Whether the 'viewer' feature was used during this session, regardless of + whether it was used successfully. + + + + + Removed 2/2020 + + + Boolean value indicating whether a session was created using the legacy + WebVR API rather than WebXR. + + + + + + + + + + + + An enum value specifying WebXR session's mode. See `device::SessionMode` + for enum type declaration. 0: Unknown, catch all. 1: Inline session. 2: + Immersive VR session. 3: Immersive AR session. + + + + + + + + + + + + + xr-dev@chromium.org + cassew@google.com + + Recorded when promise returned by `requestSession` gets resolved / rejected. + + + + State of the 'bounded-floor' feature request. + + + + + State of the 'local' feature request. + + + + + State of the 'local-floor' feature request. + + + + + State of the 'unbounded' feature request. + + + + + State of the 'viewer' feature request. + + + + + An enum value that indicates that the `requestSession` API was called to + request session with this mode. See `device::SessionMode` for enum type + declaration. 0: Unknown, catch all. 1: Inline session was requested. 2: + Immersive VR session was requested. 3: Immersive AR session was requested. + + + + + + + + + + + + An enum value that describes the result of the call to `requestSession` + method. See `` for enum type declaration. 0: Success. 1: Other failure. + + + + + + + + + + + + diff --git a/ukm/ukm_model.py b/ukm/ukm_model.py new file mode 100644 index 000000000000..593dc444c3e7 --- /dev/null +++ b/ukm/ukm_model.py @@ -0,0 +1,149 @@ +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# """Model objects for ukm.xml contents.""" + +import os +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import models + +# Model definitions for ukm.xml content +_OBSOLETE_TYPE = models.TextNodeType('obsolete') +_OWNER_TYPE = models.TextNodeType('owner', single_line=True) +_SUMMARY_TYPE = models.TextNodeType('summary') + +# A key for sorting XML nodes by the value of |attribute|. +_LOWERCASE_FN = lambda attribute: (lambda node: node.get(attribute).lower()) +# A constant function as the sorting key for nodes whose orderings should be +# kept as given in the XML file within their parent node. +_KEEP_ORDER = lambda node: 1 + +_ENUMERATION_TYPE = models.ObjectNodeType( + 'enumeration', + attributes=[], + single_line=True) + +_QUANTILES_TYPE = models.ObjectNodeType( + 'quantiles', + attributes=[ + ('type', str, None), + ], + single_line=True) + +_INDEX_TYPE = models.ObjectNodeType( + 'index', + attributes=[ + ('fields', str, None), + ], + single_line=True) + +_STATISTICS_TYPE = models.ObjectNodeType( + 'statistics', + attributes=[ + ('export', str, r'(?i)^(|true|false)$'), + ], + children=[ + models.ChildType(_QUANTILES_TYPE.tag, _QUANTILES_TYPE, multiple=False), + models.ChildType(_ENUMERATION_TYPE.tag, + _ENUMERATION_TYPE, + multiple=False), + ]) + +_HISTORY_TYPE = models.ObjectNodeType( + 'history', + attributes=[], + alphabetization=[ + (_INDEX_TYPE.tag, _LOWERCASE_FN('fields')), + (_STATISTICS_TYPE.tag, _KEEP_ORDER), + ], + children=[ + models.ChildType(_INDEX_TYPE.tag, _INDEX_TYPE, multiple=True), + models.ChildType(_STATISTICS_TYPE.tag, _STATISTICS_TYPE, multiple=True), + ]) + +_AGGREGATION_TYPE = models.ObjectNodeType( + 'aggregation', + attributes=[], + children=[ + models.ChildType(_HISTORY_TYPE.tag, _HISTORY_TYPE, multiple=False), + ]) + +_METRIC_TYPE = models.ObjectNodeType( + 'metric', + attributes=[ + ('name', str, r'^[A-Za-z0-9_.]+$'), + ('semantic_type', str, None), + ('enum', str, None), + ], + alphabetization=[ + (_OBSOLETE_TYPE.tag, _KEEP_ORDER), + (_OWNER_TYPE.tag, _KEEP_ORDER), + (_SUMMARY_TYPE.tag, _KEEP_ORDER), + (_AGGREGATION_TYPE.tag, _KEEP_ORDER), + ], + children=[ + models.ChildType(_OBSOLETE_TYPE.tag, _OBSOLETE_TYPE, multiple=False), + models.ChildType(_OWNER_TYPE.tag, _OWNER_TYPE, multiple=True), + models.ChildType(_SUMMARY_TYPE.tag, _SUMMARY_TYPE, multiple=False), + models.ChildType( + _AGGREGATION_TYPE.tag, _AGGREGATION_TYPE, multiple=True), + ]) + +_EVENT_TYPE = models.ObjectNodeType('event', + attributes=[ + ('name', str, r'^[A-Za-z0-9.]+$'), + ('singular', str, + r'(?i)^(|true|false)$'), + ], + alphabetization=[ + (_OBSOLETE_TYPE.tag, _KEEP_ORDER), + (_OWNER_TYPE.tag, _KEEP_ORDER), + (_SUMMARY_TYPE.tag, _KEEP_ORDER), + (_METRIC_TYPE.tag, + _LOWERCASE_FN('name')), + ], + extra_newlines=(1, 1, 1), + children=[ + models.ChildType(_OBSOLETE_TYPE.tag, + _OBSOLETE_TYPE, + multiple=False), + models.ChildType(_OWNER_TYPE.tag, + _OWNER_TYPE, + multiple=True), + models.ChildType(_SUMMARY_TYPE.tag, + _SUMMARY_TYPE, + multiple=False), + models.ChildType(_METRIC_TYPE.tag, + _METRIC_TYPE, + multiple=True), + ]) + +_UKM_CONFIGURATION_TYPE = models.ObjectNodeType( + 'ukm-configuration', + alphabetization=[(_EVENT_TYPE.tag, _LOWERCASE_FN('name'))], + extra_newlines=(2, 1, 1), + indent=False, + children=[ + models.ChildType(_EVENT_TYPE.tag, _EVENT_TYPE, multiple=True), + ]) + +UKM_XML_TYPE = models.DocumentType(_UKM_CONFIGURATION_TYPE) + +def PrettifyXML(original_xml): + """Parses the original xml and return a pretty printed version. + + Args: + original_xml: A string containing the original xml file contents. + + Returns: + A pretty-printed xml string, or None if the config contains errors. + """ + config = UKM_XML_TYPE.Parse(original_xml) + return UKM_XML_TYPE.PrettyPrint(config) + + +def IsNotObsolete(node): + """Checks if the given node contains a child node.""" + return _OBSOLETE_TYPE.tag not in node diff --git a/ukm/ukm_model_test.py b/ukm/ukm_model_test.py new file mode 100755 index 000000000000..5db89845de36 --- /dev/null +++ b/ukm/ukm_model_test.py @@ -0,0 +1,172 @@ +#!/usr/bin/env python +# Copyright 2017 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest + +import ukm_model + + +PRETTY_XML = """ + + + + + + owner@chromium.org + anotherowner@chromium.org + + Event1 summary. + + + owner2@chromium.org + + Metric1 summary. + + + + + + + + + + + + + + + + + + + + + + + + +""".strip() + +UNPRETTIFIED_XML = """ + + + + + + owner2@chromium.org + + Metric1 summary. + + + + + + + + + + + + + + + + + + + + + Event1 summary. + owner@chromium.org + anotherowner@chromium.org + + + +""".strip() + +CONFIG_EVENT_NAMES_SORTED = """ + + + + + + + + + +""".strip() + +CONFIG_EVENT_NAMES_UNSORTED = """ + + + + + + + + + +""".strip() + +OBSOLETE_EVENTS_PARSED = { + 'event': { + "obsolete": "Some message", + "metric": { + "summary": "Some summary", + }, + "metric": { + "summary": "Some summary", + }, + }, + 'event': { + "obsolete": "Some message", + "metric": { + "summary": "Some summary", + }, + }, +} + + +class UkmXmlTest(unittest.TestCase): + + def __init__(self, *args, **kwargs): + super(UkmXmlTest, self).__init__(*args, **kwargs) + self.maxDiff = None + + def testPrettify(self): + result = ukm_model.PrettifyXML(PRETTY_XML) + self.assertMultiLineEqual(PRETTY_XML, result.strip()) + result = ukm_model.PrettifyXML(UNPRETTIFIED_XML) + self.assertMultiLineEqual(PRETTY_XML, result.strip()) + + def testHasBadEventName(self): + bad_xml = PRETTY_XML.replace('Event1', 'Event:1') + with self.assertRaises(ValueError) as context: + ukm_model.PrettifyXML(bad_xml) + self.assertIn('Event:1', str(context.exception)) + self.assertIn('does not match regex', str(context.exception)) + + def testHasBadMetricName(self): + bad_xml = PRETTY_XML.replace('Metric1', 'Metric:1') + with self.assertRaises(ValueError) as context: + ukm_model.PrettifyXML(bad_xml) + self.assertIn('Metric:1', str(context.exception)) + self.assertIn('does not match regex', str(context.exception)) + + def testSortByEventName(self): + result = ukm_model.PrettifyXML(CONFIG_EVENT_NAMES_SORTED) + self.assertMultiLineEqual(CONFIG_EVENT_NAMES_SORTED, result.strip()) + result = ukm_model.PrettifyXML(CONFIG_EVENT_NAMES_UNSORTED) + self.assertMultiLineEqual(CONFIG_EVENT_NAMES_SORTED, result.strip()) + + def testIsNotObsolete(self): + for event in OBSOLETE_EVENTS_PARSED.values(): + self.assertFalse(ukm_model.IsNotObsolete(event)) + for metric in event.values(): + self.assertTrue(ukm_model.IsNotObsolete(metric)) + + +if __name__ == '__main__': + unittest.main() diff --git a/ukm/validate_format.py b/ukm/validate_format.py new file mode 100755 index 000000000000..3c9011784e57 --- /dev/null +++ b/ukm/validate_format.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +# Copyright 2019 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Verifies that the UKM XML file is well-formatted.""" + +import os +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) +import path_util + +from xml_validations import UkmXmlValidation +from xml.dom import minidom + +UKM_XML = path_util.GetInputFile('tools/metrics/ukm/ukm.xml') + +IGNORE_METRIC_CHECK_WARNINGS = True + + +def main(): + with open(UKM_XML, 'r') as config_file: + document = minidom.parse(config_file) + [config] = document.getElementsByTagName('ukm-configuration') + validator = UkmXmlValidation(config) + + ownerCheckSuccess, ownerCheckErrors = validator.checkEventsHaveOwners() + metricCheckSuccess, metricCheckErrors, metricCheckWarnings = ( + validator.checkMetricTypeIsSpecified()) + aggregationCheckSuccess, aggregationCheckErrors = ( + validator.checkLocalMetricIsAggregated()) + + results = dict(); + + if (not ownerCheckSuccess or not metricCheckSuccess or + not aggregationCheckSuccess): + results['Errors'] = (ownerCheckErrors + metricCheckErrors + + aggregationCheckErrors) + if metricCheckWarnings and not IGNORE_METRIC_CHECK_WARNINGS: + results['Warnings'] = metricCheckWarnings + + if 'Warnings' in results or 'Errors' in results: + return results + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/ukm/xml_validations.py b/ukm/xml_validations.py new file mode 100644 index 000000000000..250ec89599e0 --- /dev/null +++ b/ukm/xml_validations.py @@ -0,0 +1,171 @@ +# Copyright 2019 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +import re +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'histograms')) +import extract_histograms +import histogram_paths +import merge_xml + + +LOCAL_METRIC_RE = re.compile(r'metrics\.([^,]+)') +INVALID_LOCAL_METRIC_FIELD_ERROR = ( + 'Invalid index field specification in ukm metric %(event)s:%(metric)s, the ' + 'following metrics are used as index fields but are not configured to ' + 'support it: [%(invalid_metrics)s]\n\n' + 'See https://chromium.googlesource.com/chromium/src.git/+/main/services/' + 'metrics/ukm_api.md#aggregation-by-metrics-in-the-same-event for ' + 'instructions on how to configure them.') + + +def _isMetricValidAsIndexField(metric_node): + """Checks if a given metric node can be used as a field in an index tag. + + Has the following requirements: + * 'history' is the only aggregation target (no others are considered) + * there will be at most 1 'aggregation', 1 'history', and 1 'statistic' + element in a metric element + * enumerations are the only metric types that are valid + + Args: + metric_node: A metric node to check. + + Returns: True or False, depending on whethere the given node is valid as an + index field. + """ + aggregation_nodes = metric_node.getElementsByTagName('aggregation') + if aggregation_nodes.length != 1: + return False + + history_nodes = aggregation_nodes[0].getElementsByTagName('history') + if history_nodes.length != 1: + return False + + statistic_nodes = history_nodes[0].getElementsByTagName('statistics') + if statistic_nodes.length != 1: + return False + + # Only enumeration type metrics are supported as index fields. + enumeration_nodes = statistic_nodes[0].getElementsByTagName('enumeration') + return bool(enumeration_nodes) + + +def _getIndexFields(metric_node): + """Get a list of fields from index node descendents of a metric_node.""" + aggregation_nodes = metric_node.getElementsByTagName('aggregation') + if not aggregation_nodes: + return [] + + history_nodes = aggregation_nodes[0].getElementsByTagName('history') + if not history_nodes: + return [] + + index_nodes = history_nodes[0].getElementsByTagName('index') + if not index_nodes: + return [] + + return [index_node.getAttribute('fields') for index_node in index_nodes] + + +def _getLocalMetricIndexFields(metric_node): + """Gets a set of metric names being used as local-metric index fields.""" + index_fields = _getIndexFields(metric_node) + local_metric_fields = set() + for fields in index_fields: + local_metric_fields.update(LOCAL_METRIC_RE.findall(fields)) + return local_metric_fields + + +class UkmXmlValidation(object): + """Validations for the content of ukm.xml.""" + + def __init__(self, ukm_config): + """Attributes: + + config: A XML minidom Element representing the root node of the UKM config + tree. + """ + self.config = ukm_config + + def checkEventsHaveOwners(self): + """Check that every event in the config has at least one owner.""" + errors = [] + + for event_node in self.config.getElementsByTagName('event'): + event_name = event_node.getAttribute('name') + owner_nodes = event_node.getElementsByTagName('owner') + + # Check tag is present for each event. + if not owner_nodes: + errors.append(" tag is required for event '%s'." % event_name) + continue + + for owner_node in owner_nodes: + # Check tag actually has some content. + if not owner_node.childNodes: + errors.append( + " tag for event '%s' should not be empty." % event_name) + continue + + for email in owner_node.childNodes: + # Check tag's content is an email address, not a username. + if not ('@chromium.org' in email.data or '@google.com' in email.data): + errors.append(" tag for event '%s' expects a Chromium or " + "Google email address." % event_name) + + isSuccess = not errors + + return (isSuccess, errors) + + def checkMetricTypeIsSpecified(self): + """Check each metric is either specified with an enum or a unit.""" + errors = [] + warnings = [] + + enum_tree = merge_xml.MergeFiles([histogram_paths.ENUMS_XML]) + enums, _ = extract_histograms.ExtractEnumsFromXmlTree(enum_tree) + + for event_node in self.config.getElementsByTagName('event'): + for metric_node in event_node.getElementsByTagName('metric'): + if metric_node.hasAttribute('enum'): + enum_name = metric_node.getAttribute('enum'); + # Check if the enum is defined in enums.xml. + if enum_name not in enums: + errors.append("Unknown enum %s in ukm metric %s:%s." % + (enum_name, event_node.getAttribute('name'), + metric_node.getAttribute('name'))) + elif not metric_node.hasAttribute('unit'): + warnings.append("Warning: Neither \'enum\' or \'unit\' is specified " + "for ukm metric %s:%s." + % (event_node.getAttribute('name'), + metric_node.getAttribute('name'))) + + isSuccess = not errors + return (isSuccess, errors, warnings) + + def checkLocalMetricIsAggregated(self): + """Checks that index fields don't list invalid metrics.""" + errors = [] + + for event_node in self.config.getElementsByTagName('event'): + metric_nodes = event_node.getElementsByTagName('metric') + valid_index_field_metrics = {node.getAttribute('name') + for node in metric_nodes + if _isMetricValidAsIndexField(node)} + for metric_node in metric_nodes: + local_metric_index_fields = _getLocalMetricIndexFields(metric_node) + invalid_metrics = local_metric_index_fields - valid_index_field_metrics + if invalid_metrics: + event_name = event_node.getAttribute('name') + metric_name = metric_node.getAttribute('name') + invalid_metrics_string = ', '.join(sorted(invalid_metrics)) + errors.append(INVALID_LOCAL_METRIC_FIELD_ERROR %( + {'event': event_name, 'metric': metric_name, + 'invalid_metrics': invalid_metrics_string})) + + is_success = not errors + return (is_success, errors) diff --git a/ukm/xml_validations_test.py b/ukm/xml_validations_test.py new file mode 100644 index 000000000000..18283d44baaa --- /dev/null +++ b/ukm/xml_validations_test.py @@ -0,0 +1,180 @@ +# Copyright 2019 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import unittest +import xml_validations +from xml.dom import minidom + + +class UkmXmlValidationTest(unittest.TestCase): + + def toUkmConfig(self, xml_string): + dom = minidom.parseString(xml_string) + [ukm_config] = dom.getElementsByTagName('ukm-configuration') + return ukm_config + + def testEventsHaveOwners(self): + ukm_config = self.toUkmConfig(""" + + + dev@chromium.org + + + """.strip()) + validator = xml_validations.UkmXmlValidation(ukm_config) + success, errors = validator.checkEventsHaveOwners() + self.assertTrue(success) + self.assertListEqual([], errors) + + def testEventsMissingOwners(self): + ukm_config = self.toUkmConfig(""" + + + + + + + johndoe + + + """.strip()) + expected_errors = [ + " tag is required for event 'Event1'.", + " tag for event 'Event2' should not be empty.", + " tag for event 'Event3' expects a Chromium or Google email " + "address.", + ] + + validator = xml_validations.UkmXmlValidation(ukm_config) + success, errors = validator.checkEventsHaveOwners() + self.assertFalse(success) + self.assertListEqual(expected_errors, errors) + + def testMetricHasUndefinedEnum(self): + ukm_config = self.toUkmConfig(""" + + + + + + + + + + + + """.strip()) + expected_errors = [ + "Unknown enum BadEnum in ukm metric Event2:Metric1.", + ] + + expected_warnings = [ + "Warning: Neither 'enum' or 'unit' is specified for ukm metric " + "Event2:Metric4.", + ] + + validator = xml_validations.UkmXmlValidation(ukm_config) + success, errors, warnings = validator.checkMetricTypeIsSpecified() + self.assertFalse(success) + self.assertListEqual(expected_errors, errors) + self.assertListEqual(expected_warnings, warnings) + + def testCheckLocalMetricIsAggregated(self): + bad_ukm_config = self.toUkmConfig(""" + + + + + + + + + + + + + + + + + + + + + + + + + + + """.strip()) + expected_errors = [ + xml_validations.INVALID_LOCAL_METRIC_FIELD_ERROR %( + {'event':'Event', 'metric':'M2', 'invalid_metrics':'M1, M4'}), + xml_validations.INVALID_LOCAL_METRIC_FIELD_ERROR %( + # M3 is not included in invalid_metrics because it's configured to + # aggregate as an enumeration. + {'event':'Event', 'metric':'M3', 'invalid_metrics':'M1, M4'}), + ] + validator = xml_validations.UkmXmlValidation(bad_ukm_config) + success, errors = validator.checkLocalMetricIsAggregated() + self.assertFalse(success) + self.assertListEqual(expected_errors, errors) + + # Add aggregation definitions to M1 and M4 to make it valid. Note the + # export="False" that prevents M1 and M4 from being aggregated, and only + # useful as an index field. + good_ukm_config = self.toUkmConfig(""" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + """.strip()) + + validator = xml_validations.UkmXmlValidation(good_ukm_config) + success, errors = validator.checkLocalMetricIsAggregated() + self.assertTrue(success) + self.assertListEqual([], errors) + + +if __name__ == '__main__': + unittest.main()